使用 Azure Blob 存储配置AWS DataSync传输 - AWS DataSync

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Azure Blob 存储配置AWS DataSync传输

此功能位于 AWS DataSync 的预览版中,可能会发生变化。

要从 Azure Blob 存储中传输 blob(也称为对象),必须创建AWS DataSync传输位置。然后,您可以将 blob 移至任何DataSync支持的AWS存储服务

访问 Azure Blob 存储

要传输对象,DataSync需要具有读取 Azure Blob 存储的权限。您的对象还必须位于DataSync可以使用的访问层中。

SAS 代币

共享访问签名 (SAS) 令牌指定您的 blob 存储的访问权限。(有关 SAS 的更多信息,请参阅 Azure Blob 存储文档。)

您可以在不同的访问级别生成 SAS 令牌。DataSync支持具有以下访问级别的令牌:

  • 账户

  • 容器

  • 文件夹

要提供DataSync转移所需的访问权限,您的 SAS 令牌至少必须具有读取和列出权限。根据访问级别,您可能还需要使用其他权限配置令牌。例如,具有账户级访问权限的令牌比具有文件夹级访问权限的令牌需要更多的权限。

用于账户级访问的 SAS 令牌权限

DataSync要求您配置具有以下权限的账户级访问令牌:

  • 允许的服务 — Blob

  • 允许的资源类型-容器、对象(如果您不包含这些权限,则DataSync无法传输您的对象元数据)

  • 允许的权限-读取、列出

  • 允许的 blob 索引权限-读取/写入(如果DataSync要复制对象标签)

容器级访问的 SAS 令牌权限

DataSync要求您配置具有以下权限的容器级访问令牌:

用于文件夹级访问的 SAS 令牌权限

如果您将 Azure DatDataSync a Lake Storage Gen2 与 blob 存储一起使用,则可以提供仅允许访问容器中特定文件夹的 SAS 令牌。

DataSync要求您配置具有以下权限的文件夹级访问令牌:

  • Read

  • List

有关配置此类令牌的更多信息,请参阅 Azure Blob 存储文档

为创建 Azure Blob 存储位置时,必须指定同一文件夹的完整路径。DataSync

SAS 到期政策

在您预计完成转移之前,请确保您的 SAS 不会过期。有关配置 SAS 过期策略的信息,请参阅 Azure Blob 存储文档

如果 SAS 在传输期间过期,DataSync将无法再访问你的 Azure Blob 存储位置(你可能会看到 “无法打开目录” 错误)。发生这种情况时,您必须使用新的 SAS 令牌更新您的位置并重新启动DataSync任务。

访问套餐

DataSync可以在热层或冷层中传输 Azure Blob 存储对象。它跳过在存档访问层传输对象。您必须将存档层中的对象重新水合到热层或冷层,然后才能传输它们。

Blob 类型

DataSync可以传输任何 blob 类型,包括块、页面和附加 blob。有关更多信息,请参阅 Azure Blob 存储文档

设置

目前,您只能在DataSync控制台AWS Command Line Interface、或上使用此功能AWS SDK for Java 2.x。

注意

如果您使用的是DataSync主机,则无需进行任何设置。

使用进行设置AWS CLI

以下说明描述了如何设置 AWS Command Line Interface(AWS CLI) 版本 2 以使用此功能。

设置 AWS CLI
  1. 下载DataSync API 模型并解压缩 JSON 文件。

  2. 运行以下命令以将服务模型添加到AWS CLI配置中。

    此示例创建了一个datasync-azure-blob服务名称。您可以指定其他名称。

    aws configure add-model \ --service-model file://datasync-service-model.json \ --service-name datasync-azure-blob

添加模型后,即可将此功能与AWS CLI。

使用进行设置AWS SDK for Java 2.x

以下说明介绍了如何设置AWS SDK for Java 2.x以使用该功能。

设置适用于 Java 2.x 的开发工具包
  1. 请确保您有AwsJavaSdk-DataSync-2.0.jar文件。如果不是,请联系您的DataSync联系人。

  2. 在您的 Maven 项目中,检查pom.xml文件中是否存在DataSync Java SDK 的显式依赖关系。如果没有,请使用以下示例创建依赖关系:

    <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>datasync</artifactId> <version>2.17.290</version> </dependency>
  3. 运行以下命令:

    mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file \ --batch-mode -Dfile=/AwsJavaSdk-DataSync-2.0.jar \ -DgroupId=software.amazon.awssdk \ -DartifactId=datasync \ -Dversion=2.17.290 \ -Dpackaging=jar

    请记住:

    • 确保使用正确的AwsJavaSdk-DataSync-2.0.jar文件路径。

    • 2.17.290版本就是一个例子。

