【发布时间】:2020-01-31 02:03:50
【问题描述】:
我正在尝试使用 Azure 函数 Cosmos 触发器将数据从一个集合迁移到另一个集合。我已设置 StartFromBeginning=True。我有多个要迁移的集合,因此我每个集合使用一个函数,因此迁移速度很快。
当我部署该功能时,它显示状态为正在运行,但实际上它不会启动传输,除非我停止并启动。或者,如果我转到监控部分并转到实时指标,那么它就会开始。有没有办法让它在部署后立即开始传输。我在搞砸设置吗?
例如,我昨天晚上和今天早上部署了一个函数,当我查看集合中的记录计数时,没有。当我转到 Azure 函数中的 Monitor 部分,然后转到 Live app metrics 时,只有我看到它正在初始化,然后开始执行。
宇宙触发器
public async Task Run([CosmosDBTrigger(
databaseName: "%SourceDatabaseName%",
collectionName: "%ContainerName%",
ConnectionStringSetting = "connectionString",
StartFromBeginning =true,
LeaseCollectionName ="%ContainerLeaseName%",
CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> source,
[CosmosDB(databaseName:"%TargetDatabaseName%",
collectionName:"%TargetContainerName%",
ConnectionStringSetting = "connectionString")]IAsyncCollector<Document> destination,
ILogger log)
部署脚本
az functionapp create `
-n $functionAppName `
--storage-account $storageAccountName `
--consumption-plan-location $location `
--app-insights $appInsightsName `
--runtime dotnet `
-g $resourceGroup
az functionapp deployment source config-zip `
-g $resourceGroup -n $functionAppName --src $publishZip
az functionapp config appsettings set -n $functionAppName -g $resourceGroup `
--settings "connectionString=$cosmosConnectionString" "ContainerName=$cosmosContainer" "ContainerLeaseName=$($cosmosContainer)Lease" "SourceDatabaseName=$sourceCosmosDb" "TargetDatabaseName=$destCosmosDb" "TargetContainerName=$cosmosContainer" "JobType=$jobType"
【问题讨论】:
标签: azure azure-functions azure-cosmosdb