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}"

다음 예제에서는 AWS SDK for Java를 사용하여 객체 잠금을 사용하는 작업을 생성하기 위해 S3 Batch Operations 권한이 있는 IAM 역할을 생성하고 역할 권한을 업데이트하는 방법을 보여줍니다. 코드에서 변수 값을 필요에 맞는 값으로 바꿉니다. 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); }