微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CloudFormation !Ref 主题未提供 ARN

如何解决CloudFormation !Ref 主题未提供 ARN

我在使用 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中传递/读取环境变量时,除了最后一个:?有谁知道如何克服这个问题?

解决方法

我不确定为什么这不能正常工作,但是您可以使用应该始终有效的长格式。

Environment:
    Variables:
      SNS_TOPIC_ARN:
         Ref: EmailNotificationTopic

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。