amazon-web-services - Terraform:如何确保我在预期的 AWS 账户上运行 terraform
问题描述
假设我想在我的 dev 账户中启动一个 EC2 实例,但我可能不小心运行了错误的命令并创建了一个 prod 账户而不是 dev 账户的临时凭证,那么当我应用 Terraform 时,我将在 prod 账户中启动 EC2 ?
我怎样才能避免这种情况发生?我可以在此文件夹中创建一个具有开发帐户 ID 的文本文件,然后让 Terraform 在启动 EC2 之前将我的临时凭证的帐户 ID 与此文件中的帐户 ID 进行比较,也许是在 null_resource 中?我无法弄清楚如何实现它。
解决方案
AWS 提供商允许您指定一个列表allowed_account_ids
或forbidden_account_ids
您可以定义的列表,以防止在必要时发生这种情况。
所以你可能有一个看起来有点像这样的文件夹结构:
$ tree -a
.
├── dev
│ ├── bar-app
│ │ ├── dev-eu-west-1.tf -> ../../providers/dev-eu-west-1.tf
│ │ └── main.tf
│ ├── foo-app
│ │ ├── dev-eu-west-1.tf -> ../../providers/dev-eu-west-1.tf
│ │ └── main.tf
│ └── vpc
│ ├── dev-eu-west-1.tf -> ../../providers/dev-eu-west-1.tf
│ └── main.tf
├── prod
│ ├── bar-app
│ │ ├── main.tf
│ │ └── prod-eu-west-1.tf -> ../../providers/prod-eu-west-1.tf
│ ├── foo-app
│ │ ├── main.tf
│ │ └── prod-eu-west-1.tf -> ../../providers/prod-eu-west-1.tf
│ └── vpc
│ ├── main.tf
│ └── prod-eu-west-1.tf -> ../../providers/prod-eu-west-1.tf
├── providers
│ ├── dev-eu-west-1.tf
│ ├── prod-eu-west-1.tf
│ └── test-eu-west-1.tf
└── test
├── bar-app
│ ├── main.tf
│ └── test-eu-west-1.tf -> ../../providers/test-eu-west-1.tf
├── foo-app
│ ├── main.tf
│ └── test-eu-west-1.tf -> ../../providers/test-eu-west-1.tf
└── vpc
├── main.tf
└── test-eu-west-1.tf -> ../../providers/test-eu-west-1.tf
您的providers/dev-eu-west-1.tf
文件如下所示:
provider "aws" {
region = "eu-west-1"
allowed_account_ids = [
"1234567890",
]
}
你的providers/test-eu-west-1.tf
文件看起来像:
provider "aws" {
region = "eu-west-1"
allowed_account_ids = [
"5678901234",
]
}
这意味着您只能dev/foo-app
在使用属于该1234567890
帐户的凭据时运行 Terraform,并且只能dev/foo-app
在使用属于该5678901234
帐户的凭据时运行 Terraform。
推荐阅读
- arrays - 数组数据读取失败
- spring - 是否可以监视应用程序上下文中的每个 bean?
- google-sheets - 逐行转置表格
- python - Django 表单请求方法始终是 GET,甚至在 HTML 模板中提到了 method=“POST”
- list - 扑; 小部件的排序列表
- git - Git Revert 导致合并冲突虽然没有?
- backup - 点燃从备份节点读取过时的数据
- azure - Azure 容器注册表 - 401 未经授权的错误
- firebase - Flutter 登录如何使用 Snackbar 显示 FirebaseAuthException 消息
- oracle-nosql - Oracle Nosql 云服务是否可以设置每秒最大读取单位消耗?