CloudFormation - Невозможно импортировать лямбда-арн в DefinitionString для StepFunctions StateMachine - PullRequest
0 голосов
/ 14 марта 2019

Я создаю StepFunctions, которые ссылаются на функцию Lambda, созданную в отдельном стеке облачной информации.Я экспортировал Lambda Arn в экспорт CloudFormation.И я хотел бы добиться ссылки на эту лямбда-функцию из StepFunctions путем импорта экспортированного значения.

Вот мой фрагмент облачной информации.

  StepFunction:
    Type: 'AWS::StepFunctions::StateMachine'
    Properties:
      RoleArn: !GetAtt IamRole.Arn
      DefinitionString: 
        Fn::Sub:
          - |-
            {
              "StartAt": "MessageGenerator",
              "States": {
                "MessageGenerator": {
                  "Comment": "generate queue message.",
                  "Type": "Task",
                  "Resource": "${LambdaMessageGenerator}",
                  "ResultPath": "$",
                  "OutputPath": "$",
                  "Next": "WaitSeconds"
                },
                ...
              }
            }
          - LambdaMessageGenerator:
              Fn::ImportValue: some-export-name

Я сделал это, следуя приведенному ниже ответу. Облачная информация - Невозможно импортировать ресурс

Однако команда aws cloudformation deploy не выполнена, и я получил следующую ошибку.

Invalid State Machine Definition: 'SCHEMA_VALIDATION_FAILED: Value is not a valid resource ARN at /States/MessageGenerator/Resource' (Service: AWSStepFunctions; Status Code: 400; Error Code: InvalidDefinition; Request ID: 01713d53-4605-11e9-9cf3-c15ff9ce09ae)

Может кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 14 марта 2019

Попробуйте использовать эту строку: "Resource": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${LambdaFunctionName}"

В этом случае вам нужно только передать имя лямбда-функции.

...