AWS AmazonS3 documentation change
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) {