Использование функции Ref for Resource in Step внутри шаблона облачной информации

У меня есть ступенчатая функция внутри облачной информации. Стек облачной информации также создает Lambdas, которые я буду использовать в качестве ресурса в функции step. У меня есть что-то вроде

TestLambda:
  Type: "AWS::Lambda::Function"
  Properties:
    Handler: "test_lambda.lambda_handler"
    Role: "arn:aws:iam::1234342334:role/Lambda"
    Code:
      ZipFile: !Sub |
        from __future__ import print_function
        import boto3
        def lambda_handler(event, context):
          print(event)
    Runtime: "python2.7"

  ....

TestStateMachine:
  Type: AWS::StepFunctions::StateMachine
  Properties:
    StateMachineName: "Test"
    DefinitionString: |-
      {
        "StartAt": "State1",
        "States": {
          "State1" : {
            "Type" : "Task",
            "Resource" : "${!GetAtt TestLambda.Arn}",
            "Next": "State2?"
          },
      ... 
      ...

все внутри одного шаблона облачной информации.

"SCHEMA_VALIDATION_FAILED: Value is not a valid resource ARN"

Я также пытался!GetAtt TestLambda.Arn, это не сработало. Я хочу, чтобы лямбда и степ-функция создавались внутри единого шаблона облачной информации. Пожалуйста, дайте мне знать, если есть лучший, более чистый способ сделать это.

Спасибо

1 ответ

Решение

Вы должны использовать функцию Fn::Sub для этого:

TestStateMachine:
  Type: AWS::StepFunctions::StateMachine
  Properties:
    StateMachineName: "Test"
    DefinitionString: 
      Fn::Sub:
        |-
          {
            "StartAt": "State1",
            "States": {
              "State1" : {
                "Type" : "Task",
                "Resource" : "${TestLambda.Arn}",
                "Next": "State2?"
          },
Другие вопросы по тегам