【发布时间】:2023-02-02 03:03:38
【问题描述】:
我正在使用 AWS SQS 服务,但我很难在我的 SQS 队列上定义权限。在我的设置中,我使用的是 AWS Lambda 服务,该服务在将对象推送到 S3 存储桶时触发。
但是,为了简短地提出我的问题,这就是我想要实现的目标:
对象被推送到 S3 存储桶, S3 桶触发 AWS Lambda, Lambda 进行一些计算并将事件推送到我的 SQS 队列(需要定义权限) 应用程序从 SQS 读取 Lambda 和 SQS 队列在不同的 AWS 账户中- 遵循的步骤-
- 在 SQS 访问策略中为 lambda 承担的访问角色添加了权限-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountid:role/rolename", ] }, "Action": "SQS:SendMessage", "Resource": "https://sqs.us-east-1.amazonaws.com/accountid/qsqqueuename" } ] }-
SQS 队列启用了 KMS 密钥,因此在 kms 访问策略中将权限授予同一角色
-
lambda 承担的角色具有以下访问权限-
{ "Action": [ "s3:PutObject", "s3:GetObject", "kms:Decrypt", "kms:Encrypt", "sqs:SendMessage", "kms:DescribeKey", "s3:ListBucket", "ssm:GetParameter", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:us-east-1:accountid:key/kmskey5809e1338be5", "arn:aws:sqs:us-east-1:accountid:sqaqueuename" ], "Effect": "Allow", "Sid": "mailboxaccess" },我的 lambda 给出了错误- 调用 SendMessage 操作时发生错误 (AccessDenied):拒绝访问资源 https://queue.amazonaws.com/。 有什么建议么?
-
【问题讨论】:
-
您是否将 lambda 角色添加到 KMS 密钥的策略中?
标签: amazon-web-services aws-lambda amazon-sqs