AWS Security ChangesHomeSearch

AWS AmazonS3 documentation change

Service: AmazonS3 · 2025-08-22 · Documentation low

File: AmazonS3/latest/userguide/batch-ops-compliance-mode.md

Summary

Replaced detailed Java SDK code examples for S3 Object Lock compliance mode operations with a reference link to API documentation

Security assessment

The change removes implementation details but continues to document security-related Object Lock compliance features. While Object Lock itself is a security feature, there's no evidence this change addresses a specific vulnerability - it appears to be documentation restructuring. The security relevance comes from documenting retention enforcement mechanisms, but the change itself is organizational.

Diff

diff --git a/AmazonS3/latest/userguide/batch-ops-compliance-mode.md b/AmazonS3/latest/userguide/batch-ops-compliance-mode.md
index fb33473a3..14c73616a 100644
--- a//AmazonS3/latest/userguide/batch-ops-compliance-mode.md
+++ b//AmazonS3/latest/userguide/batch-ops-compliance-mode.md
@@ -129 +129 @@ The following example extends the `COMPLIANCE` mode's `retain until date` to Jan
-The following AWS SDK for Java examples show how to use Batch Operations to apply S3 Object Lock retention compliance mode across multiple objects.
+The following AWS SDK for Java examples show how to use Batch Operations to apply S3 Object Lock retention compliance mode across multiple objects, including setting the retention mode to COMPLIANCE with a retain until date and extending the COMPLIANCE mode retain until date.
@@ -131,117 +131 @@ The following AWS SDK for Java examples show how to use Batch Operations to appl
-###### Example — Set the retention mode to COMPLIANCE and the retain until date to January 1, 2025
-    
-    
-    public String createComplianceRetentionJob(final AWSS3ControlClient awss3ControlClient) throws ParseException {
-        final String manifestObjectArn = "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv";
-        final String manifestObjectVersionId = "your-object-version-Id";
-    
-        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/compliance-objects-bops";
-    
-        final JobReport jobReport = new JobReport()
-                .withEnabled(true)
-                .withReportScope(JobReportScope.AllTasks)
-                .withBucket(jobReportBucketArn)
-                .withPrefix(jobReportPrefix)
-                .withFormat(JobReportFormat.Report_CSV_20180820);
-    
-        final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
-        final Date janFirst = format.parse("01/01/2025");
-    
-        final JobOperation jobOperation = new JobOperation()
-                .withS3PutObjectRetention(new S3SetObjectRetentionOperation()
-                        .withRetention(new S3Retention()
-                                .withMode(S3ObjectLockRetentionMode.COMPLIANCE)
-                                .withRetainUntilDate(janFirst)));
-    
-        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("Set compliance retain-until to 1 Jan 2025")
-                .withManifest(manifestToPublicApi)
-                .withOperation(jobOperation)
-                .withPriority(priority)
-                .withRoleArn(roleArn)
-                .withReport(jobReport)
-                .withConfirmationRequired(requiresConfirmation);
-    
-        final CreateJobResult result = awss3ControlClient.createJob(request);
-    
-        return result.getJobId();
-    } 
-
-###### Example — Extending the `COMPLIANCE` mode `retain until date`
-
-The following example extends the `COMPLIANCE` mode `retain until date` to January 15, 2025.
-    
-    
-    public String createExtendComplianceRetentionJob(final AWSS3ControlClient awss3ControlClient) throws ParseException {
-        final String manifestObjectArn = "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv";
-        final String manifestObjectVersionId = "15ad5ba069e6bbc465c77bf83d541385";
-    
-        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/compliance-objects-batch_operations";
-    
-        final JobReport jobReport = new JobReport()
-                .withEnabled(true)
-                .withReportScope(JobReportScope.AllTasks)
-                .withBucket(jobReportBucketArn)
-                .withPrefix(jobReportPrefix)
-                .withFormat(JobReportFormat.Report_CSV_20180820);
-    
-        final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
-        final Date jan15th = format.parse("15/01/2025");
-    
-        final JobOperation jobOperation = new JobOperation()
-                .withS3PutObjectRetention(new S3SetObjectRetentionOperation()
-                        .withRetention(new S3Retention()
-                                .withMode(S3ObjectLockRetentionMode.COMPLIANCE)
-                                .withRetainUntilDate(jan15th)));
-    
-        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("Extend compliance retention to 15 Jan 2025")
-                .withManifest(manifestToPublicApi)
-                .withOperation(jobOperation)
-                .withPriority(priority)
-                .withRoleArn(roleArn)
-                .withReport(jobReport)
-                .withConfirmationRequired(requiresConfirmation);
-    
-        final CreateJobResult result = awss3ControlClient.createJob(request);
-    
-        return result.getJobId();
-    }
+For examples of how to use Batch Operations to apply S3 Object Lock retention compliance mode across multiple objects with the AWS SDK for Java, see [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) in the _Amazon S3 API Reference_.