AWSTemplateFormatVersion: "2010-09-09" Transform: AWS::Serverless-2016-10-31 Description: Template for step-functions-workshop Globals: Function: Runtime: nodejs16.x Resources: ApplicationProcessingStateMachine: Type: AWS::Serverless::StateMachine Properties: DefinitionUri: statemachine/account-application-workflow.asl.json DefinitionSubstitutions: DataCheckingFunctionArn: !GetAtt DataCheckingFunction.Arn FlagApplicationFunctionName: !Ref FlagApplicationFunction Policies: - LambdaInvokePolicy: FunctionName: !Ref DataCheckingFunction - LambdaInvokePolicy: FunctionName: !Ref FlagApplicationFunction ApproveApplicationFunction: Type: AWS::Serverless::Function Properties: FunctionName: sfn-workshop-ApproveApplication CodeUri: functions/account-applications/ Handler: approve.handler Environment: Variables: APPLICATIONS_TABLE_NAME: !Ref ApplicationsTable Policies: - DynamoDBCrudPolicy: TableName: !Ref ApplicationsTable DataCheckingFunction: Type: AWS::Serverless::Function Properties: FunctionName: sfn-workshop-DataChecking CodeUri: functions/data-checking/ Handler: data-checking.handler FindApplicationsFunction: Type: AWS::Serverless::Function Properties: FunctionName: sfn-workshop-FindApplications CodeUri: functions/account-applications/ Handler: find.handler Environment: Variables: APPLICATIONS_TABLE_NAME: !Ref ApplicationsTable Policies: - DynamoDBCrudPolicy: TableName: !Ref ApplicationsTable FlagApplicationFunction: Type: AWS::Serverless::Function Properties: FunctionName: sfn-workshop-FlagApplication CodeUri: functions/account-applications/ Handler: flag.handler Environment: Variables: APPLICATIONS_TABLE_NAME: !Ref ApplicationsTable Policies: - DynamoDBCrudPolicy: TableName: !Ref ApplicationsTable RejectApplicationFunction: Type: AWS::Serverless::Function Properties: FunctionName: sfn-workshop-RejectApplication CodeUri: functions/account-applications/ Handler: reject.handler Environment: Variables: APPLICATIONS_TABLE_NAME: !Ref ApplicationsTable Policies: - DynamoDBCrudPolicy: TableName: !Ref ApplicationsTable ReviewApplicationFunction: Type: AWS::Serverless::Function Properties: FunctionName: sfn-workshop-ReviewApplication CodeUri: functions/account-applications/ Handler: review.handler Environment: Variables: APPLICATIONS_TABLE_NAME: !Ref ApplicationsTable Policies: - DynamoDBCrudPolicy: TableName: !Ref ApplicationsTable - Statement: - Sid: AllowCallbacksToStateMachinePolicy Effect: "Allow" Action: - "states:SendTaskSuccess" - "states:SendTaskFailure" Resource: !Ref ApplicationProcessingStateMachine SubmitApplicationFunction: Type: AWS::Serverless::Function Properties: FunctionName: sfn-workshop-SubmitApplication CodeUri: functions/account-applications/ Handler: submit.handler Environment: Variables: APPLICATIONS_TABLE_NAME: !Ref ApplicationsTable APPLICATION_PROCESSING_STEP_FUNCTION_ARN: !Ref ApplicationProcessingStateMachine Policies: - DynamoDBCrudPolicy: TableName: !Ref ApplicationsTable - StepFunctionsExecutionPolicy: StateMachineName: !GetAtt ApplicationProcessingStateMachine.Name ApplicationsTable: Type: 'AWS::DynamoDB::Table' Properties: SSESpecification: SSEEnabled: true PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true AttributeDefinitions: - AttributeName: id AttributeType: S - AttributeName: state AttributeType: S KeySchema: - AttributeName: id KeyType: HASH BillingMode: PAY_PER_REQUEST GlobalSecondaryIndexes: - IndexName: state KeySchema: - AttributeName: state KeyType: HASH Projection: ProjectionType: ALL Outputs: SubmitApplicationFunctionArn: Description: "Submit Application Function ARN" Value: !GetAtt SubmitApplicationFunction.Arn FlagApplicationFunctionArn: Description: "Flag Application Function ARN" Value: !GetAtt FlagApplicationFunction.Arn FindApplicationsFunctionArn: Description: "Find Applications Function ARN" Value: !GetAtt FindApplicationsFunction.Arn ApproveApplicationFunctionArn: Description: "Approve Application Function ARN" Value: !GetAtt ApproveApplicationFunction.Arn RejectApplicationFunctionArn: Description: "Reject Application Function ARN" Value: !GetAtt RejectApplicationFunction.Arn DataCheckingFunctionArn: Description: "Data Checking Function ARN" Value: !GetAtt DataCheckingFunction.Arn