作者:頃刻想詤嗳伱kYU-2001 | 来源:互联网 | 2023-02-01 21:39
我正在尝试匹配不以连字符( - )开头的EC2实例名称,因此我可以从关闭过程中跳过以 - 开头的实例名称.如果我使用^或*,这些基本的正则表达式运算符工作正常,但如果我尝试使用更高级的模式匹配,它就不能正确匹配.模式[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()
Matt Houser..
5
使用CLI和各种API时,"正则表达式"不会执行EC2实例过滤.相反,过滤器是简单*
和?
通配符.
根据本文档列出和过滤您的资源,它确实提到了正则表达式过滤.但是,在该部分中不清楚它是在API中支持还是仅在AWS管理控制台中受支持.
但是,稍后在同一文档的"使用CLI和API列出和过滤"中,它说:
您还可以将通配符与过滤器值一起使用.星号(*)匹配零个或多个字符,问号(?)恰好匹配一个字符.例如,您可以使用数据库作为过滤器值来获取描述中包含数据库的所有EBS快照.
在本节中,没有提到正则表达式的支持.
结论,我怀疑只有管理控制台UI支持正则表达式过滤.
1> Matt Houser..:
使用CLI和各种API时,"正则表达式"不会执行EC2实例过滤.相反,过滤器是简单*
和?
通配符.
根据本文档列出和过滤您的资源,它确实提到了正则表达式过滤.但是,在该部分中不清楚它是在API中支持还是仅在AWS管理控制台中受支持.
但是,稍后在同一文档的"使用CLI和API列出和过滤"中,它说:
您还可以将通配符与过滤器值一起使用.星号(*)匹配零个或多个字符,问号(?)恰好匹配一个字符.例如,您可以使用数据库作为过滤器值来获取描述中包含数据库的所有EBS快照.
在本节中,没有提到正则表达式的支持.
结论,我怀疑只有管理控制台UI支持正则表达式过滤.