Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir işlev oluşturduğunuzda, proje ortamınıza bir dizi tetikleyici şablonundan dile özgü tetikleyici kodu eklenir. İşlevinizi giriş veya çıkış bağlamalarını kullanarak diğer hizmetlere bağlamak istiyorsanız, işlevinize belirli bağlama tanımları eklemeniz gerekir. Bağlamalar hakkında daha fazla bilgi edinmek için bkz. Azure İşlevleri tetikleyicileri ve bağlamaları kavramları.
Yerel geliştirme
İşlevleri yerel olarak geliştirirken, bağlama eklemek için işlev kodunu güncelleştirmeniz gerekir. function.jsonkullanan diller için Visual Studio Code işlevine bağlama eklemek için araçlar sağlar.
Örneklere göre bağlamaları el ile ekleme
Var olan bir işleve bağlama eklerken, koddaki işlev tanımına bağlamaya özgü öznitelikler eklemeniz gerekir.
Var olan bir işleve bağlama eklerken, koddaki işlev tanımına bağlamaya özgü ek açıklamalar eklemeniz gerekir.
Var olan bir işleve bağlama eklerken işlev kodunu güncelleştirmeniz ve function.json yapılandırma dosyasına bir tanım eklemeniz gerekir.
Var olan bir işleve bağlama eklerken, modelinize bağlı olarak işlev tanımını güncelleştirmeniz gerekir:
Go'da, işlevinizdeki akıcı kayıt API'sini kullanarak desteklenen tetikleyicileri yapılandırabilirsiniz main() . Her tetikleyici türü, yapılandırma için işlevsel seçenekler içeren ayrılmış bir kayıt yöntemine sahiptir. Ayrı bağlama yapılandırma dosyası gerekmez.
Aşağıdaki örnekte HTTP ile tetiklenen bir işlev gösterilmektedir. Go işlevinden Kuyruk Depolama'ya yazmanız gerekiyorsa, Kuyruk Depolama çıkış bağlamaları şu anda Go çalışanı tarafından desteklenmediğinden doğrudan Go için Azure SDK kullanın:
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)
}
Note
Go çalışanı şu anda yalnızca tetikleyicileri destekler. Kuyruk Depolama çıkış bağlamaları gibi giriş ve çıkış bağlamaları henüz kullanılamıyor. Go için
Go çalışanı şu anda aşağıdaki tetikleyici türlerini destekler:
| Tetikleyici türü | Kayıt yöntemi | Örnekler |
|---|---|---|
| HTTP | app.HTTP() |
HTTP örnekleri |
| Zamanlayıcı | app.Timer() |
Timer örnekleri |
| Azure Cosmos DB | app.CosmosDB() |
Cosmos DB örnekleri |
| Azure Service Bus (Kuyruk) | app.ServiceBusQueue() |
Service Bus kuyruk örnekleri |
| Azure Service Bus (Konu) | app.ServiceBusTopic() |
Service Bus konu örnekleri |
| Etkinlik Merkezleri | app.EventHub() |
Event Hubs örnekleri |
| Event Grid | app.EventGrid() |
Event Grid örnekleri |
| Blob Depolama | app.Blob() |
Blob örnekleri |
Daha fazla bilgi için Bkz. Go geliştirici başvurusu.
Aşağıdaki örnekte, HTTP ile tetiklenen bir işleve Queue Storage çıkış bağlaması eklendikten sonra işlev tanımı gösterilmektedir:
HTTP ile tetiklenen bir işlev bir HTTP yanıtı da döndürdüğünden, işlev hem HTTP hem de kuyruk çıkışını temsil eden bir MultiResponse nesne döndürür.
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
Bu örnek, çıkış bağlamasını MultiResponse içeren nesnenin tanımıdır:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
Bu örnekte ASP.NET Core integration kullanılır. ASP.NET Core tümleştirme kullanmıyorsanız, HttpRequestHttpRequestData ve IActionResultHttpResponseData olarak değiştirmeniz gerekir.
İşlev tamamlandığında iletiler kuyruğa gönderilir. Çıkış bağlamasını tanımlama şekliniz işlem modelinize bağlıdır. Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.
@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) {
Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.
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' };
}
},
});
Çıkış bağlamasını tanımlama şekliniz, Node.js modelinizin sürümüne bağlıdır. Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.
@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.')
Çıkış bağlamasını tanımlama şekliniz Python modelinizin sürümüne bağlıdır. Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.
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,
});
Çıkış bağlamasını tanımlama şekliniz, Node.js modelinizin sürümüne bağlıdır. Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.
Mevcut bir işlevi güncelleştirmede size yol göstermek için kullanabileceğiniz belirli bağlama türlerinin örneklerini bulmak için aşağıdaki tabloyu kullanın. İlk olarak, projenize karşılık gelen dil sekmesini seçin.
C# için bağlama kodu, belirli işlem modeline bağlıdır.
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama (Blob Depolama) |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Veri Gezgini |
Input Output |
Link |
| Azure SQL |
Trigger Input Output |
Link |
| Etkinlik Ağı |
Trigger Output |
Link |
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Kuyruk Depolama |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Hizmeti |
Trigger Input Output |
|
| Tablo Depolama |
Input Output |
|
| Zamanlayıcı | Trigger | Link |
| Twilio | Output | Link |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama (Blob Depolama) |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Veri Gezgini |
Input Output |
Link |
| Azure SQL |
Trigger Input Output |
|
| Etkinlik Ağı |
Trigger Output |
Link |
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Kuyruk Depolama |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Hizmeti |
Trigger Input Output |
|
| Tablo Depolama |
Input Output |
|
| Zamanlayıcı | Trigger | Link |
| Twilio | Output |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama (Blob Depolama) |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Veri Gezgini |
Input Output |
|
| Azure SQL |
Trigger Input Output |
Link |
| Etkinlik Ağı |
Trigger Output |
|
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Kuyruk Depolama |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Hizmeti |
Trigger Input Output |
|
| Tablo Depolama |
Input Output |
|
| Zamanlayıcı | Trigger | |
| Twilio | Output |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama (Blob Depolama) |
Trigger Input Output |
|
| Azure Cosmos DB |
Trigger Input Output |
|
| Azure SQL |
Trigger Input Output |
|
| Etkinlik Ağı |
Trigger Output |
|
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Kuyruk Depolama |
Trigger Output |
|
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
|
| Azure SignalR Hizmeti |
Trigger Input Output |
|
| Tablo Depolama |
Input Output |
|
| Zamanlayıcı | Trigger | |
| Twilio | Output |
Python için bağlama kodu, Python modeli sürümüne bağlıdır.
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama (Blob Depolama) |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Veri Gezgini |
Input Output |
|
| Azure SQL |
Trigger Input Output |
Link |
| Etkinlik Ağı |
Trigger Output |
|
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Kuyruk Depolama |
Trigger Output |
|
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Hizmeti |
Trigger Input Output |
|
| Tablo Depolama |
Input Output |
|
| Zamanlayıcı | Trigger | |
| Twilio | Output |
Visual Studio Kodu
İşlevinizi geliştirmek için Visual Studio Code kullandığınızda ve işleviniz function.json bir dosya kullandığında, Azure İşlevleri uzantısı otomatik olarak var olan bir function.json dosyasına bağlama ekleyebilir. Daha fazla bilgi edinmek için bkz. Giriş ve çıkış bağlamaları ekleme.
Azure portal
İşlevlerinizi Azure portal içinde geliştirdiğinizde, belirli bir işlevin Integrate sekmesine giriş ve çıkış bağlamaları eklersiniz. Yeni bağlamalar, dilinize bağlı olarak function.json dosyasına veya yöntem özniteliklerine eklenir. Aşağıdaki makalelerde portalda var olan bir işleve bağlama ekleme örnekleri gösterilmektedir: