Slide 1

Slide 1 text

BXT KBXTVH KBXTVH৘γε"846TFS(SPVQT BXTDPNNVOJUZ 2024.04.15 JAWS-UG 情シス⽀部 #30 和⽥健⼀郎@Keni_W *B$πʔϧδΣωϨʔλʔΛ࢖ͬͯɺੲʹ࡞ͬͨ -BNCEBؔ਺Λ$%,؅ཧԼʹ͓͍ͯΈͨ

Slide 2

Slide 2 text

⾃⼰紹介 ⽒名:和⽥ 健⼀郎 アイレット株式会社 エンジニア JAWS-UG 千葉 運営メンバー SORACOM UG東京 運営メンバー X: @Keni_W Facebook : kenichiro.wada.3 好きなAWSサービス : AWS Lambda AWS Community Builder(Serverless) SORACOM MVC 2022 iretテクニカルアンバサダー 2023

Slide 3

Slide 3 text

会社紹介 開発 Development 構築 MSP※ 請求代行 Resale AWS:2010年開始 ・世界中でのサービス提供 ・洗練されたツールによる MSP ・英語サポート ・AWS取扱量は毎年大幅増 ・パブリック クラウド 日本トップクラスの取扱量 ・アプリケーション開発 ・サーバーレス開発 ・デザイン / Webシステム開発 ・ゲーム開発 ・ITコンサルティング 開発 デザイン インフラ Infrastructure ※MSP: マネージド サービス プロバイダー / 監視運用保守 アイレットは、クラウドの導入設計から構築・保守・運用をトータルでサポートする「cloudpack」および「Rackspace」 そしてシステム設計・開発・デザインをワンストップで行う「開発」を提供しています。 セキュリティ Security IoT AWS:2020年開始 KCPS (RPC-Vベアメタル)

Slide 4

Slide 4 text

ࣗݾ঺հଓ͖ • ロールはアプリケーションエンジニア • 普段の業務は、社内開発というチームで、 社内で使うアプリの開発等を担当 • 主にPHP、Node.js(TypeScript)、 Pythonでコード書いてる • GoとかRubyもあったりする • 実は昔はJavaな⼈(最近全く書いてない) +"846(৘γεࢧ෦-5KBXTVH৘γε

Slide 5

Slide 5 text

ࣗݾ঺հଓ͖ 社内で使うアプリと⾔っても、多種多様 • EC2上で動いているWebアプリ • EventBridge + SQS + Lambda + S3を 構築された定期バッチ • Step Functions + Lambdaで構築された 他システム連携処理 • Amplify で構築されたWebアプリ ・・・などなど +"846(৘γεࢧ෦-5KBXTVH৘γε

Slide 6

Slide 6 text

ࣗݾ঺հଓ͖ 社内で使うアプリと⾔っても、多種多様 • EC2上で動いているWebアプリ • EventBridge + SQS + Lambda + S3を 構築された定期バッチ • Step Functions + Lambdaで構築された 他システム連携処理 • Amplify で構築されたWebアプリ ・・・などなど +"846(৘γεࢧ෦-5KBXTVH৘γε

Slide 7

Slide 7 text

+"846(৘γεࢧ෦-5KBXTVH৘γε 今年初めのこと・・ チームリーダー : 前に作った連携システムに 〜な機能を追加よろしく! 昔⾃分が作ったシステム ですね!。 了解です。 IaCジェネレーター使った&CDK Migrationしてみた

Slide 8

Slide 8 text

IaCジェネレーター使った&CDK Migrationしてみた • Lambdaはコンソールで⼿動でデプロイ • それが全部で5つ • 今回処理追加で呼び出すLambdaが追加 • ランタイムバージョンが混在すること に • Step FunctionsではMap使っているけど、 Distributed Mapを利⽤したい +"846(৘γεࢧ෦-5KBXTVH৘γε

Slide 9

Slide 9 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε Lambdaは コンソールで デプロイ AWS CDK でデプロイ 作業を容易 にしたい Lambdaの バージョン 混在 全部作り直せ ばいいやん

Slide 10

