【问题标题】:Deploying resources on multiple AWS Organizations account在多个 AWS Organizations 账户上部署资源
【发布时间】:2023-04-06 19:05:01
【问题描述】:

让我给这个问题一些背景。

我正在尝试创建一个 terraform 脚本,该脚本使用一些账户以及这些账户中的一些资源来部署一个 AWS 组织。

所以,问题是我似乎无法弄清楚如何在 runetime 上为多个帐户创建资源。这意味着我想在同一个脚本上创建的帐户上创建资源。

“工作流程”是这样的

  1. 脚本创建 AWS 组织
  2. 相同的脚本创建 AWS Organizations 账户
  3. 相同的脚本在创建的帐户上创建一个 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 模块的某种输出之后,我可以获得这些信息吗?

也许还有其他方法可以做到这一点,我只需要一些阅读材料。

【问题讨论】:

标签: amazon-web-services terraform terraform-provider-aws


【解决方案1】:

您可以这样做,但您可能希望将其中一些东西分开以最小化爆炸半径,这样它就不会全部放在一个 terraform applyterraform 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 存储桶。

【讨论】:

    猜你喜欢
    • 2017-07-23
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2021-12-24
    • 2019-10-17
    • 2022-07-20
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多