Slide 1

Slide 1 text

CDK使用歴1年の僕が現場でCDK導入 するときに得たTips KMiura(@k_miura_io)

Slide 2

Slide 2 text

自己紹介 • 三浦 耕生(こうき) • JAWS UG名古屋運営 • 三次元地図技術のスタートアッ プのエンジニア&社内のAWSの 管理人 @k_miura_io koki.miura05

Slide 3

Slide 3 text

CDKとの出会い • 前職の勉強会で初めてCDKを触ったけど、何に使えるのかわからなかった(そもそ もAWSの知識もあんまりなかった) • 2022年のAWS Summitのライブコーディングを見ていてCDKの可能性を感じて、プ ロダクトに導入したいと思った https://youtu.be/rcFqJWLwncU

Slide 4

Slide 4 text

導入するときに考えたこと • 環境ごとにデプロイできるようにしたい • 環境変数の管理を効率よくしたい • CI/CDを導入したい

Slide 5

Slide 5 text

環境ごとにデプロイを切り替える • cdk.jsonのcontextを使うことで環境名を定義する • スタック名・リソース名に環境名を含めることでリソース管理が効率良くなる "context": { ... "environment": "dev", }

Slide 6

Slide 6 text

環境変数を効率よく管理する • cdk.jsonのcontextを利用する • 環境ごとに変わる値(ドメイン名、リージョンとか)は環境名ごとにまとめると効率いい • レポジトリに入れるとまずい機密情報はSSMに格納してStackからSDKで呼び出すと安心 • 命名の重複を防ぐためにスタック名にcontextの環境名を使うとGood "context": { ... "environment": "dev", "dev" : { "account": "123456789011", "region": "ap-northeast-1" }, "prod" : { "account": "123456789012", "region": "ap-northeast-1" } }

Slide 7

Slide 7 text

CI/CDを導入する • もともと導入してたGithub ActionsにCDKのデプロイを足して運用中 • Github ActionsでビルドしたイメージをそのままPushできる • 最初はエラーが出まくったけど今は安定稼働中

Slide 8

Slide 8 text

チーム開発で詰まったこと • デプロイ先のリージョンを間違えた • Stackを定義するときにenvの中にリージョン名を入れることでデプロイ先リージョンを 統一する • Admin権限のないメンバーだとデプロイができない • 以前CDK支部で紹介されていたデプロイ権限を参考にIAMポリシーを作ったら必要 最小限の権限でデプロイ出来るようになった(流石に管理者があれこれ準備する必 要あり) https://bit.ly/3FGiSyG

Slide 9

Slide 9 text

まとめ • 環境ごとの値を.envではなくcdk.jsonにまとめておくことで環境変数を整理しやすく なる • 変数を整理することでGithub ActionsでCDKコマンドを組み込むときもスムーズに できた(本当はCDK Pipelineも導入したい…) • チーム開発でCDKを使うときにはデプロイしたときに差異が起きないようにする仕 組み作りが大事

Slide 10

Slide 10 text

ほどよいCDK入門(自称) https://github.com/Miura55/jawsug- nagoya-cdk-handson ソースコード https://miura55.github.io/ cdk-handson-text/ 資料

Slide 11

Slide 11 text

宣伝 https://bit.ly/3JBCSDP

Slide 12

Slide 12 text

END