There are more AWS SDK examples available in the AWS Doc SDK Examples
Use CreateJob
with an AWS SDK or CLI
The following code examples show how to use CreateJob
.
Action examples are code excerpts from larger programs and must be run in context. You can see this action in context in the following code example:
- CLI
-
- AWS CLI
-
To create an Amazon S3 batch operations job
The following
create-job
example creates an Amazon S3 batch operations job to tag objects asconfidential` in the bucket ``employee-records
.aws s3control create-job \ --account-id
123456789012
\ --operation '{"S3PutObjectTagging": { "TagSet": [{"Key":"confidential", "Value":"true"}] }}
' \ --report '{"Bucket":"arn:aws:s3:::employee-records-logs","Prefix":"batch-op-create-job", "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}
' \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::employee-records-logs/inv-report/7a6a9be4-072c-407e-85a2-ec3e982f773e.csv","ETag":"69f52a4e9f797e987155d9c8f5880897"}}
' \ --priority42
\ --role-arnarn:aws:iam::123456789012:role/S3BatchJobRole
Output:
{ "JobId": "93735294-df46-44d5-8638-6356f335324e" }
-
For API details, see CreateJob
in AWS CLI Command Reference.
-
- Java
-
- SDK for Java 2.x
-
Note
There's more on GitHub. Find the complete example and learn how to set up and run in the AWS Code Examples Repository
. Create an asynchronous S3 job.
/** * Creates an asynchronous S3 job using the AWS Java SDK. * * @param accountId the AWS account ID associated with the job * @param iamRoleArn the ARN of the IAM role to be used for the job * @param manifestLocation the location of the job manifest file in S3 * @param reportBucketName the name of the S3 bucket to store the job report * @param uuid a unique identifier for the job * @return a CompletableFuture that represents the asynchronous creation of the S3 job. * The CompletableFuture will return the job ID if the job is created successfully, * or throw an exception if there is an error. */ public CompletableFuture<String> createS3JobAsync(String accountId, String iamRoleArn, String manifestLocation, String reportBucketName, String uuid) { String[] bucketName = new String[]{""}; String[] parts = reportBucketName.split(":::"); if (parts.length > 1) { bucketName[0] = parts[1]; } else { System.out.println("The input string does not contain the expected format."); } return CompletableFuture.supplyAsync(() -> getETag(bucketName[0], "job-manifest.csv")) .thenCompose(eTag -> { ArrayList<S3Tag> tagSet = new ArrayList<>(); S3Tag s3Tag = S3Tag.builder() .key("keyOne") .value("ValueOne") .build(); S3Tag s3Tag2 = S3Tag.builder() .key("keyTwo") .value("ValueTwo") .build(); tagSet.add(s3Tag); tagSet.add(s3Tag2); S3SetObjectTaggingOperation objectTaggingOperation = S3SetObjectTaggingOperation.builder() .tagSet(tagSet) .build(); JobOperation jobOperation = JobOperation.builder() .s3PutObjectTagging(objectTaggingOperation) .build(); JobManifestLocation jobManifestLocation = JobManifestLocation.builder() .objectArn(manifestLocation) .eTag(eTag) .build(); JobManifestSpec manifestSpec = JobManifestSpec.builder() .fieldsWithStrings("Bucket", "Key") .format("S3BatchOperations_CSV_20180820") .build(); JobManifest jobManifest = JobManifest.builder() .spec(manifestSpec) .location(jobManifestLocation) .build(); JobReport jobReport = JobReport.builder() .bucket(reportBucketName) .prefix("reports") .format("Report_CSV_20180820") .enabled(true) .reportScope("AllTasks") .build(); CreateJobRequest jobRequest = CreateJobRequest.builder() .accountId(accountId) .description("Job created using the AWS Java SDK") .manifest(jobManifest) .operation(jobOperation) .report(jobReport) .priority(42) .roleArn(iamRoleArn) .clientRequestToken(uuid) .confirmationRequired(false) .build(); // Create the job asynchronously. return getAsyncClient().createJob(jobRequest) .thenApply(CreateJobResponse::jobId); }) .handle((jobId, ex) -> { if (ex != null) { Throwable cause = (ex instanceof CompletionException) ? ex.getCause() : ex; if (cause instanceof S3ControlException) { throw new CompletionException(cause); } else { throw new RuntimeException(cause); } } return jobId; }); }
Create a compliance retention job.
/** * Creates a compliance retention job in Amazon S3 Control. * <p> * A compliance retention job in Amazon S3 Control is a feature that allows you to * set a retention period for objects stored in an S3 bucket. * This feature is particularly useful for organizations that need to comply with * regulatory requirements or internal policies that mandate the retention of data for * a specific duration. * * @param s3ControlClient The S3ControlClient instance to use for the API call. * @return The job ID of the created compliance retention job. */ public static String createComplianceRetentionJob(final S3ControlClient s3ControlClient, String roleArn, String bucketName, String accountId) { final String manifestObjectArn = "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv"; final String manifestObjectVersionId = "your-object-version-Id"; Instant jan2025 = Instant.parse("2025-01-01T00:00:00Z"); JobOperation jobOperation = JobOperation.builder() .s3PutObjectRetention(S3SetObjectRetentionOperation.builder() .retention(S3Retention.builder() .mode(S3ObjectLockRetentionMode.COMPLIANCE) .retainUntilDate(jan2025) .build()) .build()) .build(); JobManifestLocation manifestLocation = JobManifestLocation.builder() .objectArn(manifestObjectArn) .eTag(manifestObjectVersionId) .build(); JobManifestSpec manifestSpec = JobManifestSpec.builder() .fieldsWithStrings("Bucket", "Key") .format("S3BatchOperations_CSV_20180820") .build(); JobManifest manifestToPublicApi = JobManifest.builder() .location(manifestLocation) .spec(manifestSpec) .build(); // Report details. final String jobReportBucketArn = "arn:aws:s3:::" + bucketName; final String jobReportPrefix = "reports/compliance-objects-bops"; JobReport jobReport = JobReport.builder() .enabled(true) .reportScope(JobReportScope.ALL_TASKS) .bucket(jobReportBucketArn) .prefix(jobReportPrefix) .format(JobReportFormat.REPORT_CSV_20180820) .build(); final Boolean requiresConfirmation = true; final int priority = 10; CreateJobRequest request = CreateJobRequest.builder() .accountId(accountId) .description("Set compliance retain-until to 1 Jan 2025") .manifest(manifestToPublicApi) .operation(jobOperation) .priority(priority) .roleArn(roleArn) .report(jobReport) .confirmationRequired(requiresConfirmation) .build(); // Create the job and get the result. CreateJobResponse result = s3ControlClient.createJob(request); return result.jobId(); }
Create a legal hold off job.
/** * Creates a compliance retention job in Amazon S3 Control. * <p> * A compliance retention job in Amazon S3 Control is a feature that allows you to * set a retention period for objects stored in an S3 bucket. * This feature is particularly useful for organizations that need to comply with * regulatory requirements or internal policies that mandate the retention of data for * a specific duration. * * @param s3ControlClient The S3ControlClient instance to use for the API call. * @return The job ID of the created compliance retention job. */ public static String createComplianceRetentionJob(final S3ControlClient s3ControlClient, String roleArn, String bucketName, String accountId) { final String manifestObjectArn = "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv"; final String manifestObjectVersionId = "your-object-version-Id"; Instant jan2025 = Instant.parse("2025-01-01T00:00:00Z"); JobOperation jobOperation = JobOperation.builder() .s3PutObjectRetention(S3SetObjectRetentionOperation.builder() .retention(S3Retention.builder() .mode(S3ObjectLockRetentionMode.COMPLIANCE) .retainUntilDate(jan2025) .build()) .build()) .build(); JobManifestLocation manifestLocation = JobManifestLocation.builder() .objectArn(manifestObjectArn) .eTag(manifestObjectVersionId) .build(); JobManifestSpec manifestSpec = JobManifestSpec.builder() .fieldsWithStrings("Bucket", "Key") .format("S3BatchOperations_CSV_20180820") .build(); JobManifest manifestToPublicApi = JobManifest.builder() .location(manifestLocation) .spec(manifestSpec) .build(); // Report details. final String jobReportBucketArn = "arn:aws:s3:::" + bucketName; final String jobReportPrefix = "reports/compliance-objects-bops"; JobReport jobReport = JobReport.builder() .enabled(true) .reportScope(JobReportScope.ALL_TASKS) .bucket(jobReportBucketArn) .prefix(jobReportPrefix) .format(JobReportFormat.REPORT_CSV_20180820) .build(); final Boolean requiresConfirmation = true; final int priority = 10; CreateJobRequest request = CreateJobRequest.builder() .accountId(accountId) .description("Set compliance retain-until to 1 Jan 2025") .manifest(manifestToPublicApi) .operation(jobOperation) .priority(priority) .roleArn(roleArn) .report(jobReport) .confirmationRequired(requiresConfirmation) .build(); // Create the job and get the result. CreateJobResponse result = s3ControlClient.createJob(request); return result.jobId(); }
Create a new governance retemtion job.
/** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class CreateGovernanceRetentionJob { public static void main(String[]args) throws ParseException { final String usage = """ Usage: <manifestObjectArn> <jobReportBucketArn> <roleArn> <accountId> <manifestObjectVersionId> Where: manifestObjectArn - The Amazon Resource Name (ARN) of the S3 object that contains the manifest file for the governance objects.\s bucketName - The ARN of the S3 bucket where the job report will be stored. roleArn - The ARN of the IAM role that will be used to perform the governance retention operation. accountId - Your AWS account Id. manifestObjectVersionId = A unique value that is used as the `eTag` property of the `JobManifestLocation` object. """; if (args.length != 4) { System.out.println(usage); return; } String manifestObjectArn = args[0]; String jobReportBucketArn = args[1]; String roleArn = args[2]; String accountId = args[3]; String manifestObjectVersionId = args[4]; S3ControlClient s3ControlClient = S3ControlClient.create(); createGovernanceRetentionJob(s3ControlClient, manifestObjectArn, jobReportBucketArn, roleArn, accountId, manifestObjectVersionId); } public static String createGovernanceRetentionJob(final S3ControlClient s3ControlClient, String manifestObjectArn, String jobReportBucketArn, String roleArn, String accountId, String manifestObjectVersionId) throws ParseException { final JobManifestLocation manifestLocation = JobManifestLocation.builder() .objectArn(manifestObjectArn) .eTag(manifestObjectVersionId) .build(); final JobManifestSpec manifestSpec = JobManifestSpec.builder() .format(JobManifestFormat.S3_BATCH_OPERATIONS_CSV_20180820) .fields(Arrays.asList(JobManifestFieldName.BUCKET, JobManifestFieldName.KEY)) .build(); final JobManifest manifestToPublicApi = JobManifest.builder() .location(manifestLocation) .spec(manifestSpec) .build(); final String jobReportPrefix = "reports/governance-objects"; final JobReport jobReport = JobReport.builder() .enabled(true) .reportScope(JobReportScope.ALL_TASKS) .bucket(jobReportBucketArn) .prefix(jobReportPrefix) .format(JobReportFormat.REPORT_CSV_20180820) .build(); final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); final Date jan30th = format.parse("30/01/2025"); final S3SetObjectRetentionOperation s3SetObjectRetentionOperation = S3SetObjectRetentionOperation.builder() .retention(S3Retention.builder() .mode(S3ObjectLockRetentionMode.GOVERNANCE) .retainUntilDate(jan30th.toInstant()) .build()) .build(); final JobOperation jobOperation = JobOperation.builder() .s3PutObjectRetention(s3SetObjectRetentionOperation) .build(); final Boolean requiresConfirmation = true; final int priority = 10; final CreateJobRequest request = CreateJobRequest.builder() .accountId(accountId) .description("Put governance retention") .manifest(manifestToPublicApi) .operation(jobOperation) .priority(priority) .roleArn(roleArn) .report(jobReport) .confirmationRequired(requiresConfirmation) .build(); final CreateJobResponse result = s3ControlClient.createJob(request); return result.jobId(); } }
-
For API details, see CreateJob in AWS SDK for Java 2.x API Reference.
-