amazon-web-services - Terraform - 创建多个存储桶
问题描述
创建存储桶非常简单。
resource "aws_s3_bucket" "henrys_bucket" {
bucket = "${var.s3_bucket_name}"
acl = "private"
force_destroy = "true"
}
最初我以为我可以为变量创建一个列表,s3_bucket_name
但我得到一个错误:
Error: bucket must be a single value, not a list
-
variable "s3_bucket_name" {
type = "list"
default = ["prod_bucket", "stage-bucket", "qa_bucket"]
}
如何在不重复代码的情况下创建多个存储桶?
解决方案
variable "s3_bucket_name" {
type = "list"
default = ["prod_bucket", "stage-bucket", "qa_bucket"]
}
resource "aws_s3_bucket" "henrys_bucket" {
count = "${length(var.s3_bucket_name)}"
bucket = "${element(var.s3_bucket_name, count.index)}"
acl = "private"
force_destroy = "true"
}
编辑:正如@ydaetskcoR 所建议的,您可以使用list[index]
模式而不是元素。
variable "s3_bucket_name" {
type = "list"
default = ["prod_bucket", "stage-bucket", "qa_bucket"]
}
resource "aws_s3_bucket" "henrys_bucket" {
count = "${length(var.s3_bucket_name)}"
bucket = "${var.s3_bucket_name[count.index]}"
acl = "private"
force_destroy = "true"
}
推荐阅读
- c# - AutoMapper 映射嵌套列表对象
- python - 使用 to_csv 和 dask 忽略不匹配的列类型
- c# - System.ArgumentException:未找到成员匹配数据 - Unity IOC
- python - skmultiLearn 分类器预测总是返回 0
- fail2ban - 如何在 fail2ban 监狱中指定多个日志文件模式?
- amazon-web-services - Cloudfront DNS解析奇怪的行为
- android - PublisherAdView 在 onAdLoaded & onAdFailed 后变为空
- asp.net-mvc - asp.net core mvc中的DropDownlist问题
- c++ - 为班级编写单元测试
- maven - 如何从 docker 运行 maven 包装器?