当我尝试创建 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"

这篇文章对您有帮助吗?

您觉得我们哪些地方需要改进?


需要更多帮助?