### Hello IAM Example in Java Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_iam_code_examples.md Demonstrates how to get started with IAM by listing policies. Ensure your development environment, including credentials, is set up before running. ```java import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IamClient; import software.amazon.awssdk.services.iam.model.ListPoliciesResponse; import software.amazon.awssdk.services.iam.model.Policy; import java.util.List; /** * 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 HelloIAM { public static void main(String[] args) { Region region = Region.AWS_GLOBAL; IamClient iam = IamClient.builder() .region(region) .build(); listPolicies(iam); } public static void listPolicies(IamClient iam) { ListPoliciesResponse response = iam.listPolicies(); List polList = response.policies(); polList.forEach(policy -> { System.out.println("Policy Name: " + policy.policyName()); }); } } ``` -------------------------------- ### Hello Neptune Example Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_neptune_code_examples.md Demonstrates how to get started with Neptune using the AWS SDK for Java 2.x. It includes setting up the client and describing DB clusters. ```java /** * 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 HelloNeptune { public static void main(String[] args) { NeptuneAsyncClient neptuneClient = NeptuneAsyncClient.create(); describeDbCluster(neptuneClient).join(); // This ensures the async code runs to completion } /** * Describes the Amazon Neptune DB clusters. * * @param neptuneClient the Neptune asynchronous client used to make the request * @return a {@link CompletableFuture} that completes when the operation is finished */ public static CompletableFuture describeDbCluster(NeptuneAsyncClient neptuneClient) { DescribeDbClustersRequest request = DescribeDbClustersRequest.builder() .maxRecords(20) .build(); SdkPublisher paginator = neptuneClient.describeDBClustersPaginator(request); CompletableFuture future = new CompletableFuture<>(); paginator.subscribe(new Subscriber() { private Subscription subscription; @Override public void onSubscribe(Subscription s) { this.subscription = s; s.request(Long.MAX_VALUE); // request all items } @Override public void onNext(DescribeDbClustersResponse response) { response.dbClusters().forEach(cluster -> { System.out.println("Cluster Identifier: " + cluster.dbClusterIdentifier()); System.out.println("Status: " + cluster.status()); }); } @Override public void onError(Throwable t) { future.completeExceptionally(t); } @Override public void onComplete() { future.complete(null); } }); return future.whenComplete((result, throwable) -> { neptuneClient.close(); if (throwable != null) { System.err.println("Error describing DB clusters: " + throwable.getMessage()); } }); } ``` -------------------------------- ### Get Started with AWS Support Service in Java Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_support_code_examples.md This example demonstrates how to get started with the AWS Support service by retrieving and displaying available services and their categories. It requires the AWS Business Support Plan and is intended for Java 2.x. ```java import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.support.SupportClient; import software.amazon.awssdk.services.support.model.Category; import software.amazon.awssdk.services.support.model.DescribeServicesRequest; import software.amazon.awssdk.services.support.model.DescribeServicesResponse; import software.amazon.awssdk.services.support.model.Service; import software.amazon.awssdk.services.support.model.SupportException; import java.util.ArrayList; import java.util.List; /** * 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 * * In addition, you must have the AWS Business Support Plan to use the AWS * Support Java API. For more information, see: * * https://aws.amazon.com/premiumsupport/plans/ * * This Java example performs the following task: * * 1. Gets and displays available services. * * * NOTE: To see multiple operations, see SupportScenario. */ public class HelloSupport { public static void main(String[] args) { Region region = Region.US_WEST_2; SupportClient supportClient = SupportClient.builder() .region(region) .build(); System.out.println("***** Step 1. Get and display available services."); displayServices(supportClient); } // Return a List that contains a Service name and Category name. public static void displayServices(SupportClient supportClient) { try { DescribeServicesRequest servicesRequest = DescribeServicesRequest.builder() .language("en") .build(); DescribeServicesResponse response = supportClient.describeServices(servicesRequest); List services = response.services(); System.out.println("Get the first 10 services"); int index = 1; for (Service service : services) { if (index == 11) break; System.out.println("The Service name is: " + service.name()); // Display the Categories for this service. List categories = service.categories(); for (Category cat : categories) { System.out.println("The category name is: " + cat.name()); } index++; } } catch (SupportException e) { System.out.println(e.getLocalizedMessage()); System.exit(1); } } } ``` -------------------------------- ### Get Started with Amazon Keyspaces using Java Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_keyspaces_code_examples.md This example demonstrates how to initialize the Keyspaces client and list keyspaces in your account. Ensure your development environment and credentials are set up before running. ```java import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.keyspaces.KeyspacesClient; import software.amazon.awssdk.services.keyspaces.model.KeyspaceSummary; import software.amazon.awssdk.services.keyspaces.model.KeyspacesException; import software.amazon.awssdk.services.keyspaces.model.ListKeyspacesRequest; import software.amazon.awssdk.services.keyspaces.model.ListKeyspacesResponse; import java.util.List; /** * 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 HelloKeyspaces { public static void main(String[] args) { Region region = Region.US_EAST_1; KeyspacesClient keyClient = KeyspacesClient.builder() .region(region) .build(); listKeyspaces(keyClient); } public static void listKeyspaces(KeyspacesClient keyClient) { try { ListKeyspacesRequest keyspacesRequest = ListKeyspacesRequest.builder() .maxResults(10) .build(); ListKeyspacesResponse response = keyClient.listKeyspaces(keyspacesRequest); List keyspaces = response.keyspaces(); for (KeyspaceSummary keyspace : keyspaces) { System.out.println("The name of the keyspace is " + keyspace.keyspaceName()); } } catch (KeyspacesException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } } ``` -------------------------------- ### Get Started with OpenSearch Service Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_opensearch_code_examples.md This example demonstrates how to initialize the OpenSearchAsyncClient and list available OpenSearch versions asynchronously. Ensure your development environment and credentials are set up before running. ```java import software.amazon.awssdk.services.opensearch.OpenSearchAsyncClient; import software.amazon.awssdk.services.opensearch.model.ListVersionsRequest; import java.util.List; import java.util.concurrent.CompletableFuture; /** * 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 HelloOpenSearch { public static void main(String[] args) { try { CompletableFuture future = listVersionsAsync(); future.join(); System.out.println("Versions listed successfully."); } catch (RuntimeException e) { System.err.println("Error occurred while listing versions: " + e.getMessage()); } } private static OpenSearchAsyncClient getAsyncClient() { return OpenSearchAsyncClient.builder().build(); } public static CompletableFuture listVersionsAsync() { ListVersionsRequest request = ListVersionsRequest.builder() .maxResults(10) .build(); return getAsyncClient().listVersions(request).thenAccept(response -> { List versionList = response.versions(); for (String version : versionList) { System.out.println("Version info: " + version); } }).exceptionally(ex -> { // Handle the exception, or propagate it as a RuntimeException throw new RuntimeException("Failed to list versions", ex); }); } } ``` -------------------------------- ### Hello Amazon SQS Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_sqs_code_examples.md This example demonstrates how to get started with Amazon SQS by listing available queues. Ensure your development environment and AWS credentials are set up before running. ```java import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.SqsException; import software.amazon.awssdk.services.sqs.paginators.ListQueuesIterable; /** * 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 HelloSQS { public static void main(String[] args) { SqsClient sqsClient = SqsClient.builder() .region(Region.US_WEST_2) .build(); listQueues(sqsClient); sqsClient.close(); } public static void listQueues(SqsClient sqsClient) { try { ListQueuesIterable listQueues = sqsClient.listQueuesPaginator(); listQueues.stream() .flatMap(r -> r.queueUrls().stream()) .forEach(content -> System.out.println(" Queue URL: " + content.toLowerCase())); } catch (SqsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } } ``` -------------------------------- ### Hello SageMaker AI Example Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_sagemaker_code_examples.md Demonstrates how to get started with SageMaker AI by listing notebook instances. Ensure your development environment, including credentials, is set up before running. ```java /** * 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 HelloSageMaker { public static void main(String[] args) { Region region = Region.US_WEST_2; SageMakerClient sageMakerClient = SageMakerClient.builder() .region(region) .build(); listBooks(sageMakerClient); sageMakerClient.close(); } public static void listBooks(SageMakerClient sageMakerClient) { try { ListNotebookInstancesResponse notebookInstancesResponse = sageMakerClient.listNotebookInstances(); List items = notebookInstancesResponse.notebookInstances(); for (NotebookInstanceSummary item : items) { System.out.println("The notebook name is: " + item.notebookInstanceName()); } } catch (SageMakerException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } } ``` -------------------------------- ### Hello AWS IoT - List Things Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_iot_code_examples.md This example demonstrates how to get started with AWS IoT by listing all AWS IoT Things in your account. It requires the AWS SDK for Java 2.x and is configured for the US_EAST_1 region. ```java import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iot.IotClient; import software.amazon.awssdk.services.iot.model.ListThingsRequest; import software.amazon.awssdk.services.iot.model.ListThingsResponse; import software.amazon.awssdk.services.iot.model.ThingAttribute; import software.amazon.awssdk.services.iot.paginators.ListThingsIterable; import java.util.List; public class HelloIoT { public static void main(String[] args) { System.out.println("Hello AWS IoT. Here is a listing of your AWS IoT Things:"); IotClient iotClient = IotClient.builder() .region(Region.US_EAST_1) .build(); listAllThings(iotClient); } public static void listAllThings(IotClient iotClient) { iotClient.listThingsPaginator(ListThingsRequest.builder() .maxResults(10) .build()) .stream() .flatMap(response -> response.things().stream()) .forEach(attribute -> { System.out.println("Thing name: " + attribute.thingName()); System.out.println("Thing ARN: " + attribute.thingArn()); }); } } ``` -------------------------------- ### Get started with EventBridge using Java Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_eventbridge_code_examples.md This example demonstrates how to initialize the EventBridge client and list event buses in your AWS account. Ensure your development environment and credentials are set up before running. ```java /** * 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 HelloEventBridge { public static void main(String[] args) { Region region = Region.US_WEST_2; EventBridgeClient eventBrClient = EventBridgeClient.builder() .region(region) .build(); listBuses(eventBrClient); eventBrClient.close(); } public static void listBuses(EventBridgeClient eventBrClient) { try { ListEventBusesRequest busesRequest = ListEventBusesRequest.builder() .limit(10) .build(); ListEventBusesResponse response = eventBrClient.listEventBuses(busesRequest); List buses = response.eventBuses(); for (EventBus bus : buses) { System.out.println("The name of the event bus is: " + bus.name()); System.out.println("The ARN of the event bus is: " + bus.arn()); } } catch (EventBridgeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } } ``` -------------------------------- ### Get Started with AWS IoT SiteWise Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_iotsitewise_code_examples.md This example demonstrates how to initialize the AWS IoT SiteWise client and fetch asset models asynchronously. It uses paginators to process results and requires the `IoTSiteWiseAsyncClient`. ```java public class HelloSitewise { private static final Logger logger = LoggerFactory.getLogger(HelloSitewise.class); public static void main(String[] args) { fetchAssetModels(); } /** * Fetches asset models using the provided {@link IoTSiteWiseAsyncClient}. */ public static void fetchAssetModels() { IoTSiteWiseAsyncClient siteWiseAsyncClient = IoTSiteWiseAsyncClient.create(); ListAssetModelsRequest assetModelsRequest = ListAssetModelsRequest.builder() .assetModelTypes(AssetModelType.ASSET_MODEL) .build(); // Asynchronous paginator - process paginated results. ListAssetModelsPublisher listModelsPaginator = siteWiseAsyncClient.listAssetModelsPaginator(assetModelsRequest); CompletableFuture future = listModelsPaginator.subscribe(response -> { response.assetModelSummaries().forEach(assetSummary -> logger.info("Asset Model Name: {} ", assetSummary.name()) ); }); // Wait for the asynchronous operation to complete future.join(); } } ``` -------------------------------- ### Get Started with Elastic Load Balancing V2 Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_elastic-load-balancing-v2_code_examples.md This example demonstrates how to initialize the Elastic Load Balancing V2 client and retrieve the DNS names of existing load balancers in a specified region. Ensure you have the necessary AWS credentials configured. ```java public class HelloLoadBalancer { public static void main(String[] args) { ElasticLoadBalancingV2Client loadBalancingV2Client = ElasticLoadBalancingV2Client.builder() .region(Region.US_EAST_1) .build(); DescribeLoadBalancersResponse loadBalancersResponse = loadBalancingV2Client .describeLoadBalancers(r -> r.pageSize(10)); List loadBalancerList = loadBalancersResponse.loadBalancers(); for (LoadBalancer lb : loadBalancerList) System.out.println("Load Balancer DNS name = " + lb.dnsName()); } } ``` -------------------------------- ### Hello Amazon SNS - List Topics Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_sns_code_examples.md This example demonstrates how to get started with Amazon SNS by listing all SNS topics in a region. It requires the AWS SDK for Java 2.x and an initialized SnsClient. ```java package com.example.sns; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import software.amazon.awssdk.services.sns.paginators.ListTopicsIterable; public class HelloSNS { public static void main(String[] args) { SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); listSNSTopics(snsClient); snsClient.close(); } public static void listSNSTopics(SnsClient snsClient) { try { ListTopicsIterable listTopics = snsClient.listTopicsPaginator(); listTopics.stream() .flatMap(r -> r.topics().stream()) .forEach(content -> System.out.println(" Topic ARN: " + content.topicArn())); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } } ``` -------------------------------- ### EventbridgeMVP - Main Method and Setup Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_eventbridge_code_examples.md This is the main entry point for the EventBridge MVP example. It handles command-line argument parsing, client initialization for EventBridge, S3, IAM, and SNS, and prints introductory messages. It also includes setup for creating an IAM role and an S3 bucket. ```java /** * 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 * * This Java code example performs the following tasks: * * This Java V2 example performs the following tasks with Amazon EventBridge: * * 1. Creates an AWS Identity and Access Management (IAM) role to use with * Amazon EventBridge. * 2. Amazon Simple Storage Service (Amazon S3) bucket with EventBridge events * enabled. * 3. Creates a rule that triggers when an object is uploaded to Amazon S3. * 4. Lists rules on the event bus. * 5. Creates a new Amazon Simple Notification Service (Amazon SNS) topic and * lets the user subscribe to it. * 6. Adds a target to the rule that sends an email to the specified topic. * 7. Creates an EventBridge event that sends an email when an Amazon S3 object * is created. * 8. Lists Targets. * 9. Lists the rules for the same target. * 10. Triggers the rule by uploading a file to the Amazon S3 bucket. * 11. Disables a specific rule. * 12. Checks and print the state of the rule. * 13. Adds a transform to the rule to change the text of the email. * 14. Enables a specific rule. * 15. Triggers the updated rule by uploading a file to the Amazon S3 bucket. * 16. Updates the rule to be a custom rule pattern. * 17. Sending an event to trigger the rule. * 18. Cleans up resources. * */ public class EventbridgeMVP { public static final String DASHES = new String(new char[80]).replace("\0", "-"); public static void main(String[] args) throws InterruptedException, IOException { final String usage = """ Usage: Where: roleName - The name of the role to create. bucketName - The Amazon Simple Storage Service (Amazon S3) bucket name to create. topicName - The name of the Amazon Simple Notification Service (Amazon SNS) topic to create. eventRuleName - The Amazon EventBridge rule name to create. """; if (args.length != 5) { System.out.println(usage); System.exit(1); } String polJSON = "{" + "\"Version\": \"2012-10-17T00:00:00Z\"," + "\"Statement\": [{" + "\"Effect\": \"Allow\"," + "\"Principal\": {" + "\"Service\": \"events.amazonaws.com\"" + "}," + "\"Action\": \"sts:AssumeRole\"" + "}]" + "}"; Scanner sc = new Scanner(System.System.in); String roleName = args[0]; String bucketName = args[1]; String topicName = args[2]; String eventRuleName = args[3]; Region region = Region.US_EAST_1; EventBridgeClient eventBrClient = EventBridgeClient.builder() .region(region) .build(); S3Client s3Client = S3Client.builder() .region(region) .build(); Region regionGl = Region.AWS_GLOBAL; IamClient iam = IamClient.builder() .region(regionGl) .build(); SnsClient snsClient = SnsClient.builder() .region(region) .build(); System.out.println(DASHES); System.out.println("Welcome to the Amazon EventBridge example scenario."); System.out.println(DASHES); System.out.println(DASHES); System.out .println("1. Create an AWS Identity and Access Management (IAM) role to use with Amazon EventBridge."); String roleArn = createIAMRole(iam, roleName, polJSON); System.out.println(DASHES); System.out.println(DASHES); System.out.println("2. Create an S3 bucket with EventBridge events enabled."); if (checkBucket(s3Client, bucketName)) { System.out.println("Bucket " + bucketName + " already exists. Ending this scenario."); System.exit(1); } createBucket(s3Client, bucketName); Thread.sleep(3000); setBucketNotification(s3Client, bucketName); System.out.println(DASHES); System.out.println(DASHES); ``` -------------------------------- ### StartJobRun Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_glue_code_examples.md This code example demonstrates how to start a job run in AWS Glue using the SDK for Java 2.x. ```APIDOC ## StartJobRun ### Description Starts a job run in AWS Glue. ### Method Signature `public static void startJob(GlueClient glueClient, String jobName, String inputDatabase, String inputTable, String outBucket)` ### Parameters - **glueClient** (GlueClient) - The AWS Glue client to use for the job run. - **jobName** (String) - The name of the Glue job to run. - **inputDatabase** (String) - The name of the input database. - **inputTable** (String) - The name of the input table. - **outBucket** (String) - The URL of the output S3 bucket. ### Throws - GlueException: If there is an error starting the job run. ### Example Usage ```java /** * Starts a job run in AWS Glue. * * @param glueClient the AWS Glue client to use for the job run * @param jobName the name of the Glue job to run * @param inputDatabase the name of the input database * @param inputTable the name of the input table * @param outBucket the URL of the output S3 bucket * @throws GlueException if there is an error starting the job run */ public static void startJob(GlueClient glueClient, String jobName, String inputDatabase, String inputTable, String outBucket) { try { Map myMap = new HashMap<>(); myMap.put("--input_database", inputDatabase); myMap.put("--input_table", inputTable); myMap.put("--output_bucket_url", outBucket); StartJobRunRequest runRequest = StartJobRunRequest.builder() .workerType(WorkerType.G_1_X) .numberOfWorkers(10) .arguments(myMap) .jobName(jobName) .build(); StartJobRunResponse response = glueClient.startJobRun(runRequest); System.out.println("The request Id of the job is " + response.responseMetadata().requestId()); } catch (GlueException e) { throw e; } } ``` ### API Reference For API details, see [StartJobRun](https://docs.aws.amazon.com/goto/SdkForJavaV2/glue-2017-03-31/StartJobRun) in *AWS SDK for Java 2.x API Reference*. ``` -------------------------------- ### AWS Glue Scenario: Get Started with Crawlers and Jobs (Java) Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_glue_code_examples.md This comprehensive example demonstrates a full AWS Glue scenario, including creating a database, crawler, and job, then starting and monitoring them. It requires specific command-line arguments for configuration. Ensure your development environment and AWS credentials are set up. ```java /** * 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 * * To set up the resources, see this documentation topic: * * https://docs.aws.amazon.com/glue/latest/ug/tutorial-add-crawler.html * * This example performs the following tasks: * * 1. Create a database. * 2. Create a crawler. * 3. Get a crawler. * 4. Start a crawler. * 5. Get a database. * 6. Get tables. * 7. Create a job. * 8. Start a job run. * 9. List all jobs. * 10. Get job runs. * 11. Delete a job. * 12. Delete a database. * 13. Delete a crawler. */ public class GlueScenario { public static final String DASHES = new String(new char[80]).replace("\0", "-"); public static void main(String[] args) throws InterruptedException { final String usage = """ Usage: """ Where: iam - The ARN of the IAM role that has AWS Glue and S3 permissions. """ s3Path - The Amazon Simple Storage Service (Amazon S3) target that contains data (for example, s3:///read). cron - A cron expression used to specify the schedule (i.e., cron(15 12 * * ? *). dbName - The database name. """ crawlerName - The name of the crawler. """ jobName - The name you assign to this job definition. scriptLocation - The Amazon S3 path to a script that runs a job. locationUri - The location of the database (you can find this file in resources folder). bucketNameSc - The Amazon S3 bucket name used when creating a job """; if (args.length != 9) { System.out.println(usage); return; } Scanner scanner = new Scanner(System.in); String iam = args[0]; String s3Path = args[1]; String cron = args[2]; String dbName = args[3]; String crawlerName = args[4]; String jobName = args[5]; String scriptLocation = args[6]; String locationUri = args[7]; String bucketNameSc = args[8]; Region region = Region.US_EAST_1; GlueClient glueClient = GlueClient.builder() .region(region) .build(); System.out.println(DASHES); System.out.println("Welcome to the AWS Glue scenario."); System.out.println(""" AWS Glue is a fully managed extract, transform, and load (ETL) service provided by Amazon Web Services (AWS). It is designed to simplify the process of building, running, and maintaining ETL pipelines, which are essential for data integration and data warehousing tasks. One of the key features of AWS Glue is its ability to automatically discover and catalog data stored in various sources, such as Amazon S3, Amazon RDS, Amazon Redshift, and other databases. This cataloging process creates a central metadata repository, known as the AWS Glue Data Catalog, which provides a unified view of an organization's data assets. This metadata can then be used to create ETL jobs, which can be scheduled and run on-demand or on a regular basis. Lets get started. """); waitForInputToContinue(scanner); System.out.println(DASHES); System.out.println(DASHES); System.out.println("1. Create a database."); try { createDatabase(glueClient, dbName, locationUri); } catch (GlueException e) { if (e.awsErrorDetails().errorMessage().equals("Database already exists.")) { ``` -------------------------------- ### Describe DB Instances using Java SDK Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_rds_code_examples.md This code example demonstrates how to get started with Amazon RDS by describing DB instances. Ensure your development environment and credentials are set up before running. ```java import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rds.RdsClient; import software.amazon.awssdk.services.rds.model.DescribeDbInstancesResponse; import software.amazon.awssdk.services.rds.model.DBInstance; import software.amazon.awssdk.services.rds.model.RdsException; import java.util.List; /** * 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 DescribeDBInstances { public static void main(String[] args) { Region region = Region.US_EAST_1; RdsClient rdsClient = RdsClient.builder() .region(region) .build(); describeInstances(rdsClient); rdsClient.close(); } public static void describeInstances(RdsClient rdsClient) { try { DescribeDbInstancesResponse response = rdsClient.describeDBInstances(); List instanceList = response.dbInstances(); for (DBInstance instance : instanceList) { System.out.println("Instance ARN is: " + instance.dbInstanceArn()); System.out.println("The Engine is " + instance.engine()); System.out.println("Connection endpoint is" + instance.endpoint().address()); } } catch (RdsException e) { System.out.println(e.getLocalizedMessage()); System.exit(1); } } } ``` -------------------------------- ### Get Started with Amazon S3 Control Async Client Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_s3-control_code_examples.md This example demonstrates how to initialize and use an asynchronous S3 Control client. It configures various timeouts, retry policies, and uses environment variables for credentials. It also shows how to list batch jobs asynchronously. ```java import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.retry.RetryMode; import software.amazon.awssdk.core.retry.RetryPolicy; import software.amazon.awssdk.http.async.SdkAsyncHttpClient; import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3control.S3ControlAsyncClient; import software.amazon.awssdk.services.s3control.model.JobListDescriptor; import software.amazon.awssdk.services.s3control.model.JobStatus; import software.amazon.awssdk.services.s3control.model.ListJobsRequest; import software.amazon.awssdk.services.s3control.paginators.ListJobsPublisher; import java.time.Duration; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; /** * Before running this example: *

