Uso de CloudFront Functions con TLS mutua de origen
CloudFront Functions proporciona computación periférica ligera y sin servidor para personalizar la entrega de contenido. Cuando se utiliza TLS mutua de origen con CloudFront Functions, hay comportamientos y limitaciones específicos que hay que tener en cuenta en relación con la selección y la manipulación del origen.
Operaciones de CloudFront Functions admitidas
CloudFront Functions pueden interactuar con orígenes habilitados de mTLS de las siguientes maneras:
updateRequestOrigin()
La función updateRequestOrigin() admite modificaciones limitadas cuando se trabaja con orígenes habilitados de mTLS:
-
Cambiar entre orígenes de mTLS de origen: puede actualizar la solicitud para que se dirija a un origen diferente que utilice mTLS de origen, siempre que ambos orígenes utilicen el mismo certificado de cliente. Esto permite implementar una lógica de enrutamiento personalizada y, al mismo tiempo, mantener la autenticación de TLS mutua. El cambio entre orígenes que utilizan diferentes certificados se admite a través de las API
selectRequestOriginById()ycreateRequestOriginGroup(). -
Desactivación de mTLS de origen: puede cambiar de un origen habilitado de mTLS a un origen diferente de mTLS configurando
mTLSConfig: 'off'en la función. Esto proporciona flexibilidad para desactivar condicionalmente la autenticación de TLS mutua en función de las características de la solicitud.
Ejemplo: Cambio entre orígenes de mTLS de origen con el mismo certificado
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; }
Ejemplo: Deshabilitar condicionalmente mTLS de origen
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()
La función selectRequestOriginById() admite seleccionar orígenes que tengan habilitada TLS mutua (origen). Puede usar esta función para enrutar dinámicamente las solicitudes a los orígenes habilitados para mTLS configurados en la distribución. Al seleccionar un origen de TLS mutua (origen) habilitada por ID, CloudFront usa el certificado de cliente configurado para ese origen en la configuración de distribución.
Ejemplo: Selección de un origen de TLS mutua (origen) habilitado por 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()
La función createRequestOriginGroup() admite la creación de grupos de orígenes que incluyan orígenes habilitados de TLS mutua (origen). Puede crear grupos de origen de forma dinámica con orígenes habilitados para mTLS para escenarios de conmutación por error en CloudFront Functions.
Ejemplo: Creación de un grupo de origen con orígenes de TLS mutua (origen) habilitados
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; }