AWS Landing Zone Accelerator(LZA)とは
- LZAは「安全でスケーラブルなAWS環境」の自動構築ソリューション
- 単なるアカウント作成を超えて、ネットワークやセキュリティ、IAMなど複雑な環境全体をコードで定義し、自動デプロイするものです。
- AWSのベストプラクティスとコンプライアンスフレームワークに準拠した基盤を迅速に構築できるのが最大のメリットです。
- IaCが中核
- LZAはAWS CDK をベースになっています。
- YAML形式の設定ファイルに必要な構成を記述するだけでLZAが自動でCDKコードを合成し、CloudFormationスタックとしてデプロイしてくれます。
ステージの理解がなぜ必要???
ユーザはYAML形式の設定ファイルを記述するだけであとは自動でデプロイしてくれますが、意外とエラーが出てデプロイできない時があります。
ステージの中身を理解しておくと、「今、何が作られているのか?」「デプロイが失敗したのはどの段階か?」「カスタマイズ設定はどのステージで反映されるのか?」を正確に把握できれば、トラブルシューティングも少し容易になるかと思います。
LZAデプロイパイプラインの全体像
1. AWSAccelerator-InstallerStack:
最初に実行するCloudFormationテンプレート。
Core パイプライン(AWSAccelerator-Pipeline)のデプロイのみをサポートするために最小限に抑えられています。
2. AWSAccelerator-Pipeline
YAML形式の設定ファイルに記述した構成がこのパイプラインが動いて自動でデプロイされます。 初期設定実施後は設定ファイル変更したりしたらこのパイプラインを動かすことになります。
(公式ドキュメント:Core pipeline)
パイプラインフロー

各ステージの各アクション詳細
Source(設定ファイルの取得)
パイプラインを動かす前にユーザ側で記述したYAML設定ファイルはS3バケットに圧縮した状態(ZIP)で格納することになります。そのS3バケットから設定ファイルを取得することによってパイプラインが動きます。
(※同時に、LZAのソリューション本体のソースコードもGitHub等から取得されます)
よくあるエラー:
LZA本体のソースコード取得のためにGitHubトークンが必要ですが、このトークンは有効期限(デフォルト90日など)があります。有効期限が切れると、このステージが認証エラーで失敗します。(定期的なトークン更新が必要です)
Build(ビルドと設定ファイルの検証)
YAML設定ファイルの構文チェックがこのステージで行われます。
記述ミスをするとしっかりエラーが出て失敗します。
よくあるエラー:
最もエラーが発生しやすいステージの一つです。
* 不正な値: IPアドレスの記述ミス(10.0.0.0/240など)、存在しないリージョン名の指定。(エラーログに「どのファイルの何行目がおかしいか」が出力されるので、CodeBuildのログを確認してみましょう。)
Prepare(アカウントの下準備)
設定ファイルに基づき、AWSアカウントの作成または既存のアカウントの検証を行います。
Control Towerと連携している場合は、Control Towerを通じて新しいアカウントが発行され、指定したOUにアカウントが配置されます。
よくあるエラー:
* Eメールアドレスの重複: 新規作成アカウントのEメールアドレスが、組織内で(またはAWS全体で)既に使用されている。
* Control Towerの連携失敗: ベースラインの適用に失敗したり、Control Tower側の設定に問題がある場合。
* クォータ上限: 作成できるアカウント数の上限に達している。デフォルトだと10アカウントまでなので状況によってはService Quotasから引き上げをリクエストする必要あります。
Accounts(アカウントの検証とSCP適用)
前ステージであるPrepareで準備されたアカウントが、正しくAWS Organizations配下にいるのか最終検証を行います。Service Control Policies (SCP) を作成し、設定ファイルの定義に基づいて各OUやアカウントにアタッチされます。
よくあるエラー:
* クォータ上限: このステージは、多数のSCPをOU/アカウントにアタッチするため、Lambda関数を大量に同時実行します。管理アカウントのLambda同時実行数クォータは通常デフォルトで1000ですが、Lambda クォータにも記載がある通り、新規作成直後のアカウントなどでは、AWS側の利用実績に応じた自動緩和が完了するまでの間、一時的に初期値が低く(例: 10など)制限されている場合があります。
landing-zone-accelerator-on-aws-for-tse-se:1.5.7 Verify the quota for Lambda functionsにも記載がありますが、通常は利用実績に応じて自動的に引き上げられるものの、LZAの構築をすぐに進めたい場合は手動での申請が必要になることがあります。
Bootstrap(CDKのブートストラップ)
LZAがリソースをデプロイする対象の全アカウント・全リージョンに対して、AWS CDKの初期化が実行されます。
Review
手動の承認ステップ を差し込むためのステージになります。
変更点が確認できます。
Logging(中央集約ロギングの設定)
ログの集中管理のための設定が行われます。
ログ集約アカウントに、ログ集約用の中央S3バケットやKMSキーを作成します。
各アカウントのCloudWatch Logsを中央Kinesisに転送し、そこからS3バケットに集約するサブスクリプションフィルターなどを設定します。
Organizations(組織レベルの設定)
SCP以外で、AWS Organizationsレベルで設定する機能の有効化を行います。
例えば、Cost and Usage Reports (CUR) の設定、IAM Access Analyzer の有効化、バックアップポリシー などの組織ポリシーのアタッチなど。
SecurityAudit(セキュリティと監査)
監査アカウントを中心に、組織全体のセキュリティサービスを有効化・集約します。
GuardDuty, Security Hub, AWS Config などを有効化し、管理アカウント(または委任されたセキュリティアカウント)で一元管理できるように設定します。
Deploy(リソースのデプロイ)
ここがもっとも重要なステージになるのではないかなと思います。
具体的なインフラリソースが一斉にデプロイされます。
このDeployステージは、さらにサブ・アクションに分かれており、依存関係の順番に実行されます。
Deployステージの中身
Network_Prepare:
- Transit Gateway (TGW) 本体や、TGWを組織内で共有するための AWS RAM 設定などを作成します。
Security:
- メンバーアカウントのセキュリティサービス(GuardDuty, Security Hubなど)を設定します。
Operations:
- 共通のIAMロールやグループ、IAM Identity Center連携用のSAMLプロバイダーなど、運用に必要なリソースを作成します。
Network_VPCs:
- VPCと関連リソース(サブネット、ルートテーブル、セキュリティグループ、VPCエンドポイント、Network Firewallエンドポイントなど)の大部分を作成します。
- 各VPCからTGWへのアタッチメントもここで作成されます。
Security_Resources:
- AWS ConfigのカスタムルールやCloudWatch alarmsなど、追加のセキュリティ・監視リソースをデプロイします。
Network_Associations:
Network_VPCsで作成したTGWアタッチメントを、TGWルートテーブルに関連付け したり、ルーティング設定を行います。
Customizations (オプション):
customizations-config.yamlに記述された、LZA標準外のカスタムCloudFormationスタックなどをデプロイします。
Finalize:
- アカウント隔離SCPの解除など、最終処理を行います。
まとめ
- LZAの
AWSAccelerator-Pipelineは、SourceBuildPrepare…Deployといった明確なステージに分かれて実行されます。 - 特に
BuildはYAML設定ファイルの構文チェック、Prepare/AccountsはアカウントとSCPの準備、そしてDeployがVPCやTGWなどのリソース を作成するステージです。 Deployステージが失敗した場合は、さらにその中のサブ・アクション(Network_Prepare,Network_VPCsなど)のどれで失敗したか、CodeBuildのログを確認することが解決の鍵となります。