我为 S3 存储桶设置了 SQS 事件。当在 S3 中上传名为 xyz.txt 的文件时,将调用 SQS 事件,然后此 SQS 调用 lambda。
此工作流程运行良好。
现在我想为此加密我的 SQS 队列,我正在使用现有的 CMK“services-cmk”之一。队列加密后,S3 无法调用 SQS。当我将消息直接放入加密的 SQS 时,它的工作和 lambda 也会被触发。
我检查了 services-cmk 的策略,它允许 S3。我无法找出我在这里缺少的东西?
我为 S3 存储桶设置了 SQS 事件。当在 S3 中上传名为 xyz.txt 的文件时,将调用 SQS 事件,然后此 SQS 调用 lambda。
此工作流程运行良好。
现在我想为此加密我的 SQS 队列,我正在使用现有的 CMK“services-cmk”之一。队列加密后,S3 无法调用 SQS。当我将消息直接放入加密的 SQS 时,它的工作和 lambda 也会被触发。
我检查了 services-cmk 的策略,它允许 S3。我无法找出我在这里缺少的东西?
您必须在KMS 密钥策略中明确指定 S3(使用root
asPrincipal
还不够),如下所述:
{
"Version": "2012-10-17",
"Id": "example-ID",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}