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.
Azure Cosmos DB giriş bağlaması, bir veya daha fazla Azure Cosmos DB belgesi almak için SQL API'sini kullanır ve bunları işlevin giriş parametresine geçirir. Belge kimliği veya sorgu parametreleri, işlevi çağıran tetikleyiciye göre belirlenebilir.
Kurulum ve yapılandırma ayrıntıları hakkında bilgi için genel bakışa bakın.
Not
Koleksiyon bölümlendiğinde, arama işlemleri bölüm anahtarı değerini de belirtmelidir.
Önemli
Bu makalede, Node.js programlama modelinin birden çok sürümünü desteklemek için sekmeler kullanılır. Genel kullanıma sunulan v4 modeli, JavaScript ve TypeScript geliştiricileri için daha esnek ve sezgisel bir deneyime sahip olacak şekilde tasarlanmıştır. v4 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri Node.js geliştirici kılavuzuna bakın. v3 ile v4 arasındaki farklar hakkında daha fazla bilgi edinmek için geçiş kılavuzuna bakın.
Azure İşlevleri, Python için iki programlama modelini destekler. Bağlamalarınızı tanımlama şekliniz seçtiğiniz programlama modeline bağlıdır.
Python v2 programlama modeli, doğrudan Python işlev kodunuzda dekoratörleri kullanarak bağlamaları tanımlamanızı sağlar. Daha fazla bilgi için bkz. Python geliştirici kılavuzu.
Bu makale her iki programlama modelini de destekler.
Örnek
Aksi belirtilmediği sürece, bu makaledeki örnekler Azure Cosmos DB uzantısının 3.x sürümünü hedefler. 4.x uzantı sürümüyle kullanmak için özellik ve öznitelik adlarındaki dizeyi collection ile containerdeğiştirmeniz gerekir.
C# işlevi aşağıdaki C# modlarından biri kullanılarak oluşturulabilir:
-
Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. LTS ve LTS dışı sürümler .NET ve .NET Framework üzerinde çalışan C# işlevlerini desteklemek için yalıtılmış çalışan işlemi gereklidir. Yalıtılmış çalışan işlemi işlevleri için uzantılar
Microsoft.Azure.Functions.Worker.Extensions.*ad alanlarını kullanır. -
İşlem içi model: İşlevler çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi. Bu modelin bir varyasyonunda, İşlevler öncelikle C# portalı düzenleme için desteklenen C# betiği kullanılarak çalıştırılabilir. İşlem içi işlevlerin uzantıları
Microsoft.Azure.WebJobs.Extensions.*ad alanlarını kullanır.
Önemli
İşlem içi model desteği 10 Kasım 2026'da sona erecektir. Tam destek için uygulamalarınızı yalıtılmış çalışan modeline geçirmenizi kesinlikle öneririz.
Bu bölüm, Azure Cosmos DB uzantısının 3.x sürümünü ve Azure Depolama uzantısının 5.x sürümünü gerektiren örnekler içerir. İşlev uygulamanızda henüz yoksa aşağıdaki NuGet paketlerine başvuru ekleyin:
Örnekler basit ToDoItem bir türe başvurur:
[Function(nameof(DocByIdFromJSON))]
public void DocByIdFromJSON(
[QueueTrigger("todoqueueforlookup")] ToDoItemLookup toDoItemLookup,
[CosmosDBInput(
databaseName: "ToDoItems",
containerName: "Items",
Connection = "CosmosDBConnection",
Id = "{ToDoItemId}",
PartitionKey = "{ToDoItemPartitionKeyValue}")] ToDoItem toDoItem)
{
_logger.LogInformation($"C# Queue trigger function processed Id={toDoItemLookup?.ToDoItemId} Key={toDoItemLookup?.ToDoItemPartitionKeyValue}");
if (toDoItem == null)
{
_logger.LogInformation($"ToDo item not found");
}
else
{
_logger.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
}
}
Kuyruk tetikleyicisi, JSON'dan kimlik arama
Aşağıdaki örnekte tek bir belgeyi alan bir işlev gösterilmektedir. İşlev, depolama kuyruğundaki bir JSON iletisi tarafından tetikleniyor. Kuyruk tetikleyicisi, JSON'ı alınacak kimlik ve bölüm anahtarı değerini içeren türünde ToDoItemLookupbir nesneye ayrıştırıyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan belge ToDoItem döndürmek için kullanılır.
[Function(nameof(DocByIdFromJSON))]
public void DocByIdFromJSON(
[QueueTrigger("todoqueueforlookup")] ToDoItemLookup toDoItemLookup,
[CosmosDBInput(
databaseName: "ToDoItems",
containerName: "Items",
Connection = "CosmosDBConnection",
Id = "{ToDoItemId}",
PartitionKey = "{ToDoItemPartitionKeyValue}")] ToDoItem toDoItem)
{
_logger.LogInformation($"C# Queue trigger function processed Id={toDoItemLookup?.ToDoItemId} Key={toDoItemLookup?.ToDoItemPartitionKeyValue}");
if (toDoItem == null)
{
_logger.LogInformation($"ToDo item not found");
}
else
{
_logger.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
}
}
Bu bölüm aşağıdaki örnekleri içerir:
- HTTP tetikleyicisi, sorgu dizesinden kimlik arama - Dize parametresi
- HTTP tetikleyicisi, sorgu dizesinden kimlik arama - POJO parametresi
- HTTP tetikleyicisi, rota verilerinden kimlik arama
- HTTP tetikleyicisi, SqlQuery kullanarak yol verilerinden kimlik arama
- HTTP tetikleyicisi, SqlQuery kullanarak yol verilerinden birden çok belge alın
Örnekler basit ToDoItem bir türe başvurur:
public class ToDoItem {
private String id;
private String description;
public String getId() {
return id;
}
public String getDescription() {
return description;
}
@Override
public String toString() {
return "ToDoItem={id=" + id + ",description=" + description + "}";
}
}
HTTP tetikleyicisi, sorgu dizesinden kimlik arama - Dize parametresi
Aşağıdaki örnekte, tek bir belgeyi alan bir Java işlevi gösterilmektedir. İşlev, arama için kimlik ve bölüm anahtarı değerini belirtmek için sorgu dizesi kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan Dize biçiminde bir belge almak için kullanılır.
public class DocByIdFromQueryString {
@FunctionName("DocByIdFromQueryString")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@CosmosDBInput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
id = "{Query.id}",
partitionKey = "{Query.partitionKeyValue}",
connectionStringSetting = "Cosmos_DB_Connection_String")
Optional<String> item,
final ExecutionContext context) {
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
context.getLogger().info("String from the database is " + (item.isPresent() ? item.get() : null));
// Convert and display
if (!item.isPresent()) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Document not found.")
.build();
}
else {
// return JSON from Cosmos. Alternatively, we can parse the JSON string
// and return an enriched JSON object.
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(item.get())
.build();
}
}
}
Java işlevleri çalışma zamanı kitaplığında değeri Azure Cosmos DB gelen işlev parametrelerinde @CosmosDBInput ek açıklamasını kullanın. Bu ek açıklama Optional<T> kullanılarak yerel Java türleri, POJO'lar veya null atanabilir değerlerle kullanılabilir.
HTTP tetikleyicisi, sorgu dizesinden kimlik arama - POJO parametresi
Aşağıdaki örnekte, tek bir belgeyi alan bir Java işlevi gösterilmektedir. İşlev, arama için kimlik ve bölüm anahtarı değerini belirtmek için sorgu dizesi kullanan bir HTTP isteği tarafından tetikleniyor. Belirtilen veritabanından ve koleksiyondan belge almak için kullanılan kimlik ve bölüm anahtarı değeri. Belge daha sonra daha önce oluşturulan POJO örneğine ToDoItem dönüştürülür ve işleve bağımsız değişken olarak geçirilir.
public class DocByIdFromQueryStringPojo {
@FunctionName("DocByIdFromQueryStringPojo")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@CosmosDBInput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
id = "{Query.id}",
partitionKey = "{Query.partitionKeyValue}",
connectionStringSetting = "Cosmos_DB_Connection_String")
ToDoItem item,
final ExecutionContext context) {
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
context.getLogger().info("Item from the database is " + item);
// Convert and display
if (item == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Document not found.")
.build();
}
else {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(item)
.build();
}
}
}
HTTP tetikleyicisi, rota verilerinden kimlik arama
Aşağıdaki örnekte, tek bir belgeyi alan bir Java işlevi gösterilmektedir. İşlev, aramak için kimlik ve bölüm anahtarı değerini belirtmek için bir yol parametresi kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan belgeyi almak için kullanılır ve bunu olarak Optional<String>döndürür.
public class DocByIdFromRoute {
@FunctionName("DocByIdFromRoute")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "todoitems/{partitionKeyValue}/{id}")
HttpRequestMessage<Optional<String>> request,
@CosmosDBInput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
id = "{id}",
partitionKey = "{partitionKeyValue}",
connectionStringSetting = "Cosmos_DB_Connection_String")
Optional<String> item,
final ExecutionContext context) {
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
context.getLogger().info("String from the database is " + (item.isPresent() ? item.get() : null));
// Convert and display
if (!item.isPresent()) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Document not found.")
.build();
}
else {
// return JSON from Cosmos. Alternatively, we can parse the JSON string
// and return an enriched JSON object.
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(item.get())
.build();
}
}
}
HTTP tetikleyicisi, SqlQuery kullanarak yol verilerinden kimlik arama
Aşağıdaki örnekte, tek bir belgeyi alan bir Java işlevi gösterilmektedir. İşlev, arama kimliğini belirtmek için bir yol parametresi kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik, sorgu ölçütlerine bağlı olarak birçok belge döndürülebileceğinden, belirtilen veritabanından ve koleksiyondan belgeyi almak için kullanılır ve sonuç kümesi olarak ToDoItem[]dönüştürülür.
Not
Yalnızca kimlikle sorgulamanız gerekiyorsa, daha az istek birimi kullandığından önceki örnekler gibi bir arama kullanmanız önerilir. Nokta okuma işlemleri (GET), kimliğe göre sorgulardan daha verimlidir.
public class DocByIdFromRouteSqlQuery {
@FunctionName("DocByIdFromRouteSqlQuery")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "todoitems2/{id}")
HttpRequestMessage<Optional<String>> request,
@CosmosDBInput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
sqlQuery = "select * from Items r where r.id = {id}",
connectionStringSetting = "Cosmos_DB_Connection_String")
ToDoItem[] item,
final ExecutionContext context) {
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
context.getLogger().info("Items from the database are " + item);
// Convert and display
if (item == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Document not found.")
.build();
}
else {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(item)
.build();
}
}
}
HTTP tetikleyicisi, SqlQuery kullanarak yol verilerinden birden çok belge alın
Aşağıdaki örnekte, birden çok belge alan bir Java işlevi gösterilmektedir. İşlev, alanda aranacak dizeyi belirtmek için desc yol parametresi description kullanan bir HTTP isteği tarafından tetikleniyor. Arama terimi, belirtilen veritabanından ve koleksiyondan bir belge koleksiyonu almak için kullanılır, sonuç kümesi öğesine ToDoItem[] dönüştürülür ve işleve bağımsız değişken olarak geçirilir.
public class DocsFromRouteSqlQuery {
@FunctionName("DocsFromRouteSqlQuery")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "todoitems3/{desc}")
HttpRequestMessage<Optional<String>> request,
@CosmosDBInput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
sqlQuery = "select * from Items r where contains(r.description, {desc})",
connectionStringSetting = "Cosmos_DB_Connection_String")
ToDoItem[] items,
final ExecutionContext context) {
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
context.getLogger().info("Number of items from the database is " + (items == null ? 0 : items.length));
// Convert and display
if (items == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("No documents found.")
.build();
}
else {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(items)
.build();
}
}
}
Bu bölüm, çeşitli kaynaklardan bir kimlik değeri belirterek tek bir belgeyi okuyan aşağıdaki örnekleri içerir:
- Kuyruk tetikleyicisi, JSON'dan kimlik arama
- HTTP tetikleyicisi, sorgu dizesinden kimlik arama
- HTTP tetikleyicisi, rota verilerinden kimlik arama
- SqlQuery kullanarak kuyruk tetikleyicisi, birden çok belge alma
Kuyruk tetikleyicisi, JSON'dan kimlik arama
Aşağıdaki örnekte, tek bir belgeyi okuyan ve belgenin metin değerini güncelleştiren bir TypeScript işlevi gösterilmektedir.
import { app, input, InvocationContext, output } from '@azure/functions';
const cosmosInput = input.cosmosDB({
databaseName: 'MyDatabase',
collectionName: 'MyCollection',
id: '{queueTrigger}',
partitionKey: '{queueTrigger}',
connectionStringSetting: 'MyAccount_COSMOSDB',
});
const cosmosOutput = output.cosmosDB({
databaseName: 'MyDatabase',
collectionName: 'MyCollection',
createIfNotExists: false,
partitionKey: '{queueTrigger}',
connectionStringSetting: 'MyAccount_COSMOSDB',
});
interface MyDocument {
text: string;
}
export async function storageQueueTrigger1(queueItem: unknown, context: InvocationContext): Promise<void> {
const doc = <MyDocument>context.extraInputs.get(cosmosInput);
doc.text = 'This was updated!';
context.extraOutputs.set(cosmosOutput, doc);
}
app.storageQueue('storageQueueTrigger1', {
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [cosmosInput],
extraOutputs: [cosmosOutput],
handler: storageQueueTrigger1,
});
HTTP tetikleyicisi, sorgu dizesinden kimlik arama
Aşağıdaki örnekte, tek bir belgeyi alan bir TypeScript işlevi gösterilmektedir. İşlev, arama için kimlik ve bölüm anahtarı değerini belirtmek için sorgu dizesi kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const cosmosInput = input.cosmosDB({
databaseName: 'ToDoItems',
collectionName: 'Items',
id: '{Query.id}',
partitionKey: '{Query.partitionKeyValue}',
connectionStringSetting: 'CosmosDBConnection',
});
interface ToDoDocument {
description: string;
}
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const toDoItem = <ToDoDocument>context.extraInputs.get(cosmosInput);
if (!toDoItem) {
return {
status: 404,
body: 'ToDo item not found',
};
} else {
return {
body: `Found ToDo item, Description=${toDoItem.description}`,
};
}
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraInputs: [cosmosInput],
handler: httpTrigger1,
});
HTTP tetikleyicisi, rota verilerinden kimlik arama
Aşağıdaki örnekte, tek bir belgeyi alan bir TypeScript işlevi gösterilmektedir. İşlev, arama için kimlik ve bölüm anahtarı değerini belirtmek için yol verilerini kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const cosmosInput = input.cosmosDB({
databaseName: 'ToDoItems',
collectionName: 'Items',
id: '{id}',
partitionKey: '{partitionKeyValue}',
connectionStringSetting: 'CosmosDBConnection',
});
interface ToDoDocument {
description: string;
}
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const toDoItem = <ToDoDocument>context.extraInputs.get(cosmosInput);
if (!toDoItem) {
return {
status: 404,
body: 'ToDo item not found',
};
} else {
return {
body: `Found ToDo item, Description=${toDoItem.description}`,
};
}
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
route: 'todoitems/{partitionKeyValue}/{id}',
extraInputs: [cosmosInput],
handler: httpTrigger1,
});
SqlQuery kullanarak kuyruk tetikleyicisi, birden çok belge alma
Aşağıdaki örnekte, sorgu parametrelerini özelleştirmek için kuyruk tetikleyicisi kullanarak SQL sorgusu tarafından belirtilen birden çok belgeyi alan bir TypeScript işlevi gösterilmektedir.
Kuyruk tetikleyicisi bir parametresi departmentIdsağlar. kuyruk iletisi { "departmentId" : "Finance" } , finans departmanı için tüm kayıtları döndürür.
import { app, input, InvocationContext } from '@azure/functions';
const cosmosInput = input.cosmosDB({
databaseName: 'MyDb',
collectionName: 'MyCollection',
sqlQuery: 'SELECT * from c where c.departmentId = {departmentId}',
connectionStringSetting: 'CosmosDBConnection',
});
interface MyDocument {}
export async function storageQueueTrigger1(queueItem: unknown, context: InvocationContext): Promise<void> {
const documents = <MyDocument[]>context.extraInputs.get(cosmosInput);
for (const document of documents) {
// operate on each document
}
}
app.storageQueue('storageQueueTrigger1', {
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [cosmosInput],
handler: storageQueueTrigger1,
});
Bu bölüm, çeşitli kaynaklardan bir kimlik değeri belirterek tek bir belgeyi okuyan aşağıdaki örnekleri içerir:
- Kuyruk tetikleyicisi, JSON'dan kimlik arama
- HTTP tetikleyicisi, sorgu dizesinden kimlik arama
- HTTP tetikleyicisi, rota verilerinden kimlik arama
- SqlQuery kullanarak kuyruk tetikleyicisi, birden çok belge alma
Kuyruk tetikleyicisi, JSON'dan kimlik arama
Aşağıdaki örnekte, tek bir belgeyi okuyan ve belgenin metin değerini güncelleştiren bir JavaScript işlevi gösterilmektedir.
const { app, input, output } = require('@azure/functions');
const cosmosInput = input.cosmosDB({
databaseName: 'MyDatabase',
collectionName: 'MyCollection',
id: '{queueTrigger}',
partitionKey: '{queueTrigger}',
connectionStringSetting: 'MyAccount_COSMOSDB',
});
const cosmosOutput = output.cosmosDB({
databaseName: 'MyDatabase',
collectionName: 'MyCollection',
createIfNotExists: false,
partitionKey: '{queueTrigger}',
connectionStringSetting: 'MyAccount_COSMOSDB',
});
app.storageQueue('storageQueueTrigger1', {
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [cosmosInput],
extraOutputs: [cosmosOutput],
handler: (queueItem, context) => {
const doc = context.extraInputs.get(cosmosInput);
doc.text = 'This was updated!';
context.extraOutputs.set(cosmosOutput, doc);
},
});
HTTP tetikleyicisi, sorgu dizesinden kimlik arama
Aşağıdaki örnekte, tek bir belgeyi alan bir JavaScript işlevi gösterilmektedir. İşlev, arama için kimlik ve bölüm anahtarı değerini belirtmek için sorgu dizesi kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.
const { app, input } = require('@azure/functions');
const cosmosInput = input.cosmosDB({
databaseName: 'ToDoItems',
collectionName: 'Items',
id: '{Query.id}',
partitionKey: '{Query.partitionKeyValue}',
connectionStringSetting: 'CosmosDBConnection',
});
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraInputs: [cosmosInput],
handler: (request, context) => {
const toDoItem = context.extraInputs.get(cosmosInput);
if (!toDoItem) {
return {
status: 404,
body: 'ToDo item not found',
};
} else {
return {
body: `Found ToDo item, Description=${toDoItem.Description}`,
};
}
},
});
HTTP tetikleyicisi, rota verilerinden kimlik arama
Aşağıdaki örnekte, tek bir belgeyi alan bir JavaScript işlevi gösterilmektedir. İşlev, arama için kimlik ve bölüm anahtarı değerini belirtmek için yol verilerini kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.
const { app, input } = require('@azure/functions');
const cosmosInput = input.cosmosDB({
databaseName: 'ToDoItems',
collectionName: 'Items',
id: '{id}',
partitionKey: '{partitionKeyValue}',
connectionStringSetting: 'CosmosDBConnection',
});
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
route: 'todoitems/{partitionKeyValue}/{id}',
extraInputs: [cosmosInput],
handler: (request, context) => {
const toDoItem = context.extraInputs.get(cosmosInput);
if (!toDoItem) {
return {
status: 404,
body: 'ToDo item not found',
};
} else {
return {
body: `Found ToDo item, Description=${toDoItem.Description}`,
};
}
},
});
SqlQuery kullanarak kuyruk tetikleyicisi, birden çok belge alma
Aşağıdaki örnekte, sorgu parametrelerini özelleştirmek için kuyruk tetikleyicisi kullanarak SQL sorgusu tarafından belirtilen birden çok belgeyi alan bir JavaScript işlevi gösterilmektedir.
Kuyruk tetikleyicisi bir parametresi departmentIdsağlar. kuyruk iletisi { "departmentId" : "Finance" } , finans departmanı için tüm kayıtları döndürür.
const { app, input } = require('@azure/functions');
const cosmosInput = input.cosmosDB({
databaseName: 'MyDb',
collectionName: 'MyCollection',
sqlQuery: 'SELECT * from c where c.departmentId = {departmentId}',
connectionStringSetting: 'CosmosDBConnection',
});
app.storageQueue('storageQueueTrigger1', {
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [cosmosInput],
handler: (queueItem, context) => {
const documents = context.extraInputs.get(cosmosInput);
for (const document of documents) {
// operate on each document
}
},
});
- Kuyruk tetikleyicisi, JSON'dan kimlik arama
- HTTP tetikleyicisi, sorgu dizesinden kimlik arama
- HTTP tetikleyicisi, rota verilerinden kimlik arama
- SqlQuery kullanarak kuyruk tetikleyicisi, birden çok belge alma
Kuyruk tetikleyicisi, JSON'dan kimlik arama
Aşağıdaki örnekte, tek bir Azure Cosmos DB belgesinin nasıl okunduğu ve güncelleştirilecek olduğu gösterilmektedir. Belgenin benzersiz tanımlayıcısı, kuyruk iletisindeki JSON değeri aracılığıyla sağlanır.
Azure Cosmos DB giriş bağlaması, işlevin yapılandırma dosyasında (function.json) bulunan bağlamalar listesinde ilk sırada listelenir.
{
"name": "InputDocumentIn",
"type": "cosmosDB",
"databaseName": "MyDatabase",
"collectionName": "MyCollection",
"id": "{queueTrigger_payload_property}",
"partitionKey": "{queueTrigger_payload_property}",
"connectionStringSetting": "CosmosDBConnection",
"direction": "in"
},
{
"name": "InputDocumentOut",
"type": "cosmosDB",
"databaseName": "MyDatabase",
"collectionName": "MyCollection",
"createIfNotExists": false,
"partitionKey": "{queueTrigger_payload_property}",
"connectionStringSetting": "CosmosDBConnection",
"direction": "out"
}
run.ps1 dosyasında, gelen belgeyi okuyan ve değişiklikleri çıkaran PowerShell kodu bulunur.
param($QueueItem, $InputDocumentIn, $TriggerMetadata)
$Document = $InputDocumentIn
$Document.text = 'This was updated!'
Push-OutputBinding -Name InputDocumentOut -Value $Document
HTTP tetikleyicisi, sorgu dizesinden kimlik arama
Aşağıdaki örnekte, bir web API'sinden tek bir Azure Cosmos DB belgesinin nasıl okunduğu ve güncelleştirilecek olduğu gösterilmektedir. Belgenin benzersiz tanımlayıcısı, bağlamanın "Id": "{Query.Id}" özelliğinde tanımlandığı gibi HTTP isteğinden bir querystring parametresi aracılığıyla sağlanır.
Azure Cosmos DB giriş bağlaması, işlevin yapılandırma dosyasında (function.json) bulunan bağlamalar listesinde ilk sırada listelenir.
{
"bindings": [
{
"type": "cosmosDB",
"name": "ToDoItem",
"databaseName": "ToDoItems",
"collectionName": "Items",
"connectionStringSetting": "CosmosDBConnection",
"direction": "in",
"Id": "{Query.id}",
"PartitionKey": "{Query.partitionKeyValue}"
},
{
"authLevel": "anonymous",
"name": "Request",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get",
"post"
]
},
{
"name": "Response",
"type": "http",
"direction": "out"
},
],
"disabled": false
}
run.ps1 dosyasında, gelen belgeyi okuyan ve değişiklikleri çıkaran PowerShell kodu bulunur.
using namespace System.Net
param($Request, $ToDoItem, $TriggerMetadata)
Write-Host 'PowerShell HTTP trigger function processed a request'
if (-not $ToDoItem) {
Write-Host 'ToDo item not found'
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::NotFound
Body = $ToDoItem.Description
})
} else {
Write-Host "Found ToDo item, Description=$($ToDoItem.Description)"
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $ToDoItem.Description
})
}
HTTP tetikleyicisi, rota verilerinden kimlik arama
Aşağıdaki örnekte, bir web API'sinden tek bir Azure Cosmos DB belgesinin nasıl okunduğu ve güncelleştirilecek olduğu gösterilmektedir. Belgenin benzersiz tanımlayıcısı bir yol parametresi aracılığıyla sağlanır. Yol parametresi HTTP isteği bağlamasının route özelliğinde tanımlanır ve Azure Cosmos DB "Id": "{Id}" bağlama özelliğinde başvurulur.
Azure Cosmos DB giriş bağlaması, işlevin yapılandırma dosyasında (function.json) bulunan bağlamalar listesinde ilk sırada listelenir.
{
"bindings": [
{
"type": "cosmosDB",
"name": "ToDoItem",
"databaseName": "ToDoItems",
"collectionName": "Items",
"connectionStringSetting": "CosmosDBConnection",
"direction": "in",
"Id": "{id}",
"PartitionKey": "{partitionKeyValue}"
},
{
"authLevel": "anonymous",
"name": "Request",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get",
"post"
],
"route": "todoitems/{partitionKeyValue}/{id}"
},
{
"name": "Response",
"type": "http",
"direction": "out"
}
],
"disabled": false
}
run.ps1 dosyasında, gelen belgeyi okuyan ve değişiklikleri çıkaran PowerShell kodu bulunur.
using namespace System.Net
param($Request, $ToDoItem, $TriggerMetadata)
Write-Host 'PowerShell HTTP trigger function processed a request'
if (-not $ToDoItem) {
Write-Host 'ToDo item not found'
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::NotFound
Body = $ToDoItem.Description
})
} else {
Write-Host "Found ToDo item, Description=$($ToDoItem.Description)"
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $ToDoItem.Description
})
}
SqlQuery kullanarak kuyruk tetikleyicisi, birden çok belge alma
Aşağıdaki örnekte birden çok Azure Cosmos DB belgesinin nasıl okunduğu gösterilmektedir. İşlevin yapılandırma dosyası (function.json) bağlama özelliklerini tanımlar ve bu da öğesini sqlQueryiçerir. özelliğine sqlQuery sağlanan SQL deyimi, işleve sağlanan belge kümesini seçer.
{
"name": "Documents",
"type": "cosmosDB",
"direction": "in",
"databaseName": "MyDb",
"collectionName": "MyCollection",
"sqlQuery": "SELECT * from c where c.departmentId = {departmentId}",
"connectionStringSetting": "CosmosDBConnection"
}
run1.ps1 dosyasında, gelen belgeleri okuyan PowerShell kodu bulunur.
param($QueueItem, $Documents, $TriggerMetadata)
foreach ($Document in $Documents) {
# operate on each document
}
Bu bölüm, çeşitli kaynaklardan bir kimlik değeri belirterek tek bir belgeyi okuyan aşağıdaki örnekleri içerir:
- Kuyruk tetikleyicisi, JSON'dan kimlik arama
- HTTP tetikleyicisi, sorgu dizesinden kimlik arama
- HTTP tetikleyicisi, rota verilerinden kimlik arama
- SqlQuery kullanarak kuyruk tetikleyicisi, birden çok belge alma
Örnekler, v1 veya v2 Python programlama modelini kullanıp kullanmadığınıza bağlıdır.
Cosmos DB için SDK-Type Bağlamalarını Kullanma (Önizleme)
Bu örnek, Cosmos DB giriş bağlaması tarafından sağlanan temel CosmosClient nesnesine doğrudan erişmek için SDK türlerini kullanır:
İşlev tüm veritabanlarında döngüler oluşturur ve kimliklerini günlüğe kaydeder.
import logging
import azure.functions as func
import azurefunctions.extensions.bindings.cosmosdb as cosmos
app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)
@app.route(route="cosmos")
@app.cosmos_db_input(arg_name="client",
connection="CosmosDBConnection",
database_name=None,
container_name=None)
def get_docs(req: func.HttpRequest, client: cosmos.CosmosClient):
databases = client.list_databases()
for db in databases:
logging.info(f"Found database with ID: {db.get('id')}")
return "ok"
Diğer SDK türlerini kullanma örnekleri için ContainerProxy ve DatabaseProxy örneklerine bakın. İşlev uygulamanıza SDK türü bağlamaları ekleme hakkında adım adım öğretici için CosmosDB için sdk bağlamaları Python Örnek izleyin.
Desteklenen diğer SDK türü bağlamaları da dahil olmak üzere daha fazla bilgi edinmek için bkz. SDK türü bağlamaları.
Kuyruk tetikleyicisi, JSON'dan kimlik arama
Aşağıdaki örnekte bir Azure Cosmos DB giriş bağlaması gösterilmektedir. işlevi tek bir belgeyi okur ve belgenin metin değerini güncelleştirir.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.queue_trigger(arg_name="msg",
queue_name="outqueue",
connection="AzureWebJobsStorage")
@app.cosmos_db_input(arg_name="documents",
database_name="MyDatabase",
collection_name="MyCollection",
id="{msg.payload_property}",
partition_key="{msg.payload_property}",
connection_string_setting="MyAccount_COSMOSDB")
@app.cosmos_db_output(arg_name="outputDocument",
database_name="MyDatabase",
collection_name="MyCollection",
connection_string_setting="MyAccount_COSMOSDB")
def test_function(msg: func.QueueMessage,
inputDocument: func.DocumentList,
outputDocument: func.Out[func.Document]):
doc = inputDocument[0]
doc["text"] = "This was updated!"
outputDocument.set(doc)
print(f"Updated document.")
HTTP tetikleyicisi, sorgu dizesinden kimlik arama
Aşağıdaki örnekte tek bir belgeyi alan bir işlev gösterilmektedir. İşlev, arama için kimlik ve bölüm anahtarı değerini belirtmek için sorgu dizesi kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.
HTTP tetikleyicisi, rota verilerinden kimlik arama
Aşağıdaki örnekte tek bir belgeyi alan bir işlev gösterilmektedir. İşlev, arama için kimlik ve bölüm anahtarı değerini belirtmek için yol verilerini kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik ve bölüm anahtarı değeri, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.
SqlQuery kullanarak kuyruk tetikleyicisi, birden çok belge alma
Aşağıdaki örnekte bağlamayı kullanan bir Azure Cosmos DB giriş bağlaması Python işlevi gösterilmektedir. İşlev, sorgu parametrelerini özelleştirmek için bir kuyruk tetikleyicisi kullanarak SQL sorgusu tarafından belirtilen birden çok belgeyi alır.
Kuyruk tetikleyicisi bir parametresi departmentIdsağlar. kuyruk iletisi { "departmentId" : "Finance" } , finans departmanı için tüm kayıtları döndürür.
Özellikler
hem işlem içi hem de yalıtılmış çalışan işlemi C# kitaplıkları işlevi tanımlamak için öznitelikleri kullanır. Bunun yerine C# betiği, C# betik kılavuzunda açıklandığı gibi bir function.json yapılandırma dosyası kullanır.
| Öznitelik özelliği | Açıklama |
|---|---|
| Bağlantı | Sorgulanan Azure Cosmos DB hesabına nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Daha fazla bilgi için bkz . Bağlantılar. |
| DatabaseName | kapsayıcının izlendiği Azure Cosmos DB veritabanının adı. |
| ContainerName | İzlenen kapsayıcının adı. |
| PartitionKey | Arama için bölüm anahtarı değerini belirtir. Bağlama parametreleri içerebilir. Bölümlenmiş kapsayıcılardaki aramalar için gereklidir. |
| Kimlik | Alınacak belgenin kimliği. Bu özellik bağlama ifadelerini destekler. hem hem Id de SqlQuery özelliklerini ayarlamayın. Herhangi birini ayarlamazsanız kapsayıcının tamamı alınır. |
| SqlQuery | Birden çok belgeyi almak için kullanılan Azure Cosmos DB SQL sorgusu. özelliği, şu örnekte olduğu gibi çalışma zamanı bağlamalarını destekler: SELECT * FROM c where c.departmentId = {departmentId}. hem hem Id de SqlQuery özelliklerini ayarlamayın. Herhangi birini ayarlamazsanız kapsayıcının tamamı alınır. |
| PreferredLocations | (İsteğe bağlı) Azure Cosmos DB hizmetinde coğrafi olarak çoğaltılan veritabanı hesapları için tercih edilen konumları (bölgeleri) tanımlar. Değerler virgülle ayrılmış olmalıdır. Örneğin, East US,South Central US,North Europe. |
Dekoratörler
Python v2 işlevleri, uzantı sürümüne bağlı olarak bu özellikleri destekleyen cosmos_db_input dekoratörü kullanılarak tanımlanır:
| Özellik | Açıklama |
|---|---|
arg_name |
Değişiklikleri olan belgelerin listesini temsil eden işlev kodunda kullanılan değişken adı. |
database_name |
koleksiyonun izlendiği Azure Cosmos DB veritabanının adı. |
container_name |
İzlenen Azure Cosmos DB koleksiyonunun adı. |
connection |
İzlenen Azure Cosmos DB bağlantı dizesi. |
partition_key |
İzlenen Azure Cosmos DB bölüm anahtarı. |
id |
Alınacak belgenin kimliği. |
function.json kullanılarak tanımlanan Python işlevleri için Configuration bölümüne bakın.
Ek Açıklamalar
Java işlevleri çalışma zamanı kitaplığından, Azure Cosmos DB'den okunan parametrelerde @CosmosDBInput ek açıklamasını kullanın. Ek açıklama aşağıdaki özellikleri destekler:
Yapılandırma
Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanır ve burada özellikler uzantı sürümüne göre farklılık gösterir:
| function.json özelliği | Açıklama |
|---|---|
| türü | olarak ayarlanmalıdır cosmosDB. |
| yön | olarak ayarlanmalıdır in. |
| ad | Değişiklikleri olan belgelerin listesini temsil eden işlev kodunda kullanılan değişken adı. |
| bağlantı | İzlenen Azure Cosmos DB hesabına nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar kapsayıcısının adı. Daha fazla bilgi için bkz . Bağlantılar. |
| databaseName | kapsayıcının izlendiği Azure Cosmos DB veritabanının adı. |
| containerName | İzlenen kapsayıcının adı. |
| partitionKey | Arama için bölüm anahtarı değerini belirtir. Bağlama parametreleri içerebilir. Bölümlenmiş kapsayıcılardaki aramalar için gereklidir. |
| ID | Alınacak belgenin kimliği. Bu özellik bağlama ifadelerini destekler. hem hem id de sqlQuery özelliklerini ayarlamayın. Herhangi birini ayarlamazsanız kapsayıcının tamamı alınır. |
| sqlQuery | Birden çok belgeyi almak için kullanılan Azure Cosmos DB SQL sorgusu. özelliği, şu örnekte olduğu gibi çalışma zamanı bağlamalarını destekler: SELECT * FROM c where c.departmentId = {departmentId}. hem hem id de sqlQuery özelliklerini ayarlamayın. Herhangi birini ayarlamazsanız kapsayıcının tamamı alınır. |
| preferredLocations | (İsteğe bağlı) Azure Cosmos DB hizmetinde coğrafi olarak çoğaltılan veritabanı hesapları için tercih edilen konumları (bölgeleri) tanımlar. Değerler virgülle ayrılmış olmalıdır. Örneğin, East US,South Central US,North Europe. |
Tam örnekler için Örnek bölümüne bakın.
Kullanım
İşlev başarıyla çıktığında, giriş belgesinde yapılan tüm değişiklikler otomatik olarak kalıcı hale getirilir.
Cosmos DB giriş bağlaması tarafından desteklenen parametre türü İşlevler çalışma zamanı sürümüne, uzantı paketi sürümüne ve kullanılan C# modalitesine bağlıdır.
İşlevin tek bir belgeyi işlemesini istediğinizde Cosmos DB giriş bağlaması aşağıdaki türlere bağlanabilir:
| Türü | Açıklama |
|---|---|
| JSON serileştirilebilir türler | İşlevler, belgenin JSON verilerini seri durumdan çıkararak düz eski bir CLR nesnesi (POCO) türüne dönüştürmeye çalışır. |
İşlevin bir sorgudan birden çok belgeyi işlemesini istediğinizde, Cosmos DB giriş bağlaması aşağıdaki türlere bağlanabilir:
| Türü | Açıklama |
|---|---|
IEnumerable<T>burada T JSON serileştirilebilir bir türdür |
Sorgu tarafından döndürülen varlıkların numaralandırması. Her girdi bir belgeyi temsil eder. |
| CosmosClient1 | Cosmos DB hesabına bağlı bir istemci. |
| Veritabanı1 | Cosmos DB veritabanına bağlı bir istemci. |
| Kapsayıcı1 | Cosmos DB kapsayıcısına bağlı bir istemci. |
Java işlevleri çalışma zamanı kitaplığından@CosmosDBInput ek açıklaması Azure Cosmos DB verileri işleve sunar. Bu ek açıklama Optional<T> kullanılarak yerel Java türleri, POJO'lar veya null atanabilir değerlerle kullanılabilir.
Belgelerde güncelleştirmeler işlev çıkışında otomatik olarak yapılmaz. bir işlevdeki belgeleri güncelleştirmek için çıkış bağlaması kullanın. Daha fazla ayrıntı için Bkz. PowerShell örneği.
Veriler bir DocumentList parametre aracılığıyla işlevin kullanımına sunulur. Belgede yapılan değişiklikler otomatik olarak kalıcı olmaz.
İşlevler, Azure Cosmos için aşağıdaki temel SDK türlerini kullanarak verilerle çalışmanızı sağlayan Python SDK türü bağlamalarını da destekler:
Önemli
Python için CosmosDB SDK türleri desteği Önizleme aşamasındadır ve yalnızca Python v2 programlama modeli için desteklenir. Daha fazla bilgi için bkz. Python
SDK türleri.
Bağlantılar
connectionStringSetting
/
connection ve leaseConnectionStringSetting/leaseConnection özellikleri, uygulamanın Azure Cosmos DB nasıl bağlandığını belirten ortam yapılandırmasına başvurur. Şunları belirtebilirler:
- bağlantı dizesi içeren bir uygulama ayarının adı.
- Birden çok uygulama ayarı için paylaşılan ön ekin adı ve bu ad birlikte yönetilen kimlik bağlantısı tanımlar. Bu seçenek yalnızca uzantının
connectionleaseConnection4.x veya sonraki sürümlerinde kullanılabilir.
Yapılandırılan değer hem tek bir ayar için tam eşleşme hem de diğer ayarlar için bir ön ek eşleşmesiyse, tam eşleşme kullanılır.
Tavsiye
Gelişmiş güvenlik için bağlantı dizeleri üzerinden yönetilen kimlik bağlantıları önerilir. Bağlantı dizeleri kullanıma sunulan kimlik bilgilerini içerirken yönetilen kimlikler gizli dizileri yönetme gereksinimini ortadan kaldırır.
Uzantının version 4.x veya üzerini kullanıyorsanız gizli diziyle bağlantı dizesi kullanmak yerine uygulamanın Microsoft Entra kimliği kullanmasını sağlayabilirsiniz. Bunu yapmak için, tetikleyici ve bağlama yapılandırmasındaki bağlantı özelliğine eşleyen ortak bir ön ek altında ayarları tanımlayın.
Bu modda, uzantı aşağıdaki uygulama ayarlarını gerektirir:
| Şablon tabanlı ayar | Açıklama | Kimlik türü |
|---|---|---|
<CONNECTION_NAME_PREFIX>__accountEndpoint |
hesap uç noktası URI'sini Azure Cosmos DB. | Sistem tarafından atanan veya kullanıcı tarafından atanan |
<CONNECTION_NAME_PREFIX>__credential |
olarak ayarlanmalıdır managedidentity. |
Kullanıcı tarafından atanan |
<CONNECTION_NAME_PREFIX>__clientId |
Kullanıcıya atanmış yönetilen kimliğin istemci ID'si. | Kullanıcı tarafından atanan |
ile değiştirdiğiniz <CONNECTION_NAME_PREFIX> değer, bağlama uzantısı tarafından bağlantı ayarının adı olarak değerlendirilir.
Örneğin, bağlama yapılandırmanız kullanıcı tarafından atanan bir yönetilen kimlikle belirtiyorsa connection = "CosmosDBConnection" aşağıdaki uygulama ayarlarını yapılandırın:
{
"CosmosDBConnection__accountEndpoint": "https://mycosmosdb.documents.azure.com:443/",
"CosmosDBConnection__credential": "managedidentity",
"CosmosDBConnection__clientId": "00000000-0000-0000-0000-000000000000"
}
Tavsiye
Birden çok kaynakta kimlik izinleri üzerinde ayrıntılı denetime ihtiyacınız olan üretim senaryoları için kullanıcı tarafından atanan yönetilen kimlikleri kullanın.
Bağlantıyı daha fazla özelleştirmek için şablondaki ek ayarları kullanabilirsiniz. Bkz. Kimlik tabanlı bağlantılar için ortak özellikler.
Azure İşlevleri hizmetinde barındırıldığında, kimlik tabanlı bağlantılar managed identity kullanır. Ve özellikleriyle credentialclientID kullanıcı tarafından atanan bir kimlik belirtilse de, sistem tarafından atanan kimlik varsayılan olarak kullanılır. Kullanıcı tarafından atanan kimliği kaynak kimliğiyle yapılandırmanın desteklenmediğini unutmayın. Yerel geliştirme gibi diğer bağlamlarda çalıştırıldığında, bunun yerine geliştirici kimliğiniz kullanılır, ancak bu özelleştirilebilir. Bkz. Kimlik tabanlı bağlantılarla yerel geliştirme.
Kimliğe izin verme
Hangi kimlik kullanılıyorsa, hedeflenen eylemleri gerçekleştirmek için izinlere sahip olmalıdır. Çoğu Azure hizmet için bu, bu izinleri sağlayan yerleşik veya özel rolleri kullanarak Azure RBAC
Önemli
Bazı izinler, tüm bağlamlar için gerekli olmayan hedef hizmet tarafından gösterilebilir. Mümkün olduğunda, kimliğe yalnızca gerekli ayrıcalıkları sağlayarak en az ayrıcalık ilkesine uyun. Örneğin, uygulamanın yalnızca bir veri kaynağından okuyabilmesi gerekiyorsa, yalnızca okuma izni olan bir rol kullanın. Okuma işlemi için aşırı izin olduğundan, bu hizmete yazmaya da izin veren bir rol atamak uygun olmaz. Benzer şekilde, rol atamasının kapsamının yalnızca okunması gereken kaynaklara göre ayarlandığından emin olmak istersiniz.
Cosmos DB, veri işlemleri için Azure RBAC kullanmaz. Bunun yerine, benzer kavramlar üzerine oluşturulmuş bir Cosmos DB yerleşik RBAC sistemi kullanır. Çalışma zamanında veritabanı hesabınıza erişim sağlayan bir rol ataması oluşturmanız gerekir. Owner gibi Azure RBAC Yönetimi rolleri yeterli değildir. Aşağıdaki tabloda, normal işlemde Azure Cosmos DB uzantısı kullanılırken önerilen yerleşik roller gösterilmektedir. Uygulamanız, yazdığınız koda göre ek izinler gerektirebilir.
| Bağlama türü | Örnek yerleşik roller1 |
|---|---|
| Tetikleyici2 | Cosmos DB Yerleşik Veri Katkıda Bulunanı |
| Giriş bağlaması | Cosmos DB Yerleşik Veri Okuyucusu |
| Çıkış bağlaması | Cosmos DB Yerleşik Veri Katkıda Bulunanı |
1 Bu roller Azure RBAC rol atamasında kullanılamaz. Bu rolleri atama hakkında ayrıntılı bilgi için Cosmos DB yerleşik RBAC sistemi belgelerine bakın.
2 Cosmos DB, kimlik kullanırken kapsayıcı oluşturmayı bir yönetim işlemi olarak ele alır. Tetikleyici için veri düzlemi işlemi olarak kullanılamaz. İşlevinizi ayarlamadan önce tetikleyicinin ihtiyaç duyduğu kapsayıcıları (kira kapsayıcısı dahil) oluşturduğunuzdan emin olmanız gerekir.