创建SNS策略时出现Invalid parameter error错误求助
解决思路及修正方案
核心错误点分析
- 拼写错误:策略中的
Principle是错误拼写,正确的IAM策略字段应为Principal(缺少字母a),该错误会直接导致策略文档解析失败,触发参数错误。 - 策略附加对象错误:你使用的
AWS::SNS::TopicPolicy是用于配置SNS主题自身的访问权限,但要实现SNS向SQS发送消息,权限应该配置在SQS队列上(通过AWS::SQS::QueuePolicy),因为本质是授权SNS主体调用SQS的SendMessage动作。
修正后的配置示例
正确的SQS队列权限配置
MyQueuePolicy: Type: AWS::SQS::QueuePolicy Properties: PolicyDocument: Id: 'allowsSNSToSQS' Version: '2012-10-17' Statement: Sid: AllowSNStoPublishToSQS Effect: Allow Principal: "*" Action: 'sqs:SendMessage' Resource: Fn::GetAtt: [MyQueue , Arn ] Condition: ArnEquals: aws:SourceArn: { "Ref" : "MyTopic" } Queues: - { "Ref" : "MyQueue" }
补充SNS主题到SQS的订阅配置
确保SNS主题已订阅目标SQS队列,否则权限配置正确也无法投递消息:
MyTopicToSQSSubscription: Type: AWS::SNS::Subscription Properties: Protocol: sqs Endpoint: !GetAtt MyQueue.Arn TopicArn: !Ref MyTopic
验证步骤
- 替换原有的
MyTopicPolicy配置为上述MyQueuePolicy - 添加订阅配置(若未配置)
- 重新部署Serverless服务,检查是否仍报错
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

