S3 バッチオペレーションを使用した S3 オブジェクトロックの有効化 - Amazon Simple Storage Service

S3 バッチオペレーションを使用した S3 オブジェクトロックの有効化

S3 バッチオペレーションを S3 オブジェクトロックとともに使用すると、一度に多くの Amazon S3 オブジェクトの保持を管理したり、法的保留を有効にしたりできます。マニフェストでターゲットオブジェクトのリストを指定し、そのマニフェストをジョブの完了のためにバッチオペレーションに送信します。詳細については、「S3 オブジェクトロックの保持」および「S3 オブジェクトロックのリーガルホールド」を参照してください。

以下の例では、S3 バッチオペレーションアクセス許可を持つ IAM ロールを作成し、そのロールのアクセス許可を更新してオブジェクトロックを有効化するジョブを作成する方法を示します。これらの例では、変数値をニーズに合った値に置き換えます。S3 バッチオペレーションジョブのオブジェクトを識別する CSV マニフェストも必要です。詳細については、「マニフェストの指定」を参照してください。

  1. IAM ロールを作成し、実行する S3 バッチオペレーションのアクセス許可を割り当てます。

    このステップは、すべての S3 バッチオペレーションジョブで必要です。

    export AWS_PROFILE='aws-user' read -d '' bops_trust_policy <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "batchoperations.s3.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] } EOF aws iam create-role --role-name bops-objectlock --assume-role-policy-document "${bops_trust_policy}"
  2. S3 オブジェクトロックを使用して S3 バッチオペレーションを実行するように設定します。

    このステップでは、ロールに以下のことを許可します。

    1. バッチオペレーションを実行するターゲットオブジェクトを含む S3 バケットでオブジェクトロックを実行します。

    2. マニフェスト CSV ファイルとオブジェクトがある S3 バケットを読み取る。

    3. S3 バッチオペレーションジョブの結果をレポートバケットに書き込みます。

    read -d '' bops_permissions <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::{{ManifestBucket}}" ] }, { "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}}/*" ] } ] } EOF aws iam put-role-policy --role-name bops-objectlock --policy-name object-lock-permissions --policy-document "${bops_permissions}"

次の例は、S3 バッチオペレーション許可を持つ IAM ロールを作成し、AWS SDK for Java を使用してオブジェクトロックを有効にするジョブを作成するためにロールの許可を更新する方法を示しています。コードで、変数値をニーズに合った値に置き換えます。S3 バッチオペレーションジョブのオブジェクトを識別する CSV マニフェストも必要です。詳細については、「マニフェストの指定」を参照してください。

以下のステップを実行します。

  1. IAM ロールを作成し、実行する S3 バッチオペレーションのアクセス許可を割り当てます。このステップは、すべての S3 バッチオペレーションジョブで必要です。

  2. S3 オブジェクトロックを使用して S3 バッチオペレーションを実行するように設定します。

    ロールに以下のことを許可します。

    1. バッチオペレーションを実行するターゲットオブジェクトを含む S3 バケットでオブジェクトロックを実行します。

    2. マニフェスト CSV ファイルとオブジェクトがある S3 バケットを読み取る。

    3. S3 バッチオペレーションジョブの結果をレポートバケットに書き込みます。

public void createObjectLockRole() { final String roleName = "bops-object-lock"; final String trustPolicy = "{" + " \"Version\": \"2012-10-17\", " + " \"Statement\": [ " + " { " + " \"Effect\": \"Allow\", " + " \"Principal\": { " + " \"Service\": [" + " \"batchoperations.s3.amazonaws.com\"" + " ]" + " }, " + " \"Action\": \"sts:AssumeRole\" " + " } " + " ]" + "}"; final String bopsPermissions = "{" + " \"Version\": \"2012-10-17\"," + " \"Statement\": [" + " {" + " \"Effect\": \"Allow\"," + " \"Action\": \"s3:GetBucketObjectLockConfiguration\"," + " \"Resource\": [" + " \"arn:aws:s3:::ManifestBucket\"" + " ]" + " }," + " {" + " \"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/*\"" + " ]" + " }" + " ]" + "}"; final AmazonIdentityManagement iam = AmazonIdentityManagementClientBuilder.defaultClient(); final CreateRoleRequest createRoleRequest = new CreateRoleRequest() .withAssumeRolePolicyDocument(bopsPermissions) .withRoleName(roleName); final CreateRoleResult createRoleResult = iam.createRole(createRoleRequest); final PutRolePolicyRequest putRolePolicyRequest = new PutRolePolicyRequest() .withPolicyDocument(bopsPermissions) .withPolicyName("bops-permissions") .withRoleName(roleName); final PutRolePolicyResult putRolePolicyResult = iam.putRolePolicy(putRolePolicyRequest); }