Slide 1

Slide 1 text

初心者でもできる! AWS CDKへのコントリビュート 2023/7/24 AWS事業本部 モダンアプリケーションコンサルティング部 今泉大樹 1

Slide 2

Slide 2 text

#devio2023 2

Slide 3

Slide 3 text

本セッションではAWS CDKという ツールについてお話しします 3

Slide 4

Slide 4 text

注意事項 •AWSサービスについてのお話しはほとんどありません •AWS CDKの具体的な使い方は紹介いたしません •「俺(私)・・・今年こそOSS貢献するんだ・・・」という方に向けたお話しを いたします 4

Slide 5

Slide 5 text

自己紹介 5 今泉 大樹 - bun913 クラスメソッド株式会社 AWS事業本部モダンアプリケーションコンサルティング部 Twitter: @bun76235104 GitHub: bun913 4年半ほどITエンジニアをしています (3年Webアプリ寄り、1年半程度AWSインフラ寄り) 2023年7月よりお客様のアプリのモダナイズをご支援 2023 Japan AWS Top Engineer 2023 Japan AWS All Certifications Engineer 最近の趣味: 競技プログラミング(そんなに強くない) 25年前くらいからの趣味: ◯◯の大冒険

Slide 6

Slide 6 text

Agenda •AWS CDKってなに? •初めてAWS CDKを使うときのオススメ •AWS CDKへのコントリビューション(貢献)と方法 •コントリビューションをするときの注意点 6

Slide 7

Slide 7 text

7 AWS CDKってなに?

Slide 8

Slide 8 text

ようするに IaC(Infrastructure as Code) のツールの一つです 8

Slide 9

Slide 9 text

こんな構成を作るときに 9

Slide 10

Slide 10 text

AWS CDKならこれだけの記述量です 10

Slide 11

Slide 11 text

公式サイトを見てみましょう 11

Slide 12

Slide 12 text

さまざまなプログラミング言語で利用可 12

Slide 13

Slide 13 text

13 初めてAWS CDKを使うときのオススメ

Slide 14

Slide 14 text

いろいろな言語でCDKを使えるとなると じゃあPythonやGoなら知っているから それで触ってみようかな? 14

Slide 15

Slide 15 text

親しんだ言語で開始するのもいいのですが TypeScriptで開始するのがおすすめです 15

Slide 16

Slide 16 text

私がTSをおスメする理由 AWS CDKが様々な言語で利用できる仕組みと関 係しています 16

Slide 17

Slide 17 text

JSiiという仕組み 17 TypeScriptで書かれたプロジェクトが JavaScript、Python、Java、C#などでも利用 できる

Slide 18

Slide 18 text

TypeScriptで書かれたソースをJSiiで変換 18 (ほとんどの)CDKのソースコードはTSで記述 されている

Slide 19

Slide 19 text

•AWS CDKで検索するとTypeScriptの情報が多く出てくる •TSは静的型付言語なので、型の恩恵を受けることができる • ちょっとしたパラメーターなら調べるより型見た方が早い • 「インフラリソースの定義」という性質上パラメーターが多い •これらに加えて・・・ ということで理由です 19

Slide 20

Slide 20 text

普段のCDK開発から型の定義やメソッドの定義をよく見る →普段から定義をよく見るようになると構造を理解しやすい →構造を理解すると当然バグの直し方や原因を把握しやすい →コントリビューション(貢献)のチャンス!! ソースコードがTypeScriptということは!? 20

Slide 21

Slide 21 text

21 AWS CDKへのコントリビューション (貢献)と方法

Slide 22

Slide 22 text

おさらいも兼ねて AWS CDKへのコントリビューションはTypeScript で書かれるリポジトリのみでOK 22

Slide 23

Slide 23 text

GitHubにリポジトリがあります 23 https://github.com/aws/aws-cdk

Slide 24

Slide 24 text

コントリビューションの流れ 24

Slide 25

Slide 25 text

一般的な開発と同じ流れなのはわかった どうやってIssueとか見つけるの? バグなんて自分では中々見つけられないでしょ 25

Slide 26

Slide 26 text

まずはGitHubのリポジトリにアクセス 26 https://github.com/aws/aws-cdk

Slide 27

Slide 27 text

IssuesでIssueの一覧を開く 27 https://github.com/aws/aws-cdk/issues

Slide 28

Slide 28 text

good first Issueのラベルでフィルタリング 28

Slide 29

Slide 29 text

(ドキュメント修正の場合) 29 「documentation」のラベルを追加

Slide 30

Slide 30 text

(軽微なバグ修正の場合) 30 「bug」のラベルを追加

Slide 31

Slide 31 text

ほぼ答えが書かれているIssueも 31 コアコントリビューターの方が 「どこの」「なにを」直せば良さそうかアドバイス をしている

Slide 32

Slide 32 text

実際に私が担当したバグ 32 クラス初期化時に受け取ったパラメーターをリ ソース作成時に渡し忘れるバグ お茶目なミスもカワイイですね

Slide 33

Slide 33 text

これでIssue探しはばっちり ローカルで開発するときの注意点もいくつか 紹介します 33

Slide 34

Slide 34 text

34 コントリビューションをするときの注意点 (3点)

Slide 35

Slide 35 text

注意点1 ビルドもサクッと通らない可能性があります 35

Slide 36

Slide 36 text

AWS CDKのリポジトリはモノレポ 36 aws-cdk-libというパッケージの中にもCDKで 対応する様々なサービスが・・・

Slide 37

Slide 37 text

aws-cdk-lib というパッケージをビルド 37 lernaというモノレポ管理に利用されるツールを 利用している ※ このビルドにも数分要する https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md

Slide 38

Slide 38 text

ビルド時にメモリが足らないことも・・・ 38

Slide 39

Slide 39 text

それですらコントリビューションのチャンス 39 https://github.com/aws/aws-cdk/pull/26465/files 1行追加しただけですが、新規コントリビュー ターの無駄時間を削る貢献です

Slide 40

Slide 40 text

注意点2 開発時はこまめに単体テストを実施する 40

Slide 41

Slide 41 text

修正って怖いですよね?でもありがたいことに AWS CDKはかなりテストが書かれている 41

Slide 42

Slide 42 text

aws-cdk-libだけでもテストに時間がかかる 42 修正した部分だけ単体テストを実行する方法も 書かれています https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md

Slide 43

Slide 43 text

注意点3 実際にリソースを作成するテストでは 課金に注意 43

Slide 44

Slide 44 text

Integration Testの課金 44 https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md 実際にリソースを作成する挙動をする

Slide 45

Slide 45 text

AWS Configの変更の検知には留意 45 https://dev.classmethod.jp/articles/aws-config-amazon-athena/

Slide 46

Slide 46 text

手っ取り早いのは CDK検証用のアカウント用意した方が良いかも 46

Slide 47

Slide 47 text

どうしても課金がいやなら 47 代わりにIntegテストを実行してくれたコアコント リビューターの方もいらっしゃいました

Slide 48

Slide 48 text

48 まとめ

Slide 49

Slide 49 text

•AWS CDKはIaCの一種でいろいろなプログラミング言語で書ける •TypeScriptで始めるのがおすすめ •初めてのコントリビューションには`good first issue` を探す •課金発生するポイントを抑えて楽しく開発しましょう まとめ 49

Slide 50

Slide 50 text

50