【发布时间】:2021-08-06 10:31:43
【问题描述】:
我是编码新手 我想使用 AWS lambda 函数获取自动缩放组的实例 ID
【问题讨论】:
-
您应该只发布问题的答案。
标签: python amazon-web-services aws-lambda aws-auto-scaling
我是编码新手 我想使用 AWS lambda 函数获取自动缩放组的实例 ID
【问题讨论】:
标签: python amazon-web-services aws-lambda aws-auto-scaling
您可以使用此 boto3 客户端方法获取自动缩放组中的实例 ID。
import boto3
client = boto3.client('autoscaling')
def lambda_handler(event, context):
response = client.describe_auto_scaling_groups(
AutoScalingGroupNames=[
'string',
],
MaxRecords=50
)
instances = response['AutoScalingGroups'][0]['Instances']
for i in range(len(instances)):
print(instances[i]['InstanceId'])
如果你有超过 1 个自动缩放组,那么你必须保持这一行循环:
response['AutoScalingGroups'][0]['Instances']
用循环变量替换 '0'。
如果您想从回复中获得更多信息:
这是此方法返回的完整响应。
{
'AutoScalingGroups': [
{
'AutoScalingGroupName': 'string',
'AutoScalingGroupARN': 'string',
'LaunchConfigurationName': 'string',
'LaunchTemplate': {
'LaunchTemplateId': 'string',
'LaunchTemplateName': 'string',
'Version': 'string'
},
'MixedInstancesPolicy': {
'LaunchTemplate': {
'LaunchTemplateSpecification': {
'LaunchTemplateId': 'string',
'LaunchTemplateName': 'string',
'Version': 'string'
},
'Overrides': [
{
'InstanceType': 'string',
'WeightedCapacity': 'string',
'LaunchTemplateSpecification': {
'LaunchTemplateId': 'string',
'LaunchTemplateName': 'string',
'Version': 'string'
}
},
]
},
'InstancesDistribution': {
'OnDemandAllocationStrategy': 'string',
'OnDemandBaseCapacity': 123,
'OnDemandPercentageAboveBaseCapacity': 123,
'SpotAllocationStrategy': 'string',
'SpotInstancePools': 123,
'SpotMaxPrice': 'string'
}
},
'MinSize': 123,
'MaxSize': 123,
'DesiredCapacity': 123,
'DefaultCooldown': 123,
'AvailabilityZones': [
'string',
],
'LoadBalancerNames': [
'string',
],
'TargetGroupARNs': [
'string',
],
'HealthCheckType': 'string',
'HealthCheckGracePeriod': 123,
'Instances': [
{
'InstanceId': 'string',
'InstanceType': 'string',
'AvailabilityZone': 'string',
'LifecycleState': 'Pending'|'Pending:Wait'|'Pending:Proceed'|'Quarantined'|'InService'|'Terminating'|'Terminating:Wait'|'Terminating:Proceed'|'Terminated'|'Detaching'|'Detached'|'EnteringStandby'|'Standby'|'Warmed:Pending'|'Warmed:Pending:Wait'|'Warmed:Pending:Proceed'|'Warmed:Terminating'|'Warmed:Terminating:Wait'|'Warmed:Terminating:Proceed'|'Warmed:Terminated'|'Warmed:Stopped'|'Warmed:Running',
'HealthStatus': 'string',
'LaunchConfigurationName': 'string',
'LaunchTemplate': {
'LaunchTemplateId': 'string',
'LaunchTemplateName': 'string',
'Version': 'string'
},
'ProtectedFromScaleIn': True|False,
'WeightedCapacity': 'string'
},
],
'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',
'MaxInstanceLifetime': 123,
'CapacityRebalance': True|False,
'WarmPoolConfiguration': {
'MaxGroupPreparedCapacity': 123,
'MinSize': 123,
'PoolState': 'Stopped'|'Running',
'Status': 'PendingDelete'
},
'WarmPoolSize': 123
},
],
'NextToken': 'string'
}
【讨论】:
您可以尝试使用 boto3 库并使用此处提到的 API 获取信息: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/autoscaling.html#AutoScaling.Client.describe_auto_scaling_instances
这样的东西可以工作
import boto3
import json
client = boto3.client('autoscaling')
def lambda_handler(event, context):
get_response = client.describe_auto_scaling_instances(
InstanceIds= '*Your Autoscaling Instance Id*'
)
instance_id = get_response['AutoScalingInstances'][0]['InstanceId']
【讨论】: