12

serverless.yml ファイルでこのラムダ関数を検討すると、次のようになります。

functions:
  s3toEc2Lambda:
    handler: s3toec2lambda.S3toEc2Lambda
    name: "${self:service}-s3toEc2Lambda"
    role: S3toEc2LambdaRole

そして、リソースセクションで作成されたこの SNS を検討してください:誰かがラムダ関数 s3toEc2Lambda から Sns ARN エンドポイントに通知する方法を知っていますか?

resources:
  Resources:
    WordpressFrontEndSnsS3toEc2:
      Type: AWS::SNS::Topic
      Properties:
        TopicName: "wordpress-front-end-s3-ec2"

    WordpressFrontEndSnsS3toEc2Lambda:
      Type: AWS::SNS::Subscription
      Properties:
        Endpoint: { "Fn::GetAtt": ["s3toEc2Lambda", "Arn" ] }                    <------ HERE    <------
        #Endpoint: ${self:functions.s3toEc2Lambda}                               <------ OR HERE <------
        #Endpoint: { "Fn::GetAtt": ["${self:functions.s3toEc2Lambda}", "Arn" ] } <------ OR HERE <------
        Protocol: lambda
        TopicArn: !Ref 'WordpressFrontEndSnsS3toEc2'

私にとっては、常に次のようなエラーメッセージが表示されます:「テンプレートエラー: Fn::GetAtt のインスタンスが未定義のリソース s3toEc2Lambda を参照しています」

ありがとう !

4

1 に答える 1

13

サーバーレスによって作成された CloudFormation リソースには既知の形式があります。ラムダ関数の場合、これは次のとおりです。

{normalizedFunctionName}LambdaFunction

したがって、次を使用して関数を参照できるはずです。

"Fn::GetAtt": [ S3toEc2LambdaLambdaFunction, Arn ]

これに関するその他の例はこちら

于 2020-05-24T21:55:24.233 に答える