适用于S3存储桶的Terraform AWS可选日志记录

阿尔潘索兰基

我正在尝试使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AWS S3 存储桶策略不适用于移动浏览器

适用于S3存储桶中的资产的AWS预签名URL

AWS S3 重定向仅适用于作为子域的存储桶,而不适用于作为目录的存储桶

适用于Get对象的AWS S3存储桶策略,策略生成器Json代码中的错误

使用适用于Node.js的AWS开发工具包有什么方法可以检查S3存储桶中路径的存在吗?

S3数据分区,用于存储桶日志文件

AWS S3存储桶日志与AWS CloudTrail

适用于AWS S3的Python + Boto3:错误-存储桶名称必须与正则表达式“ ^ [a-zA-Z0-9。\ -_] {1,255} $”匹配

terraform 多个提供程序不适用于 s3 存储桶

为什么使用适用于JavaScript的AWS开发工具包列出S3存储桶文件夹中的对象会返回空的Contents数组,但KeyCount大于1?

将IIS日志移至AWS s3存储桶

适用于DeleteObject的AWS S3日志?

如何从适用于Python的AWS CDK中的存储桶对象获取存储桶名称

AWS S3同步命令不适用于S3中的复制对象

AWS S3 存储桶策略

AWS S3存储桶加密

AWS S3存储桶删除

AWS S3存储桶问题

使用Terraform为Django静态文件配置AWS S3存储桶

从 S3 下载目录适用于 Java SDK,但不适用于 AWS CLI

适用于Route53的AWS S3重定向不适用于HTTPS

AWS S3存储桶加密-存储桶属性设置与存储桶策略设置

用于从S3存储桶提供静态内容的AWS API网关方法

AWS:Cloudformation脚本根据条件创建用于CloudTrail的S3存储桶

带有用于从私有 s3 存储桶下载的凭据的 AWS 引导 AMI

所有 s3 存储桶上的 AWS s3 存储桶批量加密

通过cloudformation在s3存储桶上启用对象日志记录

创建S3存储桶和流日志时,Terraform在CI中失败,而在本地可以正常工作

如何在S3上存储较大的Python依赖关系(适用于具有无服务器的AWS Lambda)