← Back to list

building-aws-cdk
by cm-yoshikikasama
blog backup md
⭐ 1🍴 0📅 Jan 18, 2026
SKILL.md
name: building-aws-cdk description: Provides AWS CDK implementation patterns with TypeScript using L2 Constructs for Lambda, IAM, S3, DynamoDB. Applies type-safe patterns, resource naming conventions, security best practices. Use when creating CDK stacks, defining AWS resources, or implementing infrastructure as code with TypeScript.
AWS CDK実装
TypeScriptでAWS CDKスタックを実装するためのガイドです。
基本的なStack定義
import * as cdk from "aws-cdk-lib";
import * as s3 from "aws-cdk-lib/aws-s3";
import type { Construct } from "constructs";
interface MyStackProps extends cdk.StackProps {
envName: string;
projectName: string;
}
export class MyStack extends cdk.Stack {
constructor(scope: Construct, id: string, props: MyStackProps) {
super(scope, id, props);
const { envName, projectName } = props;
// リソース定義
new s3.Bucket(this, "Bucket", {
bucketName: `${projectName}-${envName}-bucket`,
encryption: s3.BucketEncryption.S3_MANAGED,
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
});
}
}
実装ワークフロー
以下のチェックリストに従って実装を進める
進捗:
- [ ] Step 1: 型付きpropsでStackインターフェースを定義
- [ ] Step 2: 命名規則に従ってリソースを作成
- [ ] Step 3: セキュリティベストプラクティスを適用(暗号化、IAM)
- [ ] Step 4: pnpm run build で検証
- [ ] Step 5: pnpm run cdk synth で確認
- [ ] Step 6: コーディング規約と照合
Step 1: 型付きpropsでStackインターフェースを定義
Stack propsはcdk.StackPropsを継承する
interface MyStackProps extends cdk.StackProps {
envName: string;
projectName: string;
}
TypeScriptで any 型は使用禁止。
Step 2: 命名規則に従ってリソースを作成
一貫した命名パターンを使用: ${projectName}-${envName}-${resourceType}
const bucketName = `${projectName}-${envName}-bucket`;
Step 3: セキュリティベストプラクティスを適用
必須のセキュリティ設定
- S3: 暗号化 + パブリックアクセスブロック
- IAM: 具体的なリソースARN(
Resource: "*"は避ける) - Lambda: 関数ごとに専用IAMロール
詳細は coding-conventions.md を参照。
Step 4: pnpm run build で検証
TypeScriptビルドで型エラーをチェック
cd cdk
pnpm run build
すべての型エラーを修正してから次へ進む。
Step 5: pnpm run cdk synth で確認
CloudFormationテンプレートを生成
pnpm run cdk synth
生成されたテンプレートの正確性を確認。
Step 6: コーディング規約と照合
coding-conventions.md と照合してコンプライアンスを確認。
Glue Database/Table定義
Glue DatabaseとTableはCDK constructsではなく、SQLファイルで定義する。
ファイル構成
(project)/
├── sql/
│ └── create_tables.sql # Glue Database/Table定義
└── cdk/
└── lib/
SQLファイル例
-- Database作成
CREATE DATABASE IF NOT EXISTS sample_db
COMMENT 'Sample database';
-- Icebergテーブル作成
CREATE TABLE sample_db.sample_table (
id STRING,
created_at TIMESTAMP
)
LOCATION 's3://bucket-name/iceberg/sample_table/'
TBLPROPERTIES (
'table_type' = 'ICEBERG',
'format' = 'parquet'
);
命名規則
- Database名:
<project_name>_<env_name>(ハイフンはアンダースコアに置換) - Table LOCATION:
s3://<project-name>-<env-name>-bucket/path/
CDK連携
CDKはインフラのみを定義し、Glue Database/Tableは定義しない
- S3バケット(テーブルデータ保存先)
- IAMロール(Athena/Glueアクセス用)
- Athena WorkGroup(必要に応じて)
SQLファイルはAthenaコンソール、CLI、またはLambdaで実行する。
参考
coding-conventions.md - コーディング規約
Score
Total Score
50/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon