mcpField
A
aws-cdk-development

aws-cdk-development

github.com/zxkaneクラウド・DevOps3731.2k 回インストール19 週間前に更新
リポジトリ

aws-cdk-development について

AWS CDK インフラの開発・検証を支援するスキルです。スタックやコンストラクトを扱う開発者向けに、CDK の実践知識と AWS ドキュメントおよび IaC 向け MCP ツールの利用方法をまとめています。

主な機能

  1. 01CDKスタックとコンストラクトのガイダンス
  2. 02Lambda実装パターン
  3. 03cdk-nagによるデプロイ前検証
  4. 04合成テンプレートのレビュー
  5. 05AWSサービスとリージョンの確認

活用シーン

  1. 01CDKスタックの新規作成やリファクタリング
  2. 02インフラへのLambda関数の追加
  3. 03デプロイ前のスタック検査

MCP 対応

AWSの情報確認にはAWSドキュメントMCPツールを使うよう求めています。CDKコンストラクトの提案、ベストプラクティス、合成テンプレートの検証にはawslabs.aws-iac-mcp-serverを推奨しています。

インストール

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

$npx skills add https://github.com/zxkane/aws-skills --skill aws-cdk-development

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

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

詳細

AWS CDK の開発

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

AWS ドキュメントに関する要件

回答する前に、必ず MCP ツール(mcp__aws-mcp__* または mcp__*awsdocs*__*)を使用して AWS に関する事実を確認してください。aws-mcp-setup の依存関係は自動的に読み込まれます。MCP ツールを利用できない場合は、そのスキルのセットアップ手順に沿ってユーザーを案内してください。

CDK 固有の MCP ガイダンス

AWS Labs は、専用の CDK MCP サーバー(awslabs.cdk-mcp-server)を、CloudFormation やその他の AWS Infrastructure as Code ワークフローとともに CDK を扱う、より包括的な awslabs.aws-iac-mcp-server に置き換えました。

CDK コンストラクトの検索、ベストプラクティスの推奨、パターンに関するガイダンスには、awslabs.aws-iac-mcp-server をインストールしてください。これは awslabs/agent-plugins の deploy-on-aws プラグインに含まれているほか、claude mcp add aws-iac uvx awslabs.aws-iac-mcp-server@latest で直接登録することもできます。

利用する場面:

  • CDK コンストラクトの推奨と API の検索
  • CDK と CloudFormation のベストプラクティスに関するパターン
  • 合成されたテンプレートの検証
  • リソース間の設定に関するガイダンス

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

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

  • 新しい 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 の失敗を防ぎ、コード品質の基準を維持できます。

コメント