配置使用 Microsoft Azure Blob Storage 的传输 - AWS DataSync

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

配置使用 Microsoft Azure Blob Storage 的传输

使用 AWS DataSync,您可以在Microsoft Azure Blob Storage(包括 Azure Data Lake Storage Gen2 blob 存储)和以下 AWS 存储服务之间传输数据:

要设置此类传输,您需要为您的 Azure Blob Storage 创建一个位置。您可以将此位置用作传输源或传输目标位置。只有在 Azure Blob 和 Amazon EFS 或 Amazon 之间传输数据时 FSx,或者使用基本模式任务时,才需要 DataSync 代理。你不需要代理即可使用增强模式在 Azure Blob 和 Amazon S3 之间传输数据。

提供对您的 DataSync 访问权限 Azure Blob Storage

您的 DataSync 访问方式Azure Blob Storage取决于多个因素,包括您是向 blob 存储传输还是从 blob 存储进行传输,以及您使用的共享访问签名 (SAS) 令牌的类型。您的对象还必须位于 DataSync 可以使用的访问层中。

SAS 令牌

SAS 令牌指定您的 blob 存储的访问权限。(有关 SAS 的详细信息,请参阅 Azure Blob Storage文档。)

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

  • Account

  • 容器

DataSync 所需的访问权限取决于令牌的范围。没有正确的权限可能会导致您的传输失败。例如,如果您要将带有标签的对象移至 Azure Blob Storage,但您的 SAS 令牌没有标签权限,则传输将不会成功。

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

DataSync 需要具有以下权限的账户级访问令牌(取决于您是向还是从中Azure Blob Storage转移)。

Transfers from blob storage
Transfers to blob storage
  • 允许的服务 – Blob

  • 允许的资源类型 - 容器、对象

    如果您不包括这些权限,则 DataSync 无法传输您的对象元数据,包括对象标签

  • 允许的权限-读取、写入、列出、删除(如果您 DataSync 想移除传输源中不存在的文件)

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

容器级访问的 SAS 令牌权限

DataSync 需要具有以下权限的容器级访问令牌(取决于您是向还是从中Azure Blob Storage转移)。

Transfers from blob storage
Transfers to blob storage

SAS 过期策略

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

如果 SAS 在转移期间过期,则 DataSync 无法再访问您的Azure Blob Storage位置。(您可能会看到无法打开目录错误。) 如果发生这种情况,请使用新的 SAS 令牌更新您的位置并重新启动 DataSync 任务。

访问层

从中传输时Azure Blob Storage, DataSync 可以复制热层和冷层中的对象。对于存档访问层中的对象,必须先将这些对象重新水合到热层或冷层,然后才能复制它们。

传输到时Azure Blob Storage, DataSync 可以将对象复制到热、冷和存档访问层。如果您要将对象复制到存档访问层中,如果您正在尝试验证目标中的所有数据,则 DataSync 无法验证传输。

DataSync 不支持冷访问层。有关访问层的更多信息,请参阅 Azure Blob Storage文档

使用 Azure Blob Storage 传输的注意事项

在计划使用或从中Azure Blob Storage传输数据时 DataSync,需要记住一些事项。

成本

将数据移入或移出 Azure Blob Storage 的相关费用可能包括:

Blob 类型

DataSync 如何处理 blob 类型取决于你是向还是从中Azure Blob Storage传输。将数据移入 blob 存储时, DataSync 传输的对象或文件只能是块 blob。将数据移出 Blob 存储空间时, DataSync 可以传输块、页面和附加 blob。

有关 Blob 类型的更多信息,请参阅 Azure Blob Storage文档

AWS 区域 可用性

您可以在支持的任意AWS 区域 位置创建Azure Blob Storage转账地点 DataSync。

复制对象标签

在传 DataSync 入或传出时保留对象标签的能力Azure Blob Storage取决于以下因素:

  • 对象标签的大小 — DataSync 无法传输标签超过 2 KB 的对象。

  • DataSync 是否配置为复制对象标签 — 默认情况下 DataSync 复制对象标签

  • 您的Azure存储账户使用的命名空间 — 如果您的Azure存储账户使用平面命名空间,则 DataSync 可以复制对象标签,但如果您的账户使用分层命名空间(的一项功能Azure Data Lake Storage Gen2),则无法复制对象标签。如果您尝试复制对象标签并且您的存储帐户使用分层命名空间,则 DataSync 任务将失败。

  • 您的 SAS 令牌是否授权标记 – 复制对象标签所需的权限因令牌提供的访问级别而异。如果您尝试复制对象标签,但您的令牌没有正确的标记权限,则任务将失败。有关更多信息,请查看账户级访问令牌容器级访问令牌的权限要求。

