在子AWS账户中创建平台资源

问题描述 投票:0回答:1

我的目标是创建一个Terraform模块,该模块创建一个子AWS账户并且在该账户内创建一组资源(例如,AWS Config规则)。

使用以下aws_organizations_account定义创建帐户:

aws_organizations_account

示例resource "aws_organizations_account" "account" { name = "my_new_account" email = "[email protected]" } 类似于:

aws_config_config_rule

但是,这样做是在主账户而不是新创建的子账户中创建AWS Config规则。

我如何定义配置规则以应用于子帐户?

amazon-web-services terraform
1个回答
0
投票

因此,我实际上可以通过在模块中定义一个新的提供程序来实现这一点,该提供程序假定新创建的帐户内包含aws_config_config_rule

这里是一个例子:

resource "aws_config_config_rule" "s3_versioning" {
  name        = "my-config-rule"
  description = "Verify versioning is enabled on S3 Buckets."

  source {
    owner             = "AWS"
    source_identifier = "S3_BUCKET_VERSIONING_ENABLED"
  }

  scope {
    compliance_resource_types = ["AWS::S3::Bucket"]
  }
}

但是,应该注意的是,在模块内部定义提供程序会引起一些怪癖,特别是在您获取该模块后您无法删除此模块。如果这样做,则会抛出OrganizationAccountAccessRole,因为您还将删除提供程序定义。

但是,如果您不打算删除这些帐户(或者可以在需要时手动进行此操作,那么这应该很好!

© www.soinside.com 2019 - 2024. All rights reserved.