Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
    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
Пример #4
0
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(