我尝试创建 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": [
{
"Effect": "Allow",
"Principal": {
"Service": "autoscaling.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
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。
相关信息
Amazon EC2 Auto Scaling 生命周期挂钩