CloudFrontのマルチテナント配信でSaaSを組む ─ ドメインを足すだけで配信と証明書がそろう

 公開 2026-10-17

CloudFrontのマルチテナント配信は、配信の設定を1つの型にまとめ、顧客のドメインをテナントとして足していく仕組みである。証明書の取得と更新もCloudFrontが引き受ける。テナントの追加、先に準備して持ち主の都合で公開する方法、既存のサイトから止めずに移す方法を整理する。

顧客ごとの独自ドメインでサイトを出すSaaSでは、ドメインが増えるたびに、配信の設定と証明書が1組ずつ増える。 設定はどれも同じものの写しで、証明書はそれぞれが更新の期限を持つ。 数が増えるほど、同じ作業の繰り返しと、更新の漏れの心配が増えていく。

CloudFrontのマルチテナント配信は、配信の設定を1つの型にまとめ、ドメインごとに違うところだけをテナントとして持たせる仕組みである。 証明書も、テナントを作るときにCloudFrontが取得し、その後の更新まで引き受ける。

本稿では、この仕組みで何が1つにまとまるのかを整理し、 テナントを1つ増やす、先に準備しておいて持ち主の都合で公開する、既存のサイトから止めずに移す、の3つの使い方を示す。

1. 通常の配信との違い

通常の配信は、1つのサイトの設定をすべて持つ。オリジン、キャッシュの振る舞い、セキュリティの設定、ドメイン、証明書である。 同じ設定で別のサイトを出すには、配信をもう1つ作る。

マルチテナント配信は、それ自体には利用者が到達しない設定の型である。 型から作るテナントが、ドメインを持つ「表玄関」になる。 テナントは型の設定を引き継ぎ、ドメインごとに違うところだけを持つ。

通常の配信では、a.example、b.example、c.example のドメインごとに、設定一式と証明書を持つ配信が1つずつある。マルチテナント配信では、設定の型が1つあり、そこから設定を引き継ぐテナントA・B・Cが、それぞれのドメインと証明書だけを持つことを示す図
通常の配信はドメインごとに1組、マルチテナント配信は型が1つ

どこで何を決めるかは、次の3か所に分かれる。

置き場所
持つもの
マルチテナント配信(型)
オリジン、キャッシュの振る舞い、セキュリティの設定。テナントへ引き継ぐ
テナント
ドメイン(1つ以上)。WAFのweb ACL、地域制限、TLS証明書を上書きできる。型で定めたパラメータの値
接続グループ
利用者が接続する振り分け先の名前。IPv6とAnycastの静的IPの設定。複数のテナントで共有する

AWSは、サイトが1つだけなら通常の配信を勧めている。 同じ設定で多数のドメインを出すときに、この形が効く。

採用の前に、マルチテナント配信では使えない機能を確かめておく。 たとえば継続的デプロイ(CloudFrontの継続的デプロイで、AIに公開前の最終確認をさせるで使っている仕組み)、OAI(OACを使う)、レガシーの標準ログ、最小・既定・最大のTTLの設定は使えない。 WAFは v2 の web ACL だけが使える。

2. ドメインを割り当てるだけでSaaSになる構成

a.example と b.example の利用者は、それぞれのドメインのDNSのCNAMEで、共通の振り分け先である接続グループへ届く。接続グループはドメインに応じてテナントAかテナントBへ渡し、どちらのテナントも型の設定を通って、同じオリジンへ要求を送る。オリジンはどのドメインの要求かを受け取り、ドメインごとに表示を変えることを示す図
ドメインが違っても、振り分け先と型とオリジンは共通

ドメインの持ち主は、自分のドメインのCNAMEを、接続グループの振り分け先へ向ける。 既定の接続グループでは、振り分け先はどのテナントでも同じ名前である。 持ち主に伝える値が、顧客ごとに変わらない。