传输到 Amazon S3

传输到 Amazon S3 时, DataSync 不会传输Azure Blob Storage大于 5 TB 的对象或元数据大于 2 KB 的对象。

删除传输目标中的目录

传输到时Azure Blob Storage, DataSync 可以移除 blob 存储中传输源中不存在的对象。(您可以通过清除 DataSync 控制台中的 “保留已删除文件” 设置来配置此选项。 您的 SAS 令牌还必须具有删除权限。)

以这种方式配置传输时,如果您的存储帐户使用的是分层命名空间,则 DataSync 不会删除 blob Azure 存储中的目录。在这种情况下,必须手动删除目录(例如使用 Azure Storage Explorer)。

限制

在与 Azure Blob Storage 互相传输数据时,请记住以下限制:

  • DataSync 在某个位置创建一些目录以帮助您进行传输。如果Azure Blob Storage是目标位置,并且您的存储帐户使用分层命名空间,则您可能会注意到该文件夹中存在特定于任务的子目录(例如task-000011112222abcde)。/.aws-datasync DataSync 通常会在传输后删除这些子目录。如果不这样做,只要任务未运行,您就可以自己删除这些特定任务的目录。

  • DataSync 不支持使用 SAS 令牌仅访问Azure Blob Storage容器中的特定文件夹。

  • 您不能提供 DataSync 用于访问您的 blob 存储空间的用户委托 SAS 令牌。

创建 DataSync 代理(可选)

只有在 Azure Blob 和 Amazon EFS 或 Amazon 之间传输数据时 FSx,或者使用基本模式任务时,才需要 DataSync 代理。你不需要代理即可使用增强模式在 Azure Blob 和 Amazon S3 之间传输数据。本节介绍如何部署和激活代理。

提示

尽管您可以在 Amazon EC2 实例上部署代理,但使用Microsoft Hyper-V代理可能会减少网络延迟并提高数据压缩率。

您可以使用Microsoft Hyper-V映像直接在中Azure部署 DataSync 代理。

提示

在继续之前,请考虑使用可以帮助您更快地在 Azure 中部署 Hyper-V 代理的 Shell 脚本。您可以获取更多信息并下载代码GitHub

如果您使用脚本,则可以向前跳至有关 获取代理的激活密钥 的部分。

先决条件

要准备 DataSync 代理并将其部署到中Azure,必须执行以下操作:

正在下载并准备您的代理

从 DataSync 控制台下载代理。在 Azure 中部署代理之前,必须将其转换为固定大小的虚拟硬盘 (VHD)。有关更多信息,请参阅 Azure 文档

下载并准备您的代理
  1. 打开 AWS DataSync 控制台,网址为https://console.aws.amazon.com/datasync/

  2. 在左侧的导航窗格中,选择 代理,然后选择 创建代理

  3. 对于 虚拟机监控器,选择 Microsoft Hyper-V,然后选择 下载映像

    代理下载到包含 .vhdx 文件的 .zip 文件中。

  4. 在本地机器上解压缩 .vhdx 文件。

  5. 打开 PowerShell 并执行以下操作:

    1. 复制以下 Convert-VHD cmdlet:

      Convert-VHD -Path .\local-path-to-vhdx-file\aws-datasync-2.0.1686143940.1-x86_64.xfs.gpt.vhdx ` -DestinationPath .\local-path-to-vhdx-file\aws-datasync-2016861439401-x86_64.vhd -VHDType Fixed
    2. local-path-to-vhdx-file 的每个实例替换为本地计算机上的 .vhdx 文件位置。

    3. 运行命令。

    您的代理现在是固定大小的 VHD(采用 .vhd 文件格式),可以部署到 Azure 中。

在 Azure 中部署您的代理

在中部署 DataSync 代理涉Azure及:

  • 在 Azure 中创建托管磁盘

  • 将您的代理上传到该托管磁盘

  • 将托管磁盘连接到 Linux 虚拟机

要在 Azure 中部署您的代理
  1. 在 PowerShell 中,转到包含您的代理 .vhd 文件的目录。

  2. 运行 ls 命令并保存 Length 值(例如 85899346432)。

    这是代理映像的大小(以字节为单位),在创建可以容纳映像的托管磁盘时,您需要使用该大小。

  3. 执行以下操作来创建托管磁盘:

    1. 复制以下 Azure CLI 命令:

      az disk create -n your-managed-disk ` -g your-resource-group ` -l your-azure-region ` --upload-type Upload ` --upload-size-bytes agent-size-bytes ` --sku standard_lrs
    2. your-managed-disk 替换为您的托管磁盘的名称。

    3. your-resource-group 替换为您的存储账户所属 Azure 资源组的名称。

    4. your-azure-region 替换为资源组所在的 Azure 区域。

    5. agent-size-bytes 替换为代理映像的大小。

    6. 运行命令。

    此命令会创建一个带有标准 SKU 的空托管磁盘,您可以在其中上传 DataSync代理。

  4. 要生成允许对托管磁盘进行写入访问的共享访问签名 (SAS),请执行以下操作:

    1. 复制以下 Azure CLI 命令:

      az disk grant-access -n your-managed-disk ` -g your-resource-group ` --access-level Write ` --duration-in-seconds 86400
    2. your-managed-disk 替换为您创建的托管磁盘的名称。

    3. your-resource-group 替换为您的存储账户所属 Azure 资源组的名称。

    4. 运行命令。

      在输出中,记录 SAS URI。将代理上传到 Azure 时需要此 URI。

    SAS 允许您向磁盘写入长达一个小时。这意味着您有一小时的时间将代理上传到托管磁盘。

  5. 要在 Azure 中将代理上传到托管磁盘,请执行以下操作:

    1. 复制以下 AzCopy 命令:

      .\azcopy copy local-path-to-vhd-file sas-uri --blob-type PageBlob
    2. local-path-to-vhd-file 替换为代理 .vhd 文件在本地计算机上的位置。

    3. sas-uri 替换为运行 az disk grant-access 命令时获得的 SAS URI。

    4. 运行命令。

  6. 代理上传完成后,撤消对托管磁盘的访问权限。要执行这项操作,请复制以下 Azure CLI 命令:

    az disk revoke-access -n your-managed-disk -g your-resource-group
    1. your-resource-group 替换为您的存储账户所属 Azure 资源组的名称。

    2. your-managed-disk 替换为您创建的托管磁盘的名称。

    3. 运行命令。

  7. 执行以下操作将托管磁盘连接到新的 Linux 虚拟机:

    1. 复制以下 Azure CLI 命令:

      az vm create --resource-group your-resource-group ` --location eastus ` --name your-agent-vm ` --size Standard_E4as_v4 ` --os-type linux ` --attach-os-disk your-managed-disk
    2. your-resource-group 替换为您的存储账户所属 Azure 资源组的名称。

    3. your-agent-vm 替换为您可以记住的虚拟机名称。

    4. your-managed-disk 替换为您要装载到虚拟机的托管磁盘的名称。

    5. 运行命令。

您已经部署了代理。必须先激活代理,然后才能开始配置数据传输。

获取代理的激活密钥

要手动获取 DataSync 代理的激活密钥,请按照以下步骤操作。

或者,DataSync 可以自动为您获取激活密钥,但是这种方法需要一些网络配置。

获取代理的激活密钥
  1. 在 Azure 门户中,通过选择 启用自定义存储账户设置并指定您的 Azure 存储账户,为代理启用虚拟机的启动诊断

    为代理启用虚拟机的启动诊断后,您可以访问代理的本地控制台以获取激活密钥。

  2. 仍在 Azure 门户网站时,前往您的虚拟机并选择 串行控制台

  3. 在代理的本地控制台中,使用以下默认凭证登录:

    • 用户名admin

    • 密码password

    我们建议在某个时候至少更改代理的密码。在代理的本地控制台中,在主菜单上输入 5,然后使用 passwd 命令更改密码。

  4. 输入 0 以获取代理的激活密钥。

  5. 输入你正在使用 AWS 区域 的地方 DataSync (例如,us-east-1)。

  6. 选择代理将用于连接的服务端点 AWS。

  7. 保存 Activation key 输出的值。

激活您的代理

获得激活密钥后,即可完成 DataSync代理的创建。

激活您的代理
  1. 打开 AWS DataSync 控制台,网址为https://console.aws.amazon.com/datasync/

  2. 在左侧的导航窗格中,选择 代理,然后选择 创建代理

  3. 对于 虚拟机监控器,选择 Microsoft Hyper-V

  4. 对于端点类型,请选择您在获取代理激活密钥时指定的相同类型的服务端点(例如,在中选择公共服务终端节点 Region name)。

  5. 将您的网络配置为与您的代理正在使用的服务端点类型配合使用。有关服务端点网络要求,请参阅以下主题:

  6. 对于 激活密钥,执行以下操作:

    1. 选择 手动输入代理的激活密钥

    2. 输入您从代理的本地控制台获得的激活密钥。

  7. 选择 Create agent (创建代理)

