gpt4 book ai didi

创建 Azure 存储帐户时没有 "blob.core.windows.net"端点

转载 作者:行者123 更新时间:2023-12-03 04:42:50 25 4
gpt4 key购买 nike

我有一个az cli脚本为我们的应用程序及其数据创建资源,我们经常使用它来拆除和重建我们的开发环境。最近,尽管我们没有更改脚本,但其中一部分已停止工作。具体来说,我们这样做:

az storage account create -g <my-rg-name> --name <my-storage-account-name> --sku Standard_RAGRS --kind StorageV2 --hns --min-tls-version TLS1_2 --access-tier Hot

其次是

az storage container create --auth-mode login -g <my-rg-name> --account-name <my-storage-account-name> --name documents --public-access off

我上次成功运行它是在 9 月 15 日。我下次尝试是在 9 月 27 日,但失败了,此后一直失败。

创建存储容器时的错误消息包括:

azure.common.AzureException: HTTPSConnectionPool(host='<my-account-name>.blob.core.windows.net', port=443):
Max retries exceeded with url: /documents?restype=container (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x04D38928>:
Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

所以这很有趣 - 它正在尝试 <my-account-name>.blob.core.windows.net但实际上,如果我查看新创建的存储帐户上的端点,它们是:

 "primaryEndpoints": {
"blob": "https://<my-account-name>.z47.blob.storage.azure.net/",
"dfs": "https://<my-account-name>.z47.dfs.storage.azure.net/",
"file": "https://<my-account-name>.z47.file.storage.azure.net/",
"internetEndpoints": null,
"microsoftEndpoints": null,
"queue": "https://<my-account-name>.z47.queue.storage.azure.net/",
"table": "https://<my-account-name>.z47.table.storage.azure.net/",
"web": "https://<my-account-name>.z47.web.storage.azure.net/"
},

因此,在我们期待“xxx.blob.core.windows.net”的地方,我们得到了“xxx.z47.blob.storage.azure.net”。这可能很好,我想我们可以查询该名称并使用它 - 但我无法轻松修复 az cli,而且事实上他们对 blob.core.windows 有强烈的期望。 net 域名的存在让我觉得很多其他尝试使用它的东西都会被破坏(我使用存储帐户的 ADF 管道肯定会被破坏 - 但也许我会修复它们以应对不同的情况url 如果这就是全部 - 但我怀疑这不正常并且想了解原因)。

我已经确认它不是 az cli 特定的 - 如果我在门户中创建存储帐户,我们仍然会获得非标准端点。所以它是我们订阅/资源组中的东西,但我只是不知道为什么它会这样,也不知道该怎么办。当然,Microsoft 的文档明确期望我们将获得 blob.core.windows.net 端点(例如 https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview )。

有谁知道什么会导致 Azure 出现这种行为?

最佳答案

事实证明,获得这些看起来很奇怪的端点的原因是我们最近打开了一个名为“分区 DNS”的私有(private)预览功能。此功能使我们能够超越每个区域每个订阅 250 个存储帐户的正常限制。

SDK 中的支持不完整。目前不支持 AZ CLI。因此,我们看到了一些问题(具体来说 - 无法创建存储容器,并且 az storage account show-connection-string 返回一个谎言)。 JS 和 Powershell 也不支持。

目前的主要内容是,我们可以通过使用最新的 SDK 和正确的连接字符串来解决大部分这些问题。但我根本无法让 Azure 存储事件正常工作 - 这很不幸,因为这是我们应用程序的一个非常基本的部分。

详细信息

以下是我们发现的内容以及我们对此采取的措施的一些详细信息。

  • az CLI - 无法修复,但可以做不同的事情
    • 使用arm模板创建容器 - 这是我们采取的方法
    • azcopy 包含容器创建功能 - 我没有探索该选项
    • 在门户中执行所有操作
  • .NET - 更改连接字符串以显式指定端点 - 一切似乎都正常
  • Python - 更改连接字符串显式指定端点 - 一切似乎都正常
  • Devops Pipelines (AzureFileCopy@3) - 如果指定“destType:blob”命令行参数,则有效
  • Azure 数据工厂:
    • 通过为链接服务提供 dfs 端点的完整 URL,可以使涉及以 Azure 存储作为源和/或接收器的复制任务的管道正常工作。
    • 无法使存储事件触发器在任何情况下都起作用

为了尝试解决存储事件触发器问题,我尝试从 Azure 存储端创建存储事件,而不是让 ADF 来执行此操作(认为 ADF 可能具有 core.windows.net 假设,并且如果我创建分开的碎片我可以把它们连接起来),但是可惜,没有运气。我找不到使用这些分区 DNS 终结点创建 Azure 存储事件的方法。目前,我们正在 ADF 中实现一个临时解决方法,该解决方法基于计划触发器,并轮询 Azure 存储中的文件(即使这也不容易 - 没有列出 blob 的 ADF block ,我们必须编写一个 Azure 函数) 。恶心。希望微软能够尽快缩小这一差距。

关于创建 Azure 存储帐户时没有 "blob.core.windows.net"端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69395213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com