我正在使用 Serverless Framework 创建 lambda 函数,并希望能够在 serverless.yml 的其他部分交叉引用其 Arn 和名称。
我很惊讶我发现这个有多困难,因为如果 lambda 是通过普通的 CloudFormation 创建的, !GetAtt 和 !Ref 似乎没有像我预期的那样工作。 (AWS::Lambda::Function 返回 Ref 和 Fn::GetAtt 这将使这变得简单!)
我发现了一些帖子,暗示了解决方案,但没有用简单的英语说明如何实现这一点。
SETUP
无服务器.yml
...
functions:
- ${file(functions/sendEmail.yml)}
...
发送电子邮件.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
但收到类似的错误。
Name
我也希望能够引用这个名字,但遗憾的是
!Ref sendEmail
导致错误:
Error: The CloudFormation template is invalid: Template format error: Unresolved resource dependencies [sendEmail] in the Resources block of the template
对于我需要进行的精确更改以实现获取 lambda 的 Arn 和名称的任何帮助,将不胜感激!
提前致谢!
我