如何使用Azure功能Cosmos DB触发器捕获更改



我有以下要求,我想从cosmosDB中捕获记录并将其推送到博客存储中。

我已经用azure函数cosmos DB触发器解决了上述问题(它将捕获对cosmos DB容器中记录的任何更改(。

如何获取满载

要求是我必须从cosmos DB容器中获取所有记录,并将其推送到博客存储中。

所以问题是只有当记录发生变化时,cosmosDB才会触发捕获,那么我如何才能实现这个满载。

对于Full-load,我还创建了一个python脚本。

参考:https://github.com/Azure/azure-cosmos-python

参考脚本:如何使用python更新Cosmos Db中的记录?

query_data = client.QueryItems(collection_link,
'SELECT * FROM ' + COSMOS_DB_COLLECTION_ID,
{'enableCrossPartitionQuery': True})
for item in query_data:
client.ReplaceItem(item['_self'], item, options=None)

所以我的脚本实际上是在做所有记录,我为每个记录调用ReplaceItem,但我观察到azure函数cosmos DB触发器不会捕获所有记录的更改,它只捕获少数记录。

那么剧本有问题吗?

首先,我认为客户端没有"QueryItems"。

其次,您的文档中没有任何更改。

你应该这样做:

url = os.environ['ACCOUNT_URI']
key = os.environ['ACCOUNT_KEY']
client = cosmos_client.CosmosClient(url, {'masterKey': key})
database_name = "testbowman"
container_name = "testbowman"
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)
for item in container.query_items('SELECT * FROM c', enable_cross_partition_query=True):
logging.info("This is Query database!" + json.dumps(item))
item['Description'] = "!!!!!!!!!!!!!!"
container.replace_item(item['id'],item)

最新更新