簡體   English   中英

將 aws_s3_bucket_cors_configuration 用於多個 cors_rules 和 terraform aws 提供商版本 4

[英]Using aws_s3_bucket_cors_configuration for multiple cors_rules with terraform aws provider version 4

在 aws 提供程序版本 3 中,我們在 aws_s3_bucket 資源中定義了 cors_rule,如下所示:

resource "aws_s3_bucket" "bucket" {
  ...

  dynamic "cors_rule" {
    for_each = var.cors_rule
    content {
      allowed_headers = lookup(cors_rule.value, "allowed_headers", [])
      allowed_methods = lookup(cors_rule.value, "allowed_methods", [])
      allowed_origins = lookup(cors_rule.value, "allowed_origins", [])
      expose_headers  = lookup(cors_rule.value, "expose_headers", [])
      max_age_seconds = lookup(cors_rule.value, "max_age_seconds", null)
    }
  }

  ...
}

這樣,當我們調用模塊時,我們可以定義幾個 cors 規則,這個資源將創建它們。

我們在版本 4 中嘗試了許多不同的方法來執行此操作,但沒有任何效果。

我們如何使用版本 4 中的新 aws_s3_bucket_cors_configuration 實現同樣的結果?

它是一種資源,它將始終默認創建,但它需要創建這些值。 我能解決這個問題的唯一方法是有條件地創建它並添加值。

resource "aws_s3_bucket_cors_configuration" "default" {
  count = local.enabled && var.cors_rule_inputs != null ? 1 : 0

  bucket = join("", aws_s3_bucket.default.*.id)

  dynamic "cors_rule" {
    for_each = var.cors_rule_inputs

    content {
      allowed_headers = cors_rule.value.allowed_headers
      allowed_methods = cors_rule.value.allowed_methods
      allowed_origins = cors_rule.value.allowed_origins
      expose_headers  = cors_rule.value.expose_headers
      max_age_seconds = cors_rule.value.max_age_seconds
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM