Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JAWS-UG CDK支部 #12 巷で噂の”cdk migrate”に入門してみた

tsujikawa
February 21, 2024

JAWS-UG CDK支部 #12 巷で噂の”cdk migrate”に入門してみた

tsujikawa

February 21, 2024
Tweet

Transcript

  1. Copyright SKYARCH NETWORKS Inc. All Rights Reserved. JAWS-UG CDK⽀部 #12

    巷で噂の”cdk migrate”に⼊⾨してみた 辻川弘規 株式会社スカイアーチネットワークス 2024/2/21
  2. ⾃⼰紹介 2 所属︓株式会社スカイアーチネットワークス SA部/デベロップメント課 職務︓インフラ設計/構築、アプリ設計/開発、PJマネジメント、なんでもやります 前職︓独⽴系SIer(アプリエンジニア -> AWS めっちゃハマった︕) 好きなサービス︓CDK

    ECS on Fargate Lambda Bedrock 好きな⾔語︓Python、TypeScript(ただしCDKでのみ) 資格︓AWS 12冠、G検定、⽣成AIパスポート(受かってたい) 趣味︓読書、競⾺鑑賞、映画鑑賞 辻川 弘規(つじかわ ひろき) re:Inventにて Pulumi君との2ショット @teriyakisu
  3. Agenda Copyright SKYARCH NETWORKS Inc. All Rights Reserved. 01 02

    03 04 05 3 はじめに cdk migrateとは ⼊⾨してみた まとめ おまけ
  4. はじめに 6 v2.126.0 で 新機能追加 お話すること ü AWS CDKの新機能( v2.126.0

    ) “cdk migrate --from-scan” を解説 ü ハマった箇所の解説 お話しないこと ü $MPVE'PSNBUJPO΍AWS CDKについて ü L1やL2 Constructsについて -> Black Belt をぜひチェック︕ https://aws.amazon.com/jp/events/aws-event-resource/archive/ AWSサービス別 資料 https://github.com/aws/aws-cdk/releases/tag/v2.126.0
  5. cdk migrateとは 8 その前に... AWSサービスの主な構築パターン ① AWS コンソールによる⼿動構築 コンソール ②

    CloudFormationによる構築 Change set Stack Template ③ CDKによる構築 CloudFormation Template CDK Code
  6. cdk migrateとは 9 その前に... AWSサービスの主な構築パターン ① AWS コンソールによる⼿動構築 コンソール ②

    CloudFormationによる構築 Change set Stack Template ③ CDKによる構築 CloudFormation Template CDK Code ⼿動構築したAWSリソースを CloudFormationやCDKで管理したい
  7. cdk migrateとは 11 CDKで管理したい ブログ書いたので ぜひチェック✔ ① AWS CloudFormation スタックから移⾏(v2.100.0)

    -> $ cdk migrate --from-stack ② AWS CloudFormation テンプレートから移⾏(v2.100.0) -> $ cdk migrate --from-path ③ デプロイされたリソースからの移⾏(v2.126.0) -> $ cdk migrate --from-scan CDKへの移⾏⽅法 v2.100.0でcdk migrateのプレビュー版が発表 -> AWSリソースからcdkコード(L1 Constructs)を作成。 またcdk deployを⾏うことで、importまで対応(リソースの関連付け)
  8. ⼊⾨してみた 15 migrateコマンドの解説 $ cdk migrate --from-scan new --stack-name "wafStack"

    --filter "type=AWS::WAFv2::WebACL" Console ü 新しいスキャンを開始 -> ”new” を選択 -> 初回スキャン時やスキャン後にリソースを追加したケースに使⽤ ü 最後に成功したスキャンを使⽤ -> “most-recent” or 無 を選択 -> filterオプションでリソースをフィルタリングし直したい場合に使⽤
  9. ⼊⾨してみた 16 migrateコマンドの解説 ü ⼀度に作成できるリソース数が最⼤100のため filterオプションの使⽤を推奨 ü AND / OR

    の2パターンで絞り込みが可能 -> --filter tag-key=env,tag-value=prd(ANDのみ) -> --filter type=AWS::DynamoDb::,tag-key=dev,tag-value=true --filter type=SQS::Queue (ANDとORの組み合わせ) $ cdk migrate --from-scan new --stack-name "wafStack" --filter "type=AWS::WAFv2::WebACL" Console
  10. ⼊⾨してみた 24 4. CFnスタック作成&cdk import 実⾏結果 $ cdk deploy Console

    無事にimportが完了︕ CFnスタックで管理されてます
  11. ⼊⾨してみた 25 4. CFnスタック作成&cdk import(NG例) メインのWAF Web ACL部分も出⼒。 ただしコンソール画⾯とCFnの ⼊⼒パターンで異なるケースが

    あるようです。 ⼿動構築時︓descriptionは空で作成 CFnでは空の作成はNGのため cdk deployに失敗しました。
  12. ⼊⾨してみた 26 4. CFnスタック作成&cdk import(NG例) $ cdk deploy --no-execute Console

    --no-executeを追加し 変更セットからCFn差分を 確認した際に、すぐに”add”の変更セット が再作成される現象が発⽣。 おそらく cdk deployが成功した 時点で、migrate.jsonが削除されることが 原因のよう。
  13. ⼊⾨してみた 27 5. リファクタリング $ npm run test Console エンジニアの好きなキーワード

    そうです。リファクタリングですね。 せっかくなので、L1のコードをL2で 定義したいと思います。 (WAFはL1のみ対応のため、S3で実施) まずはスナップショット作成︕ リファクタリング前の状態をパシャ
  14. ⼊⾨してみた L1 L2 5. リファクタリング L2 で定義 Escape hatch overrideLogicalIdを⽤いて

    論理IDを変更しないよう設定 スナップショットテストOK cdk diffも差分なし︕ 28
  15. まとめ 31 https://github.com/aws/aws-cdk/pull/28962 ü リリース直後に調査した際には情報が少なかったた め、GitHubのPRからコメントやソースコードを 読み漁りました。(楽しい︕) ü 登壇資料を作成する上で、たくさんのドキュメント に⽬を通したので⾮常に理解が深まりました。

    サマリ ü cdk migrateのオプションさえ使いこなせば 簡単にスキャン&cdkコード化出来る︕ ü (脱)⼿動構築リソース︕CFn/CDK下で管理だ︕ ü 裏で動いてるIaCジェネレーターも凄い︕ 個⼈的感想 むちゃくちゃ丁寧なコメントで 読んでて楽しかったPR