相关文章推荐
坚韧的酸菜鱼  ·  VueCLi build ...·  1 年前    · 
闯红灯的毛巾  ·  Linq ...·  1 年前    · 

适用范围:Azure 逻辑应用(消耗型 + 标准型)

本文介绍如何使用 Azure Blob 存储连接器从 Azure 逻辑应用中的工作流访问 Azure Blob 存储帐户和容器。 此连接器提供工作流可用于 blob 操作的触发器和操作。 然后,你可以创建自动工作流,该工作流在存储容器或其他系统中的事件触发时运行,并运行操作来处理存储容器中的数据。

例如,可以在 Azure 存储帐户中访问和管理作为 blob 存储的文件。

可以从逻辑应用(消耗型)和逻辑应用(标准型)资源类型中的工作流连接到 Azure Blob 存储。 可以在多租户 Azure 逻辑应用、单租户 Azure 逻辑应用和集成服务环境 (ISE) 中配合使用连接器与逻辑应用工作流。 通过逻辑应用(标准型),可以使用 Azure Blob 内置连接器操作或 Azure Blob 存储托管连接器操作。

连接器技术参考

Azure Blob 存储连接器具有不同的版本,具体取决于 逻辑应用类型和主机环境

连接器版本 集成服务环境 (ISE) 托管连接器(标准类)和 ISE 版本(其消息限制与标准类不同)。 有关详细信息,请查看以下文档:

- Azure Blob 存储托管连接器参考
- ISE 消息限制
- Azure 逻辑应用中的托管连接器 单租户 Azure 逻辑应用和应用服务环境 v3(仅限 Windows 计划) 托管连接器(Azure 托管)和 基于服务提供程序 的内置连接器。 内置版本在以下方面有所不同:

- 内置版本仅需连接字符串便可直接连接到 Azure 存储帐户。

- 内置版本可以直接访问 Azure 虚拟网络。

有关详细信息,请查看以下文档:

