【问题标题】:How you Reference the function ARN of a Function (Lambda) in serverless.yml file?如何在 serverless.yml 文件中引用函数 (Lambda) 的函数 ARN?
【发布时间】:2020-09-11 11:26:53
【问题描述】:

在 serverless.yml 文件中考虑这个 lambda 函数:

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

考虑到在资源部分创建的这个 SNS:有人知道如何从 lambda 函数 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”

谢谢!

【问题讨论】:

  • 你好,Marcin,现在可以了,谢谢你的提问。
  • 那很好。如果是这样,我的回答将不胜感激
  • 进展如何?仍然不清楚你能做什么?

标签: amazon-web-services aws-lambda amazon-sns aws-serverless aws-cloudformation-custom-resource


【解决方案1】:

无服务器创建的 CloudFormation 资源有known format。对于 lambda 函数,这是:

{normalizedFunctionName}LambdaFunction

因此,您应该能够使用以下方法引用您的函数:

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

更多关于这方面的例子是here

【讨论】:

  • 如果资源在不同的服务中怎么办
猜你喜欢
  • 1970-01-01
  • 2018-11-11
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 2020-08-01
相关资源
最近更新 更多