Azure Function(C#):如何将大量文件从 blob 容器 A 复制到另一个 blob 容器 B? (函数有10分钟超时)
Azure Function(C#): How to copy lots of files from blob container A to another blob container B? (Function has timeout in 10 mins)
想使用 Azure Function 将大量文件从 blob 容器 A 复制到另一个 blob 容器 B。但是,由于函数超时,面临丢失复制文件的问题。有什么方法可以巧妙地恢复它吗?是否有关于源 blob 存储的任何指示,该存储之前已识别 copied/handled,以便下一个函数可以跳过复制它?
Would like to use Azure Function to copy lots of files from blob
container A to another blob container B. However, faced missing
copying files due to Function timeout.
您可以通过更改计划级别来避免此超时问题。比如你用的是app service plan,开启always on,就不会再有超时限制了。但是说实话,如果你的文件很多,而且耗时很长,那么azure function并不是一个推荐的方法(函数执行的任务应该是轻量级的)。
Is there any indication on source blob storage which identified
copied/handled before so that next Function can skip copying that?
是的,当然可以。复制后只需添加 blob 的自定义元数据。下次复制文件时,可以先查看自定义元数据。
这是一个很多的问题。您可以:
- 从 comannd line or code 复制。 AZ CLI 或 azcopy 或 .NET SDK(可扩展到其他语言 SDK)。
- 使用存储资源管理器。
- 按照 Bowman 的建议使用 Azure Data Factory。
- use SSIS.
- [误]使用 Databricks,尤其是当您处理大量数据并且需要可伸缩性时。
- 编写一些代码并使用新的“从 URL 中输入 XXX”API。例如。 “Put Blob from URL”将创建一个新的 blob。 Put Block from URL 将在块 blob 中创建一个块。
#1 和 2 将使用本地计算机的互联网带宽(下载到本地然后上传),而 3、4、5 将完全在云端。因此,如果您的源和目的地位于同一区域,对于 1 和 2,您将以 paying egress charges 结束,而对于 3、4 和 5,您将不会。
复制文件的 Azure Functions 可能是您能做的最糟糕的事情。 Azure Functions 成本与执行时间(和内存使用量)成正比。在这种情况下(因为它需要超过 10 分钟)我假设你正在移动大量数据,所以你将为你的 Azure Functions 付费,因为它只是在等待 I/O 完成文件传输。
想使用 Azure Function 将大量文件从 blob 容器 A 复制到另一个 blob 容器 B。但是,由于函数超时,面临丢失复制文件的问题。有什么方法可以巧妙地恢复它吗?是否有关于源 blob 存储的任何指示,该存储之前已识别 copied/handled,以便下一个函数可以跳过复制它?
Would like to use Azure Function to copy lots of files from blob container A to another blob container B. However, faced missing copying files due to Function timeout.
您可以通过更改计划级别来避免此超时问题。比如你用的是app service plan,开启always on,就不会再有超时限制了。但是说实话,如果你的文件很多,而且耗时很长,那么azure function并不是一个推荐的方法(函数执行的任务应该是轻量级的)。
Is there any indication on source blob storage which identified copied/handled before so that next Function can skip copying that?
是的,当然可以。复制后只需添加 blob 的自定义元数据。下次复制文件时,可以先查看自定义元数据。
这是一个很多的问题。您可以:
- 从 comannd line or code 复制。 AZ CLI 或 azcopy 或 .NET SDK(可扩展到其他语言 SDK)。
- 使用存储资源管理器。
- 按照 Bowman 的建议使用 Azure Data Factory。
- use SSIS.
- [误]使用 Databricks,尤其是当您处理大量数据并且需要可伸缩性时。
- 编写一些代码并使用新的“从 URL 中输入 XXX”API。例如。 “Put Blob from URL”将创建一个新的 blob。 Put Block from URL 将在块 blob 中创建一个块。
#1 和 2 将使用本地计算机的互联网带宽(下载到本地然后上传),而 3、4、5 将完全在云端。因此,如果您的源和目的地位于同一区域,对于 1 和 2,您将以 paying egress charges 结束,而对于 3、4 和 5,您将不会。
复制文件的 Azure Functions 可能是您能做的最糟糕的事情。 Azure Functions 成本与执行时间(和内存使用量)成正比。在这种情况下(因为它需要超过 10 分钟)我假设你正在移动大量数据,所以你将为你的 Azure Functions 付费,因为它只是在等待 I/O 完成文件传输。