Esempi di Step Functions con SDK for Java 2.x - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di Step Functions con SDK for Java 2.x

I seguenti esempi di codice mostrano come eseguire azioni e implementare scenari comuni utilizzando AWS SDK for Java 2.x with Step Functions.

Le operazioni sono estratti di codice da programmi più grandi e devono essere eseguite nel contesto. Sebbene le operazioni mostrino come richiamare le singole funzioni del servizio, è possibile visualizzarle contestualizzate negli scenari correlati e negli esempi tra servizi.

Scenari: esempi di codice che mostrano come eseguire un'attività specifica richiamando più funzioni all'interno dello stesso servizio.

Ogni esempio include un collegamento a GitHub, dove è possibile trovare istruzioni su come configurare ed eseguire il codice nel contesto.

Nozioni di base

I seguenti esempi di codice mostrano come iniziare a usare Step Functions.

SDK per Java 2.x
Nota

C'è altro su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

Versione Java di Hello.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sfn.SfnClient; import software.amazon.awssdk.services.sfn.model.ListStateMachinesResponse; import software.amazon.awssdk.services.sfn.model.SfnException; import software.amazon.awssdk.services.sfn.model.StateMachineListItem; 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 ListStateMachines { public static void main(String[] args) { Region region = Region.US_EAST_1; SfnClient sfnClient = SfnClient.builder() .region(region) .build(); listMachines(sfnClient); sfnClient.close(); } public static void listMachines(SfnClient sfnClient) { try { ListStateMachinesResponse response = sfnClient.listStateMachines(); List<StateMachineListItem> machines = response.stateMachines(); for (StateMachineListItem machine : machines) { System.out.println("The name of the state machine is: " + machine.name()); System.out.println("The ARN value is : " + machine.stateMachineArn()); } } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
  • Per i dettagli sull'API, ListStateMachinesconsulta AWS SDK for Java 2.x API Reference.

Argomenti

Azioni

Il seguente esempio di codice mostra come utilizzareCreateActivity.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static String createActivity(SfnClient sfnClient, String activityName) { try { CreateActivityRequest activityRequest = CreateActivityRequest.builder() .name(activityName) .build(); CreateActivityResponse response = sfnClient.createActivity(activityRequest); return response.activityArn(); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
  • Per i dettagli sull'API, consulta la CreateActivitysezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareCreateStateMachine.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static String createMachine(SfnClient sfnClient, String roleARN, String stateMachineName, String json) { try { CreateStateMachineRequest machineRequest = CreateStateMachineRequest.builder() .definition(json) .name(stateMachineName) .roleArn(roleARN) .type(StateMachineType.STANDARD) .build(); CreateStateMachineResponse response = sfnClient.createStateMachine(machineRequest); return response.stateMachineArn(); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
  • Per i dettagli sull'API, consulta la CreateStateMachinesezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareDeleteActivity.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static void deleteActivity(SfnClient sfnClient, String actArn) { try { DeleteActivityRequest activityRequest = DeleteActivityRequest.builder() .activityArn(actArn) .build(); sfnClient.deleteActivity(activityRequest); System.out.println("You have deleted " + actArn); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
  • Per i dettagli sull'API, consulta la DeleteActivitysezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareDeleteStateMachine.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static void deleteMachine(SfnClient sfnClient, String stateMachineArn) { try { DeleteStateMachineRequest deleteStateMachineRequest = DeleteStateMachineRequest.builder() .stateMachineArn(stateMachineArn) .build(); sfnClient.deleteStateMachine(deleteStateMachineRequest); DescribeStateMachineRequest describeStateMachine = DescribeStateMachineRequest.builder() .stateMachineArn(stateMachineArn) .build(); while (true) { DescribeStateMachineResponse response = sfnClient.describeStateMachine(describeStateMachine); System.out.println("The state machine is not deleted yet. The status is " + response.status()); Thread.sleep(3000); } } catch (SfnException | InterruptedException e) { System.err.println(e.getMessage()); } System.out.println(stateMachineArn + " was successfully deleted."); }
  • Per i dettagli sull'API, consulta la DeleteStateMachinesezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareDescribeExecution.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static void describeExe(SfnClient sfnClient, String executionArn) { try { DescribeExecutionRequest executionRequest = DescribeExecutionRequest.builder() .executionArn(executionArn) .build(); String status = ""; boolean hasSucceeded = false; while (!hasSucceeded) { DescribeExecutionResponse response = sfnClient.describeExecution(executionRequest); status = response.statusAsString(); if (status.compareTo("RUNNING") == 0) { System.out.println("The state machine is still running, let's wait for it to finish."); Thread.sleep(2000); } else if (status.compareTo("SUCCEEDED") == 0) { System.out.println("The Step Function workflow has succeeded"); hasSucceeded = true; } else { System.out.println("The Status is neither running or succeeded"); } } System.out.println("The Status is " + status); } catch (SfnException | InterruptedException e) { System.err.println(e.getMessage()); System.exit(1); } }
  • Per i dettagli sull'API, consulta la DescribeExecutionsezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareDescribeStateMachine.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static void describeStateMachine(SfnClient sfnClient, String stateMachineArn) { try { DescribeStateMachineRequest stateMachineRequest = DescribeStateMachineRequest.builder() .stateMachineArn(stateMachineArn) .build(); DescribeStateMachineResponse response = sfnClient.describeStateMachine(stateMachineRequest); System.out.println("The name of the State machine is " + response.name()); System.out.println("The status of the State machine is " + response.status()); System.out.println("The ARN value of the State machine is " + response.stateMachineArn()); System.out.println("The role ARN value is " + response.roleArn()); } catch (SfnException e) { System.err.println(e.getMessage()); } }
  • Per i dettagli sull'API, consulta la DescribeStateMachinesezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareGetActivityTask.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static List<String> getActivityTask(SfnClient sfnClient, String actArn) { List<String> myList = new ArrayList<>(); GetActivityTaskRequest getActivityTaskRequest = GetActivityTaskRequest.builder() .activityArn(actArn) .build(); GetActivityTaskResponse response = sfnClient.getActivityTask(getActivityTaskRequest); myList.add(response.taskToken()); myList.add(response.input()); return myList; } /// <summary> /// Stop execution of a Step Functions workflow. /// </summary> /// <param name="executionArn">The Amazon Resource Name (ARN) of /// the Step Functions execution to stop.</param> /// <returns>A Boolean value indicating the success of the action.</returns> public async Task<bool> StopExecution(string executionArn) { var response = await _amazonStepFunctions.StopExecutionAsync(new StopExecutionRequest { ExecutionArn = executionArn }); return response.HttpStatusCode == System.Net.HttpStatusCode.OK; }
  • Per i dettagli sull'API, consulta la GetActivityTasksezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareListActivities.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sfn.SfnClient; import software.amazon.awssdk.services.sfn.model.ListActivitiesRequest; import software.amazon.awssdk.services.sfn.model.ListActivitiesResponse; import software.amazon.awssdk.services.sfn.model.SfnException; import software.amazon.awssdk.services.sfn.model.ActivityListItem; 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 ListActivities { public static void main(String[] args) { Region region = Region.US_EAST_1; SfnClient sfnClient = SfnClient.builder() .region(region) .build(); listAllActivites(sfnClient); sfnClient.close(); } public static void listAllActivites(SfnClient sfnClient) { try { ListActivitiesRequest activitiesRequest = ListActivitiesRequest.builder() .maxResults(10) .build(); ListActivitiesResponse response = sfnClient.listActivities(activitiesRequest); List<ActivityListItem> items = response.activities(); for (ActivityListItem item : items) { System.out.println("The activity ARN is " + item.activityArn()); System.out.println("The activity name is " + item.name()); } } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
  • Per i dettagli sull'API, consulta la ListActivitiessezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareListExecutions.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static void getExeHistory(SfnClient sfnClient, String exeARN) { try { GetExecutionHistoryRequest historyRequest = GetExecutionHistoryRequest.builder() .executionArn(exeARN) .maxResults(10) .build(); GetExecutionHistoryResponse historyResponse = sfnClient.getExecutionHistory(historyRequest); List<HistoryEvent> events = historyResponse.events(); for (HistoryEvent event : events) { System.out.println("The event type is " + event.type().toString()); } } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
  • Per i dettagli sull'API, consulta la ListExecutionssezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareListStateMachines.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sfn.SfnClient; import software.amazon.awssdk.services.sfn.model.ListStateMachinesResponse; import software.amazon.awssdk.services.sfn.model.SfnException; import software.amazon.awssdk.services.sfn.model.StateMachineListItem; 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 ListStateMachines { public static void main(String[] args) { Region region = Region.US_EAST_1; SfnClient sfnClient = SfnClient.builder() .region(region) .build(); listMachines(sfnClient); sfnClient.close(); } public static void listMachines(SfnClient sfnClient) { try { ListStateMachinesResponse response = sfnClient.listStateMachines(); List<StateMachineListItem> machines = response.stateMachines(); for (StateMachineListItem machine : machines) { System.out.println("The name of the state machine is: " + machine.name()); System.out.println("The ARN value is : " + machine.stateMachineArn()); } } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
  • Per i dettagli sull'API, consulta la ListStateMachinessezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareSendTaskSuccess.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

public static void sendTaskSuccess(SfnClient sfnClient, String token, String json) { try { SendTaskSuccessRequest successRequest = SendTaskSuccessRequest.builder() .taskToken(token) .output(json) .build(); sfnClient.sendTaskSuccess(successRequest); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
  • Per i dettagli sull'API, consulta la SendTaskSuccesssezione AWS SDK for Java 2.x API Reference.

Il seguente esempio di codice mostra come utilizzareStartExecution.

SDK per Java 2.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

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 ""; }
  • Per i dettagli sull'API, consulta la StartExecutionsezione AWS SDK for Java 2.x API Reference.

Scenari

L'esempio di codice seguente mostra come:

  • Crea un'attività.

  • Crea una macchina a stati da una definizione di Amazon States Language che contiene l'attività creata in precedenza come passaggio.

  • Esegui la macchina a stati e rispondi all'attività con l'input dell'utente.

  • Ottieni lo stato e l'output finali al termine dell'esecuzione, quindi ripulisci le risorse.

SDK per Java 2.x
Nota

C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

/** * You can obtain the JSON file to create a state machine in the following * GitHub location. * * https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/resources/sample_files * * To run this code example, place the chat_sfn_state_machine.json file into * your project's resources folder. * * Also, set up your development environment, including your credentials. * * For information, see this documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html * * This Java code example performs the following tasks: * * 1. Creates an activity. * 2. Creates a state machine. * 3. Describes the state machine. * 4. Starts execution of the state machine and interacts with it. * 5. Describes the execution. * 6. Delete the activity. * 7. Deletes the state machine. */ public class StepFunctionsScenario { public static final String DASHES = new String(new char[80]).replace("\0", "-"); public static void main(String[] args) throws Exception { final String usage = """ Usage: <roleARN> <activityName> <stateMachineName> Where: roleName - The name of the IAM role to create for this state machine. activityName - The name of an activity to create. stateMachineName - The name of the state machine to create. """; if (args.length != 3) { System.out.println(usage); System.exit(1); } String roleName = args[0]; String activityName = args[1]; String stateMachineName = args[2]; String polJSON = "{\n" + " \"Version\": \"2012-10-17\",\n" + " \"Statement\": [\n" + " {\n" + " \"Sid\": \"\",\n" + " \"Effect\": \"Allow\",\n" + " \"Principal\": {\n" + " \"Service\": \"states.amazonaws.com\"\n" + " },\n" + " \"Action\": \"sts:AssumeRole\"\n" + " }\n" + " ]\n" + "}"; Scanner sc = new Scanner(System.in); boolean action = false; Region region = Region.US_EAST_1; SfnClient sfnClient = SfnClient.builder() .region(region) .build(); Region regionGl = Region.AWS_GLOBAL; IamClient iam = IamClient.builder() .region(regionGl) .build(); System.out.println(DASHES); System.out.println("Welcome to the AWS Step Functions example scenario."); System.out.println(DASHES); System.out.println(DASHES); System.out.println("1. Create an activity."); String activityArn = createActivity(sfnClient, activityName); System.out.println("The ARN of the activity is " + activityArn); System.out.println(DASHES); // Get JSON to use for the state machine and place the activityArn value into // it. InputStream input = StepFunctionsScenario.class.getClassLoader() .getResourceAsStream("chat_sfn_state_machine.json"); ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNode = mapper.readValue(input, JsonNode.class); String jsonString = mapper.writeValueAsString(jsonNode); // Modify the Resource node. ObjectMapper objectMapper = new ObjectMapper(); JsonNode root = objectMapper.readTree(jsonString); ((ObjectNode) root.path("States").path("GetInput")).put("Resource", activityArn); // Convert the modified Java object back to a JSON string. String stateDefinition = objectMapper.writeValueAsString(root); System.out.println(stateDefinition); System.out.println(DASHES); System.out.println("2. Create a state machine."); String roleARN = createIAMRole(iam, roleName, polJSON); String stateMachineArn = createMachine(sfnClient, roleARN, stateMachineName, stateDefinition); System.out.println("The ARN of the state machine is " + stateMachineArn); System.out.println(DASHES); System.out.println(DASHES); System.out.println("3. Describe the state machine."); describeStateMachine(sfnClient, stateMachineArn); System.out.println("What should ChatSFN call you?"); String userName = sc.nextLine(); System.out.println("Hello " + userName); System.out.println(DASHES); System.out.println(DASHES); // The JSON to pass to the StartExecution call. String executionJson = "{ \"name\" : \"" + userName + "\" }"; System.out.println(executionJson); System.out.println("4. Start execution of the state machine and interact with it."); String runArn = startWorkflow(sfnClient, stateMachineArn, executionJson); System.out.println("The ARN of the state machine execution is " + runArn); List<String> myList; while (!action) { myList = getActivityTask(sfnClient, activityArn); System.out.println("ChatSFN: " + myList.get(1)); System.out.println(userName + " please specify a value."); String myAction = sc.nextLine(); if (myAction.compareTo("done") == 0) action = true; System.out.println("You have selected " + myAction); String taskJson = "{ \"action\" : \"" + myAction + "\" }"; System.out.println(taskJson); sendTaskSuccess(sfnClient, myList.get(0), taskJson); } System.out.println(DASHES); System.out.println(DASHES); System.out.println("5. Describe the execution."); describeExe(sfnClient, runArn); System.out.println(DASHES); System.out.println(DASHES); System.out.println("6. Delete the activity."); deleteActivity(sfnClient, activityArn); System.out.println(DASHES); System.out.println(DASHES); System.out.println("7. Delete the state machines."); deleteMachine(sfnClient, stateMachineArn); System.out.println(DASHES); System.out.println(DASHES); System.out.println("The AWS Step Functions example scenario is complete."); System.out.println(DASHES); } public static String createIAMRole(IamClient iam, String rolename, String polJSON) { try { CreateRoleRequest request = CreateRoleRequest.builder() .roleName(rolename) .assumeRolePolicyDocument(polJSON) .description("Created using the AWS SDK for Java") .build(); CreateRoleResponse response = iam.createRole(request); return response.role().arn(); } catch (IamException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; } public static void describeExe(SfnClient sfnClient, String executionArn) { try { DescribeExecutionRequest executionRequest = DescribeExecutionRequest.builder() .executionArn(executionArn) .build(); String status = ""; boolean hasSucceeded = false; while (!hasSucceeded) { DescribeExecutionResponse response = sfnClient.describeExecution(executionRequest); status = response.statusAsString(); if (status.compareTo("RUNNING") == 0) { System.out.println("The state machine is still running, let's wait for it to finish."); Thread.sleep(2000); } else if (status.compareTo("SUCCEEDED") == 0) { System.out.println("The Step Function workflow has succeeded"); hasSucceeded = true; } else { System.out.println("The Status is neither running or succeeded"); } } System.out.println("The Status is " + status); } catch (SfnException | InterruptedException e) { System.err.println(e.getMessage()); System.exit(1); } } public static void sendTaskSuccess(SfnClient sfnClient, String token, String json) { try { SendTaskSuccessRequest successRequest = SendTaskSuccessRequest.builder() .taskToken(token) .output(json) .build(); sfnClient.sendTaskSuccess(successRequest); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } public static List<String> getActivityTask(SfnClient sfnClient, String actArn) { List<String> myList = new ArrayList<>(); GetActivityTaskRequest getActivityTaskRequest = GetActivityTaskRequest.builder() .activityArn(actArn) .build(); GetActivityTaskResponse response = sfnClient.getActivityTask(getActivityTaskRequest); myList.add(response.taskToken()); myList.add(response.input()); return myList; } public static void deleteActivity(SfnClient sfnClient, String actArn) { try { DeleteActivityRequest activityRequest = DeleteActivityRequest.builder() .activityArn(actArn) .build(); sfnClient.deleteActivity(activityRequest); System.out.println("You have deleted " + actArn); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } public static void describeStateMachine(SfnClient sfnClient, String stateMachineArn) { try { DescribeStateMachineRequest stateMachineRequest = DescribeStateMachineRequest.builder() .stateMachineArn(stateMachineArn) .build(); DescribeStateMachineResponse response = sfnClient.describeStateMachine(stateMachineRequest); System.out.println("The name of the State machine is " + response.name()); System.out.println("The status of the State machine is " + response.status()); System.out.println("The ARN value of the State machine is " + response.stateMachineArn()); System.out.println("The role ARN value is " + response.roleArn()); } catch (SfnException e) { System.err.println(e.getMessage()); } } public static void deleteMachine(SfnClient sfnClient, String stateMachineArn) { try { DeleteStateMachineRequest deleteStateMachineRequest = DeleteStateMachineRequest.builder() .stateMachineArn(stateMachineArn) .build(); sfnClient.deleteStateMachine(deleteStateMachineRequest); DescribeStateMachineRequest describeStateMachine = DescribeStateMachineRequest.builder() .stateMachineArn(stateMachineArn) .build(); while (true) { DescribeStateMachineResponse response = sfnClient.describeStateMachine(describeStateMachine); System.out.println("The state machine is not deleted yet. The status is " + response.status()); Thread.sleep(3000); } } catch (SfnException | InterruptedException e) { System.err.println(e.getMessage()); } System.out.println(stateMachineArn + " was successfully deleted."); } 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 ""; } public static String createMachine(SfnClient sfnClient, String roleARN, String stateMachineName, String json) { try { CreateStateMachineRequest machineRequest = CreateStateMachineRequest.builder() .definition(json) .name(stateMachineName) .roleArn(roleARN) .type(StateMachineType.STANDARD) .build(); CreateStateMachineResponse response = sfnClient.createStateMachine(machineRequest); return response.stateMachineArn(); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; } public static String createActivity(SfnClient sfnClient, String activityName) { try { CreateActivityRequest activityRequest = CreateActivityRequest.builder() .name(activityName) .build(); CreateActivityResponse response = sfnClient.createActivity(activityRequest); return response.activityArn(); } catch (SfnException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; } }