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
Tweet

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