私「インフラは昔よりも簡単になっているらしい。」
AWS CDK とは?
- インフラをコードとして定義するためのツール(IaC)
- AWS CloudFormationテンプレートにコンパイルしてデプロイするためのフレームワーク
- 直感的かつ効率的にAWSインフラのプロビジョニングを行う
私「インフラをコードで管理が、時代の流れなんだな。」
他に似たようなのは?
- Teraform
- Serverless Framework
私「テラフォームは、何かのニュースで聞いたことある。使ってみよう」
前提を揃える
AWS CLI を使える必要がある(Macの場合)
% brew install awscli
バージョン確認
% aws --version
> aws-cli/2.23.11
OK
まず管理者権限
以降はAWSの管理者権限が使える必要あります。
チームで使っている環境ではできないので個人の環境を使います。
※もちろん具体的なキーは伏せてあります。
AWS環境変数を設定する
% export AWS_ACCESS_KEY_ID=""
% export AWS_SECRET_ACCESS_KEY=""
% export AWS_SESSION_TOKEN=""
~/.aws/credentials を開いて記入する
[AdministratorAccess]
aws_access_key_id=
aws_secret_access_key=
aws_session_token=
サービスクライアントにアクセスキーを追加
% aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
私「output format? って何だろな」
開発言語
開発する言語、TSをインストールする。
% npm -g install typescript
バージョン確認
% tsc -v
> Version 5.7.3
OK
CDK CLIをインストールする
% npm install -g aws-cdk
バージョン確認
% cdk --version
> 2.177.0
OK
なにかリポジトリを用意
勉強用のリポジトリを git clone
しました。
% git clone (your Repository)
JSで書かれてたので、中身に、package.json があります。
ということは node_modules
が必要だと思います。
% npm install
CDK.json
cdk.jsonを使って構成を管理するものらしいです。
cd /path/to/cdk.json
※正確には、cdk.jsonがある所まで行かないと、cdkコマンドは動かない。
CDK bootstrap
最初に初期設定を作っておく。
% npx cdk bootstrap --context environment=dev
CDKToolkit: creating CloudFormation changeset...
Environment aws://xxxxxxxxxxxxx/xx-xxxxx-1 bootstrapped.
デプロイ
cdk.json で設定された通りの構成
% npx cdk deploy --context environment=dev
Do you wish to deploy these changes (y/n)? y
Deployment time: 160.29s
デプロイされた
AWS CloudFormationを見に行く
テンプレートに変換され、いろいろなAWSのサービスに
インスタンスが立ち上がったりしている。
停止方法
止め方わかんないな。AWSのBillingが心配だ。
% npx cdk destroy --context environment=dev
これで止まる。間違えて、本番環境のKeyを持っている時に
destroy を使わないようにしましょう。
結論
AWS CDK めっちゃ使いやすい。