使用创建AWS DataSync地点AWS CLI - AWS DataSync

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

使用创建AWS DataSync地点AWS CLI

每AWS DataSync 项任务都由传输中的两个地点组成。源位置 定义要从中读取数据的存储系统或服务。目标位置 定义要向其中写入数据的存储系统或服务。

使用AWS Command Line Interface (AWS CLI) 可以为以下存储系统和服务创建位置:

  • 网络文件系统 (NFS)

  • 服务器消息块 (SMB)

  • Hadoop Distributed File System(HDFS)

  • 自我管理的对象存储源位置

  • Amazon Elastic File System (Amazon EFS)

  • Amazon FSx for Windows File Server

  • Amazon FSx for Lustre

  • Amazon FSx for OpenZFS

  • Amazon FSx fo NetApp r ONTAP

  • Amazon Simple Storage Service (Amazon S3)

有关更多信息,请参阅我可以在哪里传输我的数据AWS DataSync?

创建 NFS 位置

NFS 位置定义 NFS 服务器上可以读取或写入的文件系统。您也可以使用`创建 NFS 位置AWS Management Console。有关更多信息,请参阅配置来自 NFS 文件服务器的AWS DataSync传输

注意

如果您在设备上使用 NFS 位置,请参阅使用以下AWS DataSync方式配置传输AWS Snowcone,了解有关向该AWS Snowcone设备传输数据或从该设备传输数据的更多信息。

使用 CLI 创建 NFS 位置
  • 使用以下命令创建 NFS 源位置。

    $ aws datasync create-location-nfs \ --server-hostname nfs-server-address \ --on-prem-config AgentArns=datasync-agent-arns \ --subdirectory nfs-export-path

    对于上述命令,以下情况适用:

    • 您为--subdirectory参数提供的路径 (nfs-export-path) 必须是 NFS 服务器导出的路径,或者是子目录。网络中的其他 NFS 客户端必须能够安装此路径。要查看 NFS 服务器导出的所有路径,请从可访问服务器的 NFS 客户端运行命令 showmount -e nfs-server-address。您可以指定显示在结果中的任何目录以及该目录的任何子目录。

    • 要传输指定文件夹中的所有数据, DataSync 需要有权读取所有数据。要 DataSync 授予权限,您可以执行以下两项操作之一。您可以使用 no_root_squash 配置 NFS 导出。或者,对于您希望 DataSync 访问的所有文件,您可以确保权限允许所有用户读取。通过执行上述任一操作,将允许代理读取这些文件。要使代理能够访问目录,您还必须额外为所有用户授予执行访问权限。

    • 确保无需 Kerberos 身份验证即可访问 NFS 导出路径。

    DataSync 自动选择用于从 NFS 位置读取的 NFS 版本。要指定 NFS 版本,请在 NfsMountOptions API 操作中使用可选 Version 参数。

此命令返回 NFS 位置的 Amazon 资源名称 (ARN),与以下所示的 ARN 类似。

{ "LocationArn": "arn:aws:datasync:us-east-1:111222333444:location/loc-0f01451b140b2af49" }

要确保可以挂载目录,您可以连接到与代理具有相同网络配置的任何计算机,并运行以下命令。

mount -t nfs -o nfsvers=<nfs-server-version <nfs-server-address:<nfs-export-path <test-folder

以下是该命令的示例。

mount -t nfs -o nfsvers=3 198.51.100.123:/path_for_sync_to_read_from /temp_folder_to_test_mount_on_local_machine

创建 SMB 位置

SMB 位置定义 SMB 服务器上可以读取或写入的文件系统。您还可以使用控制台创建 SMB 位置。有关更多信息,请参阅配置来自 SMB 文件服务器的AWS DataSync传输

使用 CLI 创建 SMB 位置
  • 使用以下命令创建 SMB 源位置。

    aws datasync create-location-smb \ --server-hostname smb-server-address \ --user user-who-can-mount-share \ --domain windows-domain-of-smb-server \ --password user-password \ --agent-arns datasync-agent-arns \ --subdirectory smb-export-path

    您为--subdirectory参数提供的路径应该是 SMB 服务器导出的路径。smb-export-path使用正斜杠指定路径;例如/path/to/folder。网络中的其他 SMB 客户端应该能够访问此路径。

    DataSync 自动选择用于从 SMB 位置读取的 SMB 版本。要指定 SMB 版本,请在 SmbMountOptions API 操作中使用可选 Version 参数。

此命令返回 SMB 位置的 Amazon 资源名称 (ARN),与以下所示的 ARN 类似。

{ "LocationArn": "arn:aws:datasync:us-east-1:111222333444:location/loc-0f01451b140b2af49" }

创建 HDFS 位置

HDFS 位置定义了 Hadoop 集群上可读取或可写入的文件系统。您也可以使用创建 HDFS 位置AWS Management Console。有关更多信息,请参阅配置来自 HDFS 的AWS DataSync传输

使用创建 HDFS 位置AWS CLI
  • 使用以下命令创建 HDFS 位置。在以下示例中,将每个user input placeholder exal 替换为您自己的信息。

    aws datasync create-location-hdfs --name-nodes [{"Hostname":"host1", "Port": 8020}] \ --authentication-type "SIMPLE|KERBEROS" \ --agent-arns [arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890example] \ --subdirectory "/path/to/my/data"

    create-location-hdfs命令中必需参数如下:

    • name-nodes— 指定 Hadoop 集群 NameNode 中的主机名或 IP 地址以及 NameNode 正在监听的 TCP 端口。

    • authentication-type— 连接到 Hadoop 集群时要使用的身份验证类型。指定 SIMPLEKERBEROS

      如果您使用SIMPLE身份验证,请使用--simple-user参数指定用户的用户名。如果您使用KERBEROS身份验证,请使用--kerberos-principal--kerberos-keytab、和--kerberos-krb5-conf参数。有关更多信息,请参阅create-location-hdfs

    • agent-arns— 用于 HDFS 位置的 DataSync 代理的 ARN。

    上述命令返回位置 ARN,类似于以下内容:

    { "arn:aws:datasync:us-east-1:123456789012:location/loc-01234567890example" }

创建对象存储位置

位置是代表本地或其他云提供商(例如 Google Cloud Storage 存储分区)托管的对象存储系统的 DataSync 终端节点。

有关对象存储位置的更多信息,包括兼容性要求,请参阅配置来自对象存储系统的AWS DataSync传输

使用创建对象存储位置AWS CLI
  1. 复制以下create-location-object-storage命令:

    aws datasync create-location-object-storage \ --server-hostname object-storage-server.example.com \ --bucket-name your-bucket \ --agent-arns arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890deadfb
  2. 在命令中指定以下必需参数:

    • --server-hostname— 指定对象存储服务器的域名或 IP 地址。

    • --bucket-name— 指定您要传输到或传输的对象存储服务器上存储分区的名称。

    • --agent-arns— 指定要连接到对象存储服务器的 DataSync 代理。

  3. (可选)将以下任何参数添加到命令中:

    • --server-port— 指定对象存储服务器接受入站网络流量的端口(例如,端口443)。

    • --server-protocol— 指定对象存储服务器通信时使用的协议(HTTPHTTPS)。

    • --access-key— 如果需要凭证来向对象存储服务器进行身份验证,则指定访问密钥(例如,用户名)。

    • --secret-key— 如果需要凭证来向对象存储服务器进行身份验证,则指定私有密钥(例如,密码)。

    • --server-certificate— 指定 DataSync 代理在连接到您的对象存储服务器时将信任的私有或自签名证书。

      自定义证书文件必须具有.pem扩展名(例如file:///home/user/mycert.pem)。

    • --subdirectory— 指定对象存储服务器的对象前缀。

      DataSync 仅复制具有此前缀的对象。

    • --tags— 指定表示要添加到位置资源的标签的键值对。

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

  4. 运行 create-location-object-storage 命令。

    您会收到一条显示您刚刚创建的位置 ARN 的响应。

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

创建 Amazon EFS 位置

位置是可以读取或可写入的 Amazon EFS 文件系统的终端节点。您也可以使用控制台创建此类位置。有关更多信息,请参阅使用亚马逊 EFS 配置AWS DataSync传输

使用创建 Amazon EFS 位置AWS CLI
  1. 如果您没有 Amazon EFS 文件系统,请创建一个。有关如何创建 EFS 文件系统的信息,请参阅《Amazon Elastic File Sy stem 用户指南》中的 Amazon Elastic File Sy stem 入门

  2. 标识至少有该文件系统的一个挂载目标的子网。您可以使用describe-mount-targets命令查看所有装载目标和与 EFS 文件系统关联的子网。

    aws efs describe-mount-targets \ --region aws-region \ --file-system-id file-system-id
    注意

    您指定的是目标 S3 存储桶或 EFS 文件系统所在的。AWS 区域

    此命令返回与以下信息类似的目标相关信息。

    { "MountTargets": [ { "OwnerId": "111222333444", "MountTargetId": "fsmt-22334a10", "FileSystemId": "fs-123456ab", "SubnetId": "subnet-f12a0e34", "LifeCycleState": "available", "IpAddress": "11.222.0.123", "NetworkInterfaceId": "eni-1234a044" } ] }
  3. 指定可以访问装载目标的 Amazon EC2 安全组。您可以运行以下命令来找到挂载目标的安全组。

    aws efs describe-mount-target-security-groups \ --region aws-region \ --mount-target-id mount-target-id

    您提供的安全组必须能够与指定子网中的挂载目标的安全组进行通信。

    挂载目标的安全组 M 与您提供在此阶段使用的安全组 S 之间的关系如下所示: DataSync

    • 安全组 M(与挂载目标关联)必须允许从安全组 S 对 NFS 端口 (2049) 上的 TCP 协议进行入站访问。

      您可以通过其 IP 地址(CIDR 范围)或其安全组启用入站连接。

    • 您提供的访问 Amazon EFS 的安全组 S 应具有一个规则,该规则允许与 NFS 端口进行出站连接。 DataSync 它在文件系统的其中一个挂载目标上启用出站连接。

      您可以按 IP 地址(CIDR 范围)或安全组启用出站连接。

      有关安全组和挂载目标的信息,请参阅 Amazon Elastic File System 用户指南中的 Amazon EC2 实例和挂载目标的安全组

  4. 创建位置。要创建 EFS 位置,您需要您的Amazon EC2 子网、Amazon EC2 安全组和文件系统的 ARN。由于 DataSync API 接受完全限定的 ARN,您可以构建这些 ARN。有关如何为不同的服务构建 ARN 的信息,请参阅中的亚马逊资源名称 (ARN) AWS 一般参考

    使用以下命令创建 EFS 位置。

    aws datasync create-location-efs \ --subdirectory /path/to/your/subdirectory \ --efs-filesystem-arn 'arn:aws:elasticfilesystem:region:account-id:file-system/filesystem-id' \ --ec2-config SecurityGroupArns='arn:aws:ec2:region:account-id:security-group/security-group-id',SubnetArn='arn:aws:ec2:region:account-id:subnet/subnet-id'
注意

您指定的是目标 S3 存储桶或 EFS 文件系统所在的。AWS 区域

这些命令返回一个如下所示的位置 ARN。

{ "LocationArn": "arn:aws:datasync:us-west-2:111222333444:location/loc-07db7abfc326c50fb" }

创建Amazon FSx for Windows File Server 位置

位置是FSx for Windows File Server 的端点,您可以对其进行读取或写入。

您还可以使用控制台创建 FSx for Windows File Server 位置。有关更多信息,请参阅使用Amazon FSx for Windows File Server AWS DataSync

使用创建 FSx for Windows File Server 位置AWS CLI
  • 使用以下命令创建 Amazon FSx 位置。

    aws datasync create-location-fsx-windows \ --fsx-filesystem-arn arn:aws:fsx:region:account-id:file-system/filesystem-id \ --security-group-arns arn:aws:ec2:region:account-id:security-group/group-id \ --user smb-user --password password

    create-location-fsx-windows 命令中,指定以下项:

    • fsx-filesystem-arn— 要读取或写入的文件系统的完全限定的 Amazon Resource Name (ARN)。

      DataSync API 接受完全合格的 ARN,您可以构造这些 ARN。有关如何为不同的服务构建 ARN 的信息,请参阅中的亚马逊资源名称 (ARN) AWS 一般参考

    • security-group-arns— 可应用于文件系统首选子网网络接口的 Amazon EC2 安全组的 ARN。

    • AWS 区域— 您指定的区域是您的目标 Amazon FSx 文件系统所在的区域。

上一命令返回一个如下所示的位置 ARN。

{ "LocationArn": "arn:aws:datasync:us-west-2:111222333444:location/loc-07db7abfc326c50fb" }

创建 Amazon FSx for Lustre 位置

位置是您可以读取或写入 FSx for Lustre 文件系统的端点。

您还可以使用控制台创建 FSx for Lustre 位置。有关更多信息,请参阅使用 Amazon FSx for Lustre 配置AWS DataSync传

要为 Lustre 位置创建 FsX,请使用AWS CLI
  • 使用以下命令为 Lustre 位置创建 FSx。

    aws datasync create-location-fsx-lustre \ --fsx-filesystem-arn arn:aws:fsx:region:account-id:file-system:filesystem-id \ --security-group-arns arn:aws:ec2:region:account-id:security-group/group-id

    create-location-fsx-lustre命令中必需参数。

    • fsx-filesystem-arn— 要读取或写入的文件系统的完全限定的 Amazon Resource Name (ARN)。

    • security-group-arns— 适用于文件系统首选子网网络接口的 Amazon EC2 安全组的 ARN。

上述命令会返回类似以下内容的位置 ARN。

{ "LocationArn": "arn:aws:datasync:us-west-2:111222333444:location/loc-07sb7abfc326c50fb" }

创建 Amazon FSx for OpenZFS 位置

位置是 DataSync 可以访问以进行传输的 FSx for OpenZFS 文件系统的端点。你也可以在控制台中为 OpenZFS 位置创建 FSx

使用创建 FSx for OpenZFS 位置AWS CLI
  1. 复制以下命令:

    $ aws datasync create-location-fsx-openzfs \ --fsx-filesystem-arn arn:aws:fsx:region:account-id:file-system/filesystem-id \ --security-group-arns arn:aws:ec2:region:account-id:security-group/group-id \ --protocol NFS={}
  2. 在命令中指定以下必需选项:

    • 对于fsx-filesystem-arn,请指定位置文件系统的完全合格的 Amazon Resource Name (ARN)。这包括您的文件系统所在的位置AWS 账户、您的和文件系统 ID。AWS 区域

    • 对于security-group-arns,指定 Amazon EC2 安全组的 ARN,该安全组提供对 OpenZFS 文件系统首选子网的 FSx 网络接口的访问权限。这包括您的 Amazon EC2 实例所在的位置AWS 账户、您的和安全组 ID。AWS 区域

      有关安全组的更多信息,请参阅《Amazon FSx fo r OpenZFS 用户指南》VPC Ama zon FSx for OpenZFS 用户指南中的 Amazon FS x

    • protocol,指定 DataSync 用于访问文件系统的协议。(DataSync 目前仅支持 NFS。)

  3. 运行 命令。您会收到一条回复,其中显示您刚刚刚创建的位置。

    { "LocationArn": "arn:aws:datasync:us-west-2:123456789012:location/loc-abcdef01234567890" }

创建 Amazon FSx fo NetApp r ONTAP 位置

位置是 DataSync 可以访问以进行传输的 FSx for ONTAP 文件系统的终端节点。您还可以在控制台中为 ONTAP 位置创建 FSx

使用创建 FSx for ONTAP 位置AWS CLI
  1. 复制以下命令:

    $ aws datasync create-location-fsx-ontap \ --storage-virtual-machine-arn arn:aws:fsx:region:account-id:storage-virtual-machine/fs-file-system-id \ --security-group-arns arn:aws:ec2:region:account-id:security-group/group-id \ --protocol data-transfer-protocol={}
  2. 在命令中指定以下必需选项:

    • 对于storage-virtual-machine-arn,请指定要将数据复制到或从中复制数据的文件系统中的存储虚拟机(SVM)的完全限定的 Amazon Resource Name (ARN)。

      此 ARN 包括您的文件系统所在的位置AWS 账户、您的文件系统和 SVM ID。AWS 区域

    • 对于security-group-arns,请指定 Amazon EC2 安全组的 ARN,这些安全组提供对文件系统首选子网网络接口的访问权限。

      这包括您的 Amazon EC2 实例所在的位置AWS 账户、您的和您的安全组 ID。AWS 区域您最多可以指定五个安全组 ARN。

      有关安全组的更多信息,请参阅《Amazon FSx for NetApp ONTAP 用户指南》中的 Amazon VPC 文件系统访问控制

    • 对于protocol,请配置用于访问文件系统的 DataSync SVM 访问文件系统的 SVM 的协议来访问文件系统的 SVM。

      • 对于 NFS,您可以使用默认配置:

        --protocol NFS={}

      • 对于 SMB,必须指定可以访问 SVM 的用户名和密码:

        --protocol SMB={User=smb-user,Password=smb-password}

  3. 运行 命令。

    您会收到一条显示刚刚刚创建位置的回复。

    { "LocationArn": "arn:aws:datasync:us-west-2:123456789012:location/loc-abcdef01234567890" }

创建Amazon S3 位置

Amazon S3 位置需要一个可以读取或写入的 S3 存储桶。要创建 S3 存储桶,请参阅 Amazon S3 用户指南中的创建存储桶。

DataSync 要访问 S3 存储桶, DataSync 需要具有所需权限的AWS Identity and Access Management (IAM) 角色。按照以下程序,您可以使用创建 IAM 角色、所需的 IAM 策略和 S3 位置AWS CLI。

DataSync 要担任 IAM 角色,必须在您的账户和区域中激活AWS Security Token Service (AWS STS)。有关临时安全凭证的更多信息,请参阅《IAM 用户指南》中的 IAM 临时安全凭证

您还可以使用控制台创建 S3 位置。有关更多信息,请参阅使用 Amazon S3 配置AWS DataSync传输

使用 CLI 创建 S3 位置
  1. 创建 IAM 信任策略, DataSync 允许代入访问 S3 存储桶所需的 IAM 角色。

    以下是信任策略的示例。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 为该 IAM 策略创建一个临时文件,如以下示例所示。

    $ ROLE_FILE=$(mktemp -t sync.iam.role.filename.json) $ IAM_ROLE_NAME='YourBucketAccessRole' $ cat<<EOF> ${ROLE_FILE} { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  3. 创建 IAM 角色并向其附加此 IAM policy。

    以下命令创建一个 IAM 角色并向其附加该策略。

    $ aws iam create-role --role-name ${IAM_ROLE_NAME} --assume-role-policy-document file://${ROLE_FILE} { "Role": { "Path": "/", "RoleName": "YourBucketAccessRole", "RoleId": "role-id", "Arn": "arn:aws:iam::account-id:role/YourBucketAccessRole", "CreateDate": "2018-07-27T02:49:23.117Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole" }] } } }
  4. 允许您创建的 IAM 角色写入 S3 存储桶。

    向 IAM 角色附加一个具有访问您的 S3 存储桶的足够权限的 IAM 策略。以下示例显示读取和写入 S3 存储桶所需的最低权限AWS 区域。 DataSync

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": "YourS3BucketArn" }, { "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:PutObject" ], "Effect": "Allow", "Resource": "YourS3BucketArn/*" } ] }

    要将该策略附加到您的 IAM 角色,请运行以下命令。

    $ aws iam attach-role-policy \ --role-name role-name \ --policy-arn 'arn:aws:iam::aws:policy/YourPolicyName'

    对于启用的 Amazon S3 存储桶AWS Outposts,请使用以下策略。

    { "Version": "2012-10-17", "Statement": [{ "Action": [ "s3-outposts:ListBucket", "s3-outposts:ListBucketMultipartUploads" ], "Effect": "Allow", "Resource": [ "s3OutpostsBucketArn", "s3OutpostsAccessPointArn" ], "Condition": { "StringLike": { "s3-outposts:DataAccessPointArn": "s3OutpostsAccessPointArn" } } }, { "Action": [ "s3-outposts:AbortMultipartUpload", "s3-outposts:DeleteObject", "s3-outposts:GetObject", "s3-outposts:ListMultipartUploadParts", "s3-outposts:PutObjectTagging", "s3-outposts:GetObjectTagging", "s3-outposts:PutObject" ], "Effect": "Allow", "Resource": [ "s3OutpostsBucketArn/*", "s3OutpostsAccessPointArn" ], "Condition": { "StringLike": { "s3-outposts:DataAccessPointArn": "s3OutpostsAccessPointArn" } } }, { "Effect": "Allow", "Action": [ "s3-outposts:GetAccessPoint" ], "Resource": "s3OutpostsAccessPointArn" } ] }
  5. 创建 S3 位置。

    使用以下命令创建您的 Amazon S3 位置。

    $ aws datasync create-location-s3 \ --s3-bucket-arn 'arn:aws:s3:::DOC-EXAMPLE-BUCKET' \ --s3-storage-class 'your-S3-storage-class' \ --s3-config 'BucketAccessRoleArn=arn:aws:iam::account-id:role/role-allowing-DS-operations' \ --subdirectory /your-folder

    这些命令返回一个如下所示的位置 ARN。

    { "LocationArn": "arn:aws:datasync:us-east-1:111222333444:location/loc-0b3017fc4ba4a2d8d" }

    位置类型信息在中编码LocationUri。在此示例中,中的s3://前缀LocationUri显示了位置的类型。

    如果您的 Amazon S3 存储桶位于AWS前哨站上,则必须在前哨上部署 Amazon EC2 代理。代理必须位于允许访问命令中指定的接入点的虚拟私有云 (VPC) 中。还必须在 Outpost 的父区域激活代理,并且能够在存储桶的AWS Outposts终端节点上路由到 Amazon S3。有关在上启动 DataSync 代理的更多信息AWS Outposts,请参阅在上部署您的代理 AWS Outposts

    使用以下命令在前哨创建 Amazon S3 位置。

    aws datasync create-location-s3 \ --s3-bucket-arn access-point-arn \ --s3-config BucketAccessRoleArn=arn:aws:iam::account-id:role/role-allowing-DS-operations \ --agent-arns arn-of-datasync-agent-in-vpc-that-can-access-your-s3-access-point
注意
  • 对对象数据或元数据的更改等同于删除一个对象并创建一个新对象来替换它。在以下情况下,这会导致额外费用:

    • 使用对象版本控制时-对对象数据或元数据的更改会创建对象的新版本。

    • 当使用可能因覆盖、删除或检索对象而产生额外费用的存储类时,对对象数据或元数据的更改会产生此类费用。有关更多信息,请参阅Amazon S3 传输的存储类注意事项

  • 当您使用对象版本控制时,单个 DataSync 任务执行可能会创建 Amazon S3 对象的多个版本。

  • 除了授予 DataSync 权限的 IAM 策略外,我们还建议为您的 S3 存储桶创建分段上传存储桶策略。这样做可帮助您控制存储成本。有关更多信息,请参阅博客帖子 S3 生命周期管理更新-支持分段上传和删除标记的支持。