1

Ich verwende das Serverless Framework für meine Lambda-Funktionen in AWS. Wie kann ich Autorisierungsheader senden? Meine aktuellen config:Antwortkopf mit dem Serverless Framework an AWS senden

Lambda-Funktion:

module.exports.createUser = (event, context, callback) => { 

    let response = { 
      statusCode: 302, 
      headers: { 
       "Authorization": userUtil.getToken(userId) 
      }, 
      body: "" 
     }; 
    callback(null, response); 
    return; 
} 

serverless.yml:

createUser: 
    handler: functions/user.createUser 
    events: 
     - http: 
      path: users 
      method: post 
      cors: true 
      integration: lambda 

Die obige Konfiguration sendet die Antwort Objekt als Körper. Der Status ist immer noch 200

Ich verwende Serverless v1.10

Antwort

0

Wenn Sie den Statuscode, Kopf- und Körper in Ihrem Code festlegen möchten, anstatt sie in Ihrer Konfiguration hinzufügen, müssen Sie verwenden die Lambda-Proxy-Einstellung. Siehe mehr here.

Lambda-Proxy ist der Standardtyp. Sie müssen also die integration: lambda in Ihrem serverless.yml entfernen. Entfernen Sie außerdem die cors: true Einstellung, und ändern Sie die handler.js, um CORS-Header hinzuzufügen.

Ändern Sie bitte Ihre Funktion Lambda zu:

module.exports.createUser = (event, context, callback) => { 

    let response = { 
     statusCode: 302, 
     headers: { 
      "Authorization": userUtil.getToken(userId), 
      "Access-Control-Allow-Origin" : "*", // Required for CORS support to work 
      "Access-Control-Allow-Credentials" : true // Required for cookies, authorization headers with HTTPS 
     }, 
     body: "" 
    }; 

    callback(null, response); 
    return; 
} 

Ändern Sie bitte Ihre serverless.yml-Datei:

createUser: 
    handler: functions/user.createUser 
    events: 
     - http: 
      path: users 
      method: post 
+0

Dank @Zanon. Anfängerfehler! Ich hätte auf Lambda-Proxy gelesen. – rish08

Verwandte Themen