diff --git a/lib/autoscale-manager.js b/lib/autoscale-manager.js index 4f19fd1..8cc5551 100644 --- a/lib/autoscale-manager.js +++ b/lib/autoscale-manager.js @@ -8,7 +8,7 @@ module.exports = (logger) => { // listen for SNS lifecycle changes let lifecycleEmitter = new Emitter(); lifecycleEmitter.dryUpCalls = false; - if (process.env.AWS_SNS_TOPIC_ARM) { + if (process.env.AWS_SNS_TOPIC_ARN) { (async function() { try { diff --git a/lib/aws-sns-lifecycle.js b/lib/aws-sns-lifecycle.js index 6dcc0c6..9abedd9 100644 --- a/lib/aws-sns-lifecycle.js +++ b/lib/aws-sns-lifecycle.js @@ -69,7 +69,17 @@ class SnsNotifier extends Emitter { subscriptionRequestId: this.subscriptionRequestId }, 'response from SNS SubscribeURL'); const data = await this.describeInstance(); - this.lifecycleState = data.AutoScalingGroups[0].Instances[0].LifecycleState; + + const group = data.AutoScalingGroups.find((group) => + group.Instances && group.Instances.some((instance) => instance.InstanceId === this.instanceId) + ); + if (!group) { + this.logger.error('Current instance not found in any Auto Scaling group', data); + } else { + const instance = group.Instances.find((instance) => instance.InstanceId === this.instanceId); + this.lifecycleState = instance.LifecycleState; + } + this.emit('SubscriptionConfirmation', {publicIp: this.publicIp}); break; @@ -137,13 +147,13 @@ class SnsNotifier extends Emitter { try { const params = { Protocol: 'http', - TopicArn: process.env.AWS_SNS_TOPIC_ARM, + TopicArn: process.env.AWS_SNS_TOPIC_ARN, Endpoint: this.snsEndpoint }; const response = await snsClient.send(new SubscribeCommand(params)); - this.logger.info({response}, `response to SNS subscribe to ${process.env.AWS_SNS_TOPIC_ARM}`); + this.logger.info({response}, `response to SNS subscribe to ${process.env.AWS_SNS_TOPIC_ARN}`); } catch (err) { - this.logger.error({err}, `Error subscribing to SNS topic arn ${process.env.AWS_SNS_TOPIC_ARM}`); + this.logger.error({err}, `Error subscribing to SNS topic arn ${process.env.AWS_SNS_TOPIC_ARN}`); } } @@ -154,9 +164,9 @@ class SnsNotifier extends Emitter { SubscriptionArn: this.subscriptionArn }; const response = await snsClient.send(new UnsubscribeCommand(params)); - this.logger.info({response}, `response to SNS unsubscribe to ${process.env.AWS_SNS_TOPIC_ARM}`); + this.logger.info({response}, `response to SNS unsubscribe to ${process.env.AWS_SNS_TOPIC_ARN}`); } catch (err) { - this.logger.error({err}, `Error unsubscribing to SNS topic arn ${process.env.AWS_SNS_TOPIC_ARM}`); + this.logger.error({err}, `Error unsubscribing to SNS topic arn ${process.env.AWS_SNS_TOPIC_ARN}`); } }