您的代理已准备好与您的 Azure Blob Storage 连接。有关更多信息,请参阅 创建您的 Azure Blob Storage 传输位置

您可以在 Amazon EC2 实例上部署您的 DataSync 代理。

创建 Amazon EC2 代理
  1. 部署 Amazon EC2 代理

  2. 选择代理用来与 AWS通信的服务端点

    在这种情况下,我们建议使用虚拟私有云(VPC)服务端点。

  3. 将您的网络配置为使用 VPC 服务端点

  4. 激活代理

创建您的 Azure Blob Storage 传输位置

您可以配置 DataSync 为使用您的Azure Blob Storage传输源或目的地。

开始前的准备工作

确保您知道 DataSync 访问层Azure Blob Storage和 blob 类型的访问方式和使用方式。您还需要一个可以连接到您的Azure Blob Storage容器的DataSync 代理

  1. 打开 AWS DataSync 控制台,网址为https://console.aws.amazon.com/datasync/

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

  3. 对于 位置类型,请选择 Microsoft Azure Blob Storage

  4. 对于 容器 URL,输入涉及传输的容器的 URL。

  5. 或者,对于 用作目标的访问层级,请选择要将对象或文件传输到的访问层级

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

  7. 如果您的转移需要代理,请选择使用代理,然后选择可以与您的Azure Blob Storage容器连接的 DataSync 代理。

  8. 对于 SAS 令牌,请提供访问您的 DataSync blob 存储所需的凭据。Azure Blob 存储上的某些公共数据集不需要凭据。您可以直接输入 SAS 令牌,也可以指定包含该令牌的 AWS Secrets Manager 密钥。有关更多信息,请参阅为存储位置提供凭据

    您的 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
  9. (可选)在字段中输入值以标记位置。

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

  10. 选择创建位置

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

    aws datasync 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" \ --access-tier "access-tier-for-destination" \ --tags [{"Key": "key1","Value": "value1"}]
  2. 对于 --container-url 参数,请指定传输中涉及的 Azure Blob Storage 容器的 URL。

  3. 对于 --authentication-type 参数,请指定 SAS。如果您正在访问不需要身份验证的公共数据集,请指定NONE

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

    您还可以使用提供用于保护密钥的其他参数 AWS Secrets Manager。有关更多信息,请参阅为存储位置提供凭据

    您的 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-01234567890aaabfb

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

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

  7. 或者,对于 --access-tier 参数,指定要将对象或文件传输到的访问层级HOTCOOLARCHIVE)。

    此参数仅适用于使用该位置作为传输目标的情况。

  8. 或者,对于 --tags 参数,指定可帮助您管理、筛选和搜索位置的键值对。

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

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

    如果命令成功,您将收到一条响应,显示您创建位置的 ARN。例如:

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

查看您的 Azure Blob Storage 传输位置

您可以获取有关您的现有 DataSync 转账地点的详细信息Azure Blob Storage。

  1. 打开 AWS DataSync 控制台,网址为https://console.aws.amazon.com/datasync/

  2. 在左侧导航窗格中,展开数据传输,然后选择位置

  3. 选择您的 Azure Blob Storage 位置。

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

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

    aws datasync describe-location-azure-blob \ --location-arn "your-azure-blob-location-arn"
  2. 对于 --location-arn 参数,指定您创建 Azure Blob Storage 位置的 ARN(例如 arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh)。

  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 Storage 传输位置

如有必要,您可以在控制台或使用 AWS CLI修改位置的配置。

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

    aws datasync 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" \ --access-tier "access-tier-for-destination"
  2. 对于 --location-arn 参数,请指定要更新的 Azure Blob Storage 位置的 ARN(例如 arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh)。

  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-01234567890aaabfb

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

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

  7. 或者,对于 --access-tier 参数,指定要将对象传输到的访问层级HOTCOOLARCHIVE)。

    此参数仅适用于使用该位置作为传输目标的情况。

后续步骤

为你的 DataSync 位置创建完毕后Azure Blob Storage,你可以继续设置接送服务。下面是要考虑的一些后续步骤:

  1. 如果您还没有准备好,请创建另一个您计划将数据传入或传出 Azure Blob Storage 的位置

  2. 了解如何 DataSync 处理元数据和特殊文件,尤其是在您的传输地点没有类似的元数据结构的情况下。

  3. 配置您数据的传输方式。例如,您可以只传输数据子集或删除 blob 存储中不在源位置的文件(只要您的 SAS 令牌具有删除权限)。

  4. 开始传输