AWS Security ChangesHomeSearch

AWS AmazonS3 documentation change

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

File: AmazonS3/latest/userguide/batch-ops-create-job.md

Summary

Replaced detailed Java SDK code examples with a summary of two approaches (specify existing manifest vs. generate manifest) and added a reference link to API documentation examples

Security assessment

The changes remove implementation-specific code samples and restructure documentation flow without introducing or modifying security-related content. While IAM roles and permissions are mentioned, these are standard operational requirements rather than new security features or vulnerability mitigations.

Diff

diff --git a/AmazonS3/latest/userguide/batch-ops-create-job.md b/AmazonS3/latest/userguide/batch-ops-create-job.md
index 157165bfa..5924e3ac4 100644
--- a//AmazonS3/latest/userguide/batch-ops-create-job.md
+++ b//AmazonS3/latest/userguide/batch-ops-create-job.md
@@ -584 +584 @@ In response, Amazon S3 returns a job ID (for example, `00e123a4-c0d8-41f4-a0eb-b
-To create your Batch Operations job with the AWS SDK for Java, choose one of the following examples, depending on whether you're specifying an existing manifest or generating a manifest automatically. 
+To create your Batch Operations job with the AWS SDK for Java, you can choose between two approaches depending on whether you're specifying an existing manifest or generating a manifest automatically:
@@ -586 +586 @@ To create your Batch Operations job with the AWS SDK for Java, choose one of the
-Specify manifest
+  * _Specify existing manifest:_ Create an S3 Batch Operations job (such as `S3PutObjectTagging`) that acts on objects listed in an existing manifest file. This approach requires you to provide the manifest location, ETag, and format specifications.
@@ -587,0 +588 @@ Specify manifest
+  * _Generate manifest automatically:_ Create an S3 Batch Operations job (such as `s3PutObjectCopy`) that automatically generates a manifest based on object filter criteria, including creation date, key name, and size constraints.
@@ -589,80 +589,0 @@ Specify manifest
-The following example shows how to create an S3 Batch Operations `S3PutObjectTagging` job that acts on objects that are listed in an existing manifest file. To use this example, replace the ``user input placeholders`` with your own information.
-    
-    
-    package aws.example.s3control;
-    
-    
-    
-    import com.amazonaws.AmazonServiceException;
-    import com.amazonaws.SdkClientException;
-    import com.amazonaws.auth.profile.ProfileCredentialsProvider;
-    import com.amazonaws.services.s3control.AWSS3Control;
-    import com.amazonaws.services.s3control.AWSS3ControlClient;
-    import com.amazonaws.services.s3control.model.*;
-    
-    import java.util.UUID;
-    import java.util.ArrayList;
-    
-    import static com.amazonaws.regions.Regions.US_WEST_2;
-    
-    public class CreateJob {
-        public static void main(String[] args) {
-            String accountId = "Account ID";
-            String iamRoleArn = "IAM Role ARN";
-            String reportBucketName = "arn:aws:s3:::amzn-s3-demo-completion-report-bucket";
-            String uuid = UUID.randomUUID().toString();
-    
-            ArrayList tagSet = new ArrayList<S3Tag>();
-            tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne"));
-    
-    
-            try {
-                JobOperation jobOperation = new JobOperation()
-                        .withS3PutObjectTagging(new S3SetObjectTaggingOperation()
-                                .withTagSet(tagSet)
-                        );
-    
-                JobManifest manifest = new JobManifest()
-                        .withSpec(new JobManifestSpec()
-                                .withFormat("S3BatchOperations_CSV_20180820")
-                                .withFields(new String[]{
-                                        "Bucket", "Key"
-                                }))
-                        .withLocation(new JobManifestLocation()
-                                .withObjectArn("arn:aws:s3:::my_manifests/manifest.csv")
-                                .withETag("60e460c9d1046e73f7dde5043ac3ae85"));
-                JobReport jobReport = new JobReport()
-                        .withBucket(reportBucketName)
-                        .withPrefix("reports")
-                        .withFormat("Report_CSV_20180820")
-                        .withEnabled(true)
-                        .withReportScope("AllTasks");
-    
-                AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
-                        .withCredentials(new ProfileCredentialsProvider())
-                        .withRegion(US_WEST_2)
-                        .build();
-    
-                s3ControlClient.createJob(new CreateJobRequest()
-                        .withAccountId(accountId)
-                        .withOperation(jobOperation)
-                        .withManifest(manifest)
-                        .withReport(jobReport)
-                        .withPriority(42)
-                        .withRoleArn(iamRoleArn)
-                        .withClientRequestToken(uuid)
-                        .withDescription("job description")
-                        .withConfirmationRequired(false)
-                );
-    
-            } catch (AmazonServiceException e) {
-                // The call was transmitted successfully, but Amazon S3 couldn't process
-                // it and returned an error response.
-                e.printStackTrace();
-            } catch (SdkClientException e) {
-                // Amazon S3 couldn't be contacted for a response, or the client
-                // couldn't parse the response from Amazon S3.
-                e.printStackTrace();
-            }
-        }
-    }
@@ -670 +590,0 @@ The following example shows how to create an S3 Batch Operations `S3PutObjectTag
-Generate manifest
@@ -673,110 +593,3 @@ Generate manifest
-The following example shows how to create an S3 Batch Operations `s3PutObjectCopy` job that automatically generates a manifest based on object filter criteria, including the creation date, key name, and size. To use this example, replace the ``user input placeholders`` with your own information.
-    
-    
-            package aws.example.s3control;
-         
-        import com.amazonaws.AmazonServiceException;
-        import com.amazonaws.SdkClientException;
-        import com.amazonaws.auth.profile.ProfileCredentialsProvider;
-        import com.amazonaws.services.s3control.AWSS3Control;
-        import com.amazonaws.services.s3control.AWSS3ControlClient;
-        import com.amazonaws.services.s3control.model.CreateJobRequest;
-        import com.amazonaws.services.s3control.model.CreateJobResult;
-        import com.amazonaws.services.s3control.model.JobManifestGenerator;
-        import com.amazonaws.services.s3control.model.JobManifestGeneratorFilter;
-        import com.amazonaws.services.s3control.model.JobOperation;
-        import com.amazonaws.services.s3control.model.JobReport;
-        import com.amazonaws.services.s3control.model.KeyNameConstraint;
-        import com.amazonaws.services.s3control.model.S3JobManifestGenerator;
-        import com.amazonaws.services.s3control.model.S3ManifestOutputLocation;
-        import com.amazonaws.services.s3control.model.S3SetObjectTaggingOperation;
-        import com.amazonaws.services.s3control.model.S3Tag;
-         
-        import java.time.Instant;
-        import java.util.Date;
-        import java.util.UUID;
-        import java.util.ArrayList;
-         
-        import static com.amazonaws.regions.Regions.US_WEST_2;
-         
-        public class test {
-            public static void main(String[] args) {
-                String accountId = "012345678901";
-                String iamRoleArn = "arn:aws:iam::012345678901:role/ROLE";
-                String sourceBucketName = "arn:aws:s3:::amzn-s3-demo-source-bucket";
-                String reportBucketName = "arn:aws:s3:::amzn-s3-demo-completion-report-bucket";
-                String manifestOutputBucketName = "arn:aws:s3:::amzn-s3-demo-manifest-bucket";
-                String uuid = UUID.randomUUID().toString();
-                long minimumObjectSize = 100L;
-         
-                ArrayList<S3Tag> tagSet = new ArrayList<>();
-                tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne"));
-         
-                ArrayList<String> prefixes = new ArrayList<>();
-                prefixes.add("s3KeyStartsWith");
-         
-                try {
-                    JobOperation jobOperation = new JobOperation()
-                            .withS3PutObjectTagging(new S3SetObjectTaggingOperation()
-                                    .withTagSet(tagSet)
-                            );
-                    S3ManifestOutputLocation manifestOutputLocation = new S3ManifestOutputLocation()
-                            .withBucket(manifestOutputBucketName)
-                            .withManifestPrefix("manifests")
-                            .withExpectedManifestBucketOwner(accountId)
-                            .withManifestFormat("S3InventoryReport_CSV_20211130");
-         
-                    JobManifestGeneratorFilter jobManifestGeneratorFilter = new JobManifestGeneratorFilter()
-                            .withEligibleForReplication(true)
-                            .withKeyNameConstraint(
-                                    new KeyNameConstraint()
-                                            .withMatchAnyPrefix(prefixes))
-                            .withCreatedBefore(Date.from(Instant.now()))
-                            .withObjectSizeGreaterThanBytes(minimumObjectSize);
-         
-                    S3JobManifestGenerator s3JobManifestGenerator = new S3JobManifestGenerator()
-                            .withEnableManifestOutput(true)
-                            .withManifestOutputLocation(manifestOutputLocation)
-                            .withFilter(jobManifestGeneratorFilter)
-                            .withSourceBucket(sourceBucketName);
-         
-                    JobManifestGenerator jobManifestGenerator = new JobManifestGenerator()
-                            .withS3JobManifestGenerator(s3JobManifestGenerator);
-         
-                    JobReport jobReport = new JobReport()
-                            .withBucket(reportBucketName)
-                            .withPrefix("reports")
-                            .withFormat("Report_CSV_20180820")
-                            .withEnabled(true)
-                            .withReportScope("AllTasks");
-         
-                    AWSS3Control s3ControlClient = AWSS3ControlClient.builder()
-                            .withCredentials(new ProfileCredentialsProvider())
-                            .withRegion(US_WEST_2)
-                            .build();
-         
-                    CreateJobResult createJobResult = s3ControlClient.createJob(new CreateJobRequest()
-                            .withAccountId(accountId)
-                            .withOperation(jobOperation)
-                            .withManifestGenerator(jobManifestGenerator)
-                            .withReport(jobReport)
-                            .withPriority(42)
-                            .withRoleArn(iamRoleArn)
-                            .withClientRequestToken(uuid)
-                            .withDescription("job description")
-                            .withConfirmationRequired(true)
-                    );
-         
-                    System.out.println("Created job " + createJobResult.getJobId());
-         
-                } catch (AmazonServiceException e) {
-                    // The call was transmitted successfully, but Amazon S3 couldn't process
-                    // it and returned an error response.
-                    e.printStackTrace();
-                } catch (SdkClientException e) {