オリジンの側に、ドメインに応じて表示を変えるアプリケーションを1つ置けば、 新しい顧客を迎える作業はテナントを作ることだけになる。 オリジンにも、型にも、何も足さない。

そのためには、オリジンが「どのドメインの要求か」を知る必要がある。方法は3つある。

方法
仕組み
向く場面
Hostヘッダーを渡す
オリジンリクエストポリシーで、利用者のHostヘッダーをオリジンへ渡す
1つのアプリケーションが、ドメインを見て表示を切り替える
パラメータ
型でオリジンのドメイン名やパスにプレースホルダーを置き、テナントごとに値を入れる
テナントごとに置き場所(バケットのパス、関数のURLなど)を分ける
CloudFront Functions
関数の中で、テナントのIDとパラメータの値を読む
要求ごとに振り分けやヘッダーの付与をする

オリジンの種類には注意が要る。 API GatewayやLambdaの関数URLは、Hostヘッダーにオリジン自身のドメイン名が入っていることを前提にしており、利用者のHostヘッダーを渡すと動かなくなる。 これらをオリジンにする場合は、パラメータか関数で見分ける。

3. 配信と証明書が一体になっている

テナントを作るとき、または更新するときに、CloudFrontが管理する証明書を要求できる。 CloudFrontがACMからHTTP検証の証明書を取得し、テナントに使う。

SaaS事業者がドメインと証明書の要求を指定してテナントを作ると、CloudFrontがACMへHTTP検証の証明書を要求し、ACMがドメインを検証して発行する。CloudFrontは発行済みの状態を事業者へ返す。以後の更新はCloudFrontが引き受け、更新が済むと通知が届くだけで、事業者の操作は要らないことを示すシーケンス図
証明書の取得から更新まで、CloudFrontが引き受ける
項目
内容
持ち主
証明書はSaaS事業者のアカウントのもの。ただしCloudFrontでしか使えず、秘密鍵は取り出せない
取得
テナントの作成・更新のときに要求する。ACMのAPIを直接呼ぶ必要はない
更新
CloudFrontが自動で行う。成功すると通知が届くが、操作は要らない
型の証明書との関係
テナントの証明書は、型から引き継ぐ共通の証明書の補足になる。同じドメインを両方が含む場合は、テナントの証明書が使われる

更新が自動になる条件は、ドメインのDNSがCloudFrontを向いていることである。 その後の更新はCloudFrontが受け持つ。

最初の発行では、ACMの検証の要求に、どこで応えるかを選ぶ。

方式
検証のトークンを返す場所
選ぶ場面
発行の時期
CloudFront方式(cloudfront)
CloudFront
トラフィックのないドメイン。DNSをすぐCloudFrontへ向けられる
DNSをCloudFrontへ向けた後
自前の方式(self-hosted)
ドメインが今向いている既存のサーバー。トークンのファイルを置くか、ACMの検証の場所へ転送する
既存のトラフィックがあり、止められないドメイン
DNSを向ける前

どちらを選んでも、取得する証明書は同じである。 違うのは、最初の検証に誰が応えるかだけで、2回目以降の更新はどちらもCloudFrontが行う。

テナントのドメインには状態がある。

テナントを作った直後のドメインは保留中で、inactive の状態にあり、検証のパスにだけ応える。検証が通ると証明書が発行済みになるが、まだ配信しない。証明書を適用するとドメインが有効、active の状態になり、すべての要求に応える。有効になった後の更新は自動で行われることを示す図
ドメインは、証明書を適用して初めて配信を始める

証明書の要求が保留中の間、ドメインは inactive で、CloudFrontは検証のパスにしか応えない。 証明書を適用して active になると、すべての要求に応える。 active にしたドメインは inactive に戻せない。 別の配信やテナントへ移すときは、ドメインの付け替えの操作を使う。

4. 使い方① テナントを1つ増やす

新しい顧客が、まだ何も出していないドメインで使い始める場合である。 止めるものがないので、CloudFront方式を選ぶ。

SaaS事業者がCloudFront方式でテナントを作り、ドメインの持ち主へ振り分け先を伝える。持ち主がCNAMEを振り分け先へ向けると、ACMからの検証の要求にCloudFrontがトークンを返し、ACMが証明書を発行する。ドメインが有効になり公開されることを示すシーケンス図
新しいドメインは、DNSを向けた後に検証される
  1. SaaS事業者がテナントを作る。指定するのはドメインと、証明書の要求(CloudFront方式)と、必要ならパラメータの値だけである。オリジンや振る舞いは型から引き継ぐ。
  2. 持ち主へ、CNAMEの向け先(振り分け先)を伝える。
  3. 持ち主がCNAMEを設定する。
  4. ACMの検証の要求にCloudFrontが応え、証明書が発行される。
  5. ドメインが有効になり、公開される。

DNSを向けてから発行されるまでの間、そのドメインはサイトとして応えない。 新しいドメインなので、その間に止まるものはない。

5. 使い方② 先に準備し、持ち主の都合で公開する

顧客のサイトを事前に作り込み、公開の時期は顧客に決めてもらいたい場合がある。 マルチテナント配信では、準備と公開を別の操作に分けられる。

自前の方式で証明書を要求してテナントを作る。片方の流れでは、web ACLを上書きしてIPSetで送信元を絞り、中身を準備する。もう片方の流れでは、ドメインが今向いている先で検証に応え、証明書を発行してテナントに適用する。両方が済んだらweb ACLの上書きを外し、最後に持ち主がCNAMEを切り替えた時点で公開になることを示す図
準備と証明書を先に済ませ、公開の合図は持ち主に渡す

準備の間は、テナントのWAFのweb ACLを上書きする。 IPSetで許可した送信元だけを通すweb ACLを割り当て、関係者だけが見られる状態で中身を仕上げる。 型のweb ACLや、ほかのテナントには影響しない。

証明書の検証も先に済ませておく。 ドメインが今向いている先で検証に応えられるなら、自前の方式でDNSを向ける前に発行でき、テナントに適用しておける。

準備が済んだら、web ACLの上書きを外す。 この時点では、ドメインはまだCloudFrontを向いていないので、利用者から見えるものは何も変わらない。

公開の時期は、持ち主がCNAMEを切り替えた時点で決まる。 証明書は発行・適用済みなので、切り替えた瞬間から配信が始まり、SaaS事業者の側で待つ作業はない。

ドメインが今どこも向いておらず、検証に応えられない場合は、CloudFront方式になる。 この場合、発行はCNAMEを切り替えた後になり、公開は発行を待ってからになる。

6. 使い方③ 既存のサイトから止めずに移す

移行元のサーバーが、そのドメインの利用者に配信している場合である。 DNSを先にCloudFrontへ向けると、発行されるまでの間、サイトが応えなくなる。 自前の方式を選び、移行元のサーバーに検証の要求へ応えてもらう。

移行元のサーバーは利用者への配信を続けている。SaaS事業者が移行元に検証のパスを転送する設定を入れ、自前の方式でテナントを作る。ACMからの検証の要求に、移行元が301でACMの検証の場所へ転送して応え、証明書が発行される。事業者が証明書を適用し、持ち主へ切り替えを依頼する。持ち主がCNAMEを切り替えるとCloudFrontが配信を引き継ぎ、以後の更新はCloudFrontが行うことを示すシーケンス図
移行元が配信を続けたまま、検証と発行を済ませる

移行元が検証に応える方法は2つある。 トークンのファイルを移行元に置くか、検証のパスへの要求を、ACMの検証の場所へ301で転送するかである。 ドメインが多い場合は転送のほうが扱いやすい。

