【问题标题】:aws: boto3 get all instances of a load balancersaws:boto3 获取负载均衡器的所有实例
【发布时间】:2018-12-16 20:52:49
【问题描述】:

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

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

如何获取lbs的实例。

此外,我如何获取状态不活动的负载平衡器,因为 describe_load_balanacers 仅提供状态 active load balanceres。

【问题讨论】:

  • “LB 的实例”是什么意思?您是指负载均衡器向其发送请求的实例列表吗?您使用的是哪种类型的负载均衡器——经典、应用程序或网络?如果它是 Application Load Balancer,那么您将不得不前往目标组并从中获取实例。
  • 嗨 Jhon 谢谢你的回复我正在使用经典,我想要它发送请求的实例
  • 您能否指导我如何使用目标组获取应用程序负载均衡器的 ec2 实例

标签: python amazon-web-services amazon-ec2 boto3 elastic-load-balancer


【解决方案1】:

经典负载均衡器

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

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

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

应用负载均衡器

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

这是一个示例响应:

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

【讨论】:

  • 嗨 Jhon 谢谢你的回复,当我做 describe_load_balancers() 时它只获取状态活动负载平衡 rs
  • 对不起,我不明白你在说什么。它是否为您提供了所需的信息?您缺少什么信息?
【解决方案2】:

对于任何寻求快速 sn-p 以查看您的实例是否在 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}")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2018-03-22
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    相关资源
    最近更新 更多