AWS IAM Identity Centerインスタンス作成をTerraformでやってみた

AWS IAM Identity Centerインスタンス作成をTerraformでやってみた

2025.12.21

IAM Identity Centerのインスタンスを作成する必要がありました。

今回はTerraformでやってみました。

IAM Identity Centerのインスタンス作成はAWS CCプロバイダーで可能

2025年12月時点の最新のAWSプロバイダー(Version 6.27.0)では、IAM Identity Centerのインスタンス作成はできません。

AWSCCプロバイダーでは可能です。

awscc_sso_instance | Resources | hashicorp/awscc | Terraform | Terraform Registry

AWS CCプロバイダーとは

AWS Cloud Control Provider(AWSCC)は、AWS Cloud ControlAPIを基盤として自動生成されるTerraformプロバイダーです。

このプロバイダーはCloudFormationスキーマから自動的に生成されます。

CloudFormationレジストリからの情報は週次で自動更新されるため、AWS側で新たに対応されたリソースが、すぐにTerraformでも利用できるようになります。

既存のAWSプロバイダーとAWSCCプロバイダーを併用することも可能です。

Docs overview | hashicorp/awscc | Terraform | Terraform Registry

Using the Terraform awscc provider with aws provider | Guides | hashicorp/awscc | Terraform | Terraform Registry

やってみた

Terraformを使ってリソースをデプロイ

以下のファイルを用意します。

IAM Identity Centerのインスタンス作成とIAM Identity Centerユーザーを定義しています。

インスタンス作成をAWS CCプロバイダー、IAM Identity Centerユーザー作成をAWS Providerで行っています。

インスタンス作成をAWS CCで行っているのは前述のとおりです。

IAM Identity Centerユーザー作成をAWS Providerで行っているのは、AWSCCプロバイダーではIAM Identity Centerのユーザー作成ができないからです。

2025年12月時点ではCloudFormationではIAM Identity Centerのユーザー作成に対応していません。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/TemplateReference/AWS_SSO.html

よって、CloudFormationスキーマから自動的に生成されるAWS CCプロバイダーでも対応していません。

その他の注意点として、AWS CCプロバイダーはデフォルトタグに対応していません。

タグを付けたい場合は、リソース個別にタグを付与する必要があります。

https://github.com/hashicorp/terraform-provider-awscc/issues/483

main.tf
terraform {
  required_version = ">= 1.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 6.27"
    }
    awscc = {
      source  = "hashicorp/awscc"
      version = "~> 1.67"
    }
  }
}

provider "aws" {
  region = var.region

  default_tags {
    tags = {
      ManagedBy = "Terraform"
    }
  }
}

provider "awscc" {
  region = var.region
}

# IAM Identity Center Instance
resource "awscc_sso_instance" "this" {
  name = var.instance_name

  tags = [{
    key   = "ManagedBy"
    value = "Terraform"
  }]
}

# Identity Store User
resource "aws_identitystore_user" "this" {

  identity_store_id = awscc_sso_instance.this.identity_store_id
  display_name      = join(" ", [var.user_given_name, var.user_family_name])
  user_name         = var.user_email

  name {
    family_name = var.user_family_name
    given_name  = var.user_given_name
  }

  emails {
    value   = var.user_email
    primary = true
  }
}

variables.tf
variable "region" {
  description = "AWS region to deploy IAM Identity Center"
  type        = string
  default     = "ap-northeast-1"
}

variable "instance_name" {
  description = "Name for the IAM Identity Center instance"
  type        = string
  default     = "identity-center"
}

variable "user_given_name" {
  description = "Given name (first name) of the user"
  type        = string
}

variable "user_family_name" {
  description = "Family name (last name) of the user"
  type        = string
}

variable "user_email" {
  description = "Email address of the user"
  type        = string
}

次にterraform.tfvarsファイルを用意します。内容は環境に応じて書き換えてください。

region = "ap-northeast-1"

user_given_name  = "Taro"
user_family_name = "Yamada"
user_email       = "yamada.taro@example.com"

任意の方法でAWS認証情報をセットして、terraformを実行してリソースを作成します。

terraform init
terraform plan
terraform apply

動作確認

AWSコンソールからIAM Identity Centerを確認してみます。

有効化されていることが確認できました。

ダッシュボード___IAM_Identity_Center___ap-northeast-1.png

ユーザーも作成されていました。

ユーザー___IAM_Identity_Center___ap-northeast-1.png

おわりに

非Organizations環境のAWSアカウントでKiroをサブスクライブしたいことがあり、AWS IAM Identity Centerのインスタンス作成が必要でした。

せっかくなので、Terraformでやってみました。

以前TerraformでIAM Identity Centerの管理を行った際は、手動でインスタンス作成をしました。

https://dev.classmethod.jp/articles/iic-setting-terraform/

「AWS CCでできるのでは?」と思い今回やってみました。

デフォルトタグが使えない点は少し不便ですが、認証情報周りはAWSプロバイダーと同様でよく特にハマる部分なく利用できました。

今後はもっと活用していきたいと思います。

この記事をシェアする

FacebookHatena blogX

関連記事