title: Can we set cookies from cloudfront?
body: <p>Can we set cookies to a viewer request by an edge lambda in a cloudfront and redirect to the same page? </p>
  
  <p>I have given a sample code below written for edge lambda. Same code accepts for the Origin Request in the cloudfront events, but rejected by viewer request.</p>
  
  <blockquote>
    <p>Status Code: 400; Error Code: InvalidLambdaFunctionAssociation;
    Request ID:xx</p>
  </blockquote>
  
  <pre><code>'use strict';
  
  exports.handler = (event, context, callback) =&gt; {
       var date = new Date();
  
       // Get Unix milliseconds at current time plus 365 days
       date.setTime(+ date + (365 * 86400000)); //24 \* 60 \* 60 \* 100
       var cookieVal = Math.random().toString(36).substring(7); // Generate a random cookie string
  
       var cookieString = "testCookie="+cookieVal+"; domain=dxxxxxxxx.cloudfront.net; path=/index.html; expires="+date.toGMTString()+";";
  
      const response = {
          status: '302',
          statusDescription: 'Found',
          headers: {
              location: [{
              key: 'Location',
              value: 'https://dxxxxxxxxxxx.cloudfront.net/index.html',
              }],
              'set-cookie': [{
                  key: 'Set-Cookie',
                  value: cookieString
              }],
          },
      };
      callback(null, response);
  };
  </code></pre>
  
  <p>Scenario: Setting cookies in the login page, if cookies are not set, set cookies to the login page with a redirection </p>