翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS CLI を使用して S3 バケットから別のアカウントとリージョンにデータをコピーする
Appasaheb bagali と Purushotham G K、Amazon Web Services
概要
このパターンは、AWS ソースアカウントの Amazon Simple Storage Service (Amazon S3) バケットから、同じ AWS リージョンまたは別のリージョンにある、別の AWS アカウントの宛先 S3 バケットにデータを移行する方法を示しています。
ソース S3 バケットでは、添付のリソースポリシーを使用して AWS Identity and Access Management (IAM) アクセスを許可されます。送信先アカウントのユーザーは、ソースバケットに対するPutObjectとGetObject権限を持つロールを引き受ける必要があります。最後に、copyとsyncコマンドを実行して、送信元 S3 バケットから送信先 S3 バケットにデータを転送します。
S3 バケットにアップロードするオブジェクトは、アカウントが所有します。複数のアカウントやリージョンにわたってオブジェクトをコピーする場合は、コピー先のアカウントにコピーされたオブジェクトの所有権を付与します。オブジェクトの所有権は、「アクセス制御リスト (ACL)」をbucket-owner-full-controlに変更することで変更できます。ただし、ACL は複数のオブジェクトでは管理が難しい場合があるため、プログラムによるクロスアカウント権限を移行先のアカウントに付与することをお勧めします。
警告: このシナリオでは、プログラムによるアクセスと長期的な認証情報を持つ IAM ユーザーが必要です。これはセキュリティリスクをもたらします。このリスクを軽減するために、これらのユーザーにはタスクの実行に必要な権限のみを付与し、不要になったユーザーを削除することをお勧めします。アクセスキーは、必要に応じて更新できます。詳細については、「IAM ユーザーガイド」の「アクセスキーの更新」を参照してください。 |
|---|
このパターンは 1 回限りの移行を対象としています。レプリケート元バケットからレプリケート先バケットへの新しいオブジェクトの継続的かつ自動的な移行が必要なシナリオでは、代わりに S3 バッチレプリケーションを使用できます。パターンS3 バケットから別のアカウントとリージョンにデータをコピーするには、S3 バッチレプリケーションを使用します。
前提条件と制限
同じまたは異なる AWS リージョンにある 2 つのアクティブな AWS アカウント。
ソースアカウント内の既存の S3 バケット。
送信元または送信先 Amazon S3 バケットで「デフォルト暗号化が有効である場合は、AWS Key Management Service (AWS KMS) Key アクセス許可を変更する必要があります。詳細については、このトピックの「AWS re: Post 記事
」を参照してください。 クロスアカウントアクセス許可に精通している。
アーキテクチャ

ツール
Amazon Simple Storage Service (Amazon S3) は、量にかかわらず、データを保存、保護、取得するのに役立つクラウドベースのオブジェクトストレージサービスです。
AWS コマンドラインインターフェイス (AWS CLI) はオープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。
「AWS Identity and Access Management (IAM)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
ベストプラクティス
IAM でのセキュリティのベストプラクティス (IAM ドキュメント)
最小権限権限の適用 (IAM ドキュメント)
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
IAM ユーザーを作成してアクセスキーを取得します。 |
| AWS DevOps |
アイデンティティベースの IAM ポリシーを作成します。 | 以下の権限を使用して、
注記ユースケースに応じて、レプリケート元バケット名とレプリケート先バケット名を変更します。 この ID ベースのポリシーにより、このロールを引き受けるユーザーは、ソースバケットとターゲットバケットにアクセスできます。 | AWS DevOps |
IAM ロールを作成します。 | 以下の信頼ポリシーを使用して
注記ユースケースに従って、信頼ポリシーの送信先 IAM ロールまたはユーザー名の Amazon リソースネーム (ARN) を変更します。 この信頼ポリシーにより、新しく作成された IAM ユーザは | AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
S3 バケットポリシーを作成してアタッチします。 | ソースの AWS マネジメントコンソールにサインインして、[Amazon S3 コンソール] を開きます。ソースの S3 バケットを選択して [アクセス権限]を選択します。[バケットポリシー] の下で、[編集]を選択し、以下のバケットポリシーを貼り付けます。[保存] を選択します。
注記送信先アカウントの AWS アカウント ID を必ず含め、要件に従ってバケットポリシーテンプレートを設定します。 このリソースベースのポリシーでは、デスティネーションロール | クラウド管理者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
宛先 S3 バケットを作成します。 | 送信先アカウントの AWS マネジメントコンソールにサインインして、Amazon S3 コンソールを開き、「バケットの作成」を選択します。要件に従って S3 バケットを作成します。詳細については、Amazon S3 ドキュメントの「バケットの作成」を参照してください。 | クラウド管理者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
新しく作成したユーザー認証情報を使用して AWS CLI を設定します。 |
| AWS DevOps |
S3 の移行ロールを引き受けてください。 |
詳細については、「AWS Knowledge Center」 | AWS 管理者 |
送信元 S3 バケットから送信先 S3 バケットにデータをコピーして同期します。 | ロール コピーします。(詳細については、「AWS CLI コマンドリファレンス
同期します。(詳細については、「AWS CLI コマンドリファレンス
| クラウド管理者 |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
PutObject オペレーションを呼び出すときにエラー (AccessDenied) が発生しました: アクセスが拒否されました |
|
関連リソース
S3 バケットの作成 (Amazon S3 ドキュメント)
Amazon S3 バケットポリシーとユーザーポリシー (Amazon S3 ドキュメント)
IAM ID (ユーザー、グループ、ロール)(IAM ドキュメント)
cp コマンド
(AWS CLI ドキュメント) 同期コマンド
(AWS CLI ドキュメント)