gpt4 book ai didi

python - Lambda函数根据标签过滤AWS EC2实例?

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:34 26 4
gpt4 key购买 nike

我正在尝试创建一个 Lambda 函数,该函数将过滤所有正在运行的实例,查找具有特定标签的实例,然后关闭这些实例。我对使用 AWS Lambda 比较陌生,因此我们将不胜感激。这是我到目前为止所做的,我目前只是想让过滤器工作,因为我已经知道如何关闭 Lambda 中的实例。我当前收到一条错误消息,提示“模块初始化错误”。有什么建议吗?

import boto3
ec2 = boto3.resource('ec2')

def lambda_handler(event, context):
filters = [{
'Name': 'tag:Application',
'Values': ['exampleName']
},
{
'Name': 'tag:Vertical',
'Values': ['exampleVertical']
}]

instances = ec2.instances.filter(Filters=filters)

RunningInstances = [instance.id for instance in instances]

if len(RunningInstances) > 0:
print("found instances with tag")
else:
print("none found")

更新:此代码可以工作并且可以找到实例,问题是由于最初没有为该函数分配正确的角色而引起的。

最佳答案

这是一个基本的工作片段,用于停止给定标签的正在运行实例 -

from boto3.session import Session
from botocore.exceptions import ClientError

aws_access_key = ''
aws_secret_key = ''
region = ''

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)

instance_ids = []
reservations = ec2_conn.describe_instances(
Filters=[
{
'Name': 'tag:Application',
'Values': [
'exampleName',
]
},
{
'Name': 'tag:Vertical',
'Values': [
'exampleVertical',
]
},
{
'Name': 'instance-state-name',
'Values': [
'running',
]
},
])['Reservations']

for reservation in reservations:
instances = reservation['Instances']
for instance in instances:
instance_ids.append(instance['InstanceId'])

print("Stopping instances: {}".format(','.join(instance_ids)))

stopped_instances_response = ec2_conn.stop_instances(
InstanceIds=instance_ids)

print(stopped_instances_response)
except ClientError as e:
print(e)

P.S:您也可以从环境变量添加凭据。

关于python - Lambda函数根据标签过滤AWS EC2实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44706005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com