Pengikatan output penyimpanan Azure Queue untuk Azure Functions
Azure Functions dapat membuat pesan penyimpanan Azure Queue baru dengan menyiapkan pengikatan output.
Untuk informasi tentang pengaturan dan detail konfigurasi, lihat gambaran umum.
Penting
Artikel ini menggunakan tab untuk mendukung beberapa versi model pemrograman Node.js. Model v4 umumnya tersedia dan dirancang untuk memiliki pengalaman yang lebih fleksibel dan intuitif untuk pengembang JavaScript dan TypeScript. Untuk detail selengkapnya tentang cara kerja model v4, lihat panduan pengembang Node.js Azure Functions. Untuk mempelajari selengkapnya tentang perbedaan antara v3 dan v4, lihat panduan migrasi.
Azure Functions mendukung dua model pemrograman untuk Python. Cara Anda menentukan pengikatan tergantung pada model pemrograman yang Anda pilih.
Model pemrograman Python v2 memungkinkan Anda menentukan pengikatan menggunakan dekorator langsung dalam kode fungsi Python Anda. Untuk informasi selengkapnya, lihat panduan pengembang Python.
Artikel ini mendukung kedua model pemrograman.
Contoh
Fungsi C# dapat dibuat dengan menggunakan salah satu mode C# berikut:
- Model pekerja terisolasi: Fungsi C# terkompilasi yang berjalan dalam proses pekerja yang terisolasi dari runtime. Proses pekerja terisolasi diperlukan untuk mendukung fungsi C# yang berjalan pada versi LTS dan non-LTS .NET dan .NET Framework. Ekstensi untuk fungsi proses pekerja yang terisolasi menggunakan
Microsoft.Azure.Functions.Worker.Extensions.*
namespace layanan. - Model dalam proses: Fungsi C# yang dikompilasi yang berjalan dalam proses yang sama dengan runtime Functions. Dalam variasi model ini, Functions dapat dijalankan menggunakan scripting C#, yang didukung terutama untuk pengeditan portal C#. Ekstensi untuk fungsi dalam proses menggunakan
Microsoft.Azure.WebJobs.Extensions.*
namespace layanan.
Penting
Dukungan akan berakhir untuk model dalam proses pada 10 November 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke model pekerja yang terisolasi untuk dukungan penuh.
[Function(nameof(QueueFunction))]
[QueueOutput("output-queue")]
public string[] Run([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)
{
// Use a string array to return more than one message.
string[] messages = {
$"Album name = {myQueueItem.Name}",
$"Album songs = {myQueueItem.Songs.ToString()}"};
_logger.LogInformation("{msg1},{msg2}", messages[0], messages[1]);
// Queue Output messages
return messages;
}
Untuk contoh end-to-end tentang cara mengonfigurasi pengikatan output ke penyimpanan Antrean, lihat salah satu artikel berikut:
Contoh berikut menunjukkan fungsi Java yang membuat pesan antrean saat dipicu oleh permintaan HTTP.
@FunctionName("httpToQueue")
@QueueOutput(name = "item", queueName = "myqueue-items", connection = "MyStorageConnectionAppSetting")
public String pushToQueue(
@HttpTrigger(name = "request", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
final String message,
@HttpOutput(name = "response") final OutputBinding<String> result) {
result.setValue(message + " has been added.");
return message;
}
Dalam pustaka runtime fungsi Java, gunakan @QueueOutput
anotasi pada parameter yang nilainya akan ditulis ke penyimpanan Antrean. Jenis parameter harus OutputBinding<T>
, yaitu T
adalah jenis Java asli dari POJO.
Untuk contoh end-to-end tentang cara mengonfigurasi pengikatan output ke penyimpanan Antrean, lihat salah satu artikel berikut:
Contoh berikut menunjukkan fungsi TypeScript yang dipicu HTTP yang membuat item antrean untuk setiap permintaan HTTP yang diterima.
import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: httpTrigger1,
});
Untuk menghasilkan beberapa pesan, kembalikan array alih-alih satu objek. Contohnya:
context.extraOutputs.set(queueOutput, ['message 1', 'message 2']);
Contoh berikut menunjukkan fungsi JavaScript yang dipicu HTTP yang membuat item antrean untuk setiap permintaan HTTP yang diterima.
const { app, output } = require('@azure/functions');
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: async (request, context) => {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
},
});
Untuk menghasilkan beberapa pesan, kembalikan array alih-alih satu objek. Contohnya:
context.extraOutputs.set(queueOutput, ['message 1', 'message 2']);
Untuk contoh end-to-end tentang cara mengonfigurasi pengikatan output ke penyimpanan Antrean, lihat salah satu artikel berikut:
Contoh kode berikut menunjukkan cara menghasilkan pesan antrean dari fungsi yang dipicu HTTP. Bagian konfigurasi dengan type
dari queue
mendefinisikan pengikatan output.
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "queue",
"direction": "out",
"name": "Msg",
"queueName": "outqueue",
"connection": "MyStorageConnectionAppSetting"
}
]
}
Menggunakan konfigurasi pengikatan ini, fungsi PowerShell dapat membuat pesan antrean menggunakan Push-OutputBinding
. Dalam contoh ini, pesan dibuat dari string kueri atau isi parameter.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$message = $Request.Query.Message
Push-OutputBinding -Name Msg -Value $message
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = 200
Body = "OK"
})
Untuk mengirim beberapa pesan sekaligus, tentukan array pesan dan gunakan Push-OutputBinding
untuk mengirim pesan ke pengikatan output Antrean.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$message = @("message1", "message2")
Push-OutputBinding -Name Msg -Value $message
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = 200
Body = "OK"
})
Untuk contoh end-to-end tentang cara mengonfigurasi pengikatan output ke penyimpanan Antrean, lihat salah satu artikel berikut:
Contoh berikut menunjukkan cara menghasilkan satu dan beberapa nilai ke antrean penyimpanan. Konfigurasi yang diperlukan untuk function.json menggunakan cara yang sama. Contohnya tergantung pada apakah Anda menggunakan model pemrograman Python v1 atau v2.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="QueueOutput1")
@app.route(route="message")
@app.queue_output(arg_name="msg",
queue_name="<QUEUE_NAME>",
connection="<CONNECTION_SETTING>")
def main(req: func.HttpRequest, msg: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('name')
logging.info(input_msg)
msg.set(input_msg)
logging.info(f'name: {name}')
return 'OK'
Untuk contoh end-to-end tentang cara mengonfigurasi pengikatan output ke penyimpanan Antrean, lihat salah satu artikel berikut:
Atribut
Atribut yang mendefinisikan pengikatan output di pustaka C# bergantung pada mode di mana pustaka kelas C# berjalan.
Saat berjalan dalam proses pekerja yang terisolasi, Anda menggunakan QueueOutputAttribute, yang mengambil nama antrean, seperti yang ditunjukkan dalam contoh berikut:
[Function(nameof(QueueFunction))]
[QueueOutput("output-queue")]
public string[] Run([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)
Hanya variabel yang dikembalikan yang didukung saat berjalan dalam proses pekerja yang terisolasi. Parameter output tidak dapat digunakan.
Dekorator
Hanya berlaku untuk model pemrograman Python v2.
Untuk fungsi Python v2 yang ditentukan menggunakan dekorator, properti berikut pada queue_output
:
Properti | Deskripsi |
---|---|
arg_name |
Nama variabel yang mewakili antrean dalam kode fungsi. |
queue_name |
Nama antrean. |
connection |
Nama pengaturan aplikasi atau koleksi pengaturan yang menentukan cara terhubung ke Azure Queue. Lihat Koneksi. |
Untuk fungsi Python yang ditentukan dengan menggunakan function.json, lihat bagian Konfigurasi .
Anotasi
Anotasi QueueOutput memungkinkan Anda menulis pesan sebagai output dari sebuah fungsi. Contoh berikut menunjukkan fungsi yang dipicu HTTP yang membuat pesan antrean.
package com.function;
import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
public class HttpTriggerQueueOutput {
@FunctionName("HttpTriggerQueueOutput")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "message", queueName = "messages", connection = "MyStorageConnectionAppSetting") OutputBinding<String> message,
final ExecutionContext context) {
message.setValue(request.getQueryParameters().get("name"));
return request.createResponseBuilder(HttpStatus.OK).body("Done").build();
}
}
Properti | Deskripsi |
---|---|
name |
Menyatakan nama parameter dalam tanda tangan fungsi. Ketika fungsi dipicu, nilai parameter ini memiliki isi pesan antrean. |
queueName |
Menyatakan nama antrean di akun penyimpanan. |
connection |
Tunjuk ke string koneksi akun penyimpanan. |
Parameter yang terkait dengan anotasi QueueOutputdiketik sebagai instans OutputBinding<T>.
Konfigurasi
Hanya berlaku untuk model pemrograman Python v1.
Tabel berikut menjelaskan properti yang bisa Anda atur pada objek yang options
diteruskan ke output.storageQueue()
metode .
Properti | Deskripsi |
---|---|
queueName | Nama antrean. |
koneksi | Nama pengaturan aplikasi atau koleksi pengaturan yang menentukan cara terhubung ke Azure Queue. Lihat Koneksi. |
Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values
.
Tabel berikut menjelaskan properti konfigurasi pengikatan yang Anda atur di file function.json.
Properti function.json | Deskripsi |
---|---|
jenis | Harus diatur ke queue . Properti ini diatur secara otomatis saat Anda membuat pemicu di portal Microsoft Azure. |
arah | Harus diatur ke out . Properti ini diatur secara otomatis saat Anda membuat pemicu di portal Microsoft Azure. |
nama | Nama variabel yang mewakili antrean dalam kode fungsi. Atur ke $return untuk mereferensi nilai pengembalian fungsi. |
queueName | Nama antrean. |
koneksi | Nama pengaturan aplikasi atau koleksi pengaturan yang menentukan cara terhubung ke Azure Queue. Lihat Koneksi. |
Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values
.
Lihat Bagian contoh untuk contoh lengkapnya.
Penggunaan
Penggunaan pengikatan output Antrean bergantung pada versi paket ekstensi dan modalitas C# yang digunakan di aplikasi fungsi Anda, yang bisa saja menggunakan salah satu hal berikut:
Pustaka kelas proses pekerja terisolasi yang dikompilasi fungsi C# berjalan dalam proses yang diisolasi dari runtime.
Pilih versi guna melihat detail penggunaan untuk mode dan versi.
Saat Anda ingin fungsi menulis satu pesan, pengikatan output antrean dapat mengikat ke jenis berikut:
Tipe | Deskripsi |
---|---|
string |
Konten pesan sebagai string. Gunakan saat pesan adalah teks sederhana. |
byte[] |
Byte pesan. |
Jenis yang bisa diserialisasikan JSON | Objek yang mewakili konten pesan JSON. Functions mencoba menserialisasikan jenis objek CLR (POCO) lama biasa ke dalam data JSON. |
Saat Anda ingin fungsi menulis beberapa pesan, pengikatan output antrean dapat mengikat ke jenis berikut:
Tipe | Deskripsi |
---|---|
T[] di mana T adalah salah satu jenis pesan tunggal |
Array yang berisi konten untuk beberapa pesan. Setiap entri mewakili satu pesan. |
Untuk skenario output lainnya, buat dan gunakan jenis dari Azure.Storage.Queues secara langsung.
Ada dua opsi dalam menulis antrean untuk fungsi dengan menggunakan anotasi QueueOutput:
Nilai yang Dikembalikan: Dengan menerapkan anotasi ke fungsi itu sendiri, nilai yang dikembalikan dari fungsi tetap tertulis sebagai pesan Antrean.
Imperatif: Untuk secara eksplisit mengatur nilai pesan, terapkan anotasi ke parameter tertentu dari jenis
OutputBinding<T>
tersebut, di manaT
merupakan POJO atau jenis Java asli. Dengan konfigurasi ini, meneruskan nilai ke metodesetValue
dapat menuliskan nilai ke antrean.
Output ke pesan antrean tersedia melalui Push-OutputBinding
tempat Anda meneruskan argumen yang cocok dengan nama yang ditunjuk oleh name
parameter pengikatan dalam file function.json.
Ada dua opsi untuk menuliskan fungsi Anda ke antrean yang dikonfigurasi:
Nilai hasil : Mengatur properti
name
di function.json ke$return
. Dengan konfigurasi ini, nilai pengembalian fungsi dipertahankan sebagai pesan penyimpanan Antrean.Imperatif: Meneruskan nilai ke metode set parameter yang dinyatakan sebagai jenis Keluar. Nilai yang diteruskan ke
set
dipertahankan sebagai pesan penyimpanan Antrean.
Koneksi
Properti connection
adalah referensi ke konfigurasi lingkungan yang menentukan bagaimana aplikasi harus terhubung ke Azure Queues. Ini mungkin menentukan:
- Nama pengaturan aplikasi yang berisi string koneksi
- Nama awalan bersama untuk beberapa pengaturan aplikasi, bersama-sama menentukan koneksi berbasis identitas.
Jika nilai yang dikonfigurasi adalah kecocokan persis untuk pengaturan tunggal dan kecocokan awalan untuk pengaturan lainnya, kecocokan persis akan digunakan.
String koneksi
Untuk mendapatkan string koneksi, ikuti langkah-langkah yang ditunjukkan di Mengelola kunci akses akun penyimpanan.
String koneksi ini harus disimpan dalam pengaturan aplikasi dengan nama yang cocok dengan nilai yang ditentukan oleh properti connection
konfigurasi pengikatan.
Jika nama pengaturan aplikasi dimulai dengan "AzureWebJobs", Anda hanya dapat menentukan sisa namanya di sini. Misalnya, jika Anda mengatur connection
ke "MyStorage", runtime Functions mencari pengaturan aplikasi yang bernama "AzureWebJobsMyStorage." Jika Anda membiarkan connection
kosong, runtime Functions menggunakan string koneksi Storage default dalam pengaturan aplikasi yang bernama AzureWebJobsStorage
.
Koneksi berbasis identitas
Jika Anda menggunakan ekstensi versi 5.x atau yang lebih tinggi (bundel 3.x atau lebih tinggi untuk tumpukan bahasa non-.NET), alih-alih menggunakan string koneksi dengan rahasia, Anda dapat meminta aplikasi menggunakan identitas Microsoft Entra. Untuk menggunakan identitas, Anda menentukan pengaturan di bawah awalan umum yang memetakan ke connection
properti dalam konfigurasi pemicu dan pengikatan.
Jika Anda mengatur connection
ke "AzureWebJobsStorage", lihat Menyambungkan ke penyimpanan host dengan identitas. Untuk semua koneksi lainnya, ekstensi tersebut memerlukan properti berikut:
Properti | Templat variabel lingkungan | Deskripsi | Contoh nilai |
---|---|---|---|
URI Layanan Antrean | <CONNECTION_NAME_PREFIX>__queueServiceUri 1 |
URI sarana data dari layanan antrean yang Anda sambungkan, menggunakan skema HTTPS. | https://<storage_account_name>.queue.core.windows.net |
1 <CONNECTION_NAME_PREFIX>__serviceUri
dapat digunakan sebagai alias. Jika kedua formulir disediakan, queueServiceUri
formulir akan digunakan. Formulir serviceUri
tidak dapat digunakan saat konfigurasi koneksi keseluruhan akan digunakan di seluruh blob, antrean, dan/atau tabel.
Properti lain mungkin diatur untuk menyesuaikan koneksi. Lihat Properti umum untuk koneksi berbasis identitas.
Saat dihosting di layanan Azure Functions, koneksi berbasis identitas menggunakan identitas terkelola. Identitas yang ditetapkan sistem digunakan secara default, meskipun identitas yang ditetapkan pengguna dapat ditentukan dengan credential
dan clientID
properti. Perhatikan bahwa mengonfigurasi identitas yang ditetapkan oleh pengguna dengan ID sumber daya tidak didukung. Saat dijalankan dalam konteks lain, seperti pengembangan lokal, identitas pengembang Anda digunakan sebagai gantinya, meskipun ini dapat dikustomisasi. Lihat Pengembangan lokal dengan koneksi berbasis identitas.
Memberikan izin kepada identitas
Identitas apa pun yang digunakan harus memiliki izin untuk melakukan tindakan yang dimaksudkan. Untuk sebagian besar layanan Azure, ini berarti Anda perlu menetapkan peran di Azure RBAC, menggunakan peran bawaan atau kustom yang menyediakan izin tersebut.
Penting
Beberapa izin mungkin diekspos oleh layanan target yang tidak diperlukan untuk semua konteks. Jika memungkinkan, patuhi prinsip hak istimewa paling rendah, dengan memberikan identitas hanya hak istimewa yang diperlukan. Misalnya, jika aplikasi hanya perlu dapat membaca dari sumber data, gunakan peran yang hanya memiliki izin untuk membaca. Tidak pantas untuk menetapkan peran yang juga memungkinkan menulis ke layanan itu, karena ini akan menjadi izin yang berlebihan untuk operasi baca. Demikian pula, Anda ingin memastikan penetapan peran hanya mencakup sumber daya yang perlu dibaca.
Anda akan perlu membuat penetapan peran yang menyediakan akses ke antrean Anda saat runtime. Peran manajemen seperti Pemilik tidak cukup. Tabel berikut menunjukkan peran bawaan yang direkomendasikan saat menggunakan ekstensi Queue Storage dalam operasi normal. Aplikasi Anda mungkin memerlukan izin tambahan berdasarkan kode yang Anda tulis.
Jenis pengikatan | Peran bawaan contoh |
---|---|
Pemicu | Pembaca Data Antrean Penyimpanan, Pemroses Pesan Data Antrean Penyimpanan |
Pengikatan output | Kontributor Data Antrean Penyimpanan, Pengirim Pesan Data Antrean Penyimpanan |
Kode pengecualian dan pengembalian
Pengikatan | Referensi |
---|---|
Antrean | Kode Kesalahan Antrean |
Blob, Tabel, Antrean | Kode Kesalahan Penyimpanan |
Blob, Tabel, Antrean | Pemecahan Masalah |
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk