0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CDKことはじめ(S3 と DynamoDB を作る基礎)

0
Posted at

CDKで S3 と DynamoDB を作る基礎は、最初に「CDKプロジェクトを作る → Stackを書く → デプロイ」という流れです。

TypeScript前提す。


① CDKの基本構造

CDKはざっくりこういう構造です:

App(アプリ全体)
 └ Stack(1つの環境単位)
     └ Construct(リソース部品)

② プロジェクト作成

mkdir my-cdk-app
cd my-cdk-app

cdk init app --language typescript

依存関係を追加:

npm install aws-cdk-lib constructs

③ S3バケットを作る

lib/my-cdk-app-stack.ts を編集:

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

export class MyCdkAppStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    new s3.Bucket(this, 'MyBucket', {
      bucketName: 'my-sample-bucket-123456', // 一意にする
      versioned: true,
      removalPolicy: cdk.RemovalPolicy.DESTROY, // 開発用
      autoDeleteObjects: true, // バケット削除時に中身も消す
    });
  }
}

ポイント

  • versioned: true → バージョニングON
  • removalPolicy → 削除時の挙動(本番はRETAIN推奨)

④ DynamoDBテーブルを作る

同じファイルに追加:

import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';

const table = new dynamodb.Table(this, 'MyTable', {
  tableName: 'MySampleTable',
  partitionKey: {
    name: 'id',
    type: dynamodb.AttributeType.STRING,
  },
  billingMode: dynamodb.BillingMode.PAY_PER_REQUEST, // 従量課金
  removalPolicy: cdk.RemovalPolicy.DESTROY, // 開発用
});

ポイント

  • partitionKey は必須
  • PAY_PER_REQUEST は初心者向け(キャパ設計不要)

⑤ デプロイ

初回のみ:

cdk bootstrap

デプロイ:

cdk deploy

⑥ よくある実務パターン(重要)

S3 + DynamoDB を連携する例

table.grantReadWriteData(new iam.ServicePrincipal('lambda.amazonaws.com'));

bucket.grantReadWrite(lambdaFunction);

👉 権限はCDKで付与するのが基本


⑦ ディレクトリ設計(実務寄り)

大きくなるとこう分けると楽:

lib/
 ├ s3/
 │   └ s3-construct.ts
 ├ dynamodb/
 │   └ dynamodb-construct.ts
 └ stack.ts

👉 Constructを分けると再利用しやすい


⑧ 最低限覚えるべきこと

  • new XXX(this, 'ID', {...}) でリソース作る
  • Stackに全部書く
  • cdk deployで反映
  • IAM権限もCDKで管理

⑨ 次にやると一気にレベル上がる

ここまでできたら次は:

  • Lambda追加(S3 or DynamoDB連携)
  • 環境分離(dev / prod)
  • context / env設定
  • パラメータ化(SSM)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?