Amazon VPC エンドポイントを使用して、AWS リージョン間またはアカウント間で DataSync エージェントをアクティベートする方法を教えてください。
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 で、次の手順を実行します。
- DataSync 用の VPC エンドポイントを作成します。
- VPC エンドポイントに関連付けられているサブネットに、DataSync 実行エンドポイントに使用できる IP アドレスが少なくとも 4 つあることを確認します。
注: 各 DataSync タスクは、タスク実行エンドポイントに 4 つの IP アドレスを使用します。 - DataSync VPC エンドポイントのセキュリティグループを設定します。セキュリティグループは次のオプションを許可する必要があります。
TCP ポート 443 でのエンドポイントへのインバウンドトラフィック
アウトバウンドエフェメラルトラフィック
TCP ポート範囲 1024~1062 の送信先 VPC エンドポイントへのインバウンドトラフィック
AWS サポートチャネルを開くには、TCP ポート 22 でインバウンドトラフィックを許可します
送信元環境と送信先環境間のネットワーク接続を設定します
この設定では、データ転送は次のいずれかで行われます。
- 送信元のオンプレミス環境から送信先のプライベート VPC へ
- 異なる AWS リージョンにあるプライベート VPC 間
- 異なる AWS アカウントに属する送信元から。
送信元環境と送信先環境の間で、次の接続とネットワークの要件を設定します。
- 送信元環境と送信先 VPC の間にアクティブなネットワーク接続を設定します。たとえば、AWS Direct Connect、VPC ピアリング、またはトランジット VPC を使用してこの接続を設定できます。
- 送信元環境と送信先環境のプライベートネットワークアドレス空間に重複がないことを確認します。次に、CIDR ブロックを確認します。
- 送信元サブネットと送信先サブネットの両方のルーティングテーブルのエントリで、ネットワーク間のトラフィックが問題なく許可されていることを確認します。たとえば、VPC ピアリングを使用する場合は、ピアリング接続のルートテーブルを更新します。
- 送信元ネットワークと送信先ネットワークの間にファイアウォールがある場合は、次のオプションを許可する必要があります。
TCP ポート 443 での送信先 VPC エンドポイントサブネットへのトラフィック
送信先 VPC エンドポイントへの TCP ポート範囲 1024~1062 のトラフィック
AWS サポートチャネルを開くには、TCP ポート 22 のトラフィックを許可する - すべてのセキュリティグループとファイアウォールが、一時的なアウトバウンドトラフィックまたは接続追跡ツールの使用を許可していることを確認します。
DataSync エージェントを有効化するために使用するマシンを設定する
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、必ず AWS CLI の最新バージョンを使用してください。
物理コンピュータ、仮想マシン、または Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用して DataSync エージェントを有効化できます。マシンで次の手順を実行します。
- 送信元環境または送信先環境のプライベートネットワークの 1 つへの接続を設定します。両方のネットワークに有効なネットワークルートを設定する必要があります。
- インターネットに接続されていない場合は、TCP ポート 80 (HTTP) で DataSync エージェントへのネットワークアクセスを設定する必要があります。
- (オプション) cURL コマンドをインストールしてアクティベーションキーを取得します。
- AWS CLI をインストールして DataSync エージェントを有効化します。
- DataSync エージェントを有効化できる AWS ID およびアクセス管理 (IAM) 権限で AWS CLI を設定します。権限は次の例のようになります。
**注:**Amazon EC2 インスタンスを使用してエージェントを有効化する場合は、適切なアクセス権限を持つ IAM ロールをインスタンスプロファイルにアタッチします。{ "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": "*" } ] }
DataSync エージェントを有効化する
注: 必ず us-east-1 を目的の AWS リージョンで置き換えてください。
DataSync エージェントを有効化するには、次の手順を実行します。
-
DataSync エージェントを仮想マシン (オンプレミス) または EC2 インスタンス (プライベート VPC) にデプロイします。
-
設定したマシンから、次の 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" を含めると、コマンドと出力を簡略化および短縮できます。または、ローカルコンソールを使用してアクティベーションキーを取得することもできます。
-
コマンド出力のアクティベーションキーを書き留めておきます。
-
describe-vpc-endpoints コマンドを実行して、送信先 VPC エンドポイントの VpcEndpointID、VPCID、サブネット ID、およびセキュリティグループ ID を取得します。
aws ec2 describe-vpc-endpoints --region us-east-1
-
コマンド出力の 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 エージェントに同じサブネットとセキュリティグループを使用する場合は、以下のオプションのステップはスキップしてください。
-
(オプション) describe-security-groups コマンドを実行して、送信先 VPC のセキュリティグループ ID を取得します。DataSync 実行エンドポイントは、このセキュリティグループを使用して DataSync VPC エンドポイントに接続します。
aws ec2 describe-security-groups --region us-east-1
注: 設定の複雑さを軽減するには、VPC エンドポイントと同じセキュリティグループを使用するのがベストプラクティスです。
-
(オプション) コマンド出力の GroupID を書き留めます。コマンドの出力は次のようになります。
"GroupId": "sg-000e8edxxxx4e4701"
-
(オプション) describe-subnets コマンドを実行して、VPC エンドポイントに関連付けられているサブネット ID を取得します。
aws ec2 describe-subnets --region us-east-1
注: 設定の複雑さを軽減するには、VPC エンドポイントと同じサブネットを使用するのがベストプラクティスです。
-
(オプション) コマンド出力の SubnetARN を書き留めます。コマンドの出力は次のようになります。
"SubnetArn": "arn:aws:ec2:us-east-1:123456789012:subnet/subnet-03dc4xxxx6905bb76"
-
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" }
- list-agents コマンドを実行して、エージェントが正常に作成されたことを確認します。
aws datasync list-agents --region us-east-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 ID の権限が不十分
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 ID の権限が不十分な場合に発生します。IAM ID のポリシーで、ec2:*VpcEndpoint*、ec2:*subnet*、および ec2:*security-group* のアクセス権限が付与されていることを確認します。
関連情報
関連するコンテンツ
- 質問済み 4ヶ月前lg...
- 質問済み 8年前lg...
- 質問済み 6年前lg...
- 質問済み 5ヶ月前lg...
- AWS公式更新しました 2年前