当我在本地 运行 一个 azure 函数(将数据上传到 cosmos)时,它会替换现有的 cosmos 数据吗?

When I run an azure function locally (which uploads a data to cosmos), does it replace the existing cosmos data?

注意:下面这个问题,我还没有部署函数

我有一个 azure 函数,我在 VScode(azure 扩展)上进行了本地测试。此函数是 blob 触发的,即当图像上传到某个 blob 容器(比如 c)并随后在 cosmos 上上传某个元数据(dict)时触发。我还链接了我的 blob 存储 vscode。存储容器 c 已经有很多图像 (200+)。当我在本地 运行 我的 azure 函数时(在 VScode 上),它似乎再次在所有现有图像上 运行ning 函数。 这是我在其他地方问过的问题here(附图片)。

但是我还有第二个问题。如果此函数在 VSCode 上的所有触发器上 运行ning(尚未部署),它是否是 replacing/re-writing 我在 cosmos 上的所有数据(我的 azure 函数最后将一些数据上传到 cosmos)

编辑:

我的 blob trigger/azure 函数太长了所以我会 post 它是如何触发的

def main(myblob: func.InputStream, doc: func.Out[func.Document]):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")

    blob_val = myblob.read()
    .
    .
    .

host.json:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[2.*, 3.0.0)"
  }
}

无论函数在哪里 运行(您的本地计算机、Azure、任何其他 supported hosting options),如果您的配置具有真实 Cosmos DB 帐户的 Cosmos DB 连接字符串,则函数将对该帐户执行更新。

您问题的简单答案是:更新将在您的连接字符串指向的帐户上执行,而不管函数在哪里 运行。

如果您想进行本地测试,另一种方法是使用 Cosmos DB Emulator 并让您的本地配置连接字符串使用模拟器的连接字符串,这样您的本地测试就不会影响任何真实帐户。

当 运行 在 Azure 上时,您可以通过添加该设置但指向您在 App Settings or Connection Strings 上的真实 Cosmos DB 帐户来覆盖该设置。