我正在使用Serverless Framework创建一个lambda函数,并希望能够在serverless.yml的其他部分中交叉引用它的Arn和名称。
我很惊讶地发现,如果lambda是通过vanilla CloudFormation创建的,!GetAtt和!Ref似乎不像我预期的那样工作。(AWS :: Lambda :: Function返回Ref和Fn :: GetAtt,这将使此过程变得简单!)
我已经找到了一些帖子,暗示了解决方案,但没有明确说明如何以简单明了的英语实现此目的。
设置
serverless.yml
但是,当我部署时,我遇到了以下问题:
任何关于我需要做出的精确更改的帮助,以便获得lambda的Arn和名称,将不胜感激!
提前致谢!
我很惊讶地发现,如果lambda是通过vanilla CloudFormation创建的,!GetAtt和!Ref似乎不像我预期的那样工作。(AWS :: Lambda :: Function返回Ref和Fn :: GetAtt,这将使此过程变得简单!)
我已经找到了一些帖子,暗示了解决方案,但没有明确说明如何以简单明了的英语实现此目的。
设置
serverless.yml
...
functions:
- ${file(functions/sendEmail.yml)}
...
sendEmail.yml
sendEmail:
handler: lambda-functions/send-email.handler
...
尝试引用
Arn
在模板的另一部分中,我尝试了:
...
LambdaFunctionArn: !GetAtt sendEmail.Arn
但是,当我部署时,我遇到了以下问题:
Error: The CloudFormation template is invalid: Template error: instance of Fn::GetAtt references undefined resource sendEmail
我注意到最终的CloudFormation模板将sendEmail转换为sendEmailLambdaFunction,因此我尝试:
LambdaFunctionArn: !GetAtt sendEmailLambdaFunction.Arn
但是却收到了类似的错误。
名称
我也希望能够引用这个名称,但不幸的是
!Ref sendEmail
导致错误的原因:
Error: The CloudFormation template is invalid: Template format error: Unresolved resource dependencies [sendEmail] in the Resources block of the template
任何关于我需要做出的精确更改的帮助,以便获得lambda的Arn和名称,将不胜感激!
提前致谢!