【问题标题】:Upload 1Gb file through Logic app using sftp-ssh to Azure File share使用 sftp-ssh 通过逻辑应用将 1Gb 文件上传到 Azure 文件共享
【发布时间】:2020-04-18 22:20:15
【问题描述】:

我正在使用 Logic App 上传 1 Gb 文件,如下所示 - 触发器 - 添加或修改文件时(仅限属性) Action1 - 获取文件内容 操作 2-创建文件(Azure 文件共享) 直到 35 MB,所有触发器和操作都可以正常工作。在 SFTP 中上传的文件超过 40 MB 后,SFTP-SSH 触发器和操作都可以正常工作。但是,当工作流移动到第二个操作 - “创建文件”时:它失败并出现以下错误“指定的资源可能正在被 SMB 客户端使用”。当我看到 Azure 文件共享存储帐户时,我看到创建了 filename.partial.lock。我也修改了访问策略,但问题仍然存在。

【问题讨论】:

    标签: azure azure-logic-apps azure-files


    【解决方案1】:

    MSFT 在我们的讨论中确认“创建文件共享”有 100 或 300 MB 的限制。当数据以块的形式到达时,它只能与 SFTP 一起使用。当文件大小超过 100 或 300 MB 时,MSFT 正在进一步给出正确的错误声明。以下引自 MSFT 电子邮件- “感谢您提供详细信息,实际上产品团队向我确认您的流程是幸运的,它不应该适用于这种大小,他们正在努力正确实施限制以防止文件大于最大大小(可能是 300 或 100) “我还不确定” 这种奇怪的行为只有在我们从 SFTP 中读取内容时才会发生。 "

    【讨论】:

      【解决方案2】:

      谢谢大家。错误“指定的资源可能正在被 SMB 客户端使用”的原因是由于安装了两个 Linux 虚拟机的文件共享。我们卸载了 Linux 虚拟机并进行了新的单一安装。错误由此得到修复。

      【讨论】:

        【解决方案3】:

        我认为解决问题的另一种方法是重新设计,这可能是更具可扩展性的解决方案:

        1. 如果在 SFTP/FTP 位置添加或修改文件,请使用逻辑应用获取通知。 添加文件后,读取该文件的文件路径。
        2. 创建服务总线消息并将文件路径到服务总线消息作为消息内容发送。
        3. 创建服务总线队列消息触发 Azure 函数来监听这些消息(在步骤 2 中创建) Azure 函数将使用文件路径从 SFTP 读取文件块。

        这样您就可以读取或写入超过 30 GB 的文件。 此解决方案将是更可扩展的解决方案,如 azure 功能和按需自动缩放。

        【讨论】:

          【解决方案4】:

          要上传大文件,请确保启用Allow chunking

          根据您的描述,假设应该是SharingViolation,您可以查看error codes here

          在官方文档中,有两种情况会导致共享冲突错误:

          由于文件访问导致共享冲突

          • 客户端 A 使用 FileAccess.Write 和 FileShare.Read 打开文件 (在打开时拒绝后续的写入/删除)。
          • 客户端 B 然后使用 FileAccess.Write 打开文件 FileShare.Write(在打开时拒绝后续读取/删除)。
          • 结果:客户端 B 遇到共享冲突,因为它指定了 之前指定的共享模式拒绝的文件访问 客户 A。

          共享模式导致共享违规

          • 客户端 A 使用 FileAccess.Write 和 FileShare.Write 打开文件 (在打开时拒绝后续读取/删除)。

          • 客户端 B 然后使用 FileAccess.Write 打开文件 FileShare.Read(在打开时拒绝后续的写入/删除)。

          • 结果:客户端 B 遇到共享冲突,因为它指定了 拒绝对仍然打开的文件进行写访问的共享模式 写权限。

          这些是您需要考虑的场景,另一种选择是您可以尝试使用 REST API 上传文件并在 HTTP 操作中设置 Allow chunking

          【讨论】:

            【解决方案5】:

            逻辑应用程序并非旨在从源/目标上传或下载大量数据,它是一种工作流解决方案,您可以设计它来提供您的业务需要的解决方案,但是您仍然可以使用逻辑应用程序中的块上传功能进行上传或通过逻辑应用下载大文件。 请参考 https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-handle-large-messages#set-up-chunking

            【讨论】:

              猜你喜欢
              • 2017-10-17
              • 2020-09-26
              • 2021-05-03
              • 2021-12-05
              • 1970-01-01
              • 2017-03-20
              • 2020-10-04
              • 2016-02-18
              • 2018-12-13
              相关资源
              最近更新 更多