![](/img/trans.png)
[英]With aws_s3_bucket_object deprecated, should I upload files using aws_s3_bucket only?
[英]Is there a way to add CORS rule to Terraform aws_s3_bucket data source?
我有一個不是通過 Terraform 創建的現有存儲桶。我目前正在為該存儲桶設置一個策略以獲得額外的訪問權限。 我需要向存儲桶添加cors_rule
,但我發現的所有內容都表明您需要創建resource
才能添加 cors 規則。 有沒有辦法將cors_rule
添加到現有存儲桶數據源?
data "aws_s3_bucket" "my_bucket" {
bucket = "my-bucket"
# This produces a failure on plan
cors_rule {
allowed_headers = ["*"]
allowed_methods = ["GET", "HEAD"]
allowed_origins = [
"https://example.my-website.com"
]
expose_headers = [
"Access-Control-Allow-Origin",
"ETag"
]
max_age_seconds = 3000
}
}
resource "aws_s3_bucket_policy" "allow_access" {
bucket = data.aws_s3_bucket.my_bucket.id
policy = data.aws_iam_policy_document.allow_access.json
}
data "aws_iam_policy_document" "allow_access" {
statement {
sid = "Access"
principals {
type = "AWS"
identifiers = ["arn:aws:iam::123456789012:user/test"]
}
actions = [
"s3:GetObject",
"s3:GetBucketLocation",
"s3:ListBucket",
]
resources = [
data.aws_s3_bucket.my_bucket.arn,
"${data.aws_s3_bucket.my_bucket.arn}/*"
]
}
}
你真幸運。 就在今天/昨天,AWS 提供商的 4.0.0 版發布了。
新的提供程序版本在 S3 存儲桶處理方面進行了大量重構。 您現在有一個獨立的s3_bucket_cors_configuration
資源,而不是直接在aws_s3_bucket
資源上的 CORS 設置。 這意味着您現在可以配置 CORS 設置(以及許多其他設置),而無需在 state 中實際擁有存儲桶本身。
resource "aws_s3_bucket_cors_configuration" "example" {
bucket = aws_s3_bucket.example.bucket
cors_rule {
allowed_headers = ["*"]
allowed_methods = ["PUT", "POST"]
allowed_origins = ["https://s3-website-test.hashicorp.com"]
expose_headers = ["ETag"]
max_age_seconds = 3000
}
cors_rule {
allowed_methods = ["GET"]
allowed_origins = ["*"]
}
}
唯一需要注意的是,您需要升級到 AWS 供應商的 4.0.0 以及隨之而來的所有重大更改。
只能修改terraform管理的資源,不能修改作為數據源引入的資源。 您可以做的是為您的存儲桶創建一個資源,然后導入現有的存儲桶:
terraform import aws_s3_bucket.my_bucket my-bucket
導入命令將為您提供在存儲桶上設置的所有屬性的列表。 對於您不想使用 terraform 管理的屬性,請在生命周期塊中使用ignore
參數。
resource "aws_s3_bucket" "my_bucket" {
bucket = "my-bucket"
cors_rule {
allowed_headers = ["*"]
allowed_methods = ["PUT", "POST", "DELETE", "GET"]
allowed_origins = ["*"]
expose_headers = []
}
}
這適用於 3.7 版
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.