TerraformでAWS Organizationsをimportしてみた

TerraformでAWS Organizationsをimportしてみた

2026.01.22

はじめに

クラウド事業本部、あきやまです。
家でゴロゴロしていたところ、ふと正月前に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で管理する
スクリーンショット 2026-01-21 13.48.13

やってみた

作業を行っていくにあたり、以下リソースを参照しました。
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/organizations_organization

利用したTerraformコードは以下となります。

import.tf
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で機能追加していきたいなと思っています。

この記事をシェアする

FacebookHatena blogX

関連記事