該如何使用 Amazon VPC 端點跨 AWS 區域或跨帳戶啟用 DataSync 代理程式?

4 分的閱讀內容
0

我想使用 Amazon Virtual Private Cloud (Amazon VPC) 設定我的環境,並且使用 AWS DataSync 在私有網路中傳輸資料。

解決方案

**重要事項:**範例組態假設以下情況:

  • 資源不會連接到公共網際網路,但私有端點與 AWS 之間的連線除外。
  • 資料傳輸的來源是具有 NFS 或 SMB 資料來源的內部部署或遠端 VPC 環境。資料傳輸的目的地是有權存取 Amazon Simple Storage Service (Amazon S3)、Amazon Elastic File System (Amazon EFS) 或 Amazon FSx 的 Amazon VPC。完成設定之後,可根據 DataSync 支援的位置組合反向傳輸。此設定也適用於內部部署來源,例如 HDFS 和物件儲存。

設定來源網路環境 (NFS 或 SMB 資料來源)

DataSync 代理程式會在靠近 NFS 或 SMB 資料來源的來源網路上執行。對於此組態,來源網路可以是內部部署或私有 Amazon VPC。

**注意事項:**如果您想使用 VPC 對等互連設定 VPC 之間的傳輸,請檢閱 VPC 對等互連的限制,以確保該功能支援您的組態。

設定目的地網路環境 (Amazon S3、Amazon EFS 或 Amazon FSx)

對於此組態,目的地網路必須是有權存取目的地位置的私有 Amazon VPC,例如 Amazon S3、Amazon EFS 或 Amazon FSx。

在目的地私有 VPC 上,完成下列步驟:

  1. 為 DataSync 建立 VPC 端點
  2. 確認與 VPC 端點相關聯的子網路至少有四個可用於 DataSync 執行端點的 IP 位址。
    **注意事項:**每個 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 Command Line Interface (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. 使用 AWS Identity and Access Management (IAM) 權限設定 AWS CLI,以啟用 DataSync 代理程式。權限類似於下列範例:
    {
      "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 官方已更新 7 個月前