Terraform で AWS アカウントをリンクする
AWS インフラストラクチャをコードとして管理している場合、Terraform モジュール doit-cloudconnect を使用して、AWS アカウントをプラットフォームにリンクできます。
このモジュールには、次の Terraform およびプロバイダのバージョンが必要です。
-
Terraform:
>= 1.3 -
AWS プロバイダ(
hashicorp/aws):~> 6.50 -
DoiT Terraform プロバイダ(
doitintl/doit):>= 1.5.0 -
Time プロバイダ(
hashicorp/time):~> 0.13
はじめに
次の値を準備します。
-
Your AWS account ID: リンクしたい AWS アカウントの 12 桁の ID。
-
Your External ID: DoiT がロールの信頼ポリシーで使用する一意の識別子。
- DoiT コンソール にサインインし、上部ナビゲーションメガメニューから Data ingestion and integrations > AWS を選択します。
- Link new account を選択し、Create a role manually を選択します。
- Your External ID の値を控えます。
-
DoiT API key: アカウントを登録するために DoiT プロバイダで必要になります。API キーは コンソールのプロフィールページ から生成できます。
DOIT_API_TOKEN環境変数を通じて API キーを指定してください。API キーを変数としてモジュールに渡したり、設定内にハードコードしたりしないでください。export DOIT_API_TOKEN="<your-doit-api-key>"
プロバイダを設定する
必要なプロバイダを Terraform 設定に追加します。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 6.50"
}
doit = {
source = "doitintl/doit"
version = ">= 1.5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
# Reads the API key from the DOIT_API_TOKEN environment variable
provider "doit" {}
新しいアカウントをリンクする
モジュールを追加する
設定に doit-cloudconnect モジュールを追加し、必要な入力値を指定します。プレースホルダは必ず必要な値に置き換えてください。
サポートされている機能、入力変数、出力の詳細については、Terraform Registry: doit-cloudconnect を参照してください。
- Read-only (Core)
- With write features
- With real-time anomalies
これは、アカウントを Core の読み取り専用権限でリンクします。
module "doit_cloudconnect" {
source = "github.com/doitintl/terraform-aws-doit-cloudconnect"
external_id = var.doit_external_id
account_id = "<YOUR-AWS-ACCOUNT-ID>"
}
書き込み権限が必要な機能を有効にするには、それらを additional_features に列挙します。
module "doit_cloudconnect" {
source = "github.com/doitintl/terraform-aws-doit-cloudconnect"
external_id = var.doit_external_id
account_id = "<YOUR-AWS-ACCOUNT-ID>"
additional_features = [
"PerfectScale for Spot",
"Kubernetes auto connect clusters"
]
}
Real-time anomaly detection を使用するには、feature_config を通じて CloudTrail の S3 バケットを指定する必要があります。
module "doit_cloudconnect" {
source = "github.com/doitintl/terraform-aws-doit-cloudconnect"
external_id = var.doit_external_id
account_id = "<YOUR-AWS-ACCOUNT-ID>"
additional_features = ["Real-time anomalies"]
feature_config = {
real-time-data = {
bucket_name = "<YOUR-CLOUDTRAIL-BUCKET-NAME>"
bucket_region = "us-east-1"
}
}
}
IAM ポリシーに加えて、リアルタイムアノマリーには、CloudTrail バケット上で DoiT の SNS アカウントをターゲットとする S3 イベント通知が必要です。詳細は、Enable real-time anomaly on AWS accounts を参照してください。
doit_external_id 変数を定義し、その値を指定します(例えば、terraform.tfvars ファイルまたは TF_VAR_doit_external_id 環境変数を通じて指定します)。
variable "doit_external_id" {
type = string
description = "External ID from the console for the role trust policy"
}
設定を適用する
設定を含むディレクトリで Terraform を実行します。
terraform init
terraform plan
terraform apply
apply が成功すると、アカウントは DoiT に登録されます。アカウントがリンクされるまで最大 30 秒かかることがあります。成功すると、リンクされた AWS アカウントはコンソール上でステータスが Healthy と表示されます。
機能を更新する
機能を追加または削除するには、additional_features のリスト(必要に応じて feature_config も)を更新し、terraform apply を実行してください。
アカウントのリンクを解除する
アカウントのリンクを解除するには、terraform destroy を実行するか、モジュールブロックを削除して apply を実行してください。これにより IAM ロールが削除され、アカウントは DoiT から登録解除されます。