0

Im Gebäude ein Service +-Client die folgenden Amazon Technologien:Erster Aufruf Gesicherte API-Endpunkt AWS_IAM ist immer unberechtigten

  1. Lambda
  2. S3
  3. API-Gateway
  4. Cognito
  5. Federated Identities

Ich verwende den Serverless-Rahmen arbeiten, um die API zu erstellen und bereitzustellen. Der Client ist eine eckige 1-App, die in einem S3-Bucket gehostet wird.

Der API-Endpunkt wird mit AWS_IAM gesichert. Das Problem ist, dass der erste Aufruf der API von meinem JS-Client aus nicht autorisiert ist. Jeder nachfolgende Aufruf (mit denselben Anmeldeinformationen) ist autorisiert. Ich kann in meinem Protokoll sehen, dass

var accessKeyId = AWS.config.credentials.accessKeyId; 
var secretAccessKey = AWS.config.credentials.secretAccessKey; 
var sessionToken = AWS.config.credentials.sessionToken; 

ist undefined das erste Mal, wenn ich den Anruf mache.

Was ich hoffe zu erreichen ist, dass die erforderlichen Anmeldeinformationen abgerufen werden, so dass der erste Aufruf erfolgreich ist.

Der folgende Code wird verwendet, um die Anmeldeinformationen von Amazon Cognito abzurufen und die API aufzurufen. Ich verwende das generierte JavaScript-SDK von AWS API Gateway, um die Anfrage zu signieren und die API aufzurufen.

+0

Ich denke, dass aws.config.cred.get ((err), die erste Param Funktion der Fehler ist ... sollten Sie prüfen, ob es eine Fehlermeldung. .. – UXDart

Antwort

0

Das Problem war, dass ich die Anmeldeinformationen nach dem Abruf nicht aktualisiert habe. Für weitere Referenz verwendet der Code ist unten:

 AWS.config.credentials.get(function() { 

      AWS.config.credentials.refresh(function(error) { 
      if (error) { 
       console.log(error); 

       // rejects promise with error message 
      } else { 

       var accessKeyId = AWS.config.credentials.accessKeyId; 
       var secretAccessKey = AWS.config.credentials.secretAccessKey; 
       var sessionToken = AWS.config.credentials.sessionToken; 

       console.log(accessKeyId); 
       console.log(secretAccessKey); 
       console.log(sessionToken); 

      } 
      }); 

     }); 
Verwandte Themen