Amazon Simple Storage Service (Amazon S3) バケット間のデータ転送を、1 回限りのタスクまたはスケジュールした同期として行いたいと考えています。AWS Data Pipeline を使用してバケット間のコピーまたは同期操作を設定する方法を教えてください。
解決策
注: S3 バケット間でデータを転送する方法の一つとして、Data Pipeline を使用できます。その他には、S3 Batch Operations を使用したり、レプリケーションを有効化したり、AWS コマンドラインインターフェイス (AWS CLI) で cp コマンドまたは sync コマンドを実行したりすることもできます。
注: AWS CLI コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使っているかどうかを確認してください。
1.AWS Identity and Access Management (IAM) ユーザーまたはロールには、Data Pipeline を使用するための権限が含まれることを確認します。
2.IAM ユーザーまたはロールで AWS Data Pipeline コンソールにサインインします。コンソールが Data Pipeline をサポートする AWS リージョンに設定されていることを確認します。
重要: ソースバケットと送信先バケットを同じリージョンに配置する必要はありません。また、S3 バケットをパイプラインと同じリージョンに配置する必要はありません。ただし、リージョン間のデータ転送にはコストが発生するため、Amazon S3 のデータ転送料金を必ず確認してください。
3.[パイプラインを作成] を選択します。
4.[名前] にパイプライン名を入力します。
5.[ソース] で [テンプレートを使用してビルド] を選択します。次に、[AWS CLI コマンドを実行] を選択します。
6.[AWS CLI コマンド] で次のコマンドを入力し、コピー操作を設定します。
aws s3 cp s3://source-AWSDOC-EXAMPLE-BUCKET1 s3://destination-AWSDOC-EXAMPLE-BUCKET2
注: copy コマンドは、コピー先バケットにおいて、ソースバケット内のオブジェクトと同じキー名を持つオブジェクトをすべて上書きします。
同期操作を設定するには、次のコマンドを入力します。
aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET1 s3://destination-AWSDOC-EXAMPLE-BUCKET2
注: sync コマンドは、ソースバケットと送信先バケットを比較し、差分のみを転送します。
7.[実行] において、1 回限りのコピーまたは同期ジョブを行う場合は、[on pipeline activation] (パイプラインの有効化時) を選択します。または、スケジュールしたコピーまたは同期を行う場合は、[on a schedule] (スケジュール時) を選択し、ユースケースに応じて [以下の間隔で実行]、[開始]、および [終了] フィールドに入力します。
8.[ロギング] で [有効] を選択すると、ログの S3 ロケーションを入力できます。または、ログが必要ない場合は [無効] を選択してもかまいません。
9.[IAM ロール] には [デフォルトロール] または [カスタムロール] を選択できます。デフォルトロールには、s3:CreateBucket、s3:DeleteObject、s3:Get*、s3:List*、および s3:Put* の各 Amazon S3 権限が含まれます。
注: バケットに AWS Key Management Service (AWS KMS) によるデフォルトの暗号化が設定されている場合は、適切な権限を付与する必要があります。Data Pipeline ロールには、AWS KMS キーを使用するための適切な権限を付与する必要があります。
10.[有効化] を選択します。
注: 必要に応じて、バケットでルートレベルのプレフィックスごとに複数のパイプラインを作成するとパフォーマンスを最適化できます。
関連情報
AWS Data Pipeline の IAM ロール
Amazon S3 で sync コマンドの転送パフォーマンスを改善する方法を教えてください
別の AWS アカウントから S3 オブジェクトをコピーする方法を教えてください
Simple Storage Service (Amazon S3) バケット内のオブジェクトへのクロスアカウントアクセスを付与する方法を教えてください