mcpField
I
infrastructure-code-synthesis

infrastructure-code-synthesis

github.com/qodex-aiクラウド・DevOps47123 回インストール42 週間前に更新
リポジトリ

infrastructure-code-synthesis について

infrastructure-code-synthesis は、AWS CDK でインフラを構築する開発者向けのガイドで、実装前の情報確認とデプロイ前検証を重視します。CDK の実践方法に加え、AWS ドキュメントおよび CDK の MCP サーバーの利用方法を説明します。

主な機能

  1. 01AWS CDK の構造とスタック整理の指針
  2. 02AWS MCP による文書とリージョン可用性の確認
  3. 03cdk-nag を使った合成時チェック
  4. 04ビルド、テスト、デプロイ前検証の手順
  5. 05単体・統合・スナップショットテストの指針

活用シーン

  1. 01CDK スタックやコンストラクトの作成・リファクタリング
  2. 02対象リージョンでの AWS サービス機能の確認
  3. 03デプロイ前のスタック設定とテンプレートの検証
  4. 04Lambda に適した CDK コンストラクトの選択

MCP 対応

AWS ドキュメント MCP サーバーで文書、リージョン可用性、サービス制限を確認し、CDK MCP サーバーでコンストラクトの推奨、ベストプラクティス、設定方法を調べるよう案内します。CDK MCP サーバーはプラグインに自動設定されると記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/qodex-ai/ai-agent-skills --skill infrastructure-code-synthesis

インストール後、Claude Code で/infrastructure-code-synthesisを入力して読み込まれたか確認します。

同梱ファイルreferences/cdk-patterns.mdscripts/validate-stack.sh

詳細

AWS CDK 開発

このスキルでは、Cloud Development Kit(CDK)を使用した AWS インフラストラクチャの開発について、最新の AWS ナレッジや CDK ユーティリティにアクセスする MCP サーバーと連携した包括的なガイダンスを提供します。

AWS ドキュメントの要件

重要:AWS に関する正確で最新の情報を得るには、このスキルで AWS MCP ツールが必要です。

AWS に関する質問に回答する前に
  1. 必ず確認してください(利用可能な場合は AWS MCP ツールを使用してください):

    • mcp__aws-mcp__aws___search_documentation または mcp__*awsdocs*__aws___search_documentation — AWS ドキュメントを検索します
    • mcp__aws-mcp__aws___read_documentation または mcp__*awsdocs*__aws___read_documentation — 特定のページを読み込みます
    • mcp__aws-mcp__aws___get_regional_availability — サービスの利用可能状況を確認します
  2. AWS MCP ツールを利用できない場合:

    • AWS MCP の設定をユーザーに案内してください。AWS MCP セットアップガイドを参照してください
    • ユーザーの環境に適した選択肢を判断できるよう支援してください:
      • uvx と AWS 認証情報がある → フル AWS MCP サーバー
      • Python/認証情報がない → AWS Documentation MCP(認証不要)
    • 判断できない場合 → どちらの選択肢を使用するかユーザーに尋ねてください

統合された MCP サーバー

このスキルには、プラグインに自動設定される CDK MCP サーバーが含まれています。

AWS CDK MCP サーバー

使用する場面:CDK 固有のガイダンスやユーティリティが必要な場合

  • CDK コンストラクトの推奨事項を取得する
  • CDK のベストプラクティスを取得する
  • CDK パターンの提案を確認する
  • CDK 設定を検証する
  • CDK 固有の API に関する支援を受ける

重要:CDK コンストラクトのガイダンスや高度な CDK 操作には、このサーバーを活用してください。

このスキルを使用する場面

次の場合にこのスキルを使用してください:

  • 新しい CDK スタックやコンストラクトを作成する
  • 既存の CDK インフラストラクチャをリファクタリングする
  • CDK 内に Lambda 関数を実装する
  • AWS CDK のベストプラクティスに従う
  • デプロイ前に CDK スタックの設定を検証する
  • AWS サービスの機能やリージョンごとの利用可能状況を確認する

CDK の基本原則

リソースの命名

重要:CDK コンストラクトでリソース名の指定が任意の場合、リソース名を明示的に指定しないでください。

