Search code examples
amazon-web-servicesamazon-ec2amazon-sqsaws-auto-scaling

PutLifecycleHook operation: Unable to publish test message to notification target (FIFO)


There are many documents that explain how to resolve this error. Checked many of them and tried . However following them is not resolving this issue for me.

Error I get is

An error occurred (ValidationError) when calling the PutLifecycleHook operation: Unable to publish test message to notification target arn:aws:sqs:xxxxx:XXXXX:kubeeventsqueue.fifo using IAM role arn:aws:iam::XXXXXXXXX:role/kubeautoscaling. Please check your target and role configuration and try to put lifecycle hook again.

The command I am using is:

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

Note that I have replaced XXXXX for the actual ids above.

The role concerned (arn:aws:iam::XXXXXX:role/kubeautoscaling) is having trust relationship with autoscaling.amazonaws.com. It is also having "AutoScalingNotificationAccessRole" policy attached to it.

While testing, I have also tried adding a permission of "Allow everybody" for All SQS Actions (SQS:*). (Removed it after testing though).

I have also tried to first create SQS queue and then configure --notification-target-arn, without any success.

Any help on this would be very helpful.


Solution

  • It appears that you are using an Amazon SQS FIFO (first-in-first-out) queue.

    From Configuring Notifications for Amazon EC2 Auto Scaling Lifecycle Hooks - Receive Notification Using Amazon SQS:

    FIFO queues are not compatible with lifecycle hooks.

    I don't know whether this is the cause of your current error, but it would prohibit your desired configuration from working.