创建您的DataSync代理

你需要一个可以连接到 Azure Blob 存储容器的DataSync代理。代理读取您的容器并便于将您的对象移至AWS。

创建你的 Azure Blob 存储传输位置

你可以配置DataSync为使用现有 Azure Blob 存储容器作为传输的源位置。

开始之前:确保你知道如何DataSync访问你的 Azure Blob 存储以及如何使用 blob 存储访问层

  1. 通过 https://console.aws.amazon.com/datasync/ 打开AWS DataSync主机。

  2. 在左侧导航窗格中,展开 “数据传输”,然后选择 “位置” 和 “创建位置”。

  3. 对于位置类型,选择微软 Azure Blob 存储

  4. 对于代理,选择可以连接你的 Azure Blob 存储容器的DataSync代理。

    您可以选择多个代理。有关更多信息,请参阅使用多个AWS DataSync代理进行转账

  5. 对于容器 URL,请输入您的传输中涉及的容器的 URL。

  6. 对于文件夹,如果您想将传输限制到容器中的虚拟目录(例如/my/images),请输入路径段。

    DataSync仅复制带有这些路径段的对象。

    重要

    如果您的 SAS 令牌仅允许访问文件夹,则必须在此处指定该文件夹的完整路径才能进行传输。

  7. 对于 SAS 令牌,请输入DataSync允许访问您的 BLOB 存储的 SAS 令牌。

    该令牌是 SAS URI 字符串的一部分,位于存储资源 URI 和问号之后。代币如下所示:

    sp=r&st=2023-12-20T14:54:52Z&se=2023-12-20T22:54:52Z&spr=https&sv=2021-06-08&sr=c&sig=aBBKDWQvyuVcTPH9EBp%2FXTI9E%2F%2Fmq171%2BZU178wcwqU%3D
  8. (可选)输入 “密钥” 和 “” 字段的值以标记位置。

    标签可帮助您管理、筛选和搜索AWS资源。我们建议至少为您的位置创建一个名称标签。

  9. 选择 “创建地点”。

注意

