当我尝试创建 Amazon EC2 Auto Scaling 生命周期挂钩时为什么会收到错误消息?

上次更新日期: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": [
    {
      "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


这篇文章对您有帮助吗?


您是否需要账单或技术支持?