aws-cdk
AWS CDKを使用してTypeScriptまたはPythonでAWSインフラの作成・デプロイ・トラブルシューティングを行います。ベストプラクティス、スタック設計、コンストラクトパターンを網羅しており、CDKコンストラクトの記述、環境のブートストラップ、`cdk deploy`/`synth`/`diff`の実行、CDKやCloudFormationエラーの修正、スタック構成の計画、既存リソースのインポート、ドリフトの解消、リソース置換を伴わないスタックリファクタリングの際に使用します。
description の原文を見る
Authors, deploys, and troubleshoots AWS infrastructure using CDK with TypeScript or Python. Covers best practices, stack architecture, and construct patterns. Always use when writing CDK constructs, bootstrapping environments, running cdk deploy/synth/diff, fixing CDK or CloudFormation errors, planning stack structure, importing existing resources, resolving drift, or refactoring stacks without resource replacement.
SKILL.md 本文
AWS CDK
Overview
CDK コンストラクト作成、デプロイメントワークフロー、コンプライアンス、ドリフト、リソースインポート、安全なリファクタリング、および CDK CLI / CloudFormation エラーのトラブルシューティングに関するドメイン専門知識です。
使用しない場合: 生の CloudFormation YAML/JSON。SAM。Terraform/Pulumi。CDK Pipelines 以外の CI/CD。これらについては組み込み知識または専門スキルを使用します。
重大な警告
デッドロック: クロススタック参照を削除するとデプロイメントがデッドロックします。2 段階のデプロイが必要です: (1) コンシューマー インポートを削除し、プロデューサーに this.exportValue() を追加してデプロイ、(2) exportValue() を削除してもう一度デプロイ。troubleshooting-deployment を参照してください。
構築 ID の変更は置換を引き起こします: コンストラクトの名前変更または移動は論理 ID を変更 → CloudFormation はリソースを置換します (ステートフルリソースはデータ損失)。常に deploy の前に cdk diff を実行してください。refactor-and-prevent-replacement を参照してください。
UPDATE_ROLLBACK_FAILED: スタックが停止しています。cdk rollback $STACK または cdk rollback $STACK --orphan <LogicalId> で修正します。troubleshooting-deployment を参照してください。
空でない S3 バケットは destroy 後も残ります: removalPolicy: DESTROY と autoDeleteObjects: true の両方を設定する必要があります。バージョン管理されたバケットはさらに悪く、表示上削除された後でも削除マーカーが残ります。
Common Workflows
| タスク | クイックコマンド | 詳細 |
|---|---|---|
| ブートストラップ | cdk bootstrap aws://$ACCOUNT/$REGION | bootstrap-and-project-setup |
| 新規 TS プロジェクト | cdk init app --language typescript — tsx、eslint-plugin-awscdk を使用 | bootstrap-and-project-setup |
| 新規 Python プロジェクト | cdk init app --language python — deps をピン留め、virtualenv を使用 | bootstrap-and-project-setup |
| デプロイ | cdk synth --strict → cdk diff → cdk deploy | 本番環境にデプロイする前に常に diff を確認 |
| cdk-nag | Aspects.of(app).add(new AwsSolutionsChecks()) | compliance-and-drift |
| ドリフト | cdk drift $STACK (CI では --fail を使用) | compliance-and-drift |
| リソースインポート | cdk import (対話型または CI 用の --resource-mapping)、cdk deploy --import-existing-resources | import-and-migrate |
| 安全なリファクタリング | cdk refactor --unstable=refactor — 同じデプロイでプロパティを変更しない | refactor-and-prevent-replacement |
トラブルシューティング
| エラー | 原因 → 修正 |
|---|---|
| DeployFailed / DeploymentError | CDK エラーは根本原因ではありません。CFN イベントを確認: aws cloudformation describe-stack-events --stack-name $STACK --query "StackEvents[?contains(ResourceStatus,'FAILED')]"。詳細 |
| NoCredentials / ExpiredToken / AssumeRoleFailed | aws sts get-caller-identity + cdk doctor。期限切れの SSO、不足した env、不足した sts:AssumeRole。詳細 |
| アセットエラー (CannotFindAsset, FailedToBundleAsset, AssetBuildFailed, AssetPublishFailed) | パスが間違っている、Docker が実行されていない、またはブートストラップバケットのパーミッションの問題。path.join(__dirname, ...) を使用します。詳細 |
| AppRequired | cdk.json に "app": "npx tsx bin/my-app.ts" を追加します。詳細 |
| AnnotationErrors | 根本的な問題を修正し、最後の手段としてのみ NagSuppressions で抑制します。詳細 |
| ConcurrentReadLock / ConcurrentWriteLock | rm -rf cdk.out を実行し、再実行します。並列 CI: --output ./cdk.out.$BUILD_ID。詳細 |
| BootstrapVersionValidation | 再度ブートストラップします。すべての場所で --qualifier を一致させます。詳細 |
| DependencyCycle | 共有リソースを 3 番目のスタックに抽出するか、遅延バインディング用に SSM を使用します。詳細 |
| UnresolvedAccount | スタックに明示的な env: { account, region } を設定します。cdk.context.json をコミットします。詳細 |
| NoStacksMatched | CDK は論理 ID (2 番目のコンストラクタ引数) を使用し、CFN 名ではありません。ID を見つけるには cdk list を実行します。詳細 |
| Cannot find module (synth 時) | npx tsc --noEmit を実行し、cdk.json app パスが tsconfig.json の outDir と一致するか確認し、古い .js ファイルを削除します。Python: venv をアクティベートします。詳細 |
| V1 インポートパス / 重複した aws-cdk-lib | V1 の @aws-cdk/* インポート、間違った Construct インポート、monorepos での重複ライブラリコピー。詳細 |
| Lambda Cannot find module (ランタイム) | 誤ったハンドラー値、不足した SDK v3 マイグレーション、Python deps がバンドルされていない。詳細 |
| API Gateway マルチステージコンフリクト | RestApi で deploy: false を設定し、Deployment と Stage を明示的に作成します。詳細 |
Construct パターン
L2 を推奨します。L2 にプロパティが不足している場合は、Mixins/Facades で L1 を使用します。エスケープハッチ: node.defaultChild → addPropertyOverride。construct-patterns を参照してください。
追加リソース
- AWS ドキュメント「CDK Developer Guide」、「CDK API Reference」、および「CDK Pipelines」をそれぞれ検索してください
セキュリティに関する考慮事項
- CI/CD 認証情報用の OIDC (静的キーなし)
- ブートストラップ時の
--custom-permissions-boundary - リソース間 IAM 用の
grant*() - CI での
cdk-nag+--strict terminationProtection: trueを設定した独自スタック内のステートフルリソースcdk.context.jsonをコミット
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- aws
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/aws/agent-toolkit-for-aws / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。