翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用して S3 バケットから別のアカウントとリージョンにデータをコピーする AWS CLI
作成者: Appasaheb bagali (AWS) と Purushotham G K (AWS)
環境:本稼働 | テクノロジー: ストレージとバックアップ | AWS サービス: AWS CLI、AWSIdentity and Access Management、Amazon S3 |
[概要]
このパターンでは、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
。ただし、複数のオブジェクトに対して を管理することが困難なACLs場合があるため、宛先アカウントにプログラムによるクロスアカウントアクセス許可を付与することをお勧めします。
警告: このシナリオでは、プログラムによるアクセスと長期的な認証情報を持つIAMユーザーが必要です。これはセキュリティ上のリスクをもたらします。このリスクを軽減するために、これらのユーザーにはタスクの実行に必要な権限のみを付与し、不要になったユーザーを削除することをお勧めします。アクセスキーは、必要に応じて更新できます。詳細については、「 IAMユーザーガイド」の「アクセスキーの更新」を参照してください。 |
このパターンは 1 回限りの移行を対象としています。レプリケート元バケットからレプリケート先バケットへの新しいオブジェクトの継続的かつ自動的な移行が必要なシナリオでは、代わりに S3 バッチレプリケーションを使用できます。これは、パターン「S3 バッチレプリケーション を使用して S3 バケットから別のアカウントとリージョンにデータをコピーするS3」で説明されています。
前提条件と制限
同じリージョンまたは異なるAWSリージョンにある 2 つのアクティブなAWSアカウント。
ソースアカウント内の既存の S3 バケット。
レプリケート元またはレプリケート先の Amazon S3 バケットでデフォルトの暗号化が有効になっている場合は、 AWS Key Management Service (AWS KMS) キーのアクセス許可を変更する必要があります。詳細については、このトピックに関する AWS re:Post の記事
を参照してください。 クロスアカウントアクセス許可に精通している。
アーキテクチャ
![Amazon S3 データを別のアカウントまたはリージョンにコピーする](images/pattern-img/a574c26b-fdd9-4472-842b-b34c3eb2bfe9/images/80d47b54-0309-4472-ae00-041ec27bc25b.png)
ツール
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 バケットを選択して [アクセス権限]を選択します。[バケットポリシー] の下で、[編集]を選択し、以下のバケットポリシーを貼り付けます。[Save] を選択します。
注: 送信先AWSアカウントのアカウント ID を必ず含め、要件に従ってバケットポリシーテンプレートを設定してください。 このリソースベースのポリシーでは、デスティネーションロール | クラウド管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
宛先 S3 バケットを作成します。 | 送信先アカウントの AWSマネジメントコンソールにサインインし、Amazon S3 コンソールを開き、バケットの作成 を選択します。要件に従って S3 バケットを作成します。詳細については、Amazon S3 ドキュメントの「バケットの作成」を参照してください。 | クラウド管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
新しく作成したユーザー認証情報AWSCLIを使用して を設定します。 |
| AWS DevOps |
S3 の移行ロールを引き受けてください。 |
詳細については、「 AWSナレッジセンター | AWS 管理者 |
送信元 S3 バケットから送信先 S3 バケットにデータをコピーして同期します。 | ロール コピー (詳細については、 AWS CLI コマンドリファレンスを参照してください)。
同期する (詳細については、 AWS CLI コマンドリファレンスを参照してください)。
| クラウド管理者 |
トラブルシューティング
問題 | ソリューション |
---|---|
PutObject オペレーションを呼び出すときにエラー (AccessDenied) が発生しました: アクセスが拒否されました |
|
関連リソース
S3 バケットの作成 (Amazon S3 ドキュメント)
Amazon S3 バケットポリシーとユーザーポリシー (Amazon S3 ドキュメント)
IAM ID (ユーザー、グループ、ロール) (IAM ドキュメント)
cp コマンド (AWS CLIドキュメント)
sync コマンド (AWS CLIドキュメント)