如果我的 lambda 函数内存使用量超过 lambda 内存大小的 80%,我会设置警报来通知我。我正在使用自定义指标捕获数据点,并且当内存使用量超过阈值时,我能够在 cloudwatch 控制台中看到警报。但是,当 Alarm 采取操作向相应的 SNS 主题发送通知时失败并显示以下消息:
{
"actionState": "Failed",
"stateUpdateTimestamp": 1558142246126,
"notificationResource": "arn:aws:sns:us-east-1:5847563209:<myTopic>",
"publishedMessage": null,
"error": "null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: 6b7806a6-2c16-4582-9ecd-05100161746e)"
}
SNS 主题使用 KMS 密钥加密,我允许 cloudwatch 访问密钥策略中的密钥:
{
"Sid": "Allow CloudWatch to use the key",
"Effect": "Allow",
"Principal": {
"Service": "cloudwatch.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
但行动仍然失败。我也尝试过events.amazonaws.com
担任校长,但没有运气。我很感激这方面的任何帮助。