オリジンの相互 TLS で CloudFront Functions を使用する
CloudFront Functions は、エッジでの軽量なサーバーレスコンピューティングを提供し、コンテンツ配信をカスタマイズします。CloudFront Functions でオリジンの相互 TLS を使用する場合、オリジンの選択と操作に関して注意すべき特定の動作と制限があります。
サポートされている CloudFront Functions オペレーション
CloudFront Functions は、次の方法で mTLS が有効なオリジンとやり取りできます。
updateRequestOrigin()
updateRequestOrigin() 関数は、mTLS が有効なオリジンを使用するときに、制限された変更をサポートしています。
-
オリジンの mTLS のオリジン間の切り替え: 両方のオリジンが同じクライアント証明書を使用する場合、リクエストを更新して、オリジンの mTLS を使用する別のオリジンにルーティングできます。これにより、相互 TLS 認証を維持しながら、カスタムルーティングロジックを実装できます。異なる証明書を使用するオリジン間の切り替えは、
selectRequestOriginById()およびcreateRequestOriginGroup()API を介してサポートされます。 -
オリジンの mTLS の無効化: 関数で
mTLSConfig: 'off'を設定することで、mTLS が有効なオリジンから mTLS を使用しないオリジンに切り替えることができます。これにより、リクエストの特性に基づいて相互 TLS 認証を条件付きで無効にする柔軟性が得られます。
例: 同じ証明書を持つオリジンの mTLS オリジン間の切り替え
import cf from 'cloudfront'; function handler(event) { var request = event.request; // Route to different origin based on request path if (request.uri.startsWith('/api/v2')) { cf.updateRequestOrigin({ "domainName": "api-v2.example.com", "mTLSConfig": "inherit", // If no value is provided for mTLSConfig, it defaults to inherit // Both origins must use the same certificate }); } return request; }
例: 条件付きでオリジンの mTLS を無効にする
import cf from 'cloudfront'; function handler(event) { var request = event.request; // Disable mTLS for specific paths if (request.uri.startsWith('/public')) { cf.updateRequestOrigin({ "domainName": "public-origin.example.com", "mTLSConfig": "off" }); } return request; }
selectRequestOriginById()
selectRequestOriginById() 関数は、相互 TLS (オリジン) が有効になっているオリジンを選択することをサポートしています。この関数を使用して、ディストリビューションで設定された mTLS が有効なオリジンにリクエストを動的にルーティングできます。ID で相互 TLS (オリジン) が有効なオリジンを選択すると、CloudFront はそのオリジン用に設定されたクライアント証明書をディストリビューション設定で使用します。
例: 相互 TLS (オリジン) が有効なオリジンを ID で選択する
import cf from 'cloudfront'; function handler(event) { var request = event.request; // Select mTLS-enabled origin based on request characteristics if (request.uri.startsWith('/secure-api')) { cf.selectRequestOriginById("mtls-origin-1"); } return request; }
createRequestOriginGroup()
createRequestOriginGroup() 関数は、相互 TLS (オリジン) が有効なオリジンを含むオリジングループの作成をサポートします。CloudFront Functions 内のフェイルオーバーシナリオでは、mTLS が有効なオリジンを使用してオリジングループを動的に作成できます。
例: 相互 TLS (オリジン) が有効なオリジンを使用してオリジングループを作成する
import cf from 'cloudfront'; function handler(event) { // Create origin group with mTLS-enabled primary and failover origins cf.createRequestOriginGroup({ "originIds": ["mtls-origin-primary", "mtls-origin-failover"], "failoverCriteria": { "statusCodes": [500, 502, 503, 504] } }); return event.request; }