転送先に付けるパスには、デコードしていない元の要求のパス(nginx では $request_uri)を使う。 デコード済みの値($uri)を使うと、改行をエンコードして含めた要求で、応答に任意のヘッダーを差し込まれる。

転送先は、テナントを作ったアカウントのIDと、検証のトークンで決まる。 当社の検証では、転送元のパスと転送先のパスの後半(/.well-known/pki-validation/ 以降)は同じだった。 そのため移行元の設定は、ドメインごとに、どのアカウントでテナントを作るかだけを持てばよい。 この設定はテナントを作る前に入れておけて、入れておいたドメインは、テナントを作った直後に発行された。

発行されたら、証明書をテナントに適用する。 その後、持ち主にCNAMEを切り替えてもらう。 切り替えるまでは移行元が配信を続け、切り替えた後はCloudFrontが配信する。 間に止まる時間はない。

切り替えた後の更新はCloudFrontが行う。移行元の転送には依存しない。

7. 運用で気をつけること

当社の検証(2026年10月)で確かめたことと、AWSの文書の記述から、運用に関わるものをまとめる。

事柄
起きること
対応
発行の前の切り替え
自前の方式で、発行の前にDNSをCloudFrontへ向けたドメインは、検証のパスに403が返り、発行されなかった
持ち主には「発行の後に切り替える」と伝える。切り替えの前に証明書の状態を確かめる
転送のステータスコード
AWSの文書は301と書いている。当社の検証では302でも発行された
文書どおり301にしておく
作り直したときの検証の値
同じアカウントで、保留中のテナントを消して作り直しても、検証のトークンは前と同じだった
移行元の設定を入れ直さずに済んだ
CAA
AmazonのCAを許していないCAAがあるドメインは、検証が通った後に失敗する。転送が無い間は保留のままで、失敗にならなかった
失敗は待っても発行されない。CAAを直してから、証明書を要求し直す
ドメインの重複
別のテナントで使われているドメインでも、テナントの作成は通った。断られたのは、証明書を適用してドメインを有効にするとき(CNAMEAlreadyExists)だった
重複は作成ではなく、適用の段階で見つかる前提で扱う
証明書の後始末
テナントを消しても、管理証明書はACMに残った。証明書の要求を取り消しても消えないことは、AWSの文書にもある
テナントの削除とは別に、ACMで証明書を消す
証明書の一覧
管理証明書は、ACMの一覧に既定では出なかった。管理元(managedBy)にCloudFrontを指定して絞ると出る
期限と状態を一覧で見るときは、この絞り込みを付ける
テナントの削除
有効なテナントは、無効にして反映を待ってから消した
削除の手順を「無効化、反映待ち、削除」の順にする

同じドメインの証明書は、作り直しや重複によって、ACMに複数ありうる。 証明書はドメイン名で探さず、テナントを作った直後に取得できる証明書のARNを記録して追う。

8. まとめ

設計判断
内容
設定は型に、ドメインはテナントに
同じ設定の写しを持たない。テナントは違うところだけを持つ
ドメインはオリジンで見分ける
Hostヘッダー、パラメータ、関数のどれかで、オリジンにどのドメインの要求かを渡す
証明書はテナントと一緒に取る
取得から更新までCloudFrontが引き受ける。更新はDNSがCloudFrontを向いていることが条件
検証の方式は最初の発行で選ぶ
トラフィックがなければCloudFront方式、止められないなら自前の方式
公開の時期は持ち主に渡せる
準備はテナントのWAFで絞って行い、証明書を先に適用しておく
移行は移行元が検証に応える
DNSを切り替える前に発行し、止めずに移す

マルチテナント配信は、配信を増やす作業を、テナントを足す作業に置き換える。 証明書の取得と更新もその中に入るため、顧客が増えても、SaaS事業者が見る対象はほとんど増えない。 最初の検証にどこで応えるかを顧客のドメインの状況で選べば、新規の顧客も、既存のサイトからの移行も、同じ仕組みで迎えられる。