脚本到AWS Lambda?

时间:2019-03-01 13:29:24

标签: bash amazon-web-services

我有这个bash脚本,其中列出了跨区域的所有活动EC2实例:

for region in `aws ec2 describe-regions --output text | cut -f3` do
 echo -e "\nListing Instances in region:'$region'..."
 aws ec2 describe-instances --region $region
done

我想将此移植到AWS上的Lambda函数。今天最好的方法是什么?我必须使用包装纸或类似包装纸吗?节点?我在Google上搜索后发现最像是解决方法..但它们已经存在了两年。不胜感激。

2 个答案:

答案 0 :(得分:1)

两种方法:

  1. 使用自定义运行时和图层:https://github.com/gkrizek/bash-lambda-layer

  2. “正在从另一个运行时执行:https://github.com/alestic/lambdash

答案 1 :(得分:1)

您应该使用具有AWS开发工具包的语言(例如Python)来编写它。

您还应该考虑Lambda函数应该对输出进行 的操作,因为此刻Lambda函数仅检索信息,但不对其进行任何操作。

这是示例AWS Lambda函数:

import boto3

def lambda_handler(event, context):

    instance_ids = []

    # Get a list of regions    
    ec2_client = boto3.client('ec2')
    response = ec2_client.describe_regions()

    # For each region
    for region in response['Regions']:

        # Get a list of instances
        ec2_resource = boto3.resource('ec2', region_name=region['RegionName'])
        for instance in ec2_resource.instances.all():
            instance_ids.append(instance.id)

    # Return the list of instance_ids
    return instance_ids

请注意,顺序调用所有区域要花费大量时间。以上过程可能需要15到20秒。