我正在尝试使用terraform从链接https://www.terraform.io/docs/providers/aws/r/s3_bucket.html中的示例创建S3存储桶。
我面临的问题是,对于某些存储段,我不希望启用日志记录。如何在Terraform中完成此操作。
logging {
target_bucket = "${aws_s3_bucket.log_bucket.id}"
target_prefix = "log/"
}
对target_bucket和target_prefix使用空字符串会导致terraform尝试创建target_bucket。
另外,我正在尝试使用模块。
可以飞。如果要使日志记录的值可选,请首先将模块aws_s3_bucket.tf设置为:
resource "aws_s3_bucket" "b" {
bucket = "my-tf-test-bucket"
acl = "private"
logging = "${var.logging}"
}
variable "logging" {
type = "list"
default = []
}
然后在一个子文件夹示例中添加您的模板module.tf:
module "s3" {
source = "../"
logging = [
{
target_bucket = "loggingbucketname"
target_prefix = "log/"
},
]
}
provider "aws" {
region = "eu-west-1"
version = "2.4.0"
}
这是您具有日志记录的版本。
接下来修改您的module.tf看起来像
module "s3" {
source = "../"
}
provider "aws" {
region = "eu-west-1"
version = "2.4.0"
}
那是你没有的版本。适用于:Terraform v0.11.11 + provider.aws v2.4.0
已更新这是v0.12.5的答案。现在的模块是:
resource "aws_s3_bucket" "b" {
bucket = "my-tf-test-bucket"
acl = "private"
logging {
target_bucket = var.logging["target_bucket"]
target_prefix = var.logging["target_prefix"]
}
}
variable "logging" {
type=map
default={
target_bucket = ""
target_prefix = ""
}
}
将模块与日志记录一起使用(模块的路径可能有所不同):
module "s3" {
source = "../"
logging={
target_bucket = aws_s3_bucket.log_bucket.id
target_prefix = "log/"
}
}
provider "aws" {
region = "eu-west-1"
version = "2.34.0"
}
resource "aws_s3_bucket" "log_bucket" {
bucket = "my-tf-log-bucket"
acl = "private"
}
没有:
module "s3" {
source = "../"
}
provider "aws" {
region = "eu-west-1"
version = "2.34.0"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句