理由:CDK が生成する名前には、次の利点があります:

  • 再利用可能なパターン:同じコンストラクト/パターンを競合なく複数回デプロイできます
  • 並列デプロイ:同じリージョン内で複数のスタックを同時にデプロイできます
  • よりシンプルな共有ロジック:パターンや共有コードを名前の競合なく複数回初期化できます
  • スタックの分離:各スタックに一意の識別子を持つリソースが自動的に割り当てられます

パターン:CloudFormation の命名機能を使用して、CDK に一意の名前を自動生成させます。

// ❌ BAD - Explicit naming prevents reusability and parallel deployments
new lambda.Function(this, 'MyFunction', {
  functionName: 'my-lambda',  // Avoid this
  // ...
});

// ✅ GOOD - Let CDK generate unique names
new lambda.Function(this, 'MyFunction', {
  // No functionName specified - CDK generates: StackName-MyFunctionXXXXXX
  // ...
});

セキュリティに関する注意:異なる環境(dev、staging、prod)では、単一アカウント内でリソース名に頼るのではなく、AWS Security Pillar のベストプラクティスに従って、環境ごとに別の AWS アカウントを使用してください。アカウントレベルで分離すると、より強固なセキュリティ境界を確保できます。

Lambda 関数の開発

ランタイムに応じて適切な Lambda コンストラクトを使用してください。

TypeScript/JavaScript:@aws-cdk/aws-lambda-nodejs を使用します

import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';

new NodejsFunction(this, 'MyFunction', {
  entry: 'lambda/handler.ts',
  handler: 'handler',
  // Automatically handles bundling, dependencies, and transpilation
});

Python:@aws-cdk/aws-lambda-python を使用します

import { PythonFunction } from '@aws-cdk/aws-lambda-python-alpha';

new PythonFunction(this, 'MyFunction', {
  entry: 'lambda',
  index: 'handler.py',
  handler: 'handler',
  // Automatically handles dependencies and packaging
});

利点:

  • バンドルと依存関係の管理を自動化
  • トランスパイルを自動処理
  • 手動でのパッケージ化が不要
  • 一貫性のあるデプロイパターン
デプロイ前の検証

CDK の品質を包括的に確認するには、多層の検証戦略を使用してください。

レイヤー 1:IDE によるリアルタイムのフィードバック(推奨)

TypeScript/JavaScript プロジェクトの場合:

合成時の検証を行うために、cdk-nagをインストールします:

npm install --save-dev cdk-nag

CDK アプリに追加します:

import { Aspects } from 'aws-cdk-lib';
import { AwsSolutionsChecks } from 'cdk-nag';

const app = new App();
Aspects.of(app).add(new AwsSolutionsChecks());

任意 — VS Code ユーザー向け:ファイルの保存時にすばやくフィードバックを得るには、CDK NAG Validator extensionをインストールします。

Python/Java/C#/Go プロジェクトの場合:cdk-nag はすべての CDK 言語で利用でき、同じ合成時の検証を提供します。

レイヤー 2:合成時の検証(必須)
  1. cdk-nag による合成:包括的なルールでスタックを検証します

    cdk synth  # cdk-nag runs automatically via Aspects
    
  2. 正当な例外を抑制し、その理由を記録します:

    import { NagSuppressions } from 'cdk-nag';
    
    // Document WHY the exception is needed
    NagSuppressions.addResourceSuppressions(resource, [
      {
        id: 'AwsSolutions-L1',
        reason: 'Lambda@Edge requires specific runtime for CloudFront compatibility'
      }
    ]);
    
レイヤー 3:コミット前のセーフティネット
  1. ビルド:コンパイルが成功することを確認します

    npm run build  # or language-specific build command
    
  2. テスト:ユニットテストと統合テストを実行します

    npm test  # or pytest, mvn test, etc.
    
  3. 検証スクリプト:メタレベルのチェックを行います

    ./scripts/validate-stack.sh
    

検証スクリプトでは、次の項目を重点的に確認します:

  • 言語の検出
  • テンプレートのサイズとリソース数の分析
  • 合成の成功確認
  • (注:詳細なアンチパターンのチェックは cdk-nag が担当します)

ワークフローのガイドライン

