public async Task FunctionHandler()

in saga-orchestration/InvokeOrchestratorLambda/src/InvokeOrchestratorLambda/Function.cs [22:56]


        public async Task<APIGatewayProxyResponse> FunctionHandler(OrderDetails orderDetails, ILambdaContext context)
        {
            var input = HttpStatusCode.Accepted;
            var awsRegion = System.Environment.GetEnvironmentVariable("AWS_REGION");
            var regionEndpoint = RegionEndpoint.GetBySystemName(awsRegion);
            var amazonStepFunctionsConfig = new AmazonStepFunctionsConfig {RegionEndpoint = regionEndpoint};
            
            using (var amazonStepFunctionsClient =
                new AmazonStepFunctionsClient(amazonStepFunctionsConfig))
            {
                context.Logger.Log(orderDetails.ItemId);
                
                var jsonInput = JsonSerializer.Serialize(orderDetails);
                context.Logger.Log(jsonInput);

                var functionArn = context.InvokedFunctionArn;
                var splitArn = functionArn.Split(":");
                var accountId = splitArn[4];
                

                var startExecutionRequest = new StartExecutionRequest
                {
                    Input = jsonInput,
                    StateMachineArn = "arn:aws:states:" + awsRegion + ":" + accountId + ":stateMachine:DistributedTransactionOrchestrator"
                };
                context.Logger.Log("before StartExecutionAsync");
                var taskStartExecutionResponse =
                    await amazonStepFunctionsClient.StartExecutionAsync(startExecutionRequest);
                input = taskStartExecutionResponse.HttpStatusCode;
                context.Logger.Log(input.ToString());
            }

            var response = CreateResponse(input);
            return response;
        }