cdk + typescript でs3のバケットを作成するプラクティスを含むSandbox環境です。
cdk、aws-cliを動かす環境はdockerで用意しました。
- 環境要件
- Docker
- docker-compose
- git
- 前提知識
- docker-composeが使えること
- gitが使えること
- aws s3が何のサービスか知っていること
- aws コンソール(web)の最低限の使い方がわかること
- AWS アカウント
- 作業用のIAMユーザーも作成しておく。(プラクティスなのでAdministratorAccessの権限つけた状態で)
※ ホスト上での作業
# ソースの取得
$ git clone git@github.com:kazuaki-ito/sandbox-aws-cdk.git
$ # 環境起動
$ docker-compose up -d
$ # 少し待ってから
$ docker-compose ps
$ # コンテナのステータスがUPになってからbash起動
$ docker-compose exec cdk bash
※コンテナで起動したbash上での作業
$ # クレデンシャルの設定
$ aws configure
AWS Access Key ID [None]: $アクセスキー}
AWS Secret Access Key [None]: ${シークレットアクセスキー}
Default region name [None]: ap-northeast-1
Default output format [None]: json
※ ホスト上での作業
$ # 環境起動
$ docker-compose up -d
$ # 少し待ってから
$ docker-compose ps
$ # コンテナのステータスがUPになってからbash起動
$ docker-compose exec cdk bash
※コンテナで起動したbash上での作業
$ # 作業ディレクトリを作成
$ mkdir practice
$ cd practice
$ #cdk の初期設定
$ cdk bootstrap
$ # cdk appの初期化
$ cdk init app --language=typescript
※コンテナで起動したbash上での作業(practiceディレクトリ)
$ # s3を作成するためのライブラリをインストール
$ yarn add @aws-cdk/aws-s3
practice/lib/practice-stack.tsを以下の用に記述(これはホストから書き換えてもOK)
import * as cdk from '@aws-cdk/core'
import * as s3 from '@aws-cdk/aws-s3'
export class PracticeStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const bucketName = 'xxxxx-sandbox-aws-cdk' // ← ここの値は適当な値に変更する
new s3.Bucket(this, 'practice', {
bucketName: bucketName,
removalPolicy: cdk.RemovalPolicy.DESTROY
})
}
}
※コンテナで起動したbash上での作業(practiceディレクトリ)
$ # appをビルド
$ yarn build
$ # AWSの環境と、作成しようとしているリソースの差分を表示
$ cdk diff
$ # おもむろにデプロイしてみる
$ cdk deploy
$ # 成功すればAWS コンソール上からs3 のバケットが作成されていることが確認できる
※コンテナで起動したbash上での作業(practiceディレクトリ)
$ # 後片付け(作成したバケット削除) ※バケットの中が空じゃないと消せないので注意
$ cdk destroy
Are you sure you want to delete: PracticeStack (y/n)? y
$ # 成功すればAWS コンソール上からs3 のバケットが削除されていることが確認できる