amazon-web-services - 与 aws 提供程序区域不同的 terraform aws_s3_bucket 区域在同一提供程序区域中创建
问题描述
我想用 terraform 管理 AWS S3 存储桶,并注意到该region
资源有一个参数。
我有一个为 1 个区域配置的 AWS 提供商,并且希望尽可能使用该提供商在多个区域中创建 S3 存储桶。我的 S3 存储桶有很多我不想重复的通用配置,所以我有一个本地模块来完成所有重复的工作......
在mod-s3-bucket/main.tf
,我有类似的东西:
variable bucket_region {}
variable bucket_name {}
resource "aws_s3_bucket" "s3_bucket" {
region = var.bucket_region
bucket = var.bucket_name
}
然后在main.tf
父目录(tf root)中:
provider "aws" {
region = "us-east-1"
}
module "somebucket" {
source = "mod-s3-bucket"
bucket_region = "us-east-1"
bucket_name = "useast1-bucket"
}
module "anotherbucket" {
source = "mod-s3-bucket"
bucket_region = "us-east-2"
bucket_name = "useast2-bucket"
}
当我使用它运行terraform apply
时,两个存储桶都在 us-east-1 中创建 - 这是预期的行为吗?我的理解是,区域应该使存储桶在不同的区域中创建。
此外,如果我在创建存储桶后运行 terraform 计划,我会看到以下内容:
~ region = "us-east-1" -> "us-east-2"
在 1 个存储桶上,但是在应用后,区域没有改变。
我知道我可以通过使用第二个别名 AWS 提供商轻松解决此问题,但我特别询问该region
参数如何用于aws_s3_bucket
资源(https://www.terraform.io/docs/providers/aws/r/ s3_bucket.html#region )
- terraform v0.12.24
- aws v2.64.0
解决方案
我认为您需要执行此示例中显示的文档之类的操作Replication Configuration
:https ://www.terraform.io/docs/providers/aws/r/s3_bucket.html#using-replication-configuration
# /root/main.tf
provider "aws" {
region = "us-east-1"
}
provider "aws" {
alias = "us-east-2"
region = "us-east-2"
}
module "somebucket" {
source = "mod-s3-bucket"
bucket_region = "us-east-1"
bucket_name = "useast1-bucket"
}
module "anotherbucket" {
source = "mod-s3-bucket"
provider = "aws.us-east-2"
bucket_region = "us-east-2"
bucket_name = "useast2-bucket"
}
# /mod-s3-bucket/main.tf
variable provider {
type = string
default = "aws"
}
variable bucket_region {}
variable bucket_name {}
resource "aws_s3_bucket" "s3_bucket" {
provider = var.provider
region = var.bucket_region
bucket = var.bucket_name
}
我从来没有在资源中明确设置过这样的提供者,但基于它可能工作的文档。
推荐阅读
- django - Django:如何区分用户是从 social_auth 还是本地 Django 用户登录
- android - 在使用 layout_constrainedWidth 时,如何防止 ConstraintLayout 链中的 TextView 将其他 TextView 推到其约束之外?
- python - makefile won't compile in windows: 系统找不到指定的文件
- c - bsearch() 在 C 中的字符串数组上
- javascript - 为什么这个数组忽略操作顺序?
- python - 使用 BeautifulSoup、python 查找 HTTPS 图像
- amazon-web-services - 设置 AWS EKS - 不知道用于配置的用户名和密码
- linux - 尝试 grep 保存在从文件中读取的变量中的不匹配模式
- marklogic - 生成函数等待生成事务提交?
- android - ViewPager:通过向右拉来添加新页面