本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置使用 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 支持具有以下访问级别的令牌:
-
账户
-
容器
DataSync 所需的访问权限取决于令牌的范围。没有正确的权限可能会导致您的传输失败。例如,如果您要将带有标签的对象移至 Azure Blob Storage,但您的 SAS 令牌没有标签权限,则传输将不会成功。
用于账户级访问的 SAS 令牌权限
DataSync 需要具有以下权限的账户级访问令牌(取决于您是向 Azure Blob Storage 传输还是从中传输)。
容器级访问的 SAS 令牌权限
DataSync 需要具有以下权限的容器级访问令牌(取决于您是向 Azure 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 传输的注意事项
在计划使用 DataSync 向 Azure Blob Storage 传入数据或从中传出数据时,需要注意一些事项。
成本
将数据移入或移出 Azure Blob Storage 的相关费用可能包括:
-
运行 Azure 虚拟机
(如果您在 Azure 中部署了 DataSync 代理) -
运行 Amazon EC2
实例(如果您在 AWS 的 VPC 中部署了 DataSync 代理) -
使用 DataSync
传输数据,包括与 Azure Blob Storage 和 Amazon S3(如果 S3 是您的传输位置之一)相关的请求费用 -
将数据传入或传出 Azure Blob Storage
-
将数据存储在 DataSync 支持的 AWS 存储服务中
Blob 类型
DataSync 如何处理 blob 类型取决于您是向 Azure Blob Storage 传输还是从中传输。当您将数据移入 blob 存储空间时,DataSync 传输的对象或文件只能是块 blob。当您将数据移出 blob 存储空间时,DataSync 可以传输块、页面和附加 blob。
有关 Blob 类型的更多信息,请参阅 Azure Blob Storage文档
AWS 区域可用性
您可以在任何 DataSync 支持的 AWS 区域中创建 Azure Blob Storage 传输位置。
复制对象标签
DataSync 能否在从 Azure Blob Storage 传入或传出对象标签时保留对象标签取决于以下因素:
-
对象标签的大小 – DataSync 无法传输标签超过 2 KB 的对象。
-
是否将 DataSync 配置为复制对象标签:默认情况下,DataSync 会复制对象标签。
-
您的 Azure 存储账户使用的命名空间 – 如果您的 Azure 存储账户使用平面命名空间,DataSync 可以复制对象标签,但如果您的账户使用分层命名空间(Azure Data Lake Storage Gen2 的一项功能),则无法复制对象标签。如果您尝试复制对象标签并且您的存储账户使用分层命名空间,则您的 DataSync 任务将失败。
-
您的 SAS 令牌是否授权标记 – 复制对象标签所需的权限因令牌提供的访问级别而异。如果您尝试复制对象标签,但您的令牌没有正确的标记权限,则任务将失败。有关更多信息,请查看账户级访问令牌或容器级访问令牌的权限要求。
传输到 Amazon S3
传输到 Amazon S3 时,DataSync 不会传输大于 5 TB 的 Azure Blob Storage 对象或元数据大于 2 KB 的对象。
删除传输目标中的目录
传输到 Azure Blob Storage 时,DataSync 可以删除 blob 存储中传输源中不存在的对象。(您可以通过清除 DataSync 控制台中的 保留已删除文件 设置来配置此选项。您的 SAS 令牌还必须具有删除权限。)
当您以这种方式配置传输时,如果您的 Azure 存储账户使用的是分层命名空间,则 DataSync 不会删除 blob 存储中的目录。在这种情况下,必须手动删除目录(例如使用 Azure Storage Explorer
限制
在与 Azure Blob Storage 互相传输数据时,请记住以下限制:
-
DataSync 会在某个位置创建一些目录,以帮助简化您的传输。如果 Azure Blob Storage 是目标位置,且存储账户使用分层命名空间,您可能会在
/.aws-datasync文件夹中发现任务特定的子目录(如task-000011112222abcde)。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 代理可能会减少网络延迟并提高数据压缩率。
您可以直接在 Azure 中将 DataSync 代理与 Microsoft Hyper-V 映像一起部署。
提示
先决条件
要准备 DataSync 代理并将其部署到 Azure 中,您必须执行以下操作:
-
在本地机器上启用 Hyper-V。
-
安装 PowerShell
(包括 Hyper-V Module)。 -
安装 Azure CLI
。 -
安装 AzCopy
。
正在下载并准备您的代理
从 DataSync 控制台下载代理。在 Azure 中部署代理之前,必须将其转换为固定大小的虚拟硬盘 (VHD)。有关更多信息,请参阅 Azure 文档
下载并准备您的代理
打开 AWS DataSync 控制台,地址:https://console.aws.amazon.com/datasync/
。 -
在左侧的导航窗格中,选择 代理,然后选择 创建代理。
-
对于 虚拟机监控器,选择 Microsoft Hyper-V,然后选择 下载映像。
代理下载到包含
.vhdx文件的.zip文件中。 -
在本地机器上解压缩
.vhdx文件。 -
打开 PowerShell 并执行以下操作:
-
复制以下
Convert-VHDcmdlet: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 -
将
的每个实例替换为本地计算机上的local-path-to-vhdx-file.vhdx文件位置。 -
运行命令。
您的代理现在是固定大小的 VHD(采用
.vhd文件格式),可以部署到 Azure 中。 -
在 Azure 中部署您的代理
在 Azure 中部署您的 DataSync 代理涉及:
-
在 Azure 中创建托管磁盘
-
将您的代理上传到该托管磁盘
-
将托管磁盘连接到 Linux 虚拟机
要在 Azure 中部署您的代理
-
在 PowerShell 中,转到包含您的代理
.vhd文件的目录。 -
运行
ls命令并保存Length值(例如85899346432)。这是代理映像的大小(以字节为单位),在创建可以容纳映像的托管磁盘时,您需要使用该大小。
-
执行以下操作来创建托管磁盘:
-
复制以下 Azure CLI 命令:
az disk create -nyour-managed-disk` -gyour-resource-group` -lyour-azure-region` --upload-type Upload ` --upload-size-bytesagent-size-bytes` --sku standard_lrs -
将
替换为您的托管磁盘的名称。your-managed-disk -
将
替换为您的存储账户所属 Azure 资源组的名称。your-resource-group -
将
替换为资源组所在的 Azure 区域。your-azure-region -
将
替换为代理映像的大小。agent-size-bytes -
运行命令。
此命令会创建一个带有标准 SKU
的空托管磁盘,您可以在其中上传 DataSync 代理。 -
-
要生成允许对托管磁盘进行写入访问的共享访问签名 (SAS),请执行以下操作:
-
复制以下 Azure CLI 命令:
az disk grant-access -nyour-managed-disk` -gyour-resource-group` --access-level Write ` --duration-in-seconds 86400 -
将
替换为您创建的托管磁盘的名称。your-managed-disk -
将
替换为您的存储账户所属 Azure 资源组的名称。your-resource-group -
运行命令。
在输出中,记录 SAS URI。将代理上传到 Azure 时需要此 URI。
SAS 允许您向磁盘写入长达一个小时。这意味着您有一小时的时间将代理上传到托管磁盘。
-
-
要在 Azure 中将代理上传到托管磁盘,请执行以下操作:
-
复制以下
AzCopy命令:.\azcopy copylocal-path-to-vhd-filesas-uri--blob-type PageBlob -
将
替换为代理local-path-to-vhd-file.vhd文件在本地计算机上的位置。 -
将
替换为运行sas-uriaz disk grant-access命令时获得的 SAS URI。 -
运行命令。
-
-
代理上传完成后,撤消对托管磁盘的访问权限。要执行这项操作,请复制以下 Azure CLI 命令:
az disk revoke-access -nyour-managed-disk-gyour-resource-group-
将
替换为您的存储账户所属 Azure 资源组的名称。your-resource-group -
将
替换为您创建的托管磁盘的名称。your-managed-disk -
运行命令。
-
-
执行以下操作将托管磁盘连接到新的 Linux 虚拟机:
-
复制以下 Azure CLI 命令:
az vm create --resource-groupyour-resource-group` --location eastus ` --nameyour-agent-vm` --size Standard_E4as_v4 ` --os-type linux ` --attach-os-diskyour-managed-disk -
将
替换为您的存储账户所属 Azure 资源组的名称。your-resource-group -
将
替换为您可以记住的虚拟机名称。your-agent-vm -
将
替换为您要装载到虚拟机的托管磁盘的名称。your-managed-disk -
运行命令。
-
您已经部署了代理。必须先激活代理,然后才能开始配置数据传输。
获取代理的激活密钥
要手动获取 DataSync 代理的激活密钥,请按照以下步骤操作。
或者,DataSync 可以自动为您获取激活密钥,但这种方法需要一些网络配置。
获取代理的激活密钥
-
在 Azure 门户中,通过选择 启用自定义存储账户设置并指定您的 Azure 存储账户,为代理启用虚拟机的启动诊断
。 为代理启用虚拟机的启动诊断后,您可以访问代理的本地控制台以获取激活密钥。
-
仍在 Azure 门户网站时,前往您的虚拟机并选择 串行控制台。
-
在代理的本地控制台中,使用以下默认凭证登录:
-
用户名 –
admin -
密码 –
password
我们建议在某个时候至少更改代理的密码。在代理的本地控制台中,在主菜单上输入
5,然后使用passwd命令更改密码。 -
-
输入
0以获取代理的激活密钥。 -
在您使用 DataSync 的位置输入 AWS 区域(例如
us-east-1)。 -
选择服务端点,代理将用该端点与 AWS 通信。
-
保存
Activation key输出的值。
激活您的代理
获得激活密钥后,即可完成 DataSync 代理的创建。
激活您的代理
打开 AWS DataSync 控制台,地址:https://console.aws.amazon.com/datasync/
。 -
在左侧的导航窗格中,选择 代理,然后选择 创建代理。
-
对于 虚拟机监控器,选择 Microsoft Hyper-V。
-
对于 端点类型,请选择您在获取代理激活密钥时指定的相同类型的服务端点(例如,选择在
区域名称中的公共服务端点)。 -
将您的网络配置为与您的代理正在使用的服务端点类型配合使用。有关服务端点网络要求,请参阅以下主题:
-
对于 激活密钥,执行以下操作:
-
选择 手动输入代理的激活密钥。
-
输入您从代理的本地控制台获得的激活密钥。
-
-
选择 Create agent (创建代理)。
您的代理已准备好与您的 Azure Blob Storage 连接。有关更多信息,请参阅 创建您的 Azure Blob Storage 传输位置。
您可以将 DataSync 代理部署在 Amazon EC2 实例上。
创建您的 Azure Blob Storage 传输位置
您可以配置 DataSync 将您的 Azure Blob Storage 用作传输源或目标。
开始前的准备工作
请务必了解 DataSync 如何访问 Azure Blob Storage以及如何使用访问层级和 blob 类型。您还需要一个可以连接到您 Azure Blob Storage 容器的 DataSync 代理。
打开 AWS DataSync 控制台,地址:https://console.aws.amazon.com/datasync/
。 在左侧导航窗格中,展开数据传输,然后选择 位置和 创建位置。
-
对于 位置类型,请选择 Microsoft Azure Blob Storage
-
对于 容器 URL,输入涉及传输的容器的 URL。
-
或者,对于 用作目标的访问层级,请选择要将对象或文件传输到的访问层级。
-
对于 文件夹,如果要将传输限制到容器中的虚拟目录(例如
/my/images),请输入路径段。 -
如果传输需要代理,请选择使用代理,然后选择可以与 Azure Blob Storage 容器连接的 DataSync 代理。
-
对于 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
-
(可选)在键和值字段中输入值以标记位置。
标签可帮助您管理、筛选和搜索 AWS 资源。我们建议至少为您的位置创建一个名称标签。
-
选择创建位置。
-
复制以下
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-arnsmy-datasync-agent-arn\ --subdirectory "/path/to/my/data" \ --access-tier "access-tier-for-destination" \ --tags [{"Key": "key1","Value": "value1"}] -
对于
--container-url参数,请指定传输中涉及的 Azure Blob Storage 容器的 URL。 -
对于
--authentication-type参数,请指定SAS。如果访问不需要身份验证的公共数据集,请指定NONE。 -
对于
--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
-
(可选)对于
--agent-arns参数,指定可连接到容器的 DataSync 代理的 Amazon 资源名称(ARN)。下面是一个示例代理 ARN:
arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890aaabfb您可以指定多个代理。有关更多信息,请参阅 使用多个 DataSync 代理。
-
对于
--subdirectory参数,如果要将传输限制到容器中的虚拟目录(例如/my/images),请指定路径段。 -
或者,对于
--access-tier参数,指定要将对象或文件传输到的访问层级(HOT、COOL或ARCHIVE)。此参数仅适用于使用该位置作为传输目标的情况。
-
或者,对于
--tags参数,指定可帮助您管理、筛选和搜索位置的键值对。我们建议为您的位置创建一个名称标签。
-
运行
create-location-azure-blob命令。如果命令成功,您将收到一条响应,显示您创建位置的 ARN。例如:
{ "LocationArn": "arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh" }
查看您的 Azure Blob Storage 传输位置
您可以获取有关您的 Azure Blob Storage 现有 DataSync 传输位置的详细信息。
打开 AWS DataSync 控制台,地址:https://console.aws.amazon.com/datasync/
。 -
在左侧导航窗格中,展开数据传输,然后选择位置。
-
选择您的 Azure Blob Storage 位置。
您可以查看有关您所在位置的详细信息,包括使用该位置的所有 DataSync 传输任务。
-
复制以下
describe-location-azure-blob命令:aws datasync describe-location-azure-blob \ --location-arn "your-azure-blob-location-arn" -
对于
--location-arn参数,指定您创建 Azure Blob Storage 位置的 ARN(例如arn:aws:datasync:)。us-east-1:123456789012:location/loc-12345678abcdefgh -
运行
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 修改位置的配置。
-
复制以下
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-arnsmy-datasync-agent-arn\ --subdirectory "/path/to/my/data" \ --access-tier "access-tier-for-destination" -
对于
--location-arn参数,请指定要更新的 Azure Blob Storage 位置的 ARN(例如arn:aws:datasync:)。us-east-1:123456789012:location/loc-12345678abcdefgh -
对于
--authentication-type参数,请指定SAS。 -
对于
--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
-
对于
--agent-arns参数,指定要连接到容器的 DataSync 代理的 Amazon 资源名称 (ARN)。下面是一个示例代理 ARN:
arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890aaabfb您可以指定多个代理。有关更多信息,请参阅 使用多个 DataSync 代理。
-
对于
--subdirectory参数,如果要将传输限制到容器中的虚拟目录(例如/my/images),请指定路径段。 -
或者,对于
--access-tier参数,指定要将对象传输到的访问层级(HOT、COOL或ARCHIVE)。此参数仅适用于使用该位置作为传输目标的情况。
后续步骤
为 Azure Blob Storage 创建 DataSync 位置后,您就可以继续设置传输。下面是要考虑的一些后续步骤:
-
如果您还没有准备好,请创建另一个您计划将数据传入或传出 Azure Blob Storage 的位置。
-
了解 DataSync 如何处理元数据和特殊文件,尤其是在您的传输位置没有类似的元数据结构的情况下。
-
配置您数据的传输方式。例如,您可以只传输数据子集或删除 blob 存储中不在源位置的文件(只要您的 SAS 令牌具有删除权限)。
-
开始传输。