private static async Task StartAndMonitorExecution() { string executionName = Guid.NewGuid().ToString(); using (var client = new AmazonStepFunctionsClient(RegionEndpoint.SAEast1)) { // manda executar o Step Function var payload = new SimpleStepFunctionInput { Name = "pirilampo", Number = _rnd.Next() }; var request = new StartExecutionRequest { Input = JsonConvert.SerializeObject(payload, Formatting.None, _jsonSerializerSettings), Name = executionName, StateMachineArn = _stateMachineArn }; Console.WriteLine("Sending:"); Console.WriteLine(request.Input); var response = await client.StartExecutionAsync(request).ConfigureAwait(false); if (response.HttpStatusCode != System.Net.HttpStatusCode.OK) { Console.WriteLine($"Err: {response.HttpStatusCode}"); return; } // verifica o estado da execução var requestStatus = new DescribeExecutionRequest { ExecutionArn = $"{_executionArn}:{executionName}", }; while (true) { var responseStatus = await client.DescribeExecutionAsync(requestStatus).ConfigureAwait(false); if (responseStatus.HttpStatusCode == System.Net.HttpStatusCode.OK && responseStatus.Status == ExecutionStatus.SUCCEEDED) { dynamic parsed = JsonConvert.DeserializeObject(responseStatus.Output); Console.WriteLine(JsonConvert.SerializeObject(parsed, Formatting.Indented, _jsonSerializerSettings)); break; } Console.WriteLine($"{responseStatus.Status}..."); await Task.Delay(1500).ConfigureAwait(false); } } }
public DescribeExecutionResponse FunctionHandler(JObject input) { LambdaLogger.Log(input.ToString()); AmazonStepFunctionsClient client = new AmazonStepFunctionsClient(); string executionArn = string.Format("{0}:{1}", Environment.GetEnvironmentVariable("stepFunctionsArn").Replace("stateMachine", "execution"), input.SelectToken("path.id")); LambdaLogger.Log(executionArn); DescribeExecutionRequest request = new DescribeExecutionRequest() { ExecutionArn = executionArn }; DescribeExecutionResponse response = client.DescribeExecutionAsync(request).Result; return(response); }