開発ワークフロー
  1. 設計:インフラストラクチャのリソースと関係を計画します
  2. AWS サービスの確認:AWS Documentation MCP を使用して、サービスの利用可否と機能を確認します
    • 必要なすべてのサービスについて、リージョンごとの利用可否を確認します
    • サービスの制限とクォータを確認します
    • 最新の API 仕様を確認します
  3. 実装:ベストプラクティスに従って CDK コンストラクトを記述します
    • CDK MCP サーバーを使用して、コンストラクトに関する推奨事項を確認します
    • MCP ツールを使用して CDK のベストプラクティスを参照します
  4. 検証:デプロイ前のチェックを実行します(上記を参照)
  5. 合成:CloudFormation テンプレートを生成します
  6. レビュー:合成されたテンプレートが正しいか確認します
  7. デプロイ:対象環境にデプロイします
  8. 確認:リソースが正しく作成されたことを確認します
スタックの構成
  • 複雑なアプリケーションではネストされたスタックを使用します
  • 関心事を論理的なコンストラクトの境界ごとに分離します
  • 他のスタックで必要になる可能性がある値をエクスポートします
  • 環境固有の設定には CDK コンテキストを使用します
テスト戦略
  • 個々のコンストラクトをユニットテストします
  • スタックの合成を統合テストします
  • CloudFormation テンプレートをスナップショットテストします
  • リソースのプロパティと関係を検証します

MCP サーバーを効果的に使用する

AWS Documentation MCP を使用する場面

実装前に必ず確認します:

  • AWS サービスの新機能や設定
  • 対象リージョンでのサービスの利用可否
  • API パラメーターの仕様
  • サービスの制限とクォータ
  • AWS サービスのセキュリティに関するベストプラクティス

使用例:

  • 「Lambda が Python 3.13 ランタイムをサポートしているか確認する」
  • 「DynamoDB が eu-south-2 で利用可能か確認する」
  • 「現在の Lambda のタイムアウト制限を確認する」
  • 「最新の S3 暗号化オプションを取得する」
CDK MCP サーバーを使用する場面

CDK 固有のガイダンスに活用します:

  • CDK コンストラクトの選択と使用方法
  • CDK API パラメーターのオプション
  • CDK のベストプラクティスのパターン
  • コンストラクトのプロパティ設定
  • CDK 固有の最適化

使用例:

  • 「API Gateway REST API に推奨される CDK コンストラクトは何ですか?」
  • 「NodejsFunction のバンドルオプションを設定する方法は?」
  • 「CDK スタック構成のベストプラクティス」
  • 「オートスケーリングに対応した DynamoDB 用 CDK コンストラクト」
MCP 使用時のベストプラクティス
  1. 最初に確認する:新機能を実装する前に、必ず AWS Documentation MCP で確認します
  2. リージョンごとに検証する:対象のデプロイ先リージョンでサービスが利用可能か確認します
  3. CDK のガイダンスを確認する:コンストラクト固有の推奨事項には CDK MCP を使用します
  4. 最新情報を把握する:MCP サーバーは、知識のカットオフ以降の最新情報を提供します
  5. 情報源を組み合わせる:包括的なガイダンスを得るために、スキルのパターンと MCP サーバーの両方を使用します

CDK パターンのリファレンス

CDK のパターン、アンチパターン、アーキテクチャに関するガイダンスの詳細については、包括的なリファレンスを参照してください:

ファイル:references/cdk-patterns.md

このリファレンスには、次の内容が含まれています:

  • 一般的な CDK パターンとそのユースケース
  • 避けるべきアンチパターン
  • セキュリティに関するベストプラクティス
  • コスト最適化の戦略
  • パフォーマンスに関する考慮事項

その他のリソース

  • 検証スクリプト:scripts/validate-stack.sh - デプロイ前の検証
  • CDK パターン:references/cdk-patterns.md - 詳細なパターンライブラリ
  • AWS Documentation MCP:AWS の最新情報を取得するために統合されています
  • CDK MCP サーバー:CDK 固有のガイダンスを取得するために統合されています

GitHub Actions との統合

リポジトリに GitHub Actions のワークフローファイルがある場合は、コミットする前に .github/workflows/ で定義されているすべてのチェックに合格することを確認してください。これにより、CI/CD の失敗を防ぎ、コード品質の基準を維持できます。

コメント