Рассмотрим следующий пример : Функция получает данные документа из триггера Azure Cosmos DB и сохраняет данные в Azure Cosmos DB с помощью выходной привязки Cosmos DB
functions.json
{
"scriptFile": "__init__.py",
"bindings": [
{
"type": "cosmosDBTrigger",
"name": "docs",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "MyCosmosDBConnectionString",
"databaseName": "testdb",
"collectionName": "testcol01",
"createLeaseCollectionIfNotExists": true
},
{
"direction": "out",
"type": "cosmosDB",
"name": "outdoc",
"databaseName": "testdb",
"collectionName": "testcol02",
"leaseCollectionName": "leases",
"createLeaseCollectionIfNotExists": true,
"connectionStringSetting": "MyCosmosDBConnectionString",
"createIfNotExists": true
}
]
}
Создание учетной записи Cosmos DB и DB & Collection для тестирования
Создание учетной записи Cosmos DB
COSMOSDB_ACCOUNT_NAME="azfuncv2db"
RESOURCE_GROUP="RG-azfuncv2"
az cosmosdb create \
--name $COSMOSDB_ACCOUNT_NAME \
--kind GlobalDocumentDB \
--resource-group $RESOURCE_GROUP
Создание базы данных и коллекции в созданной вами базе данных Cosmos
# Get Key
COSMOSDB_KEY=$(az cosmosdb list-keys --name $COSMOSDB_ACCOUNT_NAME --resource-group $RESOURCE_GROUP --output tsv |awk '{print $1}')
# Create Database
az cosmosdb database create \
--name $COSMOSDB_ACCOUNT_NAME \
--db-name $DATABASE_NAME \
--key $COSMOSDB_KEY \
--resource-group $RESOURCE_GROUP
# Create a container with a partition key and provision 400 RU/s throughput.
COLLECTION_NAME="testcol01"
az cosmosdb collection create \
--resource-group $RESOURCE_GROUP \
--collection-name $COLLECTION_NAME \
--name $COSMOSDB_ACCOUNT_NAME \
--db-name $DATABASE_NAME \
--partition-key-path /name \
--throughput 400
COLLECTION_NAME="testcol02"
az cosmosdb collection create \
--resource-group $RESOURCE_GROUP \
--collection-name $COLLECTION_NAME \
--name $COSMOSDB_ACCOUNT_NAME \
--db-name $DATABASE_NAME \
--partition-key-path /name \
--throughput 400
# Create a container for leaves
# 'leaves' need to be a single collection partition
# Please see also: https://github.com/Azure/azure-functions-core-tools/issues/930
LEASES_COLLECTION_NAME="leases"
az cosmosdb collection create \
--resource-group $RESOURCE_GROUP \
--collection-name $LEASES_COLLECTION_NAME \
--name $COSMOSDB_ACCOUNT_NAME \
--db-name $DATABASE_NAME \
--throughput 400
Опубликовать функцию в облаке
FUNCTION_APP_NAME="MyFunctionApp"
func azure functionapp publish $FUNCTION_APP_NAME --build-native-deps --no-bundler
Добавить функции Настройки приложения
COSMOS_DB_CONNECTION="***************"
az webapp config appsettings set \
-n $FUNCTION_APP_NAME \
-g $RESOURCE_GROUP \
--settings \
MyCosmosDBConnectionString=$COSMOS_DB_CONNECTION