Slide 10 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε CDKのProjectととして、 新しく作って、 リリースは マルっと置き換えること にしよう!

Slide 11

Slide 11 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε ってことを決めた頃、 登場したのがこのアップデート https://aws.amazon.com/jp/blogs/news/import-entire-applications-into-aws-cloudformation/

Slide 12

Slide 12 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε これは使うしかない!ってことになりまして、 早速使ってみることに

Slide 13

Slide 13 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε ⼿順としては、以下 • リソースのスキャン • テンプレート⽣成 • CDK Migrate • (L2 Constructs化) https://qiita.com/KbSota/items/be3b4063deea52815d50

Slide 14

Slide 14 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε ・リソースのスキャン ここのボタンをクリック して、終わるのを待つ

Slide 15

Slide 15 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε 説明には、 とありますが、 結果としては、10000ちょいのリソースがあ りましたが、12分ほどでスキャン終了

Slide 16

Slide 16 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε ・テンプレート⽣成 ※ここが肝 Scanしたリソースを探して選ぶ

Slide 17

Slide 17 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε 個⼈的には、 AWS Lambdaの検索が名前でできるようにな ると嬉しい Tagに名前でもセットしておけ・・・っての はそうなんだけも

Slide 18

Slide 18 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε ⽣成が終わると、そのままCloudFormation のStackとしてインポート可能 今回はAWS CDKで使いたいので、AWS CDK のタブに移動して、テンプレートファイルを ダウンロード

Slide 19

Slide 19 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε https://aws.amazon.com/jp/blogs/news/announcing-cdk-migrate-a-single-command-to-migrate- to-the-aws-cdk/ ・CDK Migrate 後で気づいたんですが、ほぼ同時期に登場し てたんですね。このコマンド

Slide 20

Slide 20 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε 落としてきたファイルを適当な場所に置いて、 記載してあるコマンドを実⾏ 注意点は、コマンド実⾏は、テンプレートを ⽣成したリージョンをデフォルトリージョン にする必要があり ※cdk deploy⾃体はリージョン変えても⼤丈 夫(そりゃそうだ)

Slide 21

Slide 21 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε デプロイ時の注意点 Migrateコマンド実⾏すると、migrate.json というファイルが⽣成される これが残っていると、cdk deploy時にリソー スがないといってエラー発⽣ (cdk diffの時はエラーにならない) (そのまま使うならいいけど)

Slide 22

Slide 22 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε ・L2 Constructs 化 CDKのProjectとして取り込めればOK ただ、⽣成されたCDKのStackファイルは、 L1 Constructs で構成されている 可能であれば、L2 Constructs化した⽅が、 メンテナンスは楽では?

Slide 23

Slide 23 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε ⾃分の開発環境で試した例 L1 Constructs Ver. : 244⾏ L2 Constructs Ver. : 65⾏ ¼ぐらいなので、いい削減量ですし、 可読性が上がりますので、L2化がおすすめ

Slide 24

Slide 24 text

IaCジェネレーター使った&CDK Migrationしてみた +"846(৘γεࢧ෦-5KBXTVH৘γε 今回の作り直しに関して⾔えば、 CDK管理化 -> 達成 デプロイ作業の単純化 -> 達成 とまあ、いいことずくめで、 先⽇、無事に本番リリースおよび処理置き換 えを完了済

Slide 25

Slide 25 text

まとめ +"846(৘γεࢧ෦-5KBXTVH৘γε • IaCジェネレーターは既存リソースのAWS CDK等IaC管理下に置く際に⾮常に便利 • しかも無料 • その他、リソースの洗い出しに便利説あ り • 30⽇後には再Scanが必要なので、 Lambdaあたりで、定期実⾏すると継続 的にリソース取得できそう

Slide 26

Slide 26 text

まとめ +"846(৘γεࢧ෦-5KBXTVH৘γε

Slide 27

Slide 27 text

͓͠·͍ +"846(৘γεࢧ෦-5KBXTVH৘γε ご清聴ありがとうございました。 本⽇の資料のベースは -> https://bit.ly/3vZKb5l