amazon-web-services - 错误:“主题不存在”使用 SAM 模板创建 SNS 主题?
问题描述
我一直在尝试创建 SNS 主题并将消息发布到这些主题?但是在 dev 上部署后,我收到错误“主题不存在”?
SNS 主题 SAM 代码:
ItemServiceTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: 'ItemServiceTopic'
FifoTopic: true
KmsMasterKeyId: !Ref KMSDecryptKey
TopicName: 'item-service-dev-topic.fifo'
用于向 SNS 发布消息的 Lambda
PostItem:
Type: AWS::Serverless::Function
Properties:
Handler: handlers/item-handler.postItem
Layers:
- !Ref NodeDependenciesLayer
Events:
PostItemApi:
Type: Api
Properties:
RestApiId: !Ref ItemServiceApiG
Path: /v0/items
Method: POST
Policies:
- AWSSecretsManagerGetSecretValuePolicy:
SecretArn: !Sub 'arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:ItemServiceSecrets-d768io'
- KMSDecryptPolicy:
KeyId: !Ref KMSDecryptKey
- SNSPublishMessagePolicy:
TopicName: !Sub 'arn:aws:sns:${AWS::Region}:${AWS::AccountId}:item-service-topic.fifo'
有没有办法解决上述错误?
注意:我已将 SNS 添加到现有的 SAM 模板文件中,但我觉得它没有创建 SNS,因此在运行“postItem”处理程序时它失败说没有找到 SNS 主题
解决方案
尝试使用 REFSNSPublishMessagePolicy
PostItem:
Type: AWS::Serverless::Function
Properties:
Handler: handlers/item-handler.postItem
Layers:
- !Ref NodeDependenciesLayer
Events:
PostItemApi:
Type: Api
Properties:
RestApiId: !Ref ItemServiceApiG
Path: /v0/items
Method: POST
Policies:
- AWSSecretsManagerGetSecretValuePolicy:
SecretArn: !Sub "arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:ItemServiceSecrets-d768io"
- KMSDecryptPolicy:
KeyId: !Ref KMSDecryptKey
- SNSPublishMessagePolicy:
TopicName: !Ref ItemServiceTopic
这样 Cloudformation 应该知道在更新 lambda 函数之前,更新函数需要 SNS 主题首先存在
推荐阅读
- python - 如何在 numpy 中有效地将 3D 矩阵与 2D 矩阵相乘
- c++ - MPFR:如何制作 mpfr_t 的精确副本?
- python - KivyMD - MDDropDownItem / 自定义字体和大小?
- javascript - 如何将字典从 localStorage 转换为 Vue 中的对象数组?
- linux - 尽管条件错误,但仍执行 AWK 操作
- javascript - 将数据从父组件传递到子组件(MaterialUI 制作样式)?
- swift - 我的 Swift UI 中的 TextField 对点击和单击无响应,无法输入文本,代码有问题吗?
- r - 在数据框列表中动态设置唯一列名 [R]
- swiftui - SwiftUI 全屏 UIImagePickerController(相机)
- python - 当特定youtuber上传视频时,如何使discord bot在频道中发送消息