【发布时间】:2021-04-12 13:06:37
【问题描述】:
我在使用 python 运行时获取通过环境变量传递给 lambda 的 SQS 主题的 ARN 时遇到问题。
这里是云形成yaml的相关部分:
HandlerFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: xxx/
Handler: app.handler
Runtime: python3.8
Timeout: 60
...
Environment:
Variables:
SNS_TOPIC_ARN: !Ref EmailNotificationTopic
EmailNotificationTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: xxx@xxx.com
Protocol: email
在我的处理程序中,当我调用 sns_topic = os.environ['SNS_TOPIC_ARN'] 时,我得到的是 EmailNotificationTopic 而不是完整的 ARN,这是我对 docs 的期望。
这会在发布主题时产生问题。我知道我可以对 ARN 进行硬编码,但其他教程(和官方文档)似乎表明 Ref 函数应该提供 ARN。
我对云的形成还很陌生,感谢任何建议。谢谢
编辑:我将 !Ref EmailNotificationTopic 添加到 sam 模板中的输出并确认它显示为完整的 ARN,我还在 AWS 控制台上的主题中确认了完整的 ARN,所以看起来当环境变量在python中被传递/读取时,除了最后一个之后的最后一位之外,所有的东西都被剥离了:?有谁知道如何克服这个问题?
【问题讨论】:
标签: python aws-lambda amazon-cloudformation aws-sam