Amazon web services 如何使用AWS Lambda和AWS API网关停止/启动ambari群集的服务

Amazon web services 如何使用AWS Lambda和AWS API网关停止/启动ambari群集的服务,amazon-web-services,hadoop,aws-lambda,aws-api-gateway,ambari,Amazon Web Services,Hadoop,Aws Lambda,Aws Api Gateway,Ambari,我不想将web服务传递给AWS Lambda,以便使用这些web服务可以停止/启动ambari cluster的服务 提前感谢。AWS Lambda可以通过使用 您只需在lambda函数中创建aws服务的boto3客户端,就可以按照您想要的方式使用它们(例如,启动/停止) AWS Lambda还提供了计划其调用的功能 正如您在评论中提到的,您需要使用api阻止它们 下面是基本的代码片段- #您需要创建一个包含请求库并将其上载到lambda函数中的文件 import requests # name

我不想将web服务传递给AWS Lambda,以便使用这些web服务可以停止/启动ambari cluster的服务


提前感谢。

AWS Lambda可以通过使用

您只需在lambda函数中创建aws服务的boto3客户端,就可以按照您想要的方式使用它们(例如,启动/停止)

AWS Lambda还提供了计划其调用的功能

正如您在评论中提到的,您需要使用api阻止它们

下面是基本的代码片段-

#您需要创建一个包含请求库并将其上载到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'])

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

curl-u admin:$PASSWORD-i-H'X-Requested-By:ambari'-X PUT-d'{“RequestInfo”:{“context”:“Stop HDFS via REST”},“Body”:{“ServiceInfo”:{“state”:“INSTALLED”}'http://$HOST/api/v1/clusters/CLUSTER\u NAME/services/HDFS在何处添加此命令?是,要计划此命令。因此,在周末,我将首先停止ambari服务器的所有服务,然后停止hadoop集群的EC2实例。