如何使用aws lambda和aws api网关停止/启动ambari集群的服务

xe55xuns  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(348)

我不想把web服务传递给aws lambda,这样我就可以使用这些web服务来停止/启动ambari集群的服务。
提前谢谢。

zkure5ic

zkure5ic1#

通过使用boto3编程api调用,awslambda可以很容易地与几乎所有的webservices(包括ec2)集成
您只需在lambda函数中创建aws服务的boto3客户机,就可以按您想要的方式使用它们(例如启动/停止)。
aws lambda还提供了调度其调用的功能。
正如您在评论中提到的,您需要使用api来阻止它们。
下面是基本的代码片段-

您需要创建一个包含请求库的zip文件,并将其上传到lambda函数中

import requests

# name of lambda_function that needs to invoke

def lambda_handler(event, context):
    url = ''
    json_body = {}
    try:
        api_response = requests.put(url=url, json=json_body)
    except Exception as err:
        print(err)

如果这些服务器在aws中运行,那么可以创建boto3客户机并使用

import boto3
from boto3.session import Session
aws_access_key = 'xxxxxxxxxxxxxxxxxxxx'
aws_secret_key = 'yyyyyyyyyyyyyyyyyyyyy'
region = 'xx-yyyyyy'
def lambda_handler(event, context): 
     try:
         sess = Session(aws_access_key_id=aws_access_key,
                   aws_secret_access_key=aws_secret_key)
        ec2_conn = sess.client(service_name='ec2', region_name=region)
         response = client.start_instances(
                          InstanceIds=[
                              'i-xxxxxx','i-yyyyyy','i-zzzzzz',
                          ])
    except ClientError as e:
         print(e.response['Error']['Message'])

p、 s:这是一个基本的代码片段,可以根据您的用例而有所不同

相关问题