上次更新日期:2021 年 2 月 10 日
我尝试创建 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 生命周期挂钩时收到了验证错误。错误消息的内容为“无法向通知目标发布测试消息”或者“请检查您的目标和角色配置,然后再次尝试推送生命周期挂钩。” 如何对这些错误进行故障排除?
简短描述要将消息发布到 Amazon Simple Queue Service (Amazon SQS) ,生命周期挂钩的 AWS Identity and Access Management (IAM) 角色必须符合下列条件:
不同于分配给实例的 IAM 角色。 在 AWS Key Management Service (AWS KMS) 密钥策略中被列为密钥用户。 已经挂载了适用于 Auto Scaling 服务的信任策略。 包含具体的托管策略操作。 关联到 Amazon EC2 Auto Scaling 组。 有权访问 Amazon SQS 所使用的加密密钥。 解决方法1.确认您为该生命周期挂钩使用的 IAM 角色与您分配给实例的 IAM 角色不同。
注意:您可以创建 IAM 角色,或使用具有所有必要权限的以下 AWS 托管角色:
arn:aws:iam::aws:policy/service-role/AutoScalingNotificationAccessRole
2.验证该角色是否作为密钥用户包含在 KMS 密钥策略中。为此,请执行以下操作:
打开 AWS KMS 控制台。
选择 KMS 密钥。
验证角色是否在密钥策略选项卡上的密钥用户下列出。如果该角色未列出,请搜索该角色,然后选择添加。
3.确保该生命周期挂钩的 IAM 角色已经挂载了适用于 Amazon EC2 Auto Scaling 服务的信任策略。
{
"Version": "2012-10-17",
"Statement":
}
4.验证该生命周期挂钩的 IAM 角色的托管策略包含下列操作:
对于 SQS 消息
sqs:SendMessage
sqs:GetQueueUrl
对于 SNS 通知
sns:Publish
5.在 AWS 命令行界面 (AWS CLI),运行 aws autoscaling put-lifecycle-hook 命令。
6.运行以下命令以确认该生命周期挂钩已关联到该 Auto Scaling 组。
aws autoscaling describe-lifecycle-hooks --auto-scaling-group-name "ExampleSQSQueueName"
注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。