Pase la cookie al origen de CloudFront pero evite el almacenamiento en caché

Estoy usando CloudFront como caché frente a mi aplicación web Symfony. Para obtener un caché basado en el rol de un usuario (administrador, cliente, ...), genero un hash basado en roles de usuario en un activador de solicitud de Lambda @ Edge Viewer. Paso ese hash como encabezado de solicitud a mi origen comoX-User-Context-Hash.

Mi problema ahora es que necesito pasar elPHPSESSID cookie en mi origen para obtener la respuesta correcta para el almacenamiento en caché, pero no quiero basar el caché en el valor dePHPSESSID. Solo necesito que mi respuesta en caché se base en el valor deX-User-Context-Hash pero no en mi cookie de sesión.

La imagen a continuación debería explicar mi problema en detalle

¿Hay alguna posibilidad de lograr eso?

Agradecería cualquier ayuda.

Aquí está mi disparador de solicitud de Lambda @ Edge Viewer:

'use strict';

function parseCookies(headers) {
    const parsedCookie = {};
    if (headers.cookie) {

        console.log(`${headers.cookie[0].value}`);

        headers.cookie[0].value.split(';').forEach((cookie) => {
            if (cookie) {
                const parts = cookie.split('=');
                parsedCookie[,parts[0].trim()] = parts[1].trim();
            }
        });
    }
    return parsedCookie;
}

exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    const headers = request.headers;

    const https = require('https');

    // Read session cookie
    const parsedCookies = parseCookies(headers);
    let cookie = '';
    if (parsedCookies) {
        if(parsedCookies['PHPSESSID']) {
            cookie = `PHPSESSID=${parsedCookies['PHPSESSID']}`;
        }
    }

    console.log(`Cookie: ${cookie}`);

    // Send request to origin host at /_fos_user_context_hash
    // passing the original session cookie
    const options = {
        hostname: `${request.headers.host[0].value}`,
        port: 443,
        path: '/_fos_user_context_hash',
        method: 'HEAD',
        headers: {
            'Cookie': cookie, 
            'Accept': 'application/vnd.fos.user-context-hash',
            'Vary' : 'Cookie'
        }
    };

    const req = https.request(options, (res) => {
      console.log('statusCode:', res.statusCode);
      console.log('headers:', res.headers);

      // Read the X-User-Context-Hash from the hash endpoint
      const headerName = 'X-User-Context-Hash';
      let hash = 'anonymous';

      if (res.headers[headerName.toLowerCase()]) {
        hash = res.headers[headerName.toLowerCase()];
      }

      // Append X-User-Context-Hash before passing request on to CF
      request.headers[headerName.toLowerCase()] = [{ key: headerName, value: hash }];  

      callback(null, request);

    }).on('error', (e) => {
      console.error(e);
      // Forward request anyway
      callback(null, request);
    });

    req.end();
}


;

Respuestas a la pregunta(3)

Su respuesta a la pregunta