- Azure Blob 存储托管连接器参考
- Azure Blob 内置连接器参考
- Azure 逻辑应用中的内置连接器
  • 对于 集成服务环境 (ISE) 中运行的逻辑应用工作流,此连接器的 ISE 标记版本改为使用 ISE 消息限制

  • 默认情况下,Azure Blob 存储托管连接器操作可以读取或写入 50 MB 或更小的文件。 若要处理大于 50 MB 但不超过 1024 MB 的文件,Azure Blob 操作支持 消息分块 。 “获取 Blob 内容” 操作 隐式使用分块。

  • Azure Blob 存储触发器不支持分块。 当触发器请求文件内容时,触发器仅选择 50 MB 或更小的文件。 若要获取大于 50 MB 的文件,请遵循以下模式:

  • 使用返回文件属性的 Blob 触发器,比如 当添加或者修改 Blob 时(仅属性)

  • 接下来,通过名为 获取 blob 内容 的 Azure Blob 存储托管连接器操作,读取完整的文件并隐式地使用区块。

    仅托管连接器 “添加或修改 Blob 时(仅属性)” 在存储容器的根文件夹中添加或更新 Blob 的属性时,会触发触发器。 设置托管触发器时,托管版本会忽略存储容器中的现有 blob。 - 内置连接器

    - 托管连接器 - 内置:添加或修改 blob 时

    - 托管:添加或修改 blob 时(仅属性) - 内置:触发器在存储容器中添加或更新了 blob 时触发,并且触发的范围是存储容器中的任何嵌套文件,而不仅仅是根文件夹。 设置内置触发器时,内置版本将处理存储容器中的所有现有 blob。

    - 托管:触发器在存储容器的根文件夹中添加或更新了 blob 的属性时触发。 设置托管触发器时,托管版本会忽略存储容器中的现有 blob。

    以下步骤使用 Azure 门户,但利用适当的 Azure 逻辑应用扩展,也可以使用以下工具来创建逻辑应用工作流:

  • 消耗型逻辑应用工作流: Visual Studio Visual Studio Code

  • 标准逻辑应用工作流: Visual Studio Code

    是,
    但仅用于访问密钥身份验证 <存储帐户名称> Blob 容器所在的 Azure 存储帐户的名称。

    注意:若要查找存储帐户名称,请在 Azure 门户中打开存储帐户资源。 在资源菜单中的“安全性 + 网络”下,选择“访问密钥”。 在“存储帐户名称”下,复制并保存名称。 Azure 存储帐户访问密钥 是,
    但仅用于访问密钥身份验证 存储帐户访问密钥 <> Azure 存储帐户的访问密钥。

    注意:若要查找访问密钥,请在 Azure 门户中打开存储帐户资源。 在资源菜单中的“安全性 + 网络”下,选择“访问密钥”>“密钥1”>“显示”。 复制并保存主键值。 检查根文件夹中是否存在具有相同扩展名的任何 Blob 的更改,例如 .txt。 < container-name >/{name}.txt

    重要说明 :请确保使用 {name} 作为文本。 检查根文件夹中是否存在任何名称以特定字符串开头的 Blob 的更改,例如,示例-。 < container-name >/Sample-{name}

    重要说明 :请确保使用 {name} 作为文本。 检查子文件夹中是否有新添加的 Blob。 < container-name >/< subfolder >/{blobname}.{blobextension}

    重要说明:确保使用 {blobname}.{blobextension} 作为文本。 检查子文件夹中是否有特定 Blob 的更改。 < container-name >/< subfolder >/< blob-name >.< blob-extension >

    有关更多语法和筛选选项,请参阅 Azure Functions 的 Azure Blob 存储触发器

    以下示例展示了一个触发器安装程序,该程序会检查根文件夹中是否有新添加的 Blob:

    下面的示例演示一个触发器安装程序,该程序会检查子文件夹中是否存在对现有 Blob 的更改:

    是,
    但仅用于访问密钥身份验证 <存储帐户名称> Blob 容器所在的 Azure 存储帐户的名称。

    注意:若要查找存储帐户名称,请在 Azure 门户中打开存储帐户资源。 在资源菜单中的“安全性 + 网络”下,选择“访问密钥”。 在“存储帐户名称”下,复制并保存名称。 Azure 存储帐户访问密钥 是,
    但仅用于访问密钥身份验证 存储帐户访问密钥 <> Azure 存储帐户的访问密钥。

    注意:若要查找访问密钥,请在 Azure 门户中打开存储帐户资源。 在资源菜单中的“安全性 + 网络”下,选择“访问密钥”>“密钥1”>“显示”。 复制并保存主键值。
  • 若要添加可用于此触发器的其他属性,请打开“添加新参数”列表并选择这些属性。 有关详细信息,请查看 Azure Blob 存储托管连接器触发器属性

  • 添加工作流所需的任何其他操作。

  • 完成后,保存工作流。 在设计器工具栏上选择“保存”。

    添加 Blob 操作

    消耗型逻辑应用工作流只能使用 Azure Blob 存储托管连接器。 但是,标准型逻辑应用工作流可以使用 Azure Blob 存储托管连接器和 Azure blob 内置连接器。 每个版本都有多个不同名称的操作。 例如,托管连接器和内置连接器版本都有其自己的操作来获取文件元数据和获取文件内容。

  • 托管连接器操作:这些操作在消耗型或标准型工作流中运行。

  • 内置连接器操作:这些操作仅在标准型工作流中运行。

    以下步骤使用 Azure 门户,但利用适当的 Azure 逻辑应用扩展,也可以使用以下工具来创建和编辑逻辑应用工作流:

  • 消耗型逻辑应用工作流: Visual Studio Visual Studio Code

  • 标准逻辑应用工作流: Visual Studio Code

    是,
    但仅用于访问密钥身份验证 <存储帐户名称> Blob 容器所在的 Azure 存储帐户的名称。

    注意:若要查找存储帐户名称,请在 Azure 门户中打开存储帐户资源。 在资源菜单中的“安全性 + 网络”下,选择“访问密钥”。 在“存储帐户名称”下,复制并保存名称。 Azure 存储帐户访问密钥 是,
    但仅用于访问密钥身份验证 存储帐户访问密钥 <> Azure 存储帐户的访问密钥。

    注意:若要查找访问密钥,请在 Azure 门户中打开存储帐户资源。 在资源菜单中的“安全性 + 网络”下,选择“访问密钥”>“密钥1”>“显示”。 复制并保存主键值。 是,
    但仅用于访问密钥身份验证 <存储帐户名称> Blob 容器所在的 Azure 存储帐户的名称。

    注意:若要查找存储帐户名称,请在 Azure 门户中打开存储帐户资源。 在资源菜单中的“安全性 + 网络”下,选择“访问密钥”。 在“存储帐户名称”下,复制并保存名称。 Azure 存储帐户访问密钥 是,
    但仅用于访问密钥身份验证 存储帐户访问密钥 <> Azure 存储帐户的访问密钥。

    注意:若要查找访问密钥,请在 Azure 门户中打开存储帐户资源。 在资源菜单中的“安全性 + 网络”下,选择“访问密钥”>“密钥1”>“显示”。 复制并保存主键值。

    访问防火墙后的存储帐户

    通过 使用防火墙和防火墙规则限制访问 ,可以提高 Azure 存储帐户的网络安全性。 但是,此设置会给需要访问存储帐户的 Azure 和其他 Microsoft 服务带来挑战。 数据中心的本地通信抽象化了内部 IP 地址,因此仅允许通过 IP 地址的流量可能无法成功支持跨防火墙进行通信。 根据所使用的 Azure Blob 存储连接器,可以使用以下选项:

  • 若要在消耗和基于 ISE 的逻辑应用中使用Azure Blob 存储托管连接器访问防火墙后面的存储帐户,请查看以下文档:

  • 使用系统管理的标识访问同一区域中的存储帐户

  • 访问其他区域中的存储帐户

  • 若要使用 ISE 版本化的 Azure Blob 存储连接器(仅在基于 ISE 的逻辑应用中可用)访问受防火墙保护的存储帐户,请查看 通过受信任的虚拟网络访问存储帐户

  • 若要在标准逻辑应用中访问防火墙后面的存储帐户,请查看以下文档:

  • Azure Blob 存储 内置 连接器: 通过虚拟网络集成访问存储帐户

  • Azure Blob 存储 托管 连接器: 访问其他区域中的存储帐户

    访问其他区域中的存储帐户

    如果不使用托管标识身份验证,当逻辑应用资源和存储帐户位于同一区域时,逻辑应用工作流无法直接访问防火墙后面的存储帐户。 一种解决方案是,将逻辑应用资源放置在与存储帐户不同的区域。 然后,允许访问 区域中托管连接器的出站 IP 地址

    此解决方案不适用于 Azure 表存储连接器和 Azure 队列存储连接器。 若要访问表存储或队列存储,请 使用内置的 HTTP 触发器和操作

    若要将出站 IP 地址添加到存储帐户防火墙,请执行以下步骤:

  • 记下逻辑应用资源所在区域的 托管连接器出站 IP 地址

  • Azure 门户 中,找到并打开你的存储帐户资源。

  • 在存储帐户导航菜单的“安全性 + 网络”下,选择“网络” 。

  • 在“允许的访问来源”下,选择“所选网络”,其中会显示相关设置。

  • 在“防火墙”下,添加需要访问的 IP 地址或者范围。 如果需要从计算机访问存储帐户,请选择“添加客户端 IP 地址”。

  • 完成后,选择“保存”。

  • 逻辑应用和存储帐户位于同一区域。

    可以通过创建专用终结点,将存储帐户放入 Azure 虚拟网络,然后将该虚拟网络添加到受信任的虚拟网络列表中。 为了让逻辑应用通过 受信任的虚拟网络 访问存储帐户,你需要将相应逻辑应用部署到 集成服务环境 (ISE) ,此环境可以连接到虚拟网络中的资源。 然后,可以将相应 ISE 中的子网添加到受信任列表。 基于 ISE 的存储连接器(例如 ISE 版本化的 Azure Blob 存储连接器)可以直接访问存储容器。 这种设置与从 ISE 使用服务终结点的体验相同。

  • 逻辑应用和存储帐户位于不同区域。

    无需创建专用终结点。 只需允许通过存储帐户上的 ISE 出站 IP 的流量。

    通过虚拟网络集成访问存储帐户

  • 逻辑应用和存储帐户位于同一区域。

    可以通过创建专用终结点,将存储帐户放入 Azure 虚拟网络,然后将该虚拟网络添加到受信任的虚拟网络列表中。 若要给予逻辑应用对存储帐户的访问权限,必须 使用虚拟网络集成设置出站流量 ,以便能够连接到虚拟网络中的资源。 然后,可以将虚拟网络添加到存储帐户的受信任虚拟网络列表中。

  • 逻辑应用和存储帐户位于不同区域。

    无需创建专用终结点。 只需允许通过存储帐户上的 ISE 出站 IP 的流量。

    使用系统管理的标识访问同一区域中的 Blob 存储

    若要连接到任何区域中的 Azure Blob 存储,可以使用 托管标识进行身份验证 。 你可以创建一个异常,让 Microsoft 受信任的服务(如托管标识)可以穿过防火墙访问存储帐户。

    此解决方案不适用于标准逻辑应用。 即使对标准逻辑应用使用系统分配的托管标识,Azure Blob 存储托管连接器也无法连接到同一区域中的存储帐户。

    若要在逻辑应用中使用托管标识访问 Blob 存储,请执行以下步骤:

  • 配置存储帐户的访问权限

  • 为逻辑应用创建角色分配

  • 在逻辑应用中启用对托管标识的支持

    此解决方案具有以下限制:

    若要对存储帐户连接进行身份验证,必须设置系统分配的托管标识。 用户分配的托管标识将不起作用。

    配置存储帐户访问权限

    若要设置异常和托管标识支持,请先为存储帐户配置适当访问权限:

  • Azure 门户 中,找到并打开你的存储帐户资源。

  • 在存储帐户导航菜单的“安全性 + 网络”下,选择“网络” 。

  • 在“允许的访问来源”下,选择“所选网络”,其中会显示相关设置。

  • 如果需要从计算机访问存储帐户,请在“防火墙”下选择“添加客户端 IP 地址” 。

  • 在“异常”下,选择“允许受信任的 Microsoft 服务访问此存储帐户” 。

  • 完成后,选择“保存”。

    如果尝试从工作流连接到存储帐户时收到“403 禁止”错误,则可能有多种原因。 在继续执行其他步骤之前,请尝试以下解决方法。 首先,禁用“允许受信任的 Microsoft 服务访问此存储帐户”设置,并保存所做的更改。 然后重新启用此设置,并再次保存更改。

    为逻辑应用创建角色分配

    接下来,在逻辑应用资源上 启用托管标识支持

    对于多租户环境中的使用逻辑应用和单租户环境中的标准逻辑应用,以下步骤是相同的。

  • Azure 门户 中,打开你的逻辑应用资源。

  • 在逻辑应用资源导航菜单的“设置”下,选择“标识” 。

  • 在“系统分配”窗格上,将“状态”设置为“开”,如果尚未启用,请选择“保存”,然后确认你的更改。 在“权限”下,选择“Azure 角色分配” 。

  • 在“Azure 角色分配”窗格中,选择“添加角色分配” 。

  • 在“添加角色分配”窗格上,使用以下值设置新的角色分配:

    然后,完成以下步骤:

  • 如果具有空白工作流,请添加 Azure Blob 存储连接器触发器。 否则,添加 Azure Blob 存储连接器操作。 请确保为触发器或操作创建新的连接,而不是使用现有连接。

  • 请确保 将身份验证类型设置为使用托管标识

  • 配置触发器或操作后,可以保存工作流并测试触发器或操作。

    排查访问存储帐户时遇到的问题

  • “此请求无权执行此操作。”

    以下错误是逻辑应用和存储帐户位于同一区域时发生的常见问题。 但是,可以根据 访问受防火墙保护的存储帐户 部分所述,使用一些方法来解决此限制。

    "status": 403, "message": "This request is not authorized to perform this operation.\\r\\nclientRequestId: a3da2269-7120-44b4-9fe5-ede7a9b0fbb8", "error": { "message": "This request is not authorized to perform this operation." "source": "azureblob-ase.azconn-ase.p.azurewebsites.net"

    Application Insights 错误

  • 404 和 409 错误

    如果标准工作流使用将 blob 添加到存储容器的 Azure Blob 内置操作,则可能会在 Application Insights 中收到表示请求失败的 404 和 409 错误。 由于连接器在添加 blob 之前检查 blob 文件是否存在,因此这些错误在意料之中。 文件不存在时的错误结果。 尽管出现这些错误,但内置操作已成功添加 blob。

  • Azure 逻辑应用中的托管连接器
  • Azure 逻辑应用中的内置连接器
  •