如何为imageNameRegex提供实际的正则表达式

时间:2015-03-28 15:44:56

标签: java regex amazon-ec2 jclouds brooklyn

我尝试使用它的名称在AWS上使用特定的AMI。

如果我设置imageNameRegex = region/image_name,它会起作用,但如果我尝试以下任何一项,则会失败:

imageNameRegex = image_name
imageNameRegex = .*/image_name
imageNameRegex = .*image_name
imageNameRegex = /.*image_name/

这里的目的是我可以在多个地区复制AMI,让布鲁克林选择正确的AMI,而无需为该地区指定特定的图像ID。

看看布鲁克林的测试,我甚至不需要正则表达式 - 只要名称是全名的子字符串就应该有效。

我在brooklyn.properties而不是yaml中设置了这一点,尽管我无法想象这会产生任何影响。

2 个答案:

答案 0 :(得分:1)

jclouds将查询所有者的数量限制为更常见的所有者,以获得更好的响应时间。但是,如果要使用更开放的查询,可以在创建上下文时通过设置jclouds.ec2.ami-query属性来覆盖默认查询。默认情况下,jclouds使用这个:

owner-id=137112412989,801119661308,063491364108,099720109477,411009282317;state=available;image-type=machine

答案 1 :(得分:0)

您可能还需要指定图片所有者。

我记得,jclouds对图像所有者做了一些令人惊讶的事情:如果你指定一个图像名称正则表达式,它只会查看少数图像所有者(而不是所有20,000多个图像,这可能需要60+在某些家庭网络上从AWS检索的秒数。)

如果您指定图片所有者,则应找到它,例如:

imageOwner = 411009282317

您还可以设置anyOwner位置配置,但这会检查它可以找到的每个 AMI:

anyOwner = true