Azure İşlevleri 2.x ve üzeri için Azure Cosmos DB tetikleyicisi
Azure Cosmos DB Tetikleyicisi, bölümler arasında eklemeleri ve güncelleştirmeleri dinlemek için Azure Cosmos DB değişiklik akışını kullanır. Değişiklik akışı, silme güncelleştirmeleri dahil olmak üzere yeni ve güncelleştirilmiş öğeler yayımlar.
Kurulum ve yapılandırma ayrıntıları hakkında bilgi için genel bakışa bakın.
Tüketim ve Premium planları için Cosmos DB ölçeklendirme kararları hedef tabanlı ölçeklendirme yoluyla yapılır. Daha fazla bilgi için bkz . Hedef tabanlı ölçeklendirme.
Ö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ıza olanak tanır. Daha fazla bilgi için bkz . Python geliştirici kılavuzu.
Bu makale her iki programlama modelini de destekler.
Örnek
Tetikleyicinin kullanımı uzantı paketi sürümüne ve işlev uygulamanızda kullanılan C# modalitesine bağlıdır ve bu da aşağıdakilerden biri olabilir:
Yalıtılmış çalışan işlem sınıfı kitaplığı derlenmiş C# işlevi çalışma zamanından yalıtılmış bir işlemde çalışır.
Aşağıdaki örnekler, verilen C# modu için uzantı sürümüne bağlıdır.
Bu örnek basit ToDoItem
bir türe başvurur:
public class ToDoItem
{
public string? Id { get; set; }
public string? Description { get; set; }
}
Belirtilen veritabanı ve koleksiyonda eklemeler veya güncelleştirmeler olduğunda aşağıdaki işlev çağrılır.
[Function("CosmosTrigger")]
public void Run([CosmosDBTrigger(
databaseName: "ToDoItems",
containerName:"TriggerItems",
Connection = "CosmosDBConnection",
LeaseContainerName = "leases",
CreateLeaseContainerIfNotExists = true)] IReadOnlyList<ToDoItem> todoItems,
FunctionContext context)
{
if (todoItems is not null && todoItems.Any())
{
foreach (var doc in todoItems)
{
_logger.LogInformation("ToDoItem: {desc}", doc.Description);
}
}
}
Bu işlev, belirtilen veritabanı ve kapsayıcıda eklemeler veya güncelleştirmeler olduğunda çağrılır.
Azure Cosmos DB SDK'sında şema değişiklikleri nedeniyle, Azure Cosmos DB uzantısının 4.x sürümü Java işlevleri için azure-functions-java-library V3.0.0 gerektirir.
@FunctionName("CosmosDBTriggerFunction")
public void run(
@CosmosDBTrigger(
name = "items",
databaseName = "ToDoList",
containerName = "Items",
leaseContainerName="leases",
connection = "AzureCosmosDBConnection",
createLeaseContainerIfNotExists = true
)
Object inputItem,
final ExecutionContext context
) {
context.getLogger().info("Items modified: " + inputItems.size());
}
Java işlevleri çalışma zamanı kitaplığında, değeri Azure Cosmos DB'den gelen parametrelerde ek açıklamayı kullanın@CosmosDBTrigger
. Bu ek açıklama kullanılarak yerel Java türleri, POJO'lar veya null atanabilir değerlerle Optional<T>
kullanılabilir.
Aşağıdaki örnekte bir Azure Cosmos DB tetikleyici TypeScript işlevi gösterilmektedir. İşlev, Azure Cosmos DB kayıtları eklendiğinde veya değiştirildiğinde günlük iletileri yazar.
import { app, InvocationContext } from '@azure/functions';
export async function cosmosDBTrigger1(documents: unknown[], context: InvocationContext): Promise<void> {
context.log(`Cosmos DB function processed ${documents.length} documents`);
}
app.cosmosDB('cosmosDBTrigger1', {
connection: '<connection-app-setting>',
databaseName: 'Tasks',
containerName: 'Items',
createLeaseContainerIfNotExists: true,
handler: cosmosDBTrigger1,
});
Aşağıdaki örnekte Azure Cosmos DB tetikleyicisi JavaScript işlevi gösterilmektedir. İşlev, Azure Cosmos DB kayıtları eklendiğinde veya değiştirildiğinde günlük iletileri yazar.
const { app } = require('@azure/functions');
app.cosmosDB('cosmosDBTrigger1', {
connection: '<connection-app-setting>',
databaseName: 'Tasks',
containerName: 'Items',
createLeaseContainerIfNotExists: true,
handler: (documents, context) => {
context.log(`Cosmos DB function processed ${documents.length} documents`);
},
});
Aşağıdaki örnekte, Azure Cosmos DB'de veri değişiklikleri olarak bir işlevin nasıl çalıştırılacakları gösterilmektedir.
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "<connection-app-setting>",
"databaseName": "Tasks",
"collectionName": "Items",
"createLeaseCollectionIfNotExists": true
}
Bağlama öznitelik adlarından bazılarının Azure Cosmos DB uzantısının 4.x sürümünde değiştiğini unutmayın.
run.ps1 dosyasında, parametresi aracılığıyla $Documents
işlevi tetikleyen belgeye erişebilirsiniz.
param($Documents, $TriggerMetadata)
Write-Host "First document Id modified : $($Documents[0].id)"
Aşağıdaki örnekte Azure Cosmos DB tetikleyici bağlaması gösterilmektedir. Örnek, v1 veya v2 Python programlama modelini kullanıp kullanmadığınıza bağlıdır.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="CosmosDBTrigger")
@app.cosmos_db_trigger(name="documents",
connection="CONNECTION_SETTING",
database_name="DB_NAME",
container_name="CONTAINER_NAME",
lease_container_name="leases",
create_lease_container_if_not_exists="true")
def test_function(documents: func.DocumentList) -> str:
if documents:
logging.info('Document id: %s', documents[0]['id'])
Özellikler
hem işlem içi hem de yalıtılmış işlem C# kitaplıkları, işlevi tanımlamak için CosmosDBTriggerAttribute 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ı | İzlenen 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ı. |
LeaseConnection | (İsteğe bağlı) Kira kapsayıcısını barındıran Azure Cosmos DB hesabına nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Ayarlanmadığında Connection , değer kullanılır. Bu parametre, portalda bağlama oluşturulduğunda otomatik olarak ayarlanır. Kira kapsayıcısı için bağlantı dizesi yazma izinlerine sahip olmalıdır. |
LeaseDatabaseName | (İsteğe bağlı) Kiraları depolamak için kullanılan kapsayıcıyı tutan veritabanının adı. Ayarlanmadığında, ayarın databaseName değeri kullanılır. |
LeaseContainerName | (İsteğe bağlı) Kiraları depolamak için kullanılan kapsayıcının adı. Ayarlanmadığında, değer leases kullanılır. |
CreateLeaseContainerIfNotExists | (İsteğe bağlı) olarak true ayarlandığında, kira kapsayıcısı henüz mevcut olmadığında otomatik olarak oluşturulur. Varsayılan değer şudur: false . Değerini true olarak ayarlarsanız Microsoft Entra kimliklerini kullanırken kapsayıcı oluşturma işlemine izin verilmez ve İşleviniz başlatılamaz. |
LeasesContainerThroughput | (İsteğe bağlı) Kira kapsayıcısı oluşturulduğunda atanacak İstek Birimi sayısını tanımlar. Bu ayar yalnızca olarak ayarlandığında true kullanılırCreateLeaseContainerIfNotExists . Bağlama portal kullanılarak oluşturulduğunda bu parametre otomatik olarak ayarlanır. |
LeaseContainerPrefix | (İsteğe bağlı) Ayarlandığında, değer bu işlev için Kira kapsayıcısında oluşturulan kiralara ön ek olarak eklenir. Ön ek kullanmak, iki ayrı Azure İşlevleri farklı ön ekleri kullanarak aynı Kira kapsayıcısını paylaşmasına olanak tanır. |
FeedPollDelay | (İsteğe bağlı) Tüm geçerli değişiklikler boşaltıldıktan sonra akıştaki yeni değişiklikler için bölümü yoklama arasındaki gecikme süresi (milisaniye cinsinden). Varsayılan değer 5.000 milisaniye veya 5 saniyedir. |
LeaseAcquireInterval | (İsteğe bağlı) Ayarlandığında, bölümlerin bilinen konak örnekleri arasında eşit olarak dağıtılıp dağıtılamadığını hesaplamak için bir görevi başlatma aralığını milisaniye cinsinden tanımlar. Varsayılan değer 13000 'dir (13 saniye). |
LeaseExpirationInterval | (İsteğe bağlı) Ayarlandığında, bölümü temsil eden bir kirada kiranın alındığı aralığı milisaniye cinsinden tanımlar. Kira bu aralık içinde yenilenmezse süresi dolmasına neden olur ve bölümün sahipliği başka bir örneğe taşınır. Varsayılan değer 60000 'dir (60 saniye). |
LeaseRenewInterval | (İsteğe bağlı) Ayarlandığında, o anda bir örnek tarafından tutulan bölümler için tüm kiralamalar için yenileme aralığını milisaniye cinsinden tanımlar. Varsayılan değer 17000 'dir (17 saniye). |
MaxItemsPerInvocation | (İsteğe bağlı) Ayarlandığında, bu özellik İşlev çağrısı başına alınan en fazla öğe sayısını ayarlar. İzlenen kapsayıcıdaki işlemler saklı yordamlar aracılığıyla gerçekleştiriliyorsa, değişiklik akışındaki öğeler okunurken işlem kapsamı korunur. Sonuç olarak, alınan öğe sayısı belirtilen değerden yüksek olabilir, böylece aynı işlem tarafından değiştirilen öğeler tek bir atomik toplu işlemin parçası olarak döndürülür. |
StartFromBeginning | (İsteğe bağlı) Bu seçenek Tetikleyici'ye geçerli zamanda başlamak yerine kapsayıcının değişiklik geçmişinin başından itibaren değişiklikleri okumasını söyler. Baştan okuma yalnızca tetikleyici ilk kez başlatıldığında çalışır, sonraki çalıştırmalarda olduğu gibi denetim noktaları zaten depolanır. Bu seçeneğin true zaten oluşturulmuş kiralar olduğunda olarak ayarlanmasının hiçbir etkisi yoktur. |
StartFromTime | (İsteğe bağlı) Değişiklik akışı okuma işleminin başlatıldığı tarih ve saati alır veya ayarlar. Önerilen biçim, GIBI 2021-02-16T14:19:29Z UTC belirleyicisi ile ISO 8601'dir. Bu yalnızca ilk tetikleyici durumunu ayarlamak için kullanılır. Tetikleyici kiralama durumuna geldikten sonra bu değerin değiştirilmesinin hiçbir etkisi olmaz. |
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, "Doğu ABD,Orta Güney ABD,Kuzey Avrupa". |
Dekoratörler
Yalnızca Python v2 programlama modeli için geçerlidir.
Bir dekoratör kullanılarak tanımlanan Python v2 işlevleri için, üzerinde aşağıdaki özellikler:cosmos_db_trigger
Ö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ı. |
collection_name |
İzlenen Azure Cosmos DB koleksiyonunun adı. |
connection |
İzlenen Azure Cosmos DB'nin bağlantı dizesi. |
function.json kullanılarak tanımlanan Python işlevleri için Yapılandırma bölümüne bakın.
Ek Açıklamalar
Azure Cosmos DB SDK'sında şema değişiklikleri nedeniyle, Azure Cosmos DB uzantısının 4.x sürümü Java işlevleri için azure-functions-java-library V3.0.0 gerektirir.
@CosmosDBTrigger
Azure Cosmos DB'den veri okuyan parametrelerde ek açıklamayı kullanın. Ek açıklama aşağıdaki özellikleri destekler:
Öznitelik özelliği | Açıklama |
---|---|
bağlantı | İzlenen 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. |
ad | İşlevin adı. |
databaseName | Kapsayıcının izlendiği Azure Cosmos DB veritabanının adı. |
containerName | İzlenen kapsayıcının adı. |
leaseConnectionStringSetting | (İsteğe bağlı) Kira kapsayıcısını barındıran Azure Cosmos DB hesabına nasıl bağlanıldığını belirten bir uygulama ayarının veya ayar koleksiyonunun adı. Ayarlanmadığında Connection , değer kullanılır. Bu parametre, portalda bağlama oluşturulduğunda otomatik olarak ayarlanır. Kira kapsayıcısı için bağlantı dizesi yazma izinlerine sahip olmalıdır. |
leaseDatabaseName | (İsteğe bağlı) Kiraları depolamak için kullanılan kapsayıcıyı tutan veritabanının adı. Ayarlanmadığında, ayarın databaseName değeri kullanılır. |
leaseContainerName | (İsteğe bağlı) Kiraları depolamak için kullanılan kapsayıcının adı. Ayarlanmadığında, değer leases kullanılır. |
createLeaseContainerIfNotExists | (İsteğe bağlı) olarak true ayarlandığında, kira kapsayıcısı henüz mevcut olmadığında otomatik olarak oluşturulur. Varsayılan değer şudur: false . Değerini true olarak ayarlarsanız Microsoft Entra kimliklerini kullanırken kapsayıcı oluşturmak izin verilen bir işlem değildir ve İşleviniz başlatılmaz. |
leasesContainerThroughput | (İsteğe bağlı) Kira kapsayıcısı oluşturulduğunda atanacak İstek Birimi sayısını tanımlar. Bu ayar yalnızca olarak ayarlandığında true kullanılırCreateLeaseContainerIfNotExists . Bağlama portal kullanılarak oluşturulduğunda bu parametre otomatik olarak ayarlanır. |
leaseContainerPrefix | (İsteğe bağlı) Ayarlandığında, değer bu işlev için Kira kapsayıcısında oluşturulan kiralara ön ek olarak eklenir. Ön ek kullanmak, iki ayrı Azure İşlevleri farklı ön ekleri kullanarak aynı Kira kapsayıcısını paylaşmasına olanak tanır. |
feedPollDelay | (İsteğe bağlı) Tüm geçerli değişiklikler boşaltıldıktan sonra akıştaki yeni değişiklikler için bölümü yoklama arasındaki gecikme süresi (milisaniye cinsinden). Varsayılan değer 5.000 milisaniye veya 5 saniyedir. |
leaseAcquireInterval | (İsteğe bağlı) Ayarlandığında, bölümlerin bilinen konak örnekleri arasında eşit olarak dağıtılıp dağıtılamadığını hesaplamak için bir görevi başlatma aralığını milisaniye cinsinden tanımlar. Varsayılan değer 13000 'dir (13 saniye). |
leaseExpirationInterval | (İsteğe bağlı) Ayarlandığında, bölümü temsil eden bir kirada kiranın alındığı aralığı milisaniye cinsinden tanımlar. Kira bu aralık içinde yenilenmezse süresi dolar ve bölümün sahipliği başka bir örneğe taşınır. Varsayılan değer 60000 'dir (60 saniye). |
leaseRenewInterval | (İsteğe bağlı) Ayarlandığında, o anda bir örnek tarafından tutulan bölümler için tüm kiralamalar için yenileme aralığını milisaniye cinsinden tanımlar. Varsayılan değer 17000 'dir (17 saniye). |
maxItemsPerInvocation | (İsteğe bağlı) Ayarlandığında, bu özellik İşlev çağrısı başına alınan en fazla öğe sayısını ayarlar. İzlenen kapsayıcıdaki işlemler saklı yordamlar aracılığıyla gerçekleştiriliyorsa, değişiklik akışındaki öğeler okunurken işlem kapsamı korunur. Sonuç olarak, alınan öğe sayısı belirtilen değerden yüksek olabilir, böylece aynı işlem tarafından değiştirilen öğeler tek bir atomik toplu işlemin parçası olarak döndürülür. |
startFromBeginning | (İsteğe bağlı) Bu seçenek Tetikleyici'ye geçerli zamanda başlamak yerine kapsayıcının değişiklik geçmişinin başından itibaren değişiklikleri okumasını söyler. Baştan okuma yalnızca tetikleyici ilk kez başlatıldığında çalışır, sonraki çalıştırmalarda olduğu gibi denetim noktaları zaten depolanır. Bu seçeneğin true zaten oluşturulmuş kiralar olduğunda olarak ayarlanmasının hiçbir etkisi yoktur. |
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, "Doğu ABD,Orta Güney ABD,Kuzey Avrupa". |
Yapılandırma
Yalnızca Python v1 programlama modeli için geçerlidir.
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 |
---|---|
type | olarak ayarlanmalıdır cosmosDBTrigger . |
direction | olarak ayarlanmalıdır in . Bu parametre, Tetikleyiciyi Azure portalında oluşturduğunuzda otomatik olarak ayarlanır. |
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 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ı. |
leaseConnection | (İsteğe bağlı) Kira kapsayıcısını barındıran 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ı. Ayarlanmadığında connection , değer kullanılır. Bu parametre, portalda bağlama oluşturulduğunda otomatik olarak ayarlanır. Kira kapsayıcısı için bağlantı dizesi yazma izinlerine sahip olmalıdır. |
leaseDatabaseName | (İsteğe bağlı) Kiraları depolamak için kullanılan kapsayıcıyı tutan veritabanının adı. Ayarlanmadığında, ayarın databaseName değeri kullanılır. |
leaseContainerName | (İsteğe bağlı) Kiraları depolamak için kullanılan kapsayıcının adı. Ayarlanmadığında, değer leases kullanılır. |
createLeaseContainerIfNotExists | (İsteğe bağlı) olarak true ayarlandığında, kira kapsayıcısı henüz mevcut olmadığında otomatik olarak oluşturulur. Varsayılan değer şudur: false . Değerini true olarak ayarlarsanız Microsoft Entra kimliklerini kullanırken kapsayıcı oluşturma işlemine izin verilmez ve İşleviniz başlatılamaz. |
leasesContainerThroughput | (İsteğe bağlı) Kira kapsayıcısı oluşturulduğunda atanacak İstek Birimi sayısını tanımlar. Bu ayar yalnızca olarak ayarlandığında true kullanılırcreateLeaseContainerIfNotExists . Bağlama portal kullanılarak oluşturulduğunda bu parametre otomatik olarak ayarlanır. |
leaseContainerPrefix | (İsteğe bağlı) Ayarlandığında, değer bu işlev için Kira kapsayıcısında oluşturulan kiralara ön ek olarak eklenir. Ön ek kullanmak, iki ayrı Azure İşlevleri farklı ön ekleri kullanarak aynı Kira kapsayıcısını paylaşmasına olanak tanır. |
feedPollDelay | (İsteğe bağlı) Tüm geçerli değişiklikler boşaltıldıktan sonra akıştaki yeni değişiklikler için bölümü yoklama arasındaki gecikme süresi (milisaniye cinsinden). Varsayılan değer 5.000 milisaniye veya 5 saniyedir. |
leaseAcquireInterval | (İsteğe bağlı) Ayarlandığında, bölümlerin bilinen konak örnekleri arasında eşit olarak dağıtılıp dağıtılamadığını hesaplamak için bir görevi başlatma aralığını milisaniye cinsinden tanımlar. Varsayılan değer 13000 'dir (13 saniye). |
leaseExpirationInterval | (İsteğe bağlı) Ayarlandığında, bölümü temsil eden bir kirada kiranın alındığı aralığı milisaniye cinsinden tanımlar. Kira bu aralık içinde yenilenmezse süresi dolmasına neden olur ve bölümün sahipliği başka bir örneğe taşınır. Varsayılan değer 60000 'dir (60 saniye). |
leaseRenewInterval | (İsteğe bağlı) Ayarlandığında, o anda bir örnek tarafından tutulan bölümler için tüm kiralamalar için yenileme aralığını milisaniye cinsinden tanımlar. Varsayılan değer 17000 'dir (17 saniye). |
maxItemsPerInvocation | (İsteğe bağlı) Ayarlandığında, bu özellik İşlev çağrısı başına alınan en fazla öğe sayısını ayarlar. İzlenen kapsayıcıdaki işlemler saklı yordamlar aracılığıyla gerçekleştiriliyorsa, değişiklik akışındaki öğeler okunurken işlem kapsamı korunur. Sonuç olarak, alınan öğe sayısı belirtilen değerden yüksek olabilir, böylece aynı işlem tarafından değiştirilen öğeler tek bir atomik toplu işlemin parçası olarak döndürülür. |
startFromBeginning | (İsteğe bağlı) Bu seçenek Tetikleyici'ye geçerli zamanda başlamak yerine kapsayıcının değişiklik geçmişinin başından itibaren değişiklikleri okumasını söyler. Baştan okuma yalnızca tetikleyici ilk kez başlatıldığında çalışır, sonraki çalıştırmalarda olduğu gibi denetim noktaları zaten depolanır. Bu seçeneğin true zaten oluşturulmuş kiralar olduğunda olarak ayarlanmasının hiçbir etkisi yoktur. |
startFromTime | (İsteğe bağlı) Değişiklik akışı okuma işleminin başlatıldığı tarih ve saati alır veya ayarlar. Önerilen biçim, GIBI 2021-02-16T14:19:29Z UTC belirleyicisi ile ISO 8601'dir. Bu yalnızca ilk tetikleyici durumunu ayarlamak için kullanılır. Tetikleyici kiralama durumuna geldikten sonra bu değerin değiştirilmesinin hiçbir etkisi olmaz. |
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, "Doğu ABD,Orta Güney ABD,Kuzey Avrupa". |
Tam örnekler için Örnek bölümüne bakın.
Kullanım
Tetikleyici, bölümler üzerinde kiraları depolamak için kullandığı ikinci bir koleksiyon gerektirir. Tetikleyicinin çalışması için hem izlenen koleksiyonun hem de kiraları içeren koleksiyonun kullanılabilir olması gerekir.
Önemli
Birden çok işlev aynı koleksiyon için Azure Cosmos DB tetikleyicisi kullanacak şekilde yapılandırılmışsa, işlevlerin her biri ayrılmış bir kira koleksiyonu kullanmalı veya her işlev için farklı LeaseCollectionPrefix
bir değer belirtmelidir. Aksi takdirde, işlevlerden yalnızca biri tetiklenmiş olur. Ön ek hakkında bilgi için Öznitelikler bölümüne bakın.
Önemli
Birden çok işlev aynı koleksiyon için Azure Cosmos DB tetikleyicisi kullanacak şekilde yapılandırılmışsa, işlevlerin her biri ayrılmış bir kira koleksiyonu kullanmalı veya her işlev için farklı leaseCollectionPrefix
bir değer belirtmelidir. Aksi takdirde, işlevlerden yalnızca biri tetiklenmiş olur. Ön ek hakkında bilgi için Ek Açıklamalar bölümüne bakın.
Önemli
Birden çok işlev aynı koleksiyon için Azure Cosmos DB tetikleyicisi kullanacak şekilde yapılandırılmışsa, işlevlerin her biri ayrılmış bir kira koleksiyonu kullanmalı veya her işlev için farklı leaseCollectionPrefix
bir değer belirtmelidir. Aksi takdirde, işlevlerden yalnızca biri tetiklenir. Ön ek hakkında bilgi için Yapılandırma bölümüne bakın.
Tetikleyici, belgenin güncelleştirildiğini veya eklendiğini göstermez, yalnızca belgenin kendisini sağlar. Güncelleştirmeleri ve eklemeleri farklı şekilde işlemeniz gerekiyorsa, ekleme veya güncelleştirme için zaman damgası alanları uygulayarak bunu yapabilirsiniz.
Azure Cosmos DB tetikleyicisi 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 tetikleyicisi aşağıdaki türlere bağlanabilir:
Type | Açıklama |
---|---|
JSON serileştirilebilir türler | İşlevler, Cosmos DB değişiklik akışından belgenin JSON verilerinin seri durumdan çıkarılarak düz eski bir CLR nesnesi (POCO) türüne dönüştürülmesi için çalışır. |
İşlevin bir grup belgeyi işlemesini istediğinizde, Cosmos DB tetikleyicisi aşağıdaki türlere bağlanabilir:
Type | Açıklama |
---|---|
IEnumerable<T> burada T JSON serileştirilebilir bir türdür |
Toplu işe dahil edilen varlıkların numaralandırması. Her girdi Cosmos DB değişiklik akışından bir belgeyi temsil eder. |
Bağlantılar
connectionStringSetting
/connection
ve leaseConnectionStringSetting
/leaseConnection
özellikleri, uygulamanın Azure Cosmos DB'ye nasıl bağlanması gerektiğini belirten ortam yapılandırmasına başvurulardır. Bunlar şunları belirtebilir:
- bağlantı dizesi içeren bir uygulama ayarının adı
- Birden çok uygulama ayarı için paylaşılan ön ekin adı ve birlikte kimlik tabanlı bağlantı tanımlama. Bu seçenek yalnızca uzantının
connection
leaseConnection
4.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.
Connection string
Veritabanı hesabınızın bağlantı dizesi, bağlama yapılandırmasının bağlantı özelliği tarafından belirtilen değerle eşleşen bir adla bir uygulama ayarında depolanmalıdır.
Kimlik tabanlı bağlantılar
Uzantının 4.x veya üzeri bir sürümünü kullanıyorsanız, gizli dizi içeren bir bağlantı dizesi kullanmak yerine uygulamanın bir 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şlenen ortak bir ön ek altında ayarları tanımlayabilirsiniz.
Bu modda uzantı aşağıdaki özellikleri gerektirir:
Özellik | Ortam değişkeni şablonu | Açıklama | Örnek değer |
---|---|---|---|
Hesap Uç Noktası | <CONNECTION_NAME_PREFIX>__accountEndpoint |
Azure Cosmos DB hesap uç noktası URI'si. | <https:// database_account_name.documents.azure.com:443/> |
Bağlantıyı özelleştirmek için ek özellikler ayarlanabilir. Bkz. Kimlik tabanlı bağlantılar için ortak özellikler.
Azure İşlevleri hizmetinde barındırıldığında, kimlik tabanlı bağlantılar yönetilen kimlik kullanır. Ve özellikleriyle credential
clientID
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 hizmeti için bu, bu izinleri sağlayan yerleşik veya özel rolleri kullanarak Azure RBAC'de bir rol atamanız gerektiği anlamına gelir.
Ö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. Sahip gibi Azure RBAC Yönetimi rolleri yeterli değildir. Aşağıdaki tabloda, Azure Cosmos DB uzantısı normal işlemde 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.