TerraformでAWS Organizationsをimportしてみた
はじめに
クラウド事業本部、あきやまです。
家でゴロゴロしていたところ、ふと正月前にGUIで作成途中だったAWS Organizationsのことを思い出しました。この際、Terraformで管理していきたいと思いその時に利用した情報をまとめていきます。
既存リソースをTerraformで管理するにあたり、importコマンドとimportブロックがあると思います。今回は一度に複数のリソースを取り込むことができる点と、terraform planを使うことで事前確認を行いながら作業できることからimportブロックがより実務にも応用できると考え、importブロックを利用して行っていきます。
環境
| サービス | バージョン |
|---|---|
| MacOS | Sequoia(15.7.3) |
| チップ | Apple M1 |
| AWS CLI | aws-cli/2.32.6 |
| Terraform Version | 1.14.3 |
| AWS Provider | 6.28.0 |
準備
Terraform から AWS 操作が可能なこと
ゴール
構成図の範囲をTerraformで管理する

やってみた
作業を行っていくにあたり、以下リソースを参照しました。
利用したTerraformコードは以下となります。
terraform {
required_version = "~> 1.14.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 6.28.0"
}
}
}
import {
to = aws_organizations_organization.org
id = "o-xxxxxxxxxx"
}
import {
to = aws_organizations_organizational_unit.prd
id = "ou-xxxx-xxxxxxxx"
}
import {
to = aws_organizations_organizational_unit.stg
id = "ou-xxxx-xxxxxxxx"
}
import {
to = aws_organizations_account.example
id = "123456789012"
}
resource "aws_organizations_organization" "org" {
}
resource "aws_organizations_organizational_unit" "prd" {
name = "prd"
parent_id = aws_organizations_organization.org.roots[0].id
}
resource "aws_organizations_organizational_unit" "stg" {
name = "stg"
parent_id = aws_organizations_organization.org.roots[0].id
}
resource "aws_organizations_account" "example" {
name = "example-account"
email = "example@example.com"
}
後は、作業ディレクトリで以下コマンド順番に実施していきました。
$ terraform init
次はplan コマンドでどんなリソースが取り込まれようとしているか確認していきます。
情報量が多いので詳細は割愛しますが、以下内容が表示され確認できます。
「Plan: 4 to import, 0 to add, 0 to change, 0 to destroy.」から4つのリソースと分かります。安心しますね。好きです。
$ terraform plan
〜〜
Plan: 4 to import, 0 to add, 0 to change, 0 to destroy.
最後にapply コマンドです。コマンド実施後,確認を求められますが「yes」と入力すると進みます。こちらも細かい詳細は割愛しますが、以下に内容が表示されたらOKです。
「Apply complete! Resources: 4 imported, 0 added, 0 changed, 0 destroyed.」と
4つのリソースが取り込まれていることが分かりました。嬉しいですね。好きです。
$ terraform apply
~~
Apply complete! Resources: 4 imported, 0 added, 0 changed, 0 destroyed.
以上となります。
比較的シンプルな構成の為、Terraformコード自体もかなりシンプルでした!
本来はSCPなども付随してくるので、今後はTerraformで機能追加していきたいなと思っています。







