相互 TLS (オリジン) で CloudFront Functions を使用する
CloudFront Functions は、エッジでの軽量なサーバーレスコンピューティングを提供し、コンテンツ配信をカスタマイズします。CloudFront Functions で相互 TLS (オリジン) を使用する場合、オリジンの選択と操作に関して注意すべき特定の動作と制限があります。
サポートされている CloudFront Functions オペレーション
CloudFront Functions は、次の方法で相互 TLS (オリジン) 対応オリジンとやり取りできます。
updateRequestOrigin()
updateRequestOrigin() 関数は、相互 TLS (オリジン) が有効なオリジンを使用するときに、制限された変更をサポートしています。
-
相互 TLS (オリジン) オリジン間の切り替え: 両方のオリジンが同じクライアント証明書を使用する場合、リクエストを更新して、相互 TLS (オリジン) を使用する別のオリジンにルーティングできます。これにより、相互 TLS 認証を維持しながら、カスタムルーティングロジックを実装できます。
-
相互 TLS (オリジン) の無効化: 関数で
mTLSConfig: 'off'を設定することで、相互 TLS (オリジン) が有効なオリジンから相互 TLS を使用しないオリジンに切り替えることができます。これにより、リクエストの特性に基づいて相互 TLS 認証を条件付きで無効にする柔軟性が得られます。
例: 同じ証明書を持つ相互 TLS (オリジン) オリジン間の切り替え
function handler(event) { var request = event.request; // Route to different origin based on request path if (request.uri.startsWith('/api/v2')) { request.origin = { domainName: 'api-v2.example.com', customHeaders: {}, // Both origins must use the same certificate }; } return request; }
例: 条件付きで相互 TLS (オリジン) を無効にする
function handler(event) { var request = event.request; // Disable mTLS for specific paths if (request.uri.startsWith('/public')) { request.origin = { domainName: 'public-origin.example.com', customHeaders: {}, mTLSConfig: 'off' }; } return request; }
サポートされていない CloudFront Functions オペレーション
次の CloudFront Functions オペレーションは、相互 TLS (オリジン) 対応オリジンを一般提供でサポートしていません。
selectRequestOriginById()
selectRequestOriginById() 関数は、相互 TLS (オリジン) が有効になっているオリジンを選択できません。この関数を使用して相互 TLS (オリジン) 対応オリジンを選択しようとすると、検証エラーが発生します。
ユースケースで相互 TLS (オリジン) を使用した動的オリジン選択が必要な場合は、代わりに updateRequestOrigin() を使用し、すべてのターゲットオリジンが同じクライアント証明書を使用していることを確認します。
createRequestOriginGroup()
createRequestOriginGroup() 関数は、相互 TLS (オリジン) が有効なオリジンを含むオリジングループの作成をサポートしていません。相互 TLS (オリジン) オリジンを持つオリジングループは、CloudFront Functions を介して動的に作成することはできません。
相互 TLS (オリジン) でオリジンフェイルオーバー機能が必要な場合は、関数で動的に作成するのではなく、CloudFront ディストリビューション設定でオリジングループを直接設定します。