AWS |如何通过Lambda函数在ELBV2上注册EC2实例

时间:2019-05-20 09:15:46

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

我是AWS上的新手,我能够通过Network Load Balancer上的目标组注册EC2实例。我在具有不同端口的EC2实例上部署了4种不同的服务,并在网络负载平衡器上为其端口(即8081,8082等)注册了每个服务。但是我遇到了一些问题,

问题:

  1. EC2实例仅针对一项服务(即8081)从目标组自动注销,为什么要自动注销?

我浏览了AWS文档和不同的博客,但是我没有得到任何特定的原因来自动将EC2实例从网络负载平衡器目标组中删除,即使没有将其他服务的相同实例从目标组中删除。

解决方案: 现在,最后,我创建了一个云监视警报,如果删除了任何EC2实例,它将触发一封通知电子邮件,还触发lambda函数以再次注册EC2实例。

问题:

  1. 我无法从Lambda注册。如何通过Lambda函数注册?

任何人都可以在上述问题上寻求帮助,或者是否有替代最佳解决方案来实现上述用例。

谢谢

2 个答案:

答案 0 :(得分:0)

您将使用register_targets()

  

将指定的目标注册到指定的目标组。

     

如果目标是EC2实例,则在注册时它必须处于运行状态。

response = client.register_targets(
    TargetGroupArn='arn:aws:elasticloadbalancing:ap-southeast-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067',
    Targets=[
        {
            'Id': 'i-abcd1234',
            'Port': 80
        },
    ]
)

答案 1 :(得分:0)

这是完整的代码,您可以在其中使用目标组中的注册目标。下面的代码在python 2.7下运行

import boto3
client = boto3.client('elbv2')
def lambda_handler(event, context):
    body = {
        "message": "Go Serverless v1.0! Your function executed successfully!",
        "input": event
    }

    response = client.register_targets(
    TargetGroupArn='<add_your_target_ARN_here>',
    Targets=[
        {
            'Id': 'inctance_ID',
            'Port': <port>
        },
    ]
)
    
    return response