aws: boto3 获取负载均衡器的所有实例

aws: boto3 get all instances of a load balancers

我可以使用下面的方法获得负载均衡器

import boto3
elb = boto3.client('elbv2')
lbs = elb.describe_load_balancers()

如何获取 lbs.

的实例

另外,我如何获取状态未激活的负载平衡器,因为 describe_load_balanacers 仅提供状态 active 负载平衡器。

经典负载均衡器

使用:client = boto3.client('elb')

然后 describe_load_balancers() 结果包括实例列表:

        'Instances': [
            {
                'InstanceId': 'string'
            },
        ],

应用程序负载均衡器

使用:client = boto3.client('elbv2')

这是一个示例响应:

{
    'TargetHealthDescriptions': [
        {
            'Target': {
                'Id': 'i-0f76fade',
                'Port': 80,
            },
...

对于正在寻找快速片段以查看您的实例是否在 LB 中的任何人:

from ec2_metadata import ec2_metadata
instance_id: str = ec2_metadata.instance_id
import boto3
client = boto3.client("elbv2" , region_name="us-west-2")

response = client.describe_target_groups(
        LoadBalancerArn="your arn goes here"
)
target_group_arn = response["TargetGroups"][0]["TargetGroupArn"]

response = client.describe_target_health(TargetGroupArn=target_group_arn)

instances = map(lambda x: x["Target"]["Id"], response["TargetHealthDescriptions"])

print(f"target group instances {list(instances)}")
print(f"this instance {instance_id}")