0

I'm creating AWS CloudFormation template to add a lambda function as a life cycle hook. But the CloudFormation template deployment failed with below message:

The Service-Linked Role for this Auto Scaling group is not yet ready for use.

The CF template is written in YAML and the auto scaling group's part is as follows:

ServerGroup:
    Type: 'AWS::AutoScaling::AutoScalingGroup'
    DependsOn: 
      - VpcStack
      - NodeManagerExecRole
      - NodeManagerSnsTopic
    Properties:
      VPCZoneIdentifier: 
        - !GetAtt [VpcStack, Outputs.Subnet2Id]
      LaunchConfigurationName: !Ref LaunchConfig2
      MinSize: '0'
      MaxSize: !Ref NodesPerZone
      DesiredCapacity: !Ref NodesPerZone
      Cooldown: '300'
      HealthCheckType: EC2
      HealthCheckGracePeriod: '300'
      LoadBalancerNames:
        - !Ref ElasticLoadBalancer    
      LifecycleHookSpecificationList:
        - LifecycleTransition: 'autoscaling:EC2_INSTANCE_LAUNCHING'
          LifecycleHookName: NodeManager
          HeartbeatTimeout: 4800
          NotificationTargetARN: !Ref NodeManagerSnsTopic          
          RoleARN: !GetAtt [NodeManagerExecRole, Arn]

The code snippet of NodeManagerExecRole is like this:

NodeManagerExecRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lambda.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      Policies:
        - PolicyName: NodeManager
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - "sns:Publish"
                Resource: "arn:aws:sns:*:*:*"
              - Effect: Allow
                Action:
                  - 'logs:CreateLogGroup'
                  - 'logs:CreateLogStream'
                  - 'logs:PutLogEvents'
                Resource: 'arn:aws:logs:*:*:*'

I searched in AWS documentation as well as stackoverfolow and didn't find useful information about this error. It's only mentioned here with on detail informaton.

Is there something I'm missing in the template?

pythonician_plus_plus
  • 1,244
  • 3
  • 15
  • 38
  • since you have added the `DependsOn`, looks fine for me, the problem will be something else. – BMW Feb 26 '18 at 22:20

1 Answers1

1

You would need to add a trust policy for autoscaling group to post to SNS.

 "Principal": {
    "Service": "autoscaling.amazonaws.com"
  },