amazon-web-services - 从字符串中选择特定模式来创建资源 - terraform
问题描述
我想使用 terraform 中的变量模式在 AWS 上创建资源。
例如:
proyects = ["proyect1/X", "proyect1/Y", "proyect2/X", ...]
resource "aws_example" "proyect1" {
count = length(var.proyects) <-- only using the proyect1/... ones
name = var.proyects[count.index] <-- only using the proyect1/... ones
资源 proyect1/X 创建
资源 proyect1/Y 创建
resource "aws_example" "proyect2" {
count = length(var.proyects) <-- only using the proyect2/... ones
name = var.proyects[count.index] <-- only using the proyect2/... ones
资源 proyect2/X 创建
资源 proyect2/Y 创建
我不知道这是否可能......我正在尝试使用https://www.terraform.io/docs/language/functions/index.html
解决方案
您可以过滤proyect1
和proyect2
使用for_each
:
variable "proyects" {
default = ["proyect1/X", "proyect1/Y", "proyect2/X", "proyect2/Y", "proyect2/Z"]
}
resource "aws_example" "proyect1" {
for_each = [for v in var.proyects : v if length(regexall("proyect1.*", v)) > 0]
name = each.key
}
resource "aws_example" "proyect2" {
for_each = [for v in var.proyects : v if length(regexall("proyect2.*", v)) > 0]
name = each.key
}
推荐阅读
- ruby-on-rails - 默认情况下,Rails 中的 created_at 是 Time.now.utc.to_date 吗?
- python - 无效的目录名称 Spyder Python
- java - 将类级别 @PreAuthorized 注释与方法级别 @PreAuthorzied 注释一起使用
- c# - 如何在 Windows 应用程序和许可证服务器之间建立安全连接?
- javascript - 如何显示和映射状态或 const 数据数组对象的第一个 id?
- java - 以编程方式注册 bean(使用自定义 bean 名称)
- objective-c - 生成新的原型
- python-3.x - 'function' 对象在本地包中不可下标
- email - Google Apps 脚本邮件配额是如何计算的?
- mailchimp - 弹出式表单编辑器中缺少 MailChimp“生成代码”按钮