Amazon web services 如何使用多个AWS帐户在环境之间隔离地形状态
如何使用指向不同AWS帐户的s3后端 换句话说,我想要这样的东西: AWS帐户A中S3存储桶上的开发环境状态 将环境状态转移到AWS帐户B上的另一个S3存储桶上Amazon web services 如何使用多个AWS帐户在环境之间隔离地形状态,amazon-web-services,terraform,infrastructure-as-code,Amazon Web Services,Terraform,Infrastructure As Code,如何使用指向不同AWS帐户的s3后端 换句话说,我想要这样的东西: AWS帐户A中S3存储桶上的开发环境状态 将环境状态转移到AWS帐户B上的另一个S3存储桶上 任何人都可以帮我吗?有几种解决方案: 在运行时运行terraform init和injec变量时,在命令行中提供aws概要文件名称: AWS_PROFILE=aws-dev terraform init -backend-config="bucket=825df6bc4eef-state" \
任何人都可以帮我吗?有几种解决方案:
AWS_PROFILE=aws-dev terraform init -backend-config="bucket=825df6bc4eef-state" \
-backend-config="dynamodb_table=825df6bc4eef-state-lock" \
-backend-config="key=terraform-multi-account/terraform.tfstate"
- 为Terraform使用单独的AWS帐户以及您用于调配和配置环境的任何其他管理工具,以便Terraform使用的基础设施与Terraform管理的基础设施完全分离 这降低了不正确的Terraform配置无意中破坏您使用Terraform本身的能力的风险(例如,通过删除状态对象或删除必要的IAM权限)。它还降低了攻击者利用主基础结构中的漏洞升级以访问管理基础结构的可能性
- 使用
间接访问每个主环境AWS帐户中具有管理权限的IAM角色 这允许您将所有直接管理访问集中在一个AWS帐户中,您可以更轻松地对其进行审核,减少凭证扩展,还可以方便地为跨帐户访问配置AWS提供程序(因为它具有内置的sts:AssumeRole
支持)假定\u角色
与系统架构中的所有内容一样,这些并不是绝对的,最适合您的情况将取决于您的详细信息,但希望我链接到的这两个文档部分中的内容将帮助您权衡各种选项,并决定什么最适合您的具体情况。谢谢@samchobble向我展示所有选项。到目前为止,我一直尝试第一种方式,但我想尝试第三种方式。在这种情况下,我不明白如何处理工作区和后端配置之间的关系。我无法描述整个功能,这可能会让你开始它是一个很好的链接,但请谈谈如何使用工作区管理多环境。我需要一种将环境与工作区和特定aws帐户关联的方法。我需要在环境之间获得独立的s3后端管理状态是的,您可以通过为每个环境配置具有不同状态文件的后端来实现。谢谢您的回复。我正在阅读文档,尤其是您建议的链接。我希望在AWS帐户A上有一个s3存储桶用于开发环境的状态管理,在AWS帐户B上有另一个s3存储桶用于产品环境的管理(例如),我开始知道使用terraform实现这一点的唯一方法是为每个环境复制基础结构代码。也许可以用terragrunt来完成。你觉得怎么样?
provider "aws" {
region = "us-west-2"
shared_credentials_file = "/Users/tf_user/.aws/creds"
profile = "customprofile"
}