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 に入門すっぞ①

Last updated at Posted at 2024-04-23

こんにちは。
毎日を必死にしがみついて生きている、ポンコツエンジニアです。

業務でAWS CDK に触れる機会がありましたので、
せっかくなら環境構築から触ってみようと思い、備忘録としてこの記事を残します。

目的

本記事では、AWS CDKの初期開発環境構築とローカルでdeployができる環境を整備し、typescript で実装をすることを目的とした記事です。

前提条件

以下の環境が既に整備されていること

  • Node.js
  • Docker Compose

実行環境

ProductName:    macOS
ProductVersion: 12.7.1
Node.js:        v20.10.0
npm:            10.2.3

環境構築

LocalStack用プロファイル設定

aws configure --profile localstack
aws configure --profile localstack
AWS Access Key ID [None]: dummy
AWS Secret Access Key [None]: dummy
Default region name [None]: 
Default output format [None]: 

プロファイルだけ作成する必要があるので IDなどの情報は適当で良いです。
※本記事では "dummy" としています。

ディレクトリ作成 / 移動

mkdir skillup-study-cdk && cd skillup-study-cdk

CDKプロジェクト作成

npx aws-cdk@ init app --language typescript

aws-cdk-local インストール

aws-cdk をローカル環境でdeployするためにaws-cdk-localをインストールします。

npm install aws-cdk-local

※注意※

aws-cdk と aws-cdk-localはグローバルにインストールするのではなく、ローカルにインストールし、npxで呼び出すようにします。
グローバルに入れたCDKとローカルのCDKのバージョンの違いによってエラーになるためです。

docker-compose.yml 作成

LocalStackをdocker-compose でローカルのDocker上に立ち上げるためymlファイルを作成します。

touch docker-compose.yml
docker-compose.yml
version: "3.8"

services:
  test-localstack:
    container_name: test-localstack
    image: localstack/localstack:1.3.1
    ports:
      - 4566:4566
    environment:
      - DEFAULT_REGION=ap-northeast-1
      - DOCKER_SOCK=/var/run/docker.sock
      - DEBUG=1
    volumes:
      - test-localstack:/var/lib/localstack/
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      test-network:

networks:
  test-network:
volumes:
  test-localstack:

LocalStack 起動

ローカル環境へのdeploy時は必ずLocalStackを起動してください

docker-compose up -d

LocalStack 起動確認

localstack status services

S3バケットを作成してローカル環境に向けてデプロイしてみる

LocalStackの起動確認が取れたら、S3バケットを作成して、ローカル環境に向けてデプロイをしてみましょう。

S3バケットを作成する

stackファイルに変更する

mv lib/skillup-study-cdk-stack.ts lib/stack.ts

lib/stack.tsの編集

  • S3バケットを作成する
lib/stack.ts
import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";
import * as s3 from "aws-cdk-lib/aws-s3";

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

    const bucket = new s3.Bucket(this, "CreateBucket", {
      bucketName: "test-bucket-20240422",
      versioned: true,
    });
  }
}

bin/skillup-study-cdk.ts の編集

  • stack.ts を呼び出す
bin/stack.ts
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { SkillUpStudyStack } from '../lib/stack';

const app = new cdk.App();
const prefix = 'Test';
new SkillUpStudyStack(app, `${prefix}SkillUpStudy`);

一番最初のdeploy前のおまじない

deploy時の一番最初の一回のみ以下のコマンドを実行します。
※cdklocal コマンドでローカル環境にデプロイできます

npx aws-cdk-local bootstrap

deploy

npx aws-cdk-local deploy


# 結果

✨  Synthesis time: 4.58s

Stack:  start: Building fd40ed898e39bddce371e56c819a052298f01555434527cf1c0c63ccd2ead45e:current_account-current_region
Stack:  success: Built fd40ed898e39bddce371e56c819a052298f01555434527cf1c0c63ccd2ead45e:current_account-current_region
Stack:  start: Publishing fd40ed898e39bddce371e56c819a052298f01555434527cf1c0c63ccd2ead45e:current_account-current_region
Stack:  success: Published fd40ed898e39bddce371e56c819a052298f01555434527cf1c0c63ccd2ead45e:current_account-current_region
Stack: deploying... [1/1]
Stack: creating CloudFormation changeset...

 ✅  Stack

✨  Deployment time: 5.1s

Stack ARN:
arn:aws:cloudformation:ap-northeast-1:000000000000:stack/Stack/dbc0586e

✨  Total time: 9.68s

LocalStackにdeployされたリソースを確認してみる

aws s3コマンドでS3バケットの確認をする

endpoint にLocalStackのURLを、profileにLocalStack用のprofileを指定します。

aws s3 ls  --endpoint-url=http://localhost:4566 --profile localstack


# 結果
2024-04-23 09:14:33 cdk-hnb659fds-assets-000000000000-ap-northeast-1    # cdkがstackをdeployするために一時的に資材を格納するために作成されるS3バケット
2024-04-23 09:17:50 test-bucket-20240422                                # cdkで定義した作成対象バケット

aws cdk を使ってS3バケットを作成することができました。
これで初期構築は終了です。

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?