Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CFnのプロジェクトをCDKにしてみたい
Search
ヤマダ(北野)
November 16, 2023
Technology
0
9
CFnのプロジェクトをCDKにしてみたい
ヤマダ(北野)
November 16, 2023
Tweet
Share
More Decks by ヤマダ(北野)
See All by ヤマダ(北野)
まずはマネコンでちゃちゃっと作ってから、それをCDKにしてみよか。
yamada_r
3
170
カップラーメンタイマーで感じる生成AIの進化
yamada_r
0
4
Amazon Lexに感じる無限の可能性
yamada_r
0
33
JAWS DAYS 2025 re:Chrees 広報担当の振り返り
yamada_r
0
110
それ、AWS Step Functionsで置き換えれん?
yamada_r
0
12
はじめてのすくらむ
yamada_r
0
10
新米CBの自己紹介
yamada_r
0
7
Amplify StudioとFigmaで遊ぶ
yamada_r
0
6
Lambda Layerを作る時に沼った話
yamada_r
0
8
Other Decks in Technology
See All in Technology
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
130
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
6
2.9k
全てGoで作るP2P対戦ゲーム入門
ponyo877
3
1.3k
「AI駆動PO」を考えてみる - 作る速さから価値のスループットへ:検査・適応で未来を開発 / AI-driven product owner. scrummat2025
yosuke_nagai
2
510
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
930
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
870
成長自己責任時代のあるきかた/How to navigate the era of personal responsibility for growth
kwappa
3
230
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
260
SoccerNet GSRの紹介と技術応用:選手視点映像を提供するサッカー作戦盤ツール
mixi_engineers
PRO
1
160
AI ReadyなData PlatformとしてのAutonomous Databaseアップデート
oracle4engineer
PRO
0
150
KMP の Swift export
kokihirokawa
0
310
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
upamune
1
390
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
The Cost Of JavaScript in 2023
addyosmani
53
9k
Side Projects
sachag
455
43k
Code Review Best Practice
trishagee
72
19k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
GitHub's CSS Performance
jonrohan
1032
460k
RailsConf 2023
tenderlove
30
1.2k
Transcript
北野 涼平 CFnのプロジェクトを CDKにしてみたい 2023/11/16 アイレット株式会社 クラウドインテグレーション事業部 開発第1セクション
自己紹介 2 所属:アイレット株式会社 X:@benkyo_ganbaman 趣味:ハーゲンダッツの蓋集め 好きなAWSサービス:AWS FIS、AWS Lambda 図を配置してください ヤマダ(北野
涼平)
3 本題
本題 4 すでにある程度の開発フローが確立されている案件に参画! CloudFormation初心者として頑張るぞ! 既存案件に参画することになったヤマダ
本題 5 • 既存のプロジェクト • CloudFormationを使用 ◦ Lambdaあり ◦ 環境によってリソースの有無がある
• 複数環境(アカウント)へのデプロイが必要 • いくつかバッチファイルが用意されている ◦ 何に使うんだろう感 そして案件の詳細を目にすると ...
本題 6 CloudFormationでフローが確立されていたが、後から参画した自分には以下の点で分かりにくく感じ た。 • CFnの記述が非常に縦に長い • デプロイ方法が明確ではない(バッチが複数存在する) • リソース同士の関連性を読み取りづらい(実力不足もあり)
そこで、こういった問題への改善を考えた時、CDKの存在が頭に浮かびました。 CDKに置き換えることでどのような利点があるのかを考えつつ、第一歩としてどういうことから取り組 めばいいのかをまとめてみることにする。 今回の案件について
本題 7 1. 第一歩 ◦ 記事を見る(AWS CDKを始めるハンズオン) ◦ 記事の内容を進めてみる 2.
既存のプロジェクトを見直す ◦ CFnを見てなんとなくの構想を立てる ◦ 既存の分かりにくかった部分を書いてみる ▪ 入力補完 ▪ リソース有無の切り替え ◦ cdk watchについて 3. まとめ アジェンダ
8 第一歩
第一歩 9 いきなり既存プロジェクトを置き換えようとしても何から始めていいのか全く分かりません。 ということで初心者に優しい記事を参考にまずは勉強を進めていきます!いきなり手をつけるのでは なく、まずは全体にざっと目を通すのが良いと思います。 AWS CDKを始めるハンズオン ─ IaCの第一歩をAWS LambdaとDynamoDBのシンプルな仕組みで
学ぶ https://eh-career.com/engineerhub/entry/2023/04/27/093000 記事を見る
第一歩 10 全体をまとめると、AWS CDKを始めるに当たってメリットの説明から実際に簡単な構成を作るところま でカバーしてくれています!私は一通りハンズオンを実施しました。特に内容で詰まることもなく、初学 者に優しい内容でした。「今日からレッツCDK!」という方には是非とも一度体験してほしいです。 記事を読了すると、CDKの基礎、デプロイ、AWS Lambda・Amazon DynamoDBの構築について学 べます。また、最後に次のステップへのアドバイスもありました。
記事の内容を進めてみる
11 既存プロジェクトを見直す
既存プロジェクトを見直す 12 今回置き換えようとしている対象のCFnを見てみました。また、案件としてリソースの追加対応が必要 だったので、一旦既存のテンプレートを修正しました。そこで分かりにくかった点を挙げると以下になり ます。 • リソースを追加する際の設定項目のスペルミスが気になる • インデントが分かりにくい •
Lambdaとロールなどの関連性が分かりにくい • リソースの有無を切り替えるのが難しかった(ParametersやらConditionsやら) CloudFormationのテンプレートをみる
既存プロジェクトを見直す 13 • Lambda ◦ VPCに配置する ◦ 環境変数を設定 ◦ 環境によって作成するかどうかを判定する
• VPC ◦ プライベートサブネット 今回CDKで書いてみる内容(緩め)
14 書きました!!!
15 CFnの記述といくつか比較していきたいと思います もちろん擬似コードです。
16 入力補完
CFnとCDKを比較 17 <CFn> • 補完なし 入力補完について
CFnとCDKを比較 18 <CDK> • 手厚い補完あり 入力補完について 「role」などあからさますぎる名前で とても分かりやすいので補完で作 業がすすむ
19 リソース有無(切り分け)
CFnとCDKを比較 20 <CFn> • 何ヶ所かに記述が必要 • 直感的に分かりにくい • コマンドを叩く際 に--parameter-overridesで指定
リソース有無(切り分け)
CFnとCDKを比較 21 <CDK> • プログラムで制御 • 直感的に分かりやすい • 複数環境へのデプロイ リソース有無(切り分け)
22 結論:CDKの方がスラスラと書けるし直感的
23 cdk watchについて
cdk watchについて 24 冒頭で紹介した入門編の記事の最後でも触れられていますが、ファイル変更を監視して自動的にデプ ロイしてくれるコマンドです。今回はLambda関数をデプロイしているのでついでに少し使ってみまし た。 Lambdaのソースファイルの"Hello World!"を1文字だけ増やす対応が必要だとしてデプロイにかかる 時間などを見てみます。 cdk
watchとは
cdk watchについて 25 まずはファイルを変更後、通常通りのデプロイをしてみます。Total timeは約45秒ほどかかりました。追 加した文言に勢いはありますが、かかった時間には爽快感がありません。。 cdk deploy
cdk watchについて 26 先ほどとは少し手順が変わり、いきなり「cdk watch」を叩きます。その後任意のファイルを変更し、保 存をするだけで勝手にデプロイしてくれます。変更のあるファイルのみを判断してくれるので信じられな いスピードでログが流れたため、スクショも一度失敗したくらいです。 cdk watch
cdk watchについて 27 さらにデプロイしたLambdaを実行すると開発環境でもログが流れます。まさにwatchしてくれているん だなーと感心しました! cdk watch
28 まとめ
まとめ 29 • 直感的に分かりやすいようになった! →後から参画するメンバーに優しい。 • 複数アカウントへのデプロイが楽になった! →情報もまとまってみやすく、縦に長いファイルがなくなる。 • 補完のおかげでスイスイと記述できるようになった!
→CFnを記述していたときは記事などを見ながら行ったり来たりを繰り返していた。 補完のおかげでタイプミスもなくなる。 • 記述が大幅に減った! →今回は緩めの要件で書き直してみただけだが、それでも目に見えて記述量は減った。 CFnを使用しているプロジェクトを CDKにしてみると
30 次のプロジェクトでは最初から提案できるように これからも精進します。
31 ご清聴ありがとうございました