CloudFormation"Value of property SourceArn must be of type String"の解決方法
CloudFormation"Value of property SourceArn must be of type String"の解決方法:
AWS LambdaFunctionPermissionの設定で、以下のようなエラーが発生した。
このとき、原因となった部分は以下の通り。
しかし、この項目に入力すべきはStringであり、Listではない。これがエラーの原因だったようだ。
したがって、以下のように直した。
これで通った。
YAML 基本記法まとめ
AWS LambdaFunctionPermissionの設定で、以下のようなエラーが発生した。
Value of property SourceArn must be of type String
このとき、原因となった部分は以下の通り。
problem.yml
LambdaPermission: Type: AWS::Lambda::Permission Properties: FunctionName: !GetAtt MyLambda.Arn Action: lambda:InvokeFunction Principal: s3.amazonaws.com SourceArn: - !Join - '' - - 'arn:aws:s3:::' - !Sub ${BucketPrefix}
原因と対策
- !Join
は、!Join
以下がリスト型であることを示している。つまり、このymlは以下のように認識されている。SourceArn.json
{ ...., "Properties":{ "SourceArn":['arn:aws:s3:::{BucketPrefix}'] }, .... }
したがって、以下のように直した。
fixed.yml
DataDeliverAndConvertPermission: Type: AWS::Lambda::Permission Properties: FunctionName: !GetAtt MyLambda.Arn Action: lambda:InvokeFunction Principal: s3.amazonaws.com SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Sub ${BucketPrefix}
コメント
コメントを投稿