我通过在 CDK 中使用以下内容,使用 AWS 托管密钥对 SQS 中的数据进行加密:
// Create an SQS queue for buffering the events
const someQueue = new Queue(globalStack, "someQueue", {
// Recommendation to set VTO to 6 times the lambda timeout
visibilityTimeout: Duration.seconds(someLambdaTimeout * 6),
encryption: QueueEncryption.KMS_MANAGED,
deadLetterQueue: {
queue: someDlq,
maxReceiveCount: 5,
},
});
现在,当我尝试进入控制台并尝试在 SNS 中发布一些消息时,它不会到达 SQS,也不会出现任何错误消息。一切都在 us-east-1 中,所以这应该不是问题。现在,只要我禁用 SQS 的加密,当我在 SNS 中发布时,我就可以在 SQS 中接收消息。我尝试在网上做一些研究,甚至这篇文章1说每个 KMS 密钥都必须有一个密钥策略。请注意,您无法修改 Amazon SQS 的 AWS 托管 KMS 密钥的密钥策略。此 KMS 密钥的策略包括账户中所有委托人(被授权使用 Amazon SQS)使用加密队列的权限,但找不到任何有用的信息。这里真的很困惑。我在这里做错了什么?