use*_*955 3 amazon-web-services terraform
假设我想在我的开发帐户中启动EC2实例,但我可能会意外地运行错误的命令并创建prod帐户的临时凭证而不是开发帐户,然后当我Terraform申请时,我将在prod帐户启动EC2 ?
我怎样才能避免这种情况发生?我可以在此文件夹中创建具有开发帐户ID的文本文件,然后在启动EC2之前让Terraform将我的临时凭证的帐户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
Run Code Online (Sandbox Code Playgroud)
当你的providers/dev-eu-west-1.tf文件看起来像:
provider "aws" {
region = "eu-west-1"
allowed_account_ids = [
"1234567890",
]
}
Run Code Online (Sandbox Code Playgroud)
你的providers/test-eu-west-1.tf文件看起来像:
provider "aws" {
region = "eu-west-1"
allowed_account_ids = [
"5678901234",
]
}
Run Code Online (Sandbox Code Playgroud)
这意味着您只能dev/foo-app在使用属于该1234567890帐户的凭据时运行Terraform,并且只能dev/foo-app在使用属于该5678901234帐户的凭据时运行Terraform .
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |