AWS Lambda描述自动扩展组实例

时间:2018-08-23 13:56:04

标签: amazon-web-services amazon-ec2 aws-lambda

我正在尝试获取特定自动伸缩组的所有实例ID,因此我认为以下代码必须有效...但是它仅返回该自动伸缩组中所有实例的标签...为什么我没有得到实例ID? Boto3文档显示使用此代码可以获取组的全部信息,但是我仅获得标签...解决此问题的方法是什么?

    import boto3
    client = boto3.client('autoscaling')
    def lambda_handler(event, context):

       response = client.describe_auto_scaling_groups(
       AutoScalingGroupNames=['tryautoscalegroup']
       )   

       print(response)

1 个答案:

答案 0 :(得分:0)

代码中的函数完全适合您的用例,即,它提供了该自动伸缩组的所有详细信息,这意味着它提供了所有实例及其负载平衡器和自动伸缩配置信息。指向您的问题,您将只想拥有实例ID,方法是解析describe_auto_scaling_groups(**kwargs)函数之后得到的响应。 然后,通过解析诸如response["AutoScalingGroups"][0]["Instances"][0]["InstanceId"]之类的json响应,您可以获取实例ID。 下面是整个lambda函数,它将打印您的自动伸缩组的实例ID。

import boto3
asg = boto3.client('autoscaling')
def lambda_handler(event, context):

   response = asg.describe_auto_scaling_groups(
   AutoScalingGroupNames=['myasgname']
   )   

   print(response)
   instances=response["AutoScalingGroups"][0]["Instances"]
   #declare a empty list so that later we can append instance ids into this list
   instanceids=[]
   for i in instances:
      instanceids.append(i["InstanceId"])
   print instanceids

下面是您的响应json的示例:

{
    'AutoScalingGroups': [
        {
            'AutoScalingGroupName': 'string',
            'AutoScalingGroupARN': 'string',
            'LaunchConfigurationName': 'string',
            'LaunchTemplate': {
                'LaunchTemplateId': 'string',
                'LaunchTemplateName': 'string',
                'Version': 'string'
            },
            'MinSize': 123,
            'MaxSize': 123,
            'DesiredCapacity': 123,
            'DefaultCooldown': 123,
            'AvailabilityZones': [
                'string',
            ],
            'LoadBalancerNames': [
                'string',
            ],
            'TargetGroupARNs': [
                'string',
            ],
            'HealthCheckType': 'string',
            'HealthCheckGracePeriod': 123,
            'Instances': [
                {
                    'InstanceId': 'string',
                    'AvailabilityZone': 'string',
                    'LifecycleState': 'Pending'|'Pending:Wait'|'Pending:Proceed'|'Quarantined'|'InService'|'Terminating'|'Terminating:Wait'|'Terminating:Proceed'|'Terminated'|'Detaching'|'Detached'|'EnteringStandby'|'Standby',
                    'HealthStatus': 'string',
                    'LaunchConfigurationName': 'string',
                    'LaunchTemplate': {
                        'LaunchTemplateId': 'string',
                        'LaunchTemplateName': 'string',
                        'Version': 'string'
                    },
                    'ProtectedFromScaleIn': True|False
                },
            ],
            'CreatedTime': datetime(2015, 1, 1),
            'SuspendedProcesses': [
                {
                    'ProcessName': 'string',
                    'SuspensionReason': 'string'
                },
            ],
            'PlacementGroup': 'string',
            'VPCZoneIdentifier': 'string',
            'EnabledMetrics': [
                {
                    'Metric': 'string',
                    'Granularity': 'string'
                },
            ],
            'Status': 'string',
            'Tags': [
                {
                    'ResourceId': 'string',
                    'ResourceType': 'string',
                    'Key': 'string',
                    'Value': 'string',
                    'PropagateAtLaunch': True|False
                },
            ],
            'TerminationPolicies': [
                'string',
            ],
            'NewInstancesProtectedFromScaleIn': True|False,
            'ServiceLinkedRoleARN': 'string'
        },
    ],
    'NextToken': 'string'