以下说明使用该datasync-azure-blob命令,但您可以将此命令命名为其他名称。有关更多信息,请参阅使用进行设置AWS CLI

  1. 复制以下create-location-azure-blob命令:

    aws datasync-azure-blob create-location-azure-blob \ --container-url "https://path/to/container" \ --authentication-type "SAS" \ --sas-configuration '{ "Token": "your-sas-token" }' \ --agent-arns my-datasync-agent-arn \ --subdirectory "/path/to/my/data" \ --tags [{"Key": "key1","Value": "value1"}]
  2. 对于--container-url参数,请指定传输中涉及的 Azure Blob 存储容器的 URL。

  3. 对于--authentication-type参数,指定SAS

  4. 对于--sas-configuration参数的Token选项,请指定允许DataSync访问您的 BLOB 存储的 SAS 令牌。

    该令牌是 SAS URI 字符串的一部分,位于存储资源 URI 和问号之后。代币如下所示:

    sp=r&st=2023-12-20T14:54:52Z&se=2023-12-20T22:54:52Z&spr=https&sv=2021-06-08&sr=c&sig=aBBKDWQvyuVcTPH9EBp%2FXTI9E%2F%2Fmq171%2BZU178wcwqU%3D
  5. 对于--agent-arns参数,指定可帮助您连接到容器的DataSync代理的 Amazon 资源名称 (ARN)。

    以下为示例如代理 ARN:arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890deadfb

    您可以指定多个代理。有关更多信息,请参阅使用多个AWS DataSync代理进行转账

  6. 对于--subdirectory参数,如果您想将传输限制到容器中的虚拟目录(例如/my/images),请指定路径段。

    DataSync仅复制带有这些路径段的对象。

    重要

    如果您的 SAS 令牌仅允许访问子目录(或文件夹),则必须在此处指定该子目录的完整路径才能进行传输。

  7. (可帮助您管理、--tags筛选和搜索位置的键值对,帮助您管理、筛选和搜索位置。

    我们建议为您的位置创建一个名称标签。

  8. 运行 create-location-azure-blob 命令。

    您会收到一条回复,其中显示了您创建的位置的 ARN。例如:

    { "LocationArn": "arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh" }

查看你的 Azure Blob 存储传输位置

你可以获取有关现有 Azure Blob 存储位置的详细信息。

  1. 通过 https://console.aws.amazon.com/datasync/ 打开AWS DataSync主机。

  2. 在左侧导航窗格中,选择位置

  3. 选择你的 Azure Blob 存储位置。

    您可以查看有关您的位置的详细信息,包括使用该位置的任何DataSync任务。

注意

以下说明使用该datasync-azure-blob命令,但您可以将此命令命名为其他名称。有关更多信息,请参阅使用进行设置AWS CLI

  1. 复制以下describe-location-azure-blob命令:

    aws datasync-azure-blob describe-location-azure-blob \ --location-arn "your-azure-blob-location-arn"
  2. 对于--location-arn参数,指定您创建的 Azure Blob 存储位置的 ARN。

  3. 运行 describe-location-azure-blob 命令。

    您会收到一条回复,其中显示了有关您的位置的详细信息。例如:

    { "LocationArn": "arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh", "LocationUri": "azure-blob://my-user.blob.core.windows.net/container-1", "AuthenticationType": "SAS", "Subdirectory": "/my/images", "AgentArns": ["arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890deadfb"], }

更新你的 Azure Blob 存储传输位置

如果需要,您可以修改您的位置配置。

注意

你不能用DataSync控制台做到这一点。

注意

以下说明使用该datasync-azure-blob命令,但您可以将此命令命名为其他名称。有关更多信息,请参阅使用进行设置AWS CLI

  1. 复制以下update-location-azure-blob命令:

    aws datasync-azure-blob update-location-azure-blob \ --location-arn "your-azure-blob-location-arn" \ --authentication-type "SAS" \ --sas-configuration '{ "Token": "your-sas-token" }' \ --agent-arns my-datasync-agent-arn \ --subdirectory "/path/to/my/data"
  2. 对于--location-arn参数,为正在更新的 Azure Blob 存储位置指定 ARN。

  3. 对于--authentication-type参数,指定SAS

  4. 对于--sas-configuration参数的Token选项,请指定允许DataSync访问您的 BLOB 存储的 SAS 令牌。

    该令牌是 SAS URI 字符串的一部分,位于存储资源 URI 和问号之后。代币如下所示:

    sp=r&st=2022-12-20T14:54:52Z&se=2022-12-20T22:54:52Z&spr=https&sv=2021-06-08&sr=c&sig=qCBKDWQvyuVcTPH9EBp%2FXTI9E%2F%2Fmq171%2BZU178wcwqU%3D
  5. 对于--agent-arns参数,指定要连接到容器的DataSync代理的 Amazon 资源名称 (ARN)。

    以下为示例如代理 ARN:arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890deadfb

    您可以指定多个代理。有关更多信息,请参阅使用多个AWS DataSync代理进行转账

  6. 对于--subdirectory参数,如果您想将传输限制到容器中的虚拟目录(例如/my/images),请指定路径段。

    DataSync仅复制带有这些路径段的对象。

    重要

    如果您的 SAS 令牌仅允许访问子目录(或文件夹),则必须在此处指定该子目录的完整路径才能进行传输。

元数据处理

从 Azure Blob 存储传输时如何DataSync处理元数据取决于你的目标位置。

当你的目的地是 DataSync能够
  • Amazon S3

将以下元数据复制到目标:

  • 用户定义的对象元数据

  • 对象标签

  • 以下系统定义的对象元数据:

    • Content-Disposition

    • Content-Encoding

    • Content-Language

    • Content-Type

    注意:在初始传输期间DataSync复制所有对象的系统元数据。如果您将任务配置为仅传输已更改的数据,则除非对象的内容或用户元数据也已修改,否则DataSync不会在后续传输中复制系统元数据。

  • Amazon EFS

  • FSx for Lustre

  • FSx for OpenZFS

  • 适用于 ONTAP 的 FSx(使用 NFS)

对目标文件和文件夹应用默认 POSIX 元数据。该方法包括使用默认 POSIX 用户 ID 和组 ID 值。

  • FSx for Windows File Server

  • 适用于 ONTAP 的 FSx(使用 SMB)

将以下元数据应用于目标:

  • 文件和文件夹时间戳

  • 所有权取决于您在创建DataSync目标位置时指定的 Windows 用户

  • 权限继承自父目录

限制

当使用以下方式从 Azure Blob 存储中移动数据时,当前存在以下限制DataSync:

  • 你可以在DataSync除AWS GovCloud (US)和中国区域之外的任何AWS 区域支持的区域中创建 Azure Blob 存储位置。

  • 你只能使用 Azure Blob 存储作为源位置。

  • 传输到 Amazon S3 时,DataSync不会传输大于 5 TB 的 Azure Blob 存储对象。

  • 传输到 Amazon S3 时,DataSync不会传输元数据超过 2 KB 的 Azure Blob 存储对象。