AWS CDKでアカウント用AWSオーガニゼーションを作成する方法
AWSオーガニゼーションを使用すると、複数のAWSアカウントを作成および管理することができます。これにより、環境を分離したり、請求を統合したり、AWSサービスのポリシーを有効にしたり、バックアップやタグ付けを行ったりすることができます。AWSアカウントを組織単位(Organizational Unit)に分類して階層構造を組織化することも可能です。
この記事を書いている時点では、AWSオーガニゼーションを管理するための異なるソリューションが存在します。AWS CloudFormationにはまだ対応しておらず、AWS CDKでもサポートされていません。幸いなことに、AWS CDK Custom Resources モジュールが存在し、AWSオーガニゼーションAPIを基にしたカスタムAWS CloudFormationリソースを簡単に作成できます。
projen と cdk-organizations の助けを借りて、AWS CDKで初めてのAWSオーガニゼーションを作成する手順を紹介します。必要なのはすでに作成されたAWSアカウントが別のAWSオーガニゼーションのメンバーや管理アカウントになっていないことだけです。
準備
- 既存のアカウントを使用するか新しいアカウントを作成します:サインアップ
AdministratorAccess
権限を持つIAMユーザーを準備します:管理グループの作成AccessKey
を作成して保存します:アクセスキーの作成- AWS CLIを設定します:設定の基本
プロジェクトの作成
- 新しいCDK TypeScriptアプリプロジェクトを作成します
mkdir my-organization
cd my-organization
npx projen new awscdk-app-ts --projenrc-ts=true
.projenrc.ts
の依存関係に cdk-organizations を追加します
const project = new awscdk.AwsCdkTypeScriptApp({
//...
deps: ["@pepperize/cdk-organizations"],
});
- 新しい依存関係をインストールします
npx projen
AWSアカウントをAWSオーガニゼーションに変える
このステップバイステップガイドを簡単にするために、リソースを
src/main.ts
にプログラム的に追加します。後でリファクタリングすることもできます。
src/main.ts
に新しいスタックを追加します
import { App, Stack } from "aws-cdk-lib";
const app = new App();
const stack = new Stack();
- AWSオーガニゼーションを作成します
スタックにOrganization
構造を追加します
import { Organization } from "@pepperize/cdk-organizations";
import { App, Stack } from "aws-cdk-lib";
const app = new App();
const stack = new Stack();
const organization = new Organization(stack, "Organization");
AWSアカウントは新しく作成されたAWSオーガニゼーションの管理アカウントになります。デフォルトでは、後でアカウントにポリシーを添付するのに必要なオーガニゼーションのすべての機能が有効になっています。Organization
コンストラクタは、逐次的なアカウント作成も処理します。
初めてのメンバーアカウントを作成する
import { Account, Organization } from "@pepperize/cdk-organizations";
import { App, Stack } from "aws-cdk-lib";
const app = new App();
const stack = new Stack();
const organization = new Organization(stack, "Organization");
const account = new Account(stack, "FirstMember", {
accountName: "first-member",
email: "your-email+first-member@example.com",
});
このアカウントは自動的に組織のメンバーになり、組織のルートの直接の子になります。
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/aws-builders/how-to-create-an-aws-organization-for-your-account-with-the-aws-cdk-58pi