* The SDK must be able to authenticate AWS requests on your behalf. If you have not configured * authentication for SDKs and tools,see https://docs.aws.amazon.com/sdkref/latest/guide/access.html in the AWS SDKs and Tools Reference Guide. *

* You must have a runtime environment configured with the Java SDK. * See https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html in the Developer Guide if this is not set up. */ public class HelloS3Batch { private static S3ControlAsyncClient asyncClient; public static void main(String[] args) { S3BatchActions actions = new S3BatchActions(); String accountId = actions.getAccountId(); try { listBatchJobsAsync(accountId) .exceptionally(ex -> { System.err.println("List batch jobs failed: " + ex.getMessage()); return null; }) .join(); } catch (CompletionException ex) { System.err.println("Failed to list batch jobs: " + ex.getMessage()); } } /** * Retrieves the asynchronous S3 Control client instance. *

* This method creates and returns a singleton instance of the {@link S3ControlAsyncClient}. If the instance * has not been created yet, it will be initialized with the following configuration: *

    *
  • Maximum concurrency: 100
  • *
  • Connection timeout: 60 seconds
  • *
  • Read timeout: 60 seconds
  • *
  • Write timeout: 60 seconds
  • *
  • API call timeout: 2 minutes
  • *
  • API call attempt timeout: 90 seconds
  • *
  • Retry policy: 3 retries
  • *
  • Region: US_EAST_1
  • *
  • Credentials provider: {@link EnvironmentVariableCredentialsProvider}
  • *
* * @return the asynchronous S3 Control client instance */ private static S3ControlAsyncClient getAsyncClient() { if (asyncClient == null) { SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.builder() .maxConcurrency(100) .connectionTimeout(Duration.ofSeconds(60)) .readTimeout(Duration.ofSeconds(60)) .writeTimeout(Duration.ofSeconds(60)) .build(); ClientOverrideConfiguration overrideConfig = ClientOverrideConfiguration.builder() .apiCallTimeout(Duration.ofMinutes(2)) .apiCallAttemptTimeout(Duration.ofSeconds(90)) .retryStrategy(RetryMode.STANDARD) .build(); ``` -------------------------------- ### Hello Amazon Location - Java Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_location_code_examples.md This example demonstrates how to get started with Amazon Location Service by listing geofences from a specified collection asynchronously. Ensure you have set up your AWS credentials and created a geofence collection in the AWS Management Console. ```java /** * 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 * * In addition, you need to create a collection using the AWS Management * console. For information, see the following documentation. * * https://docs.aws.amazon.com/location/latest/developerguide/geofence-gs.html */ public class HelloLocation { private static LocationAsyncClient locationAsyncClient; private static final Logger logger = LoggerFactory.getLogger(HelloLocation.class); // This Singleton pattern ensures that only one `LocationClient` // instance. private static LocationAsyncClient getClient() { if (locationAsyncClient == null) { SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.builder() .maxConcurrency(100) .connectionTimeout(Duration.ofSeconds(60)) .readTimeout(Duration.ofSeconds(60)) .writeTimeout(Duration.ofSeconds(60)) .build(); ClientOverrideConfiguration overrideConfig = ClientOverrideConfiguration.builder() .apiCallTimeout(Duration.ofMinutes(2)) .apiCallAttemptTimeout(Duration.ofSeconds(90)) .retryStrategy(RetryMode.STANDARD) .build(); locationAsyncClient = LocationAsyncClient.builder() .httpClient(httpClient) .overrideConfiguration(overrideConfig) .build(); } return locationAsyncClient; } public static void main(String[] args) { final String usage = """ Usage: Where: collectionName - The Amazon location collection name. """; if (args.length != 1) { System.out.println(usage); System.exit(1); } String collectionName = args[0]; listGeofences(collectionName); } /** * Lists geofences from a specified geofence collection asynchronously. * * @param collectionName The name of the geofence collection to list geofences from. * @return A {@link CompletableFuture} representing the result of the asynchronous operation. * The future completes when all geofences have been processed and logged. */ public static CompletableFuture listGeofences(String collectionName) { ListGeofencesRequest geofencesRequest = ListGeofencesRequest.builder() .collectionName(collectionName) .build(); ListGeofencesPublisher paginator = getClient().listGeofencesPaginator(geofencesRequest); CompletableFuture future = paginator.subscribe(response -> { if (response.entries().isEmpty()) { logger.info("No Geofences were found in the collection."); } else { response.entries().forEach(geofence -> logger.info("Geofence ID: " + geofence.geofenceId()) ); } }); return future; } } ``` -------------------------------- ### Setup S3 Buckets and Upload Files Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_s3_code_examples.md This method sets up S3 buckets, optionally enabling object lock, and uploads test files. It guides the user through the setup process using console prompts. ```java private static void setup() { Scanner scanner = new Scanner(System.in); System.out.println(""" For this workflow, we will use the AWS SDK for Java to create several S3 buckets and files to demonstrate working with S3 locking features. """); System.out.println("S3 buckets can be created either with or without object lock enabled."); System.out.println("Press Enter to continue..."); scanner.nextLine(); // Create three S3 buckets. s3LockActions.createBucketWithLockOptions(false, bucketNames.get(0)); s3LockActions.createBucketWithLockOptions(true, bucketNames.get(1)); s3LockActions.createBucketWithLockOptions(false, bucketNames.get(2)); System.out.println("Press Enter to continue."); scanner.nextLine(); System.out.println("Bucket "+bucketNames.get(2) +" will be configured to use object locking with a default retention period."); s3LockActions.modifyBucketDefaultRetention(bucketNames.get(2)); System.out.println("Press Enter to continue."); scanner.nextLine(); System.out.println("Object lock policies can also be added to existing buckets. For this example, we will use "+bucketNames.get(1)); s3LockActions.enableObjectLockOnBucket(bucketNames.get(1)); System.out.println("Press Enter to continue."); scanner.nextLine(); // Upload some files to the buckets. System.out.println("Now let's add some test files:"); String fileName = "exampleFile.txt"; int fileCount = 2; try (BufferedWriter writer = new BufferedWriter(new java.io.FileWriter(fileName))) { writer.write("This is a sample file for uploading to a bucket."); } catch (IOException e) { e.printStackTrace(); } for (String bucketName : bucketNames){ for (int i = 0; i < fileCount; i++) { // Get the file name without extension. String fileNameWithoutExtension = java.nio.file.Paths.get(fileName).getFileName().toString(); int extensionIndex = fileNameWithoutExtension.lastIndexOf('.'); if (extensionIndex > 0) { fileNameWithoutExtension = fileNameWithoutExtension.substring(0, extensionIndex); } // Create the numbered file names. String numberedFileName = fileNameWithoutExtension + i + getFileExtension(fileName); fileNames.add(numberedFileName); s3LockActions.uploadFile(bucketName, numberedFileName, fileName); } } String question = null; System.out.print("Press Enter to continue..."); scanner.nextLine(); System.out.println("Now we can set some object lock policies on individual files:"); for (String bucketName : bucketNames) { for (int i = 0; i < fileNames.size(); i++){ ``` -------------------------------- ### StartExecution Source: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_sfn_code_examples.md This code example demonstrates how to start a new execution of a Step Functions state machine with input data using the AWS SDK for Java v2. ```APIDOC ## StartExecution ### Description Starts a new execution of the specified state machine. Use this API action to start an execution if you are using the Step Functions Map state to manage concurrent executions. ### Method `startExecution(StartExecutionRequest)` ### Parameters #### Request Body - **stateMachineArn** (String) - Required - The Amazon Resource Name (ARN) of the state machine to start. - **input** (String) - Optional - The JSON input of the execution. - **name** (String) - Optional - The name of the execution. If you don't provide a name, a unique name is generated. ### Request Example ```java import software.amazon.awssdk.services.sfn.SfnClient; import software.amazon.awssdk.services.sfn.model.StartExecutionRequest; import software.amazon.awssdk.services.sfn.model.StartExecutionResponse; import software.amazon.awssdk.services.sfn.model.SfnException; import java.util.UUID; public class StartExecutionExample { public static String startWorkflow(SfnClient sfnClient, String stateMachineArn, String jsonEx) { UUID uuid = UUID.randomUUID(); String uuidValue = uuid.toString(); try { StartExecutionRequest executionRequest = StartExecutionRequest.builder() .input(jsonEx) .stateMachineArn(stateMachineArn) .name(uuidValue) .build(); StartExecutionResponse response = sfnClient.startExecution(executionRequest); return response.executionArn(); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; } } ``` ### Response #### Success Response (200) Returns the Amazon Resource Name (ARN) of the execution. #### Response Example ```json { "executionArn": "arn:aws:states:us-east-1:123456789012:execution:MyStateMachine:MyExecutionName", "startDate": "2023-10-27T10:00:00Z" } ``` ```