amazon-s3 - S3 存储桶的 Terraform AWS 可选日志记录

标签 amazon-s3 terraform terraform-provider-aws

我正在尝试使用链接中示例中的 terraform 创建 S3 存储桶 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。

此外,我正在尝试使用一个模块。

最佳答案

使用 terraform 0.12+ 中较新的动态 block 支持,如果我们想要像这样进行日志记录,我们将传递一个包含日志记录设置的单项数组:

variable "logging" {
  type        = list
  default     = []
  description = "to enable logging set this to [{target_bucket = 'xxx' target_prefix = 'logs/'}]"
}

resource "aws_s3_bucket" "s3bucket" {
  dynamic "logging" {
    for_each = [for l in var.logging : {
      target_bucket = l.target_bucket
      target_prefix = l.target_prefix
    }]
    content {
      target_bucket = logging.value.target_bucket
      target_prefix = logging.value.target_prefix
    }
  }
}

关于amazon-s3 - S3 存储桶的 Terraform AWS 可选日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55478352/

相关文章:

java - 最佳实践 : Creation of SAX parser for XMLReader

django - Uploadify 3.1 尝试上传到 Amazon S3 (SignatureDoesNotMatch)

azure - 如何为存储帐户创建自定义策略以拒绝公共(public)访问并允许选定的网络绕过 AzureServices?

amazon-web-services - 如何在使用 Terraform 创建网络负载均衡器时附加弹性 IP?

terraform - 如何在 terraform 的数据源或资源 block 中使用提供程序默认标签的值?

amazon-web-services - 使用 for 和 escape 最后一个逗号进行地形改造模板文件

amazon-web-services - 使用 boto3 从 Amazon S3 存储桶前缀中获取 n 个最后修改的对象

kubernetes - 有没有办法手动编辑/篡改 terraform.tfstate 文件?

amazon-ec2 - 将不同的安全组附加到不同的 EC2

amazon-web-services - 无法在现有 S3 存储桶中放置通知事件来触发 CloudFormation Lambda