当我尝试创建 Amazon EC2 Auto Scaling 生命周期挂钩时为什么会收到错误消息?
上次更新时间:2019 年 5 月 9 日
我尝试创建 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 生命周期挂钩时收到了验证错误。错误消息的内容为“无法向通知目标发布测试消息”或者“请检查您的目标和角色配置,然后再次尝试推送生命周期挂钩。” 如何排查这些错误?
简短描述
要将消息发布到 Amazon Simple Queue Service (SQS) ,生命周期挂钩的 AWS Identity and Access Management (IAM) 角色必须符合下列条件:
- 不同于分配给实例的 IAM 角色
- 已经挂载了适用于 Auto Scaling 服务的信任策略
- 包含具体的托管策略操作
- 关联到 Auto Scaling 组
解决方法
1. 确认您已经为该生命周期挂钩创建一个的 IAM 角色,并且该角色不同于分配给实例的 IAM 角色。
2. 确保该生命周期挂钩的 IAM 角色已经挂载了适用于 Auto Scaling 服务的信任策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "autoscaling.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
3. 验证该生命周期挂钩的 IAM 角色的托管策略包含下列操作:
sqs:SendMessage
sqs:GetQueueUrl
sns:Publish
重要提示:您的目标是一个 SQS 队列,而不是 Amazon Simple Notification Service (Amazon SNS) 资源。但是,您仍然必须包含 sns: Publish 操作以将消息发布到 SQS 队列。
4. 在 AWS 命令行界面 (AWS CLI),运行 aws autoscaling put-lifecycle-hook 命令。
5. 运行以下命令以确认该生命周期挂钩已关联到该 Auto Scaling 组。
aws autoscaling describe-lifecycle-hooks --auto-scaling-group-name "ExampleSQSQueueName"