在多个 AWS Organizations 账户上部署资源
Deploying resources on multiple AWS Organizations account
让我给这个问题一些背景。
我正在尝试创建一个 terraform 脚本来部署一个 AWS 组织,其中包含一些账户以及这些账户中的一些资源。
所以,问题是我似乎无法弄清楚如何在运行时在多个帐户上创建资源。这意味着我想在我在同一脚本上创建的帐户上创建资源。
“工作流程”应该是这样的
- 脚本创建 AWS 组织
- 相同的脚本创建 AWS Organizations 账户
- 相同的脚本在创建的帐户上创建 S3 存储桶
这是可以做的事情吗?我知道可以通过执行以下操作来“冒充”用户。
provider "aws" {
alias = "dns"
assume_role {
role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
session_name = "SESSION_NAME"
external_id = "EXTERNAL_ID"
}
}
但是,这些信息是我在创建帐户后可以获得的,作为 AWS-organization-account terraform 模块的某种输出吗?
也许还有另一种方法,我只需要阅读一下 material。
你可以做到这一点,但你可能希望将其中一些东西分开以最小化爆炸半径,这样它就不会全部集中在一个 terraform apply
或 terraform destroy
.
中
举个简单的例子,您可以执行以下操作:
resource "aws_organizations_organization" "org" {
aws_service_access_principals = [
"cloudtrail.amazonaws.com",
"config.amazonaws.com",
]
feature_set = "ALL"
}
resource "aws_organizations_account" "new_account" {
name = "my_new_account"
email = "john@doe.org"
depends_on = [
aws_organizations_organization.org,
]
}
provider "aws" {
alias = "new_account"
assume_role {
role_arn = "arn:aws:iam::${aws_organizations_account.new_account.id}:role/OrganizationAccountAccessRole"
session_name = "new_account_creation"
}
}
resource "aws_s3_bucket" "bucket" {
provider = aws.new_account
bucket = "new-account-bucket-${aws_organizations_account.new_account.id}"
acl = "private"
}
以上使用在子账户中创建的 default OrganizationAccountAccessRole
IAM role 然后在该账户中创建 S3 存储桶。
让我给这个问题一些背景。
我正在尝试创建一个 terraform 脚本来部署一个 AWS 组织,其中包含一些账户以及这些账户中的一些资源。
所以,问题是我似乎无法弄清楚如何在运行时在多个帐户上创建资源。这意味着我想在我在同一脚本上创建的帐户上创建资源。
“工作流程”应该是这样的
- 脚本创建 AWS 组织
- 相同的脚本创建 AWS Organizations 账户
- 相同的脚本在创建的帐户上创建 S3 存储桶
这是可以做的事情吗?我知道可以通过执行以下操作来“冒充”用户。
provider "aws" {
alias = "dns"
assume_role {
role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
session_name = "SESSION_NAME"
external_id = "EXTERNAL_ID"
}
}
但是,这些信息是我在创建帐户后可以获得的,作为 AWS-organization-account terraform 模块的某种输出吗?
也许还有另一种方法,我只需要阅读一下 material。
你可以做到这一点,但你可能希望将其中一些东西分开以最小化爆炸半径,这样它就不会全部集中在一个 terraform apply
或 terraform destroy
.
举个简单的例子,您可以执行以下操作:
resource "aws_organizations_organization" "org" {
aws_service_access_principals = [
"cloudtrail.amazonaws.com",
"config.amazonaws.com",
]
feature_set = "ALL"
}
resource "aws_organizations_account" "new_account" {
name = "my_new_account"
email = "john@doe.org"
depends_on = [
aws_organizations_organization.org,
]
}
provider "aws" {
alias = "new_account"
assume_role {
role_arn = "arn:aws:iam::${aws_organizations_account.new_account.id}:role/OrganizationAccountAccessRole"
session_name = "new_account_creation"
}
}
resource "aws_s3_bucket" "bucket" {
provider = aws.new_account
bucket = "new-account-bucket-${aws_organizations_account.new_account.id}"
acl = "private"
}
以上使用在子账户中创建的 default OrganizationAccountAccessRole
IAM role 然后在该账户中创建 S3 存储桶。