2
我試圖匹配不以連字符( - )開頭的EC2實例名稱,所以我可以跳過以關閉過程開始的實例名稱。如果我使用^或*,這些基本的正則表達式運算符工作正常,但如果我嘗試使用更高級的模式匹配,則它不正確匹配。模式[a-zA-Z0-9]被忽略,不返回實例。如何在boto3 ec2實例過濾器中使用高級正則表達式?
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()