def add_replication_listener( builder: Template, filter_func: awslambda.Function, locate_artifact_func: awslambda.Function, publish_layer_func: awslambda.Function, notify_topic: sns.Topic, tags: Tags, ) -> stepfunctions.StateMachine: name = "ReplicationListener" lambda_statement = invoke_statement_from_lambdas(filter_func, locate_artifact_func, publish_layer_func) sns_statement = publish_statement_from_topics(notify_topic) role = step_functions_role(f"{name}Role", lambda_statement, sns_statement) workflow = _replication_listener_workflow( filter_arn=_resource_to_sub_arn(filter_func), locate_artifact_arn=_resource_to_sub_arn(locate_artifact_func), publish_layer_arn=_resource_to_sub_arn(publish_layer_func), sns_topic_arn=_resource_to_sub_reference(notify_topic), ) sm = stepfunctions.StateMachine(name, DefinitionString=Sub(json.dumps(workflow)), RoleArn=role.get_att("Arn"), Tags=tags) builder.add_resource(role) return builder.add_resource(sm)
def add_artifact_builder( builder: Template, parse_requirements: awslambda.Function, python36_builder: awslambda.Function, python37_builder: awslambda.Function, tags: Tags, ) -> stepfunctions.StateMachine: name = "ArtifactBuilderStateMachine" statement = invoke_statement_from_lambdas(parse_requirements, python36_builder, python37_builder) role = step_functions_role(f"{name}Role", statement) workflow = _artifact_builder_workflow( parse_requirements_arn=_resource_to_sub_arn(parse_requirements), build_python_36_arn=_resource_to_sub_arn(python36_builder), build_python_37_arn=_resource_to_sub_arn(python37_builder), ) sm = stepfunctions.StateMachine(name, DefinitionString=Sub(json.dumps(workflow)), RoleArn=role.get_att("Arn"), Tags=tags) builder.add_resource(role) return builder.add_resource(sm)
def _get_replicated_lambda_state_machine(self): # type(...) -> stepfunctions.StateMachine replicated_lambda_remover = self._get_replicated_lambda_remover_lambda( ) self_destruct = self._get_self_destruct(replicated_lambda_remover) role = self._get_replicated_lambda_state_machine_role( replicated_lambda_remover['function'], self_destruct['function']) state_machine = self.template.add_resource( stepfunctions.StateMachine( 'StaticSiteCleanupStateMachine', StateMachineName='StaticSiteCleanup-%s' % (self.get_variables()['stack_name']), RoleArn=role.get_att('Arn'), DefinitionString=Sub( json.dumps({ "Comment": "Clean leftover artifacts from StaticSite build", "StartAt": "DeleteLambdas", "States": { "DeleteLambdas": { "Type": "Task", "Resource": '${delete_lambdas_arn}', 'Next': "Deleted" }, "Deleted": { "Type": "Choice", "Choices": [{ "Variable": "$.deleted", "BooleanEquals": True, "Next": "SelfDestruct" }, { "Variable": "$.deleted", "BooleanEquals": False, "Next": "Halt" }] }, "Halt": { "Type": "Wait", "Seconds": 300, "Next": "DeleteLambdas" }, "SelfDestruct": { "Type": "Task", "Resource": "${self_destruct_arn}", "Next": "DeletionComplete" }, "DeletionComplete": { "Type": "Succeed", } } }), { "delete_lambdas_arn": replicated_lambda_remover['function'].get_att('Arn'), "self_destruct_arn": self_destruct['function'].get_att('Arn') }))) self.template.add_output( Output('ReplicatedFunctionRemoverStateMachineArn', Description= 'The ARN of the Replicated Function Remover State Machine', Value=state_machine.ref())) return state_machine
states_machine = t.add_resource( stepfunctions.StateMachine('StateMachine', RoleArn=GetAtt(states_execution_role, 'Arn'), DefinitionString=Sub( '''{ "Comment": "A Retry example of the Amazon States Language using an AWS Lambda Function", "StartAt": "CreateExportTask", "States": { "CreateExportTask": { "Type": "Task", "Resource": "${EXPORT_LAMBDA_FUNCTION}", "Retry": [ { "ErrorEquals": [ "States.Timeout" ], "MaxAttempts": 0 }, { "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 30, "MaxAttempts": 10, "BackoffRate": 2.0 } ], "End": true } } }''', EXPORT_LAMBDA_FUNCTION=GetAtt( lambda_function, 'Arn')))) events_execution_role = t.add_resource(