表記イベントに参戦してみました。
https://awsbasics.connpass.com/event/235164/
CloudFormation(cFn)絡みとのことで興味を持った次第です。
CDKが何者かすら知らずだったのですが、ハンズオンはそんなに困ることなく完走できました。
(1)CDKのざっくり説明
- Construct Hub
CDKで使われるライブラリをまとめたサイト
https://constructs.dev/ - Infrastructure as Code
コードでインフラをプロビジョニングする方法。asとCodeの間にaをつけるのは、実は間違い。 - AWS CDK(AWS Cloud Development Kit)
CloudFormationのラッパーツール。自分の使い慣れたプログラミング言語からcFnスタックを作って実行させるものと理解したらいいんかな。
- 今回のハンズオンはJavaScriptとTypeScriptで行う。
- CDKそのものはTypeScriptで作られている。
- Cloud9から利用するならいいが、自前で環境を作る場合はNode.JS周りをがんばる必要あり
- レイヤー1(普段使うのはこっち)とレイヤー2がある
- 今回のハンズオンはJavaScriptとTypeScriptで行う。
- Simplified Dependencies
ライブラリの依存関係がかなり整理された - What's next?
CDKに対応していないAWSサービスがあるので、ドキュメント等を確認すること
[質疑応答]
- Rustは対応していないのか?
SDKは力入れるとアナウンスされているが、今のところ対応していない。
(2)イベント告知
CDK Conference Japan
https://jawsug.connpass.com/event/240422/
こんな感じのLTネタを募集しているとのこと。
(3)ハンズオン
- ハンズオン資料
https://github.com/harunobukameda/AWS-CDK-v2 - ざっくりシナリオ
- 環境構築(Cloud9)
- CDK-JavaScriptからS3バケットを作って消す
- CDK-TypeScriptからSQSキューを作る
- CDK-TypeScriptからLambda関数を作る
- ホットスワップ機能を使って作成したLambda関数を更新デプロイする
- CDK-TypeScriptからAPI Gatewayを作成して、先のLambda関数をブラウザから閲覧できるようにする
- 環境一式の削除
[ハンズオン時の質疑応答やコメント]
- Cloud9から利用する場合はt3.small以上のインスタンスが必要
- 環境構築時のサブネットはパブリック-サブネットになるようにする
- L2レイヤ(抽象化)の作業に該当
- CDKはJestを内包している
クラスメソッドさんが詳しいBlog記事を公開している
https://dev.classmethod.jp/articles/aws-cdk-testing/ - cdk bootstrapコマンドは、プログラミング言語ごとに1回だけ実行が必要
- CFnスタックのクォータは、サポートに言ったら増やしてもらえる
- cdk init の引数違いで色々とサンプルができあがるのではないか?
→Yes - 本日時点では、英語版ハンズオンは手順が追い付いてなく、CDK V2とV1がごっちゃになっている
- どうしても消せないcFnスタックを消すにはどうすればよいか?
→サポートに言ったら消してもらえる。 - デプロイ時の細かいログはCloudFormationのコンソールに出る
- ホットスワップとは何か?
→cfn経由なしにデプロイすること。通常のcdkコマンドのようにcFnを経由しない分高速。
ホットスワップを多用するとcFnスタックの定義とずれる可能性がある。
特に本番環境では使わない方がよい
→開発中にちょこちょこいじるときはHotSwap、落ち着いたら通常Deployという使い方。
※要はホットデプロイみたいなもんと理解したらよさそう
- Lambda関数名は指定できないのでしょうか?
→指定できる - cFnでできないことはCDKでもできない
(4)JamstackのLT
Stripeという決済プラットフォームのSDKとCDKの事例。
Secret Managerを組み合わせるといい感じにできるとのこと。