メインコンテンツへスキップ

CloudFront + ACM証明書でハマるus-east-1制約

·
インフラ AWS CloudFront 実践
目次

今日学んだこと
#

CloudFrontでACM証明書を使う場合、証明書は必ずus-east-1(バージニア北部)で作成する必要があることを学びました。東京リージョンで作成すると、CloudFrontの設定画面で選択肢に表示されません。

学習内容
#

なぜus-east-1なのか
#

CloudFrontはグローバルサービスです。グローバルサービスはus-east-1のACM証明書しか参照できない仕様になっています。 公式ドキュメントにも明記されています

「Amazon CloudFrontでACM証明書を使用するには、米国東部(バージニア北部)リージョンで証明書をリクエストまたはインポートする必要があります。」 — Supported Regions - AWS Certificate Manager

「なぜus-east-1なのか」の背景
#

1. CloudFrontのコントロールプレーンがus-east-1にある
#

CloudFrontはグローバルサービスですが、APIエンドポイントはus-east-1に存在します。

エンドポイントリージョン
cloudfront.amazonaws.com米国東部(バージニア北部)
cloudfront-fips.amazonaws.com米国東部(バージニア北部)
cloudfront.global.api.aws米国東部(バージニア北部)

Amazon CloudFront endpoints and quotas

2. グローバルサービスのAPIリクエストはus-east-1にルーティングされる
#

AWSの公式ドキュメントでは、グローバルエンドポイントについて以下のように説明されています:

「汎用エンドポイントを使用すると、AWSはAPIリクエストを米国東部(バージニア北部)(us-east-1)にルーティングします。これはAPI呼び出しのデフォルトリージョンです。」 — AWS service endpoints

CloudFront、IAM、Route 53などのグローバルサービスはus-east-1を管理基盤としています。

3. ACM証明書はリージョナルリソース
#

ACM証明書は作成したリージョン内でのみ参照可能です:

us-east-1で作成した証明書 → us-east-1のリソースからのみ参照可能
ap-northeast-1で作成した証明書 → ap-northeast-1のリソースからのみ参照可能

CloudFrontのコントロールプレーン(API)がus-east-1にあるため、同じus-east-1にあるACM証明書しか「見えない」 のです。

4. 証明書配布の仕組み
#

1. us-east-1でACM証明書を作成
2. CloudFrontディストリビューションに証明書を関連付け
3. CloudFrontが証明書を全エッジロケーションに内部配布
4. 世界中のユーザーがHTTPSでアクセス可能に

CloudFrontは世界中に 400以上のエッジロケーション(PoP) を持ち、us-east-1で設定された証明書を各エッジに配布します。

Amazon CloudFront features

サービス別のACM証明書リージョン
#

サービスACM証明書のリージョン理由
CloudFrontus-east-1のみグローバルサービスのため
ALBALBと同じリージョンリージョナルサービスのため
API Gateway(Edge最適化)us-east-1のみCloudFront経由のため
API Gateway(リージョナル)API Gatewayと同じリージョンリージョナルサービスのため

まとめ
#

  • CloudFrontでACM証明書を使う場合はus-east-1で作成必須
  • ALBは同じリージョンのACM証明書を使用
  • API Gateway(Edge最適化)もus-east-1が必要

参考
#