【发布时间】:2017-11-07 20:35:56
【问题描述】:
我正在尝试匹配不以连字符 (-) 开头的 EC2 实例名称,因此我可以从关闭过程中跳过以 - 开头的实例名称。如果我使用 ^ 或 *,这些基本的 regex 运算符可以正常工作,但如果我尝试使用更高级的模式匹配,则无法正确匹配。模式 [a-zA-Z0-9] 被忽略并且不返回任何实例。
import boto3
# Enter the region your instances are in, e.g. 'us-east-1'
region = 'us-east-1'
#def lambda_handler(event, context):
def lambda_handler():
ec2 = boto3.resource('ec2', region_name=region)
filters= [{
'Name':'tag:Name',
#'Values':['-*']
'Values':['^[a-zA-Z0-9]*']
},
{
'Name': 'instance-state-name',
'Values': ['running']
}]
instances = ec2.instances.filter(Filters=filters)
for instance in instances:
for tags in instance.tags:
if tags["Key"] == 'Name':
name = tags["Value"]
print 'Stopping instance: ' + name + ' (' + instance.id + ')'
instance.stop(DryRun=True)
lambda_handler()
【问题讨论】:
标签: python amazon-web-services amazon-ec2 boto boto3