SQS队列策略配置报错排查:跨账号Lambda触发权限问题
问题原因及修复方案
你的SQS队列策略配置中,缺少了策略文档必填的Version字段,这是触发InvalidAttributeValue错误的核心原因。AWS所有IAM类策略文档(包括SQS队列策略)都要求明确指定版本号,否则无法正确解析策略内容。
修正后的配置
在PolicyDocument中添加Version字段即可解决问题,常用的版本值为2012-10-17(最新的IAM策略版本):
QueuePolicy: Type: AWS::SQS::QueuePolicy Properties: PolicyDocument: Version: "2012-10-17" # 新增必填的版本字段 Statement: - Sid: EnableLambda Action: - sqs:DeleteMessage - sqs:GetQueueAttributes - sqs:ReceiveMessage Effect: Allow Resource: !GetAtt Queue.Arn Principal: AWS: !Sub arn:aws:iam::${LambdaAccountId}:role/${LambdaRoleName} Queues: - !Ref Queue
额外检查点
- 确认模板中已正确定义
LambdaAccountId和LambdaRoleName参数,并传入了有效的跨账号ID和角色名称。 - 目标Lambda角色的信任策略需允许AWS Lambda服务(
lambda.amazonaws.com)扮演该角色,否则即使SQS权限配置正确,Lambda也无法触发队列消费。
内容的提问来源于stack exchange,提问作者user2519653
相关产品推荐
相关产品推荐

