Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

Amazon S3 バッチオペレーションの AWS CLI の例

次の例では、AWS Command Line Interface (AWS CLI) を使用して Amazon S3 バッチオペレーション S3PutObjectTagging ジョブを作成します。

  1. IAM ロールを作成して、アクセス許可を割り当てます。このロールは、次のステップで作成する、ジョブのオブジェクトにタグを追加するアクセス許可を Amazon S3 に付与します。

    1. 次の手順で IAM ロールを作成します。

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      ロールの Amazon リソースネーム (ARN) を記録します。ジョブの作成時にこの ARN が必要となります。

    2. アクセス許可を含む IAM ポリシーを作成し、次のステップで作成する IAM ロールにこれをアタッチします。権限の詳細については、Amazon S3 バッチオペレーションのためのアクセス許可の付与Amazon S3 バッチオペレーションジョブを作成するために必要なアクセス許可を参照してください。

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name PutObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::{{TargetResource}}/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }'
  2. S3PutObjectTagging ジョブを作成します。manifest.csv ファイルは、バケットのリストとオブジェクトキー値を提供します。このジョブは、マニフェストで識別されたオブジェクトに指定されたタグを適用します。ETagmanifest.csv オブジェクトの ETag であり、Amazon S3 コンソールから取得できます。このリクエストは no-confirmation-required パラメータを指定します。これによって、udpate-job-status を使用して確認する必要がなくなり、Amazon S3 によってジョブが実行できるようになります。

    aws s3control create-job \ --region us-west-2 \ --account-id acct-id \ --operation '{"S3PutObjectTagging": { "TagSet": [{"Key":"keyOne", "Value":"ValueOne"}] }}' \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::my_manifests/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \ --report '{"Bucket":"arn:aws:s3:::bucket-where-completion-report-goes","Prefix":"final-reports", "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ --priority 42 \ --role-arn IAM-role \ --client-request-token $(uuidgen) \ --description "job Description" \ --no-confirmation-required

    レスポンスとして、Amazon S3 はジョブ ID (00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c など) を返します。次のコマンドでこの ID が必要になります。

  3. ジョブの説明を取得します。

    aws s3control describe-job \ --region us-west-2 \ --account-id acct-id \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
  4. Active および Complete ジョブのリストを取得します。

    aws s3control list-jobs \ --region us-west-2 \ --account-id acct-id \ --job-statuses '["Active","Complete"]' \ --max-results 20
  5. ジョブの優先度を更新します (大きい数字は実行優先度が高いことを示します)。

    aws s3control update-job-priority \ --region us-west-2 \ --account-id acct-id \ --priority 98 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
  6. たとえば、create-job で、--no-confirmation-required パラメータを指定しなかった場合、ジョブのステータスを Ready に設定してジョブを確認するまで、このジョブは停止状態になります。そして Amazon S3 によってジョブが実行できるようになります。

    aws s3control update-job-status \ --region us-west-2 \ --account-id 181572960644 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \ --requested-job-status 'Ready'
  7. ジョブステータスを Cancelled に設定して、ジョブをキャンセルします。

    aws s3control update-job-status \ --region us-west-2 \ --account-id 181572960644 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \ --status-update-reason "No longer needed" \ --requested-job-status Cancelled