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

4 分的閱讀內容
0

我想要使用 AWS DataSync 在以下位置之間傳輸資料: 在內部部署與 AWS 之間、在 AWS 區域之間、在 AWS 帳戶之間,我想要使用 Amazon Virtual Private Cloud (Amazon VPC) 端點在私有網路中針對此情況設定我的環境和 DataSync 代理程式。

解決方法

**重要事項:**以下組態假設:

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

設定來源網路環境 (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 區域或屬於不同 AWS 帳戶的私有 VPC 之間進行。您必須設定來源環境與目標環境之間的以下連線和網路需求:

1.    在來源環境和目的地VPC端點之間建立一個作用中網路連線。例如,使用 AWS Direct ConnectVPC 對等互連傳輸 VPC 以設定此連線。

2.    確認來源環境與目的地環境之間的私有網路位址空間沒有重疊。然後,確認 CIDR 區塊。

3.    確認來源子網路與目的地子網路兩者中的路由表項目都允許網路之間的流量,且沒有出現問題。例如,如果您使用的是 VPC 對等互連,請更新對等連線的路由表

4.    如果來源網路與目的地網路之間存在防火牆,則必須允許以下內容:

  • TCP 連接埠 443 上傳至目的地 VPC 端點子網路的輸入流量
  • TCP 連接埠範圍 1024-1062 上傳至目的地 VPC 端點的流量
  • 若要開啟 AWS Support 通道,請允許 TCP 連接埠 22 上的流量

5.    確認所有安全群組和防火牆都允許臨時輸出流量或使用連線追蹤工具。

設定要用來啟用 DataSync 代理程式的機器

您可以使用實體電腦、虛擬機器或 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體來啟用 DataSync 代理程式。您必須在機器上設定以下內容:

1.    設定與來源或目的地環境中的某個私有網路的連線。您必須設定與這兩個網路的有效網路路由。

2.    如果沒有網際網路連線,您必須在 TCP 連接埠 80 (HTTP) 上設定對 DataSync 代理程式的網路存取權。

3.    安裝 cURL 命令,以取得啟用金鑰。

4.    安裝 AWS Command Line Interface (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 區域。

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.    使用 AWS CLI,執行 describe-vpc-endpoints 命令,以取得目的地 VPC 端點 ID:

aws ec2 describe-vpc-endpoints --region us-east-1

**注意事項:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI

5.    請注意命令輸出中的 "VpcEndpointId",類似於以下內容:

"VpcEndpointId": "vpce-0ba3xxxxx3752b63"

6.    使用 AWS CLI,執行 describe-security-groups 命令,以取得目的地 VPC 的安全群組 ID。這是 DataSync 執行端點將用於連接至 DataSync VPC 端點的安全群組。

**注意事項:**建議您使用與 VPC 端點相同的安全群組,以降低組態的複雜性。

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

7.    請注意命令輸出中的 "GroupID",類似於以下內容:

"GroupId": "sg-000e8edxxxx4e4701"

8.    使用 AWS CLI,執行 describe-subnets 命令,以取得與 VPC 端點相關聯的子網路 ID:

**注意事項:**為降低組態的複雜性,最佳實務是使用與 VPC 端點相同的子網路。

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

9.    請注意命令輸出中的 "SubnetArn",類似於以下內容:

"SubnetArn": "arn:aws:ec2:us-east-1:123456789012:subnet/subnet-03dc4xxxx6905bb76"

10.    使用 AWS CLI,執行 create-agent 命令,以啟用 DataSync 代理程式:

  • 對於 --activation-key,請輸入您在步驟 3 中取得的啟用金鑰。
  • 對於 --vpc-endpoint-id,請輸入您在步驟 5 中取得的 "VpcEndpointId"
  • 對於 --security-group-arns,請輸入您在步驟 7 中取得的 GroupID
  • 對於 --subnet-arns,請輸入您在步驟 9 中取得的 SubnetArn
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

11.    此命令會傳回 DataSync 代理程式的 Amazon Resource Name (ARN):

{
    "AgentArn": "arn:aws:datasync:us-east-1:123456789012:agent/agent-0bxxxxxxxxxxxxxx57c"
}

12.    執行 list-agents 命令,確認您已成功建立代理程式:

aws datasync list-agents --region us-east-1

13.    確認輸出中傳回您的 DataSync 代理程式的 ARN:

{
    "Agents": [
        {
            "AgentArn": "arn:aws:datasync:us-east-1:123456789012:agent/agent-0bxxxxxxxxxxxxxx57c",
            "Status": "ONLINE",
            "Name": "your_agent_name"
        }
    ]
}

啟用 DataSync 代理程式之後,您可以使用 DataSync 主控台為您的傳輸建立位置任務

解決 DataSync 代理程式啟用期間所發生的錯誤

「cURL 命令傳回 'errorType=PRIVATE_LINK_ENDPOINT_UNREACHABLE',且未傳回啟用金鑰」

這個錯誤通常是發生在未允許 TCP 連接埠 443 的流量進入到 VPC 端點時。

「呼叫 CreateAgent 作業時發生錯誤 (InvalidRequestException): 私有連線設定無效: 對於公共端點啟用金鑰,VPC 端點 ID 應該保持未指定」

當您在 create-agent 命令中為 --activation-key 參數輸入公共啟用金鑰時,通常會發生此錯誤。您必須在此組態中輸入私有端點類型的私有啟用金鑰。

「呼叫 CreateAgent 作業時發生錯誤 (InvalidRequestException): 無效的 EC2 子網路,ARN:arn:aws:ec2:us-east-1:123456789012:subnet/subnet-41xxxx08,原因:無效的子網路,狀態碼: 403」

-或-

「呼叫 CreateAgent 作業時發生錯誤 (InvalidRequestException): 無效的 EC2 安全群組,ARN:arn:aws:ec2:us-east-1:123456789012:security-group/sg-000e8xxxx9d4e4701,原因:無效的安全群組,狀態碼: 403」

-或-

「呼叫 CreateAgent 作業時發生錯誤 (InvalidRequestException): 私有連線設定無效: VPC 端點 vpce-0ba34edxxxx752b63 無效」

當您在 AWS CLI 上設定的 IAM 身分沒有足夠的許可時,通常會發生這些錯誤。您必須確認您的 IAM 身分政策已授予對 ec2:*VpcEndpoint*ec2:*subnet*ec2:*security-group* 的許可。


相關資訊

AWS DataSync 的運作方式

在虛擬私有雲端中使用 AWS DataSync

AWS DataSync 的要求

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