Uso de Operaciones por lotes de S3 para desactivar las retenciones legales de Bloqueo de objetos de S3
El siguiente ejemplo se basa en los ejemplos anteriores de creación de una política de confianza y en establecer permisos de configuración de Operaciones por lotes de S3 y Bloqueo de objetos en S3. Este ejemplo muestra cómo deshabilitar la retención legal de Bloqueo de objetos mediante Operaciones por lotes.
En el ejemplo se actualiza primero el rol para conceder permisos s3:PutObjectLegalHold
, se crea un trabajo de Operaciones por lotes que desactiva (quita) la retención legal de los objetos identificados en el manifiesto e informa al respecto.
Para utilizar los siguientes ejemplos, reemplace los
con su propia información. user input
placeholders
En los siguientes ejemplos de AWS CLI, se muestra cómo utilizar Operaciones por lotes para desactivar las retenciones legales de Bloqueo de objetos de S3 en varios objetos.
ejemplo — Actualizaciones del rol para conceder permisos s3:PutObjectLegalHold
export AWS_PROFILE='
aws-user
' read -d ''legal_hold_permissions
<<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectLegalHold" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] } ] EOF aws iam put-role-policy --role-namebatch_operations-objectlock
--policy-namelegal-hold-permissions
--policy-document "${legal_hold_permissions
}"
ejemplo — Desactivación de la retención legal
El siguiente ejemplo desactiva la retención legal.
export AWS_PROFILE='
aws-user
' export AWS_DEFAULT_REGION='us-west-2
' export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012
:role/batch_operations-objectlock
' read -d ''OPERATION
<<EOF { "S3PutObjectLegalHold": { "LegalHold": { "Status":"OFF" } } } EOF read -d ''MANIFEST
<<EOF { "Spec": { "Format": "S3BatchOperations_CSV_20180820", "Fields": [ "Bucket", "Key" ] }, "Location": { "ObjectArn": "arn:aws:s3:::", "ETag": "
amzn-s3-demo-manifest-bucket
/legalhold-object-manifest.csvYour-manifest-ETag
" } } EOF read -d ''REPORT
<<EOF { "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
", "Format": "Report_CSV_20180820", "Enabled": true, "Prefix": "reports/legalhold-objects-batch_operations
", "ReportScope": "AllTasks" } EOF aws \ s3control create-job \ --account-id "${ACCOUNT_ID
}" \ --manifest "${MANIFEST
//$'\n'}" \ --operation "${OPERATION
//$'\n'/}" \ --report "${REPORT
//$'\n'}" \ --priority10
\ --role-arn "${ROLE_ARN
}" \ --client-request-token "$(uuidgen)" \ --region "${AWS_DEFAULT_REGION
}" \ --description "Turn off legal hold
";
En los siguientes ejemplos de AWS SDK para Java, se muestra cómo utilizar Operaciones por lotes para desactivar las retenciones legales de Bloqueo de objetos de S3 en varios objetos.
ejemplo — Actualizaciones del rol para conceder permisos s3:PutObjectLegalHold
public void allowPutObjectLegalHold() { final String roleName = "
batch_operations-object-lock
"; final String legalHoldPermissions = "{" + " \"Version\": \"2012-10-17\"," + " \"Statement\": [" + " {" + " \"Effect\": \"Allow\"," + " \"Action\": [" + " \"s3:PutObjectLegalHold\"" + " ]," + " \"Resource\": [" + " \"arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*\"" + " ]" + " }" + " ]" + "}"; final AmazonIdentityManagement iam = AmazonIdentityManagementClientBuilder.defaultClient(); final PutRolePolicyRequest putRolePolicyRequest = new PutRolePolicyRequest() .withPolicyDocument(legalHoldPermissions) .withPolicyName("legal-hold-permissions
") .withRoleName(roleName); final PutRolePolicyResult putRolePolicyResult = iam.putRolePolicy(putRolePolicyRequest); }
ejemplo — Desactivación de la retención legal
Utilice el ejemplo siguiente si desea desactivar la retención legal.
public String createLegalHoldOffJob(final AWSS3ControlClient awss3ControlClient) { final String manifestObjectArn = "arn:aws:s3:::
"; final String manifestObjectVersionId = "
amzn-s3-demo-manifest-bucket
/legalhold-object-manifest.csv15ad5ba069e6bbc465c77bf83d541385
"; final JobManifestLocation manifestLocation = new JobManifestLocation() .withObjectArn(manifestObjectArn) .withETag(manifestObjectVersionId); final JobManifestSpec manifestSpec = new JobManifestSpec() .withFormat(JobManifestFormat.S3BatchOperations_CSV_20180820) .withFields("Bucket", "Key"); final JobManifest manifestToPublicApi = new JobManifest() .withLocation(manifestLocation) .withSpec(manifestSpec); final String jobReportBucketArn = "arn:aws:s3:::amzn-s3-demo-completion-report-bucket
"; final String jobReportPrefix = "reports/legalhold-objects-batch_operations
"; final JobReport jobReport = new JobReport() .withEnabled(true) .withReportScope(JobReportScope.AllTasks) .withBucket(jobReportBucketArn) .withPrefix(jobReportPrefix) .withFormat(JobReportFormat.Report_CSV_20180820); final JobOperation jobOperation = new JobOperation() .withS3PutObjectLegalHold(new S3SetObjectLegalHoldOperation() .withLegalHold(new S3ObjectLockLegalHold() .withStatus(S3ObjectLockLegalHoldStatus.OFF))); final String roleArn = "arn:aws:iam::123456789012
:role/batch_operations-object-lock
"; final Boolean requiresConfirmation = true; final int priority =10
; final CreateJobRequest request = new CreateJobRequest() .withAccountId("123456789012
") .withDescription("Turn off legal hold
") .withManifest(manifestToPublicApi) .withOperation(jobOperation) .withPriority(priority) .withRoleArn(roleArn) .withReport(jobReport) .withConfirmationRequired(requiresConfirmation); final CreateJobResult result = awss3ControlClient.createJob(request); return result.getJobId(); }