当我尝试同时使用 join、sub 和 importvalue 时出现模板格式错误

Template format error when I try to use join,sub and importvalue together

我正在尝试同时使用 join、sub 和 import value,但是当我尝试使用它时,出现格式错误的模板错误。

这是我的代码部分:

 EventSourceMapping:
Type: AWS::Lambda::EventSourceMapping
Properties:
  EventSourceArn:
    !Join [ "/", [ !Select [0, !Split ["/", Fn::ImportValue: !Sub '${project}-${EnvironmentApp}-stream-arn']],Fn::ImportValue: !Sub '${project}-${EnvironmentApp}-dynamodb-name','stream','*' ] ]
  FunctionName:
    Fn::GetAtt:
    - LambdaDynamoEsConnector
    - Arn
  StartingPosition: TRIM_HORIZON

所以我在这时遇到错误:

 !Join [ "/", [ !Select [0, !Split ["/", Fn::ImportValue: !Sub '${project}-${EnvironmentApp}-stream-arn']],Fn::ImportValue: !Sub '${project}-${EnvironmentApp}-dynamodb-name','stream','*' ] ]

我这样做有什么问题吗?

试试这个:

EventSourceMapping: 
  Type: "AWS::Lambda::EventSourceMapping"
  Properties: 
    EventSourceArn:
      !Join
        - "/"
        - 
          - !Select
            - 0
            - !Split
              - "/"
              - Fn::ImportValue:
                  !Sub "${project}-${EnvironmentApp}-stream-arn"
          - Fn::ImportValue:
              !Sub "${project}-${EnvironmentApp}-dynamodb-name"
          - "stream"
          - "*"

由于你没有提到${project}-${EnvironmentApp}-stream-arn${project}-${EnvironmentApp}-dynamodb-name的值,我不知道你要创建的EventSourceArn是什么,但是根据你的加入条件,相信这就是你要达到的效果。