Lambda Python代码中基于多个标记的过滤器实例
我想检查某个实例上是否有标记列表。我感兴趣的标签是Environment、Env和Environment。它们的价值是生产、产品和生产。我正在使用lambda函数进行检查,到目前为止,我有:Lambda Python代码中基于多个标记的过滤器实例,python,amazon-web-services,amazon-ec2,aws-lambda,Python,Amazon Web Services,Amazon Ec2,Aws Lambda,我想检查某个实例上是否有标记列表。我感兴趣的标签是Environment、Env和Environment。它们的价值是生产、产品和生产。我正在使用lambda函数进行检查,到目前为止,我有: response = ec2.describe_tags( Filters=[ { 'Name': 'tag:Environment|Env|environment', 'Values': [ 'Production|production|Pr
response = ec2.describe_tags(
Filters=[
{
'Name': 'tag:Environment|Env|environment',
'Values': [
'Production|production|Prod',
]
},
{
'Name': 'resource-id',
'Values': [
instance_id,
],
}
])
print(response)
但这并不能捕获实例上的正确标记。我认为问题在于我试图捕获“Key1 | Key2 | Key3”格式的多个标记。任何人都可以建议通过多个标签过滤的正确方法吗?谢谢 我想你必须打三个独立的电话。至少这是我从几次灭鼠行动中得出的结论 我使用的示例如下:
import boto3
from pprint import pprint
ec2 = boto3.client('ec2')
tag_values = ['production', 'Prod', 'Production']
tag_names = ['Env', 'Environment', 'environment']
results = []
for tag_name in tag_names:
r=ec2.describe_tags(
Filters=[{
'Name':'tag:' + tag_name,
'Values': tag_values
}])
pprint(r)
results.append(r)
pprint(results)
似乎您正试图使用lambda基于EC2事件工作,那么您最好在EC2事件中可用的实例ID上获取实例库,获取标记并执行进一步的操作
ec2 = boto3.client('ec2')
specificinstance = ec2.describe_instances(Filters=[
{
'Name': 'instance-id',
'Vdataalues': [
event["detail"]["EC2InstanceId"]
],
}])
TAGS=specificinstance["Reservations"][0]["Instances"][0]["Tags"]
pprint(TAGS)
或者我没有找到一种方法根据不同的标记键来筛选实例,但下面的示例可能会有所帮助,它根据不同的值进行筛选
import boto3
client = boto3.client('ec2')
filters = [{
'Name': "tag:environment",
'Values': ['prod','production','Production']
}]
response = client.describe_instances(Filters=filters)
print response
如果it容器环境
像产品、生产、生产
使用实例IP或保留ID进行筛选
import boto3
client = boto3.client('ec2')
filters = [{
'Name': "tag:environment",
'Values': ['prod,production,Production']
},
{
'Name': 'instance-id',
'Values': [
'i-123456789',
],
}]
response = client.describe_instances(Filters=filters)
print response