Amazon VPC エンドポイントを使用して、AWS リージョンまたはアカウント全体で DataSync エージェントをアクティブ化するにはどうすればよいですか?

最終更新日: 2020 年 8 月 28 日

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 S3、Amazon EFS、Amazon FSx などの宛先ロケーションにアクセスできるプライベート Amazon VPC である必要があります。さらに、宛先プライベート VPC で以下を設定する必要があります。

1.    DataSync 用の VPC エンドポイントを作成します。

2.    VPC エンドポイントに関連付けられたサブネットに、DataSync 実行エンドポイントで使用可能な IP アドレスが 4 つ以上あることを確認します。

注意: 各 DataSync タスクでは、タスク実行エンドポイントに 4 つの IP アドレスが使用されます。

3.    DataSync VPC エンドポイントのセキュリティグループを設定します。セキュリティグループでは、次のことが許可されている必要があります。

  • TCP ポート 443 のエンドポイントへのインバウンドトラフィック
  • アウトバウンド短期トラフィック
  • TCP ポート範囲 1024~1062 の宛先 VPC エンドポイントへのインバウンドトラフィック
  • AWS サポートチャネルを開くため、TCP ポート 22 でインバウンドトラフィックを許可

ソース環境と宛先環境間のネットワーク接続を設定する

この設定では、ソースのオンプレミス環境から宛先のプライベート VPC へのデータ転送が可能です。あるいは、異なる AWS リージョンにあるプライベート VPC 間、または異なる AWS アカウントに属するプライベート VPC 間でデータ転送を行うことができます。ソース環境と宛先環境との間で、次の接続およびネットワーク要件を設定する必要があります。

1.    ソース環境と宛先 VPC エンドポイント間のアクティブなネットワーク接続を設定します。たとえば、AWS Direct ConnectVPC ピアリング、またはトランジット VPC を使用して、この接続を設定できます。

2.    ソース環境と宛先環境の間のプライベートネットワークアドレス空間に重複がないことを確認します。CIDR ブロックを確認します。

3.    ソースサブネットと宛先サブネットの両方のルーティングテーブルエントリで、ネットワーク間のトラフィックが問題なく許可されていることを確認します。たとえば、VPC ピアリングを使用している場合は、ピアリング接続のルートテーブルを更新します。

4.    ソースネットワークと宛先ネットワークの間にファイアウォールがある場合は、次のことを許可する必要があります。

  • TCP ポート 443 の宛先 VPC エンドポイントへのトラフィック
  • TCP ポート範囲 1024~1062 の宛先 VPC エンドポイントへのトラフィック
  • AWS サポートチャネルを開くため、TCP ポート 22 でトラフィックを許可

5.    すべてのセキュリティグループとファイアウォールで、短期間のアウトバウンドトラフィックまたは接続追跡ツールの使用が許可されていることを確認します。

DataSync エージェントをアクティブ化するために使用するマシンを設定する

物理コンピュータ、仮想マシン、または Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用して、DataSync エージェントをアクティブ化できます。マシンで以下を設定する必要があります。

1.    ソース環境または宛先環境で、プライベートネットワークの 1 つへの接続を設定します。両方のネットワークへの有効なネットワークルートを設定する必要があります。

2.    インターネット接続がない場合は、TCP ポート 80 (HTTP) で DataSync エージェントへのネットワークアクセスを設定する必要があります。

3.    cURL コマンドをインストールして、アクティベーションキーを取得します。

4.    AWS コマンドラインインターフェイス (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 エージェントをアクティブ化する

1.    DataSync エージェントを仮想マシン (オンプレミス) または EC2 インスタンス (プライベート VPC) にデプロイします。

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 リソースネーム (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 ID のアクセス許可が不十分な場合に発生します。IAM ID のポリシーが ec2:*VpcEndpoint*ec2:*subnet*、および ec2:*security-group* のアクセス許可を付与していることを確認する必要があります。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?