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

Git Sync を超える!OSS で実現する CDK Pull 型デプロイ / Deploy...

Git Sync を超える!OSS で実現する CDK Pull 型デプロイ / Deploying CDK with PipeCD in Pull-style

CDK Conference 2025での登壇資料です。時間は10分間。
https://jawsug-cdk.connpass.com/event/356357/

リンク一覧:
- 「AWS CloudFormationのGit Syncを使って、AWS CDK用のGitOpsパイプラインを構築する」https://mazyu36.hatenablog.com/entry/2023/12/05/000000

- codestar-connections
- https://docs.aws.amazon.com/cli/latest/reference/codestar-connections/get-resource-sync-status.html
- https://docs.aws.amazon.com/cli/latest/reference/codestar-connections/get-sync-blocker-summary.html

- App Runnerでエージェントを動かす: https://zenn.dev/cadp/articles/piped-on-apprunner

- プロトタイプ: https://github.com/t-kikuc/pipecd-plugin-prototypes/tree/cdkconf2025

- Community Plugins Repo: https://github.com/pipe-cd/community-plugins

Avatar for Tetsuya Kikuchi

Tetsuya Kikuchi

July 12, 2025

More Decks by Tetsuya Kikuchi

Other Decks in Programming

Transcript

  1. Git Sync を超える! OSS で実現する CDK Pull 型デプロイ 2025-07-12 Tetsuya

    Kikuchi (@t-kikuc) CDK Conference 2025 #cdkconf2025 1/37
  2. 菊池 哲哉 GitHub: @t-kikuc  X: @t_kikuc Software Engineer at CyberAgent,

    Inc. PipeCD というOSS をメンテしてます AWS Community Builder (Containers, 2025-) 好きなサービス: ECS / Support JAWS のオフライン初参加は CDK Conf 2023 #cdkconf2025 8/37
  3. 1. 既存の CDK デプロイとその課題 2. PipeCD で CDK を Pull

    型デプロイする ( ほぼalpha) 3. Pull 型は必要か? 🎯 ゴール: Pull 型デプロイの要否や実現手段を語れるようになる 本日の内容 #cdkconf2025 9/37
  4. 1. cdk deploy を GitHub Actions 等で実行 2. CodePipeline /

    CDK Pipelines 3. CloudFormation の Git Sync 主な CDK デプロイ方法 #cdkconf2025 11/37
  5. そもそも手動変更すべきではない、が... Git を Single Source of Truth として扱うなら、継続的な差分検出はあるべき 「Git 以外で変更されていないことをどう担保するか?」

    差分解消は必ずしも自動にすべきとは限らない 「本当に解消していい差分か?」 「どう解消したらいいのか?」 補足: 2 種類の差分 #cdkconf2025 14/37
  6. CFn Git Sync による CDK デプロイ 偉大な参考: 「AWS CloudFormation のGit

    Sync を使って、AWS CDK 用のGitOps パイプラインを構築する」 https://mazyu36.hatenablog.com/entry/2023/12/05/000000 #cdkconf2025 19/37
  7. Git↔︎CFn スタックを常に一致させるわけではない 手動で UpdateStack しても再デプロイはされない Repository sync status は 直近の同期処理結果

    (≠ 差分状態) codestar-connections コマンド等で監視が必要 drift はAWS Config の cloudformation-stack-drift-detection-check から通知可能 CFn Git Sync の注意点 https://docs.aws.amazon.com/cli/latest/reference/codestar-connections/get-resource-sync-status.html https://docs.aws.amazon.com/cli/latest/reference/codestar-connections/get-sync-blocker-summary.html #cdkconf2025 20/37
  8. Pros: デプロイ部分の構築が簡単 Cons: Git↔︎CFn スタックを常に一致させるわけではない Assets の Publish 権限は Git

    が持つ デプロイ権限に比べると強力ではなく、議論の余地あり cdk synth の結果を Git に格納する必要がある ( メリットもある) マルチStack の場合は、Stack ごとにGit Sync 設定が必要なため面倒 CFn Git Sync による CDK デプロイの Pros/Cons #cdkconf2025 21/37
  9. Publish もやってくれる diff を継続的に自動検出 cdk synth 不要 CFn Git Sync

    による CDK デプロイのラフな理想 #cdkconf2025 22/37
  10. 2. PipeCD で CDK を Pull 型デプロイする ※ 2025-07-12 時点では

    alpha のようなステータスです #cdkconf2025 24/37
  11. CD ( 継続的デリバリー) の OSS 沿革 2019 〜 ( 株)

    サイバーエージェントが開発・公開 2023/05 CNCF Sandbox に参加 特徴 Pull 型 Canary や Blue/Green ECS / Lambda / Terraform / K8s などへのデプロイに対応 今後はプラグインで拡張可能に PipeCD とは #cdkconf2025 25/37
  12. 準公式プラグインの開発・公開用 CDK プラグインを作りたい方がいれば、Issue 起票や相談いただければ 個人的には、難しいのは実装自体よりも仕様決め cdk synth は PipeCD と

    Git どちらが担うべきか? どんな実行時オプションを持たせるべき? drift や「CDK に定義されていないリソース差分」も検知すべき? 参考: PipeCD の Community Plugins リポジトリ https://github.com/pipe-cd/community-plugins #cdkconf2025 31/37
  13. Pros: "Git == CFn スタック" を常に保つことも可能 Assets 含め、デプロイ権限を Git が持たない

    マルチStack でも設定が楽 アプリは特化ツールに頼りつつも同様のUI/ 設定で管理可能 Cons: 追加コンポネントの管理・費用 CDK を PipeCD でデプロイする場合の Pros/Cons #cdkconf2025 32/37
  14. そもそも以下2 つのニーズがなければ、Pull 型にする必要性はあまりない デプロイ権限をAWS 内に閉じたい / Git を強権化したくない "Git ==

    CFn スタック" を一致させたい "Git == CFn スタック" の継続的な差分検出は、Pull 型でなくとも可能 例: cdk diff や aws cloudformation create-change-set を継続実行するGitHub Actions を作り込む 差分検出時にデプロイをトリガーさせれば、自動解消まで可能 CloudFormation の Git Sync 機能が強化されれば楽... 特に Assets の Publish 権限、Git ↔︎ CFn スタックの差分検出 cdk deploy が強い Pull 型は必須ではない #cdkconf2025 34/37
  15. 例: "Git == CFn スタック" を保ちたいけど、作り込みは避けたい デプロイ権限を AWS 内に閉じたいけど、CodePipeline 等では不足がある

    アプリは CDK 以外でデプロイしたいが、それぞれで別のツール使うのは面倒 特に、Canary などのデプロイ戦略を使いたい場合 では、CDK x PipeCD はいつ便利か? #cdkconf2025 35/37
  16. Pull 型のメリット "Git == CFn スタック" を常に一致させやすい デプロイ権限をGit が持たず、AWS 内に閉じる

    Pull 型は必須ではない 上記のメリットは、それぞれ別の手段で実現も可能 CDK x PipeCD は、今後 CDK Pull 型デプロイの一つの手段に まとめ #cdkconf2025 37/37