![](/img/trans.png)
[英]Terraform aws_s3_bucket_replication_configuration can't generate multiple rules with for_each
[英]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.