👏

aws cdkを始める 下準備からS3を操作するまで

に公開

前提条件の確認

  • AWSアカウント、ユーザー
  • AWS CLI のインストール & 初期化
  • Node.js

CDKのインストール

brew install awscli
mkdir sample1
cd sample1
nodenv local 20.2.0
npm install -g aws-cdk
nodenv rehash

以下の環境で進めます
node.js: 20.2.0
cdk: 2.1018.1 (build cb71364)

プロジェクトの作成

cdk init app --language typescript

これにより以下のようなファイルが生成されます

% ll
README.md		jest.config.js		package-lock.json	tsconfig.json
bin			lib			package.json
cdk.json		node_modules		test

IAMユーザー準備

IAMユーザーの作成

  • IAMコンソール にアクセス
  • 左メニューの「ユーザー」→「ユーザーの作成」をクリック
  • ユーザー名を入力
    -「許可を設定」では「ポリシーを直接アタッチする」から「AdministratorAccess」を選択し、ユーザーの作成
  • 「セキュリティ認証情報」から「アクセスキーを作成」
  • ユースケースは「コマンドラインインターフェイス (CLI)」を選択
  • アクセスキーを取得

CDKに設定

aws configure
AWS Access Key ID:作成したアクセスキーID
AWS Secret Access Key:作成時に表示されたシークレット
Default region name:例)ap-northeast-1(東京)
Default output format:json でOK

設定

CDKのメインファイルを編集

code lib/sample1-stack.ts

こんな感じ

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

export class Sample1Stack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
      
    new s3.Bucket(this, 'Sample1StackBucket', {
      bucketName: "samplestuck-bucket-sample1", // グローバルで誰とも被らない一意な名前を設定
      versioned: true, // バージョニング有効
      removalPolicy: cdk.RemovalPolicy.DESTROY, // スタック削除時にバケットも削除
      autoDeleteObjects: true, // オブジェクトも削除(注意:本番では推奨されない)
    });
  }
}
cdk diff

ここで差分が出るかどうか。出なければ設定を再度見直す

cdk deploy

で作成

cdk destroy

で全部消せます

Discussion