はじめに
- もはやCFn(CloudFormation)に環境設定を直書きしてる方は絶滅危惧種のようです...(知りませんでした)
- CFnのような面倒な記述なく、Pythonなどでゴリゴリ書けるCDKがトレンドみたいです。
- CI/CDで自動デプロイできるかの検証はまだできてないです(ゴメンナサイ)
- 【注意】あくまで他人が作ったAWS環境を自分のAWS環境に移行するための手順です。
- 【注意】あらかじめ他人のAWS環境のCDK構築ファイル群をもらっておく必要があります。
- Macユーザー向けです。
- AWSを熟知している方、普段からCLIを触っている方、CloudFormationを書いたことある方向けです。
- 環境に合わせた任意の変数は
{}
で表現しています。
動作確認済みの環境
バージョン | |
---|---|
OS | MacOS Catalina 10.15.6 |
Python | 3.9.1 |
pip | 20.1.1 |
Node.js | 12.16.1 |
npm | 6.14.8 |
aws-cdk | 1.16.0 |
aws-cli | 2.0.44 |
事前準備
-
Homebrewをインストール 👉https://brew.sh/index_ja
-
pyenvをインストール
$ brew install pyenv
-
PATHを通す
$ vim ~/.bash_profile //bashではなくzshを使っている場合は~/.zprofile // 下記の3行を追記する export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" // 3行追記して保存(:wq)したら下記コマンドで変更内容を反映する $ source ~/.bash_profile
-
python 3.8.5 をインストール
$ pyenv install 3.8.5 $ pyenv global 3.8.5 $ python3 -V //3.8.5であることを確認
-
aws-cliをインストール 👉https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2.html
-
aws-cliとAWSアカウントを紐付ける
$ aws configure AWS Access Key ID : {自分のアカウントのアクセスキー} AWS Secret Access Key : {自分のアカウントのシークレットキー} Default region name : ap-northeast-1 Default output format : json
CDKによるリソースデプロイ
- CDKの準備を行う
$ mkdir {hoge}
$ cd {hoge} //.envがある環境
// 他人が作った環境のCDK資源をhogeフォルダにコピペする
$ python3 -m venv .env //初回のみ実行
$ source .env/bin/activate //仮想環境を展開
// 仮想環境から出たい場合は、`$ deactivate`
// 仮想環境に入ると、$マークの前に(.env)が表示されます。
(.env)$ pip install -r requirements.txt //(初回実行のみ)ライブラリをインストール
// 下記のWARNINGは無視してOK。
// WARNING: You are using pip version xx.x.x; however, version xx.x is available.
(.env)$ cdk ls
- 対象環境にCDK Appを作成する
(.env)$ cdk synth //CFnフォーマットに変換されてテンプレートが出力される
(.env)$ cdk diff //diffチェックをする
- 対象環境にCDKでリソースをデプロイする
(.env)$ cdk deploy
// deployコマンドを流すと、実行するかどうか聞かれるのでyを入力する。
// failed creationエラーが出た場合はwebコンソールから対象スタックを一度削除して再度デプロイする。
- デプロイ完了!!
Stack ARN: arn:aws:cloudformation:ap-northeast-1:{アカウント番号}:stack/{スタック名}/{スタックID}
//上記が出力されればデプロイ完了!
//CLIで全てデプロイできたら、webマネジメントコンソールからスタックが出来上がっていることを確認できます。
おわりに
- CFnの面倒な作業から解放されるCDKなるものがあるとは知りませんでした。
- IaCがこんなに簡単に実現できるとは、さすがAWSです👏