我如何使用 Amazon VPC 端点跨各个 AWS 区域或各个账户激活 DataSync 代理?

4 分钟阅读
0

我想使用 Amazon Virtual Private Cloud (Amazon VPC) 配置我的环境,使用 AWS DataSync 在私有网络中传输数据。

解决方法

**重要信息:**示例配置基于以下假设:

  • 除了私有端点与 AWS 之间的连接外,资源不会连接到公共互联网。
  • 数据传输的来源是具有 NFS 或 SMB 数据源的本地或远程 VPC 环境。数据传输的目标位于 Amazon VPC。Amazon VPC 有权访问 Amazon Simple Storage Service (Amazon S3)、Amazon Elastic File System (Amazon EFS) 或 Amazon FSx。完成设置后,根据 DataSync 支持的位置组合反转传输方向。此设置还适用于本地源,如 HDFS 和对象存储。

设置源网络环境(NFS 或 SMB 数据源)

DataSync 代理在靠近 NFS 或 SMB 数据源的源网络上运行。对于此配置,源网络可以是本地网络,也可以是私有 Amazon VPC。

**注意:**如果您想要使用 VPC 对等连接设置 VPC 之间的传输,请查看 VPC 对等连接限制。确保该功能支持您的配置。

设置目标网络环境(Amazon S3、Amazon EFS 或 Amazon FSx)

对于此配置,目标网络是私有 Amazon VPC。Amazon VPC 必须访问目标位置,如 Amazon S3、Amazon EFS 或 Amazon FSx。

在目标私有 VPC 上,完成以下步骤:

  1. 为 DataSync 创建 VPC 端点
  2. 确认与 VPC 端点关联的子网至少有四个 IP 地址可用于 DataSync 执行端点。
    **注意:**每个 DataSync 任务使用四个 IP 地址作为任务执行端点。
  3. 为 DataSync VPC 端点配置安全组。安全组必须允许以下选项:
    TCP 端口 443 上到达端点的入站流量
    出站临时流量
    TCP 端口范围 1024-1062 上到达目标 VPC 端点的入站流量
    要打开 AWS Support 通道,允许 TCP 端口 22 上的入站流量

在源环境和目标环境之间设置网络连接

对于此配置,数据传输来自以下其中一项:

  • 源本地环境到目标私有 VPC
  • 不同 AWS 区域的私有 VPC 之间
  • 来自属于不同 AWS 账户的来源。

在源环境和目标环境之间配置以下连接和网络要求:

  1. 在源环境和目标 VPC 之间设置有效的网络连接。例如,您可以使用 AWS Direct ConnectVPC 对等连接中转 VPC 来设置此连接。
  2. 确认源环境和目标环境之间的私有网络地址空间没有重叠。然后,验证 CIDR 块。
  3. 确认源子网和目标子网中的路由表条目允许网络之间发生的流量,且没有问题。例如,如果您使用 VPC 对等连接,则更新对等连接的路由表
  4. 如果源网络和目标网络之间有防火墙,您必须允许以下选项:
    TCP 端口 443 上到达目标 VPC 端点子网的流量
    TCP 端口范围 1024-1062 上到达目标 VPC 端点的流量
    要打开 AWS Support 通道,允许 TCP 端口 22 上的流量
  5. 确认所有安全组和防火墙都允许临时的出站流量或允许使用连接跟踪工具。

配置用于激活 DataSync 代理的计算机

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅排查 AWS CLI 错误。此外,确保您使用的是最新版本的 AWS CLI

您可以使用物理计算机、虚拟机或 Amazon Elastic Compute Cloud (Amazon EC2) 实例来激活 DataSync 代理。在计算机上完成以下步骤:

  1. 在源或目标环境中设置与其中一个私有网络的连接。必须配置通往这两个网络的有效网络路由。
  2. 如果没有互联网连接,您必须在 TCP 端口 80 (HTTP) 上设置对 DataSync 代理的网络访问。
  3. (可选)安装 cURL 命令来获取激活密钥。
  4. 安装 AWS CLI 激活 DataSync 代理。
  5. 使用允许您激活 DataSync 代理的 AWS Identity and Access Management (IAM) 权限配置 AWS CLI。这些权限类似于以下示例:
    {
      "Version": "2012-10-17",
      "Statement": [{
          "Sid": "VisualEditor2",
          "Effect": "Allow",
          "Action": [
            "datasync:*"
          ],
          "Resource": "arn:aws:datasync:us-east-1:123456789012:*"
        },
        {
          "Sid": "VisualEditor3",
          "Effect": "Allow",
          "Action": [
            "ec2:*VpcEndpoint*",
            "ec2:*subnet*",
            "ec2:*security-group*"
          ],
          "Resource": "*"
        }
      ]
    }
    **注意:**如果您使用 Amazon EC2 实例激活代理,将具有正确权限的 IAM 角色附加到实例配置文件

激活 DataSync 代理

**注意:**将 us-east-1 替换为您选择的 AWS 区域。

要激活 DataSync 代理,请完成以下步骤:

  1. 虚拟机(本地)EC2 实例(私有 VPC)上部署 DataSync 代理。

  2. 在您配置的计算机上,运行以下 cURL 命令获取 DataSync 代理的激活密钥

    curl -vvv -G \
      --data-urlencode "activationRegion=us-east-1" \
      --data-urlencode "gatewayType=SYNC" \
      --data-urlencode "endpointType=PRIVATE_LINK" \
      --data-urlencode "privateLinkEndpoint=vpc_endpoint_ip_address" \
      --data-urlencode "redirect_to=https://us-east-1.console.aws.amazon.com/datasync/home?region=us-east-1#/agents/create" \
      "http://datasync_agent_ip"

    注意:(可选)您可以添加 --data-urlencode "no_redirect" 来简化和缩短命令和输出。或者,您可以使用本地控制台获取激活密钥

  3. 记下命令输出中的激活密钥。

  4. 运行 describe-vpc-endpoints 命令获取目标 VPC 端点的 VpcEndpointId、VpcId、SubnetIds 和 Security GroupId:

    aws ec2 describe-vpc-endpoints --region us-east-1
  5. 记下命令输出中的 VpcEndpointId。输出类似于以下内容:

            {
                "VpcEndpointId": "vpce-0ba3xxxxx3752b63",
                "VpcEndpointType": "Interface",
                "VpcId": "vpc-aabb1122",
                "ServiceName": "com.amazonaws.us-east-1.datasync",
                ...
                "SubnetIds": [
                    "subnet-f0f6cd97",
                    "subnet-990da7c1",
                    "subnet-41241008"
                ],
                "Groups": [
                    {
                        "GroupId": "sg-8ae9abf1",
                        "GroupName": "default"
                    }
                ],
                ...

    **注意:**如果您的 DataSync 代理使用相同的子网和安全组,跳过以下可选步骤。

  6. (可选)运行 describe-security-groups 命令获取目标 VPC 的安全组 ID。DataSync 执行端点使用此安全组连接到 DataSync VPC 端点。

    aws ec2 describe-security-groups --region us-east-1

    **注意:**要降低配置的复杂性,最佳做法是使用与 VPC 端点相同的安全组。

  7. (可选)记下命令输出中的 GroupID。命令输出类似于以下内容:

    "GroupId": "sg-000e8edxxxx4e4701"
  8. (可选)运行 describe-subnets 命令获取与 VPC 端点关联的子网 ID:

    aws ec2 describe-subnets --region us-east-1

    **注意:**要降低配置的复杂性,最佳做法是使用与 VPC 端点相同的子网。

  9. (可选)记下命令输出中的 SubnetArn。命令输出类似于以下内容:

    "SubnetArn": "arn:aws:ec2:us-east-1:123456789012:subnet/subnet-03dc4xxxx6905bb76"
  10. 运行 create-agent 命令激活 DataSync 代理:

aws datasync create-agent --agent-name your_agent_name --vpc-endpoint-id vpce-0cxxxxxxxxxxxxf57 --activation-key UxxxQ-0xxxB-LxxxL-AUxxV-JxxxN --subnet-arns arn:aws:ec2:us-east-1:123456789012:subnet/subnet-0cxxxxxxxxxxxx3 --security-group-arns arn:aws:ec2:us-east-1:123456789012:security-group/sg-xxxxxxxxxxxxxx --region us-east-1

**注意:**对于 activation-key,输入激活密钥。对于 vpc-endpoint-id,输入您的 VpcEndpointId 值。对于 security-group-arns,输入您的 GroupID 值。对于 subnet-arns,输入您的 SubnetArn 值。
此命令返回 DataSync 代理的 ARN:

{
    "AgentArn": "arn:aws:datasync:us-east-1:123456789012:agent/agent-0bxxxxxxxxxxxxxx57c"
}
  1. 运行 list-agents 命令确认您已成功创建代理:
aws datasync list-agents --region us-east-1
  1. 确认输出中返回了您的 DataSync 代理的 ARN:
{
    "Agents": [
        {
            "AgentArn": "arn:aws:datasync:us-east-1:123456789012:agent/agent-0bxxxxxxxxxxxxxx57c",
            "Status": "ONLINE",
            "Name": "your_agent_name"
        }
    ]
}

您的 DataSync 代理激活后,使用 DataSync 控制台为您的传输创建位置任务

排查 DataSync 代理激活期间发生的错误

您可能会在 DataSync 代理激活期间遇到错误。要进行故障排除,请查看以下信息:

不允许 TCP 端口 443 上的流量

cURL 命令返回以下错误,未返回激活密钥:

“errorType=PRIVATE_LINK_ENDPOINT_UNREACHABLE”

不允许 TCP 端口 443 上到达 VPC 端点的流量时,通常会发生此错误。

create-agent 命令中的公共激活密钥

当您调用 CreateAgent 操作时,会发生以下 InvalidRequestException 错误。您可能会看到类似于下方的错误:

“Private link configuration is invalid: VPC Endpoint Id should remain unspecified for public-endpoint activation keys.”

当您在 create-agent 命令中输入 --activation-key 参数的公共激活密钥时,会发生此错误。您必须在此配置中输入私有端点类型的私有激活密钥。

IAM 身份的权限不足

配置 DataSync 代理激活时,您可能会收到以下错误之一:

“An error occurred (InvalidRequestException) when calling the CreateAgent operation: Invalid EC2 subnet, ARN: arn:aws:ec2:us-east-1:123456789012:subnet/subnet-41xxxx08, reason: invalid subnet, StatusCode: 403”

-或-

“An error occurred (InvalidRequestException) when calling the CreateAgent operation: Invalid EC2 security group, ARN: arn:aws:ec2:us-east-1:123456789012:security-group/sg-000e8xxxx9d4e4701, reason: invalid security group, StatusCode: 403”

-或-

“An error occurred (InvalidRequestException) when calling the CreateAgent operation: Private link configuration is invalid: VPC endpoint vpce-0ba34edxxxx752b63 is not valid”

当您的 AWS CLI 上配置的 IAM 身份权限不足时,会发生这些错误。确认您的 IAM 身份策略授予 ec2:*VpcEndpoint*ec2:*subnet*ec2:*security-group* 权限。

相关信息

AWS DataSync 的工作原理

使用 AWS DataSync 代理与 VPC 端点

AWS DataSync 的要求

AWS 官方
AWS 官方已更新 1 年前