إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
عند إنشاء دالة، يتم إضافة كود التحفيز الخاص باللغة إلى project الخاص بك من مجموعة قوالب المشغلات. إذا كنت تريد توصيل الدالة بخدمات أخرى باستخدام روابط الإدخال أو الإخراج، يجب عليك إضافة تعريفات ربط محددة في الدالة. لمعرفة المزيد عن الربطات، راجع دالات Azure مفاهيم المحفزات والربط.
التطوير المحلي
عند تطوير الدالات محليا، تحتاج إلى تحديث التعليمات البرمجية للدالة لإضافة روابط. بالنسبة للغات التي تستخدم function.json، يوفر تعليمة Visual Studio برمجية أدوات لإضافة الروابط إلى الدالة.
إضافة روابط يدويا استنادا إلى الأمثلة
عند إضافة ربط إلى دالة موجودة، تحتاج إلى إضافة سمات خاصة بالربط إلى تعريف الدالة في التعليمات البرمجية.
عند إضافة ربط إلى دالة موجودة، تحتاج إلى إضافة تعليقات توضيحية خاصة بالربط إلى تعريف الدالة في التعليمات البرمجية.
عند إضافة ربط إلى دالة موجودة، تحتاج إلى تحديث التعليمات البرمجية للدالة وإضافة تعريف إلى ملف التكوين function.json.
عند إضافة ربط إلى دالة موجودة، تحتاج إلى تحديث تعريف الدالة، اعتمادا على النموذج الخاص بك:
في Go، تقوم بتكوين المشغلات المدعومة باستخدام واجهة برمجة التطبيقات الخاصة بالتسجيل السليم في وظيفتك main() . كل نوع من الزناد لديه طريقة تسجيل مخصصة مع خيارات وظيفية للتكوين. لا حاجة لملف تكوين ربط منفصل.
المثال التالي يظهر دالة يتم تفعيلها بواسطة HTTP. إذا كنت بحاجة للكتابة إلى Queue Storage من دالة Go، استخدم Azure SDK ل Go مباشرة لأن روابط مخرجات Queue Storage غير مدعومة حاليا من قبل عامل Go:
package main
import (
"encoding/json"
"fmt"
"net/http"
"github.com/azure/azure-functions-golang-worker/sdk"
"github.com/azure/azure-functions-golang-worker/worker"
)
func main() {
app := sdk.FunctionApp()
app.HTTP("HttpExample", httpHandler,
sdk.WithMethods("GET", "POST"),
sdk.WithAuth("anonymous"),
)
worker.Start(app)
}
func httpHandler(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
if name == "" {
var body struct{ Name string }
json.NewDecoder(r.Body).Decode(&body)
name = body.Name
}
if name == "" {
w.WriteHeader(http.StatusBadRequest)
fmt.Fprint(w, "Please pass a name on the query string or in the request body.")
return
}
// Queue output bindings are not yet supported in the Go worker.
// Use the Azure SDK for Go to write to Queue Storage directly.
fmt.Fprintf(w, "Hello, %s!", name)
}
ملحوظة
عامل Go حاليا يدعم المحفزات فقط. روابط الإدخال والإخراج، مثل روابط إخراج تخزين الطابور، غير متوفرة بعد. استخدم Azure SDK ل Go للتفاعل مع خدمات Azure الأخرى مباشرة من كود الوظيفة الخاص بك.
عامل Go يدعم حاليا أنواع المشغلات التالية:
| نوع المشغل | طريقة التسجيل | امثله |
|---|---|---|
| HTTP | app.HTTP() |
<عينات c0>HTTP |
| المؤقت | app.Timer() |
<عينات المؤقت> |
| Azure Cosmos DB | app.CosmosDB() |
<عينات قاعدة بيانات كوزموس> كوزموس |
| ناقل خدمة Azure (الطابور) | app.ServiceBusQueue() |
Service Bus عينات الطابور |
| ناقل خدمة Azure (موضوع) | app.ServiceBusTopic() |
Service Bus عينات المواضيع |
| مراكز الأحداث | app.EventHub() |
نماذج مراكز الأحداث |
| شبكة الأحداث | app.EventGrid() |
<عينات شبكة الحدث c0> الحدث |
| تخزين كائن ثنائي كبير الحجم | app.Blob() |
<عينات c0>Blob |
لمزيد من المعلومات، راجع مرجع مطوري Go.
المثال التالي يوضح تعريف الدالة بعد إضافة Queue Storage ربط الإخراج إلى دالة HTTP التي تم تفعيلها :
نظرا لأن الدالة التي تم تشغيلها من قبل HTTP تقوم أيضا بإرجاع استجابة HTTP، ترجع الدالة كائنا MultiResponse ، والذي يمثل كلا من إخراج HTTP وقوائم الانتظار.
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
هذا المثال هو تعريف MultiResponse العنصر الذي يتضمن ربط الإخراج:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
يستخدم هذا المثال ASP.NET Core التكامل. إذا لم تكن تستخدم ASP.NET Core التكامل، عليك تغيير HttpRequest إلى HttpRequestData وIActionResult إلى HttpResponseData.
يتم إرسال الرسائل إلى قائمة الانتظار عند اكتمال الدالة. تعتمد الطريقة التي تحدد بها ربط الإخراج على نموذج العملية. لمزيد من المعلومات، بما في ذلك الارتباطات إلى مثال التعليمات البرمجية للربط التي يمكنك الرجوع إليها، راجع إضافة روابط إلى دالة.
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "msg", queueName = "outqueue",
connection = "AzureWebJobsStorage") OutputBinding<String> msg,
final ExecutionContext context) {
لمزيد من المعلومات، بما في ذلك الارتباطات إلى مثال التعليمات البرمجية للربط التي يمكنك الرجوع إليها، راجع إضافة روابط إلى دالة.
const { app, output } = require('@azure/functions');
const sendToQueue = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [sendToQueue],
handler: async (request, context) => {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
},
});
تعتمد الطريقة التي تحدد بها ربط الإخراج على إصدار نموذج Node.js الخاص بك. لمزيد من المعلومات، بما في ذلك الارتباطات إلى مثال التعليمات البرمجية للربط التي يمكنك الرجوع إليها، راجع إضافة روابط إلى دالة.
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
لمزيد من المعلومات، بما في ذلك الارتباطات إلى مثال التعليمات البرمجية للربط التي يمكنك الرجوع إليها، راجع إضافة روابط إلى دالة.
@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out[func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
تعتمد الطريقة التي تحدد بها ربط الإخراج على إصدار نموذج Python الخاص بك. لمزيد من المعلومات، بما في ذلك الارتباطات إلى مثال التعليمات البرمجية للربط التي يمكنك الرجوع إليها، راجع إضافة روابط إلى دالة.
import {
app,
output,
HttpRequest,
HttpResponseInit,
InvocationContext,
StorageQueueOutput,
} from '@azure/functions';
const sendToQueue: StorageQueueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
export async function HttpExample(
request: HttpRequest,
context: InvocationContext,
): Promise<HttpResponseInit> {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
}
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: HttpExample,
});
تعتمد الطريقة التي تحدد بها ربط الإخراج على إصدار نموذج Node.js الخاص بك. لمزيد من المعلومات، بما في ذلك الارتباطات إلى مثال التعليمات البرمجية للربط التي يمكنك الرجوع إليها، راجع إضافة روابط إلى دالة.
استخدم الجدول التالي للبحث عن أمثلة على أنواع روابط معينة يمكنك استخدامها لإرشادك في تحديث دالة موجودة. أولا، اختر تبويب اللغة الذي يتوافق مع project الخاص بك.
تعتمد التعليمات البرمجية الملزمة ل C# على نموذج العملية المحدد.
| الخدمة | امثله | العينات |
|---|---|---|
| مخزن البيانات الثنائية الكبيرة |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Data Explorer (Kusto) |
Input Output |
Link |
| Azure SQL |
Trigger Input Output |
Link |
| شبكة الأحداث |
Trigger Output |
Link |
| مراكز الأحداث |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue Storage |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Service |
Trigger Input Output |
|
| Table Storage |
Input Output |
|
| الموقت | Trigger | Link |
| Twilio | Output | Link |
| الخدمة | امثله | العينات |
|---|---|---|
| مخزن البيانات الثنائية الكبيرة |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Data Explorer (Kusto) |
Input Output |
Link |
| Azure SQL |
Trigger Input Output |
|
| شبكة الأحداث |
Trigger Output |
Link |
| مراكز الأحداث |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue Storage |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Service |
Trigger Input Output |
|
| Table Storage |
Input Output |
|
| الموقت | Trigger | Link |
| Twilio | Output |
| الخدمة | امثله | العينات |
|---|---|---|
| مخزن البيانات الثنائية الكبيرة |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Data Explorer (Kusto) |
Input Output |
|
| Azure SQL |
Trigger Input Output |
Link |
| شبكة الأحداث |
Trigger Output |
|
| مراكز الأحداث |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue Storage |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Service |
Trigger Input Output |
|
| Table Storage |
Input Output |
|
| الموقت | Trigger | |
| Twilio | Output |
| الخدمة | امثله | العينات |
|---|---|---|
| مخزن البيانات الثنائية الكبيرة |
Trigger Input Output |
|
| Azure Cosmos DB |
Trigger Input Output |
|
| Azure SQL |
Trigger Input Output |
|
| شبكة الأحداث |
Trigger Output |
|
| مراكز الأحداث |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue Storage |
Trigger Output |
|
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
|
| Azure SignalR Service |
Trigger Input Output |
|
| Table Storage |
Input Output |
|
| الموقت | Trigger | |
| Twilio | Output |
تعتمد التعليمات البرمجية الملزمة ل Python على إصدار طراز Python.
| الخدمة | امثله | العينات |
|---|---|---|
| مخزن البيانات الثنائية الكبيرة |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Data Explorer (Kusto) |
Input Output |
|
| Azure SQL |
Trigger Input Output |
Link |
| شبكة الأحداث |
Trigger Output |
|
| مراكز الأحداث |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue Storage |
Trigger Output |
|
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Service |
Trigger Input Output |
|
| Table Storage |
Input Output |
|
| الموقت | Trigger | |
| Twilio | Output |
تعليمة Visual Studio برمجية
عندما تستخدم تعليمة Visual Studio برمجية لتطوير وظيفتك وتستخدم دالة ملف function.json، يمكن لامتداد دالات Azure إضافة ربط تلقائيا إلى ملف function.json موجود. لمعرفة المزيد، راجع إضافة روابط الإدخال والإخراج.
Azure portal
عندما تطور وظائفك في Azure portal، تضيف روابط إدخال وإخراج في تبويب Integrate لدالة معينة. تتم إضافة الارتباطات الجديدة إما إلى ملف function.json أو إلى سمات الأسلوب، اعتمادا على لغتك. تعرض المقالات التالية أمثلة حول كيفية إضافة روابط إلى دالة موجودة في المدخل: