如何给 imageNameRegex 一个实际的正则表达式

How do I give imageNameRegex an actual regular expression

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

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

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

这里的目的是我可以跨多个区域复制 AMI 并让 Brooklyn 选择正确的 AMI,而无需为该区域指定特定的映像 ID。

查看 Brooklyn 测试,我什至不需要正则表达式 - 只要名称是全名的子字符串,它就可以工作。

我在 brooklyn.properties 而不是 yaml 中设置它,尽管我无法想象这会有什么不同。

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

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

如果你指定图片所有者,那么它应该能找到它,如:

imageOwner = 411009282317

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

anyOwner = true

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

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