1

有许多文档解释了如何解决此错误。检查了许多并尝试了。但是,跟随他们并不能为我解决这个问题。

我得到的错误是

调用 PutLifecycleHook 操作时发生错误 (ValidationError):无法使用 IAM 角色 arn:aws:iam::XXXXXXXX:role/kubeautoscaling 将测试消息发布到通知目标 arn:aws:sqs:xxxxx:XXXXX:kubeeventsqueue.fifo。请检查您的目标和角色配置并尝试再次放置生命周期挂钩。

我正在使用的命令是:

aws autoscaling put-lifecycle-hook --lifecycle-hook-name terminate --auto-scaling-group-name mygroupname --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING --role-arn arn:aws:iam::XXXXXX:role/kubeautoscaling --notification-target-arn arn:aws:sqs:xxxxx:XXXXXXX:kubeeventsqueue.fifo

请注意,我已将 XXXXX 替换为上面的实际 ID。

相关角色 ( arn:aws:iam::XXXXXX:role/kubeautoscaling) 与 autoscaling.amazonaws.com 具有信任关系。它还附加了“AutoScalingNotificationAccessRole”策略。

在测试时,我还尝试为所有 SQS 操作 (SQS:*) 添加“允许所有人”的权限。(虽然在测试后将其删除)。

我也尝试过先创建 SQS 队列然后配置--notification-target-arn,但没有任何成功。

对此的任何帮助都会非常有帮助。

4

2 回答 2

2

您似乎正在使用 Amazon SQS FIFO(先进先出)队列。

为 Amazon EC2 Auto Scaling 生命周期挂钩配置通知 - 使用 Amazon SQS 接收通知

FIFO 队列与生命周期挂钩不兼容。

我不知道这是否是您当前错误的原因,但它会阻止您所需的配置工作。

于 2020-03-09T04:09:04.140 回答
0

是的,LifeCycleHooks 绝对不支持 FIFO 队列。我浪费了很多时间来处理权限和队列配置,最终发现不支持 FIFO。如果这在文档中更加突出,那就太好了,因为 1)它不明显或不直观,并且 2)收到的错误消息表明它是权限或其他东西。如何明确声明“不支持 FIFO 队列”而不是“发送测试消息失败......”荒谬!

于 2020-06-27T12:42:15.573 回答