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

CloudFrontFunctions&KVS-bluegreen

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for Ayuminmin Ayuminmin
September 02, 2026
14

 CloudFrontFunctions&KVS-bluegreen

CloudFrontFunctions+KVSでBlueGreenデプロイの実装するユースケースを紹介した資料

Avatar for Ayuminmin

Ayuminmin

September 02, 2026

Transcript

  1. 継続的デプロイの課題 「オリジン」もしくは「オリジンパス」でしか切り替えられず、リリース単位が大きい オリジンで切り替える オリジンパスで切り替える Blue S3 /contents └ app01 ※機能名

    オリジンパスは先頭(FQDNの後)に追加される ex) URL:FQDN/contents/app01/xxx S3のパス:オリジンパス/contents/app01/xxx └ index.html └XXX 一般ユーザー CloudFront Green S3 CloudFront (ステージング) └ XXX └ app02 └XXX オリジン(S3)作成しなければならない └XXX └ contents └ app01 アプリ開発者 └ app02 Green-Path /contents └ index.html └ app01 ※機能名 └ XXX └ app02 CloudFront └ contents └ index.html └ XXX 一般ユーザー Blue-Path └ app01 アプリ開発者 CloudFront (ステージング) └ index.html └ XXX └ app02 └XXX オリジンパス配下を総入れ替えしなければならない
  2. 継続的デプロイでは実現できないケース CloudFront + S3によるコンテンツ配信で、一部のS3パスだけをリリースしたい /contents └ app01 ※機能名 └ index.html

    └ XXX 一般ユーザー 機能パス単位でリリースしたい └ index.html └ XXX アプリ開発者 └ app02 └XXX └ aplXX
  3. 解決策 CloudFront Function + KVS(KeyValueStore)で 特定のS3パスに振り分ける URL: FQDN/contents/app01/xxx CloudFront KVSとは、

    CloudFront Functionsから参照できる エッジ上のキーバリューストア /contents └ app01 ※機能名 CloudFront Function URLリクエストパス: /contents/app01/Blue-Path/xxx CloudFront KVS 一般ユーザー └ Green-Path ②リクエストURLを書き換える アプリ開発者 Key:app01 Value:Green-Path └ index.html └ XXX ①KVSでS3振り分け先を取得する S3パス単位の振り分け先を管理 └ Blue-Path URLリクエストパス: /contents/app01/Green-Path/xxx └ index.html └ XXX └ app02 └XXX └ aplXX
  4. メリデメ比較 継続的デプロイ 【メリット】  複雑な作り込みが不要である  標準機能を用いたシンプルな運用ができる 【デメリット】  S3の細かいパス単位で切り替えができない

     キャッシュ削除を考慮する必要がある Function + KVS 【メリット】  KVSの切り替えだけでリリースができる  S3の細かいパス単位で切り替え、ロールバックができる  キャッシュ削除を考慮する必要がない ②を書き換えるため、BlueGreenでキャッシュキーが異なる ①CloudFront ディストリビューションのドメイン名 ②リクエストされたオブジェクトの URL パス 【デメリット】  旧Verのコンテンツを削除する運用が必要になる  KVS・Functionの作り込みが必要になる リリース頻度や配置するコンテンツ数が少ない 場合に適しています リリース頻度や配置するコンテンツ数が多い またはS3のパス単位で切り替えたい要件がある 場合に適しています