1. ホーム
  2. amazon-web-services

[解決済み] クラウドフォーメーション Fn::JoinとFn:GetAttの併用

2022-02-12 14:40:34

質問

の属性の1つに値を定義しようとしています。 Type: AWS::Lambda::EventSourceMapping 以下は、私のスニペットです(最新の試み)。

FunctionName: #trigger the echo function previously defined
        "Fn::Join": [":", [{"Fn::GetAtt" : ["LambdaName", "Arn"]}, "live" ]]

しかし、私のクラウド形成スタックでは、以下のエラーでデプロイに失敗します。

"StatusReason": "Template error: every Fn::Join object requires two parameters, (1) a string delimiter and (2) a list of strings to be joined or a function that returns a list of strings (such as Fn::GetAZs) to be joined."

私はブラケットでいくつかのバリエーションを試してみましたが、同じエラーが表示され続けています。構文で何が足りないのでしょうか?

追伸:私はこれを yaml ファイルで定義しています。

どのように解決するのですか?

私の最初の質問は、LambdaNameがARNを提供するためにGetAttで使用できるものを参照しているかどうかです。そうでなければ、単に書式の問題かもしれません。AWS CFNが、あなたが Fn::GetAtt .

この中の一つでもあれば、もっとうまくいくかも?

FunctionName:
  Fn::Join:
    - ':'
    - - Fn::GetAtt:
          - LambdaName
          - Arn
      - "live"

または

FunctionName: !Join [':', [!GetAtt LambdaName.Arn, 'live]]