8

Sto usando l'API AWS Javascript e cercando di ottenere l'id cognito assegnato:AWS Cognito non valido configurazione del pool di identità

AWS.config.credentials.get(function(err) { 
    if (!err) { 
     console.log("Cognito Identity Id: " + AWS.config.credentials.identityId); 
    } 
}); 

Perché questo risultato in un errore 400 con il messaggio di seguito?

{"__type":"InvalidIdentityPoolConfigurationException","message":"Invalid identity pool configuration. Check assigned IAM roles for this pool."} 

devo ruoli IAM configurati per gli utenti autenticati e non autenticati.

{ 
"Version": "2012-10-17", 
"Statement": [{ 
    "Action": [ 
     "mobileanalytics:PutEvents", 
     "cognito-sync:*" 
    ], 
    "Effect": "Allow", 
    "Resource": [ 
     "*" 
    ] 
}] 
} 

risposta

20

Il motivo più comune di questo errore è i ruoli non sono impostati a fidarsi vostra piscina identità. È necessario confermare che l'ID del pool di identità elencato nelle relazioni di trust corrisponda al pool di identità che si sta utilizzando.

Ulteriori informazioni sulle relazioni di fiducia in Amazon Cognito sono disponibili nel nostro developer guide.

+0

Prima di tutto ho inserito RoleArn in CognitoIdentityCredentials() e ottenuto un piccolo e oltre. Poi ho capito che l'identità dell'identità cognitiva nella relazione di fiducia non era corretta. Non so come sia arrivato l'id sbagliato. – drfence

+2

Questa è assolutamente la risposta giusta. –

18

Dopo alcuni scavi ho capito che è necessario aggiungere RoleArn e AccountId alle proprie credenziali.

Anche se la maggior parte della documentazione là fuori menzionare questo come essendo abbastanza:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'us-east-1:xxxxx-a87e-46ed-9519-xxxxxxx', 
}); 

questo non era sufficiente.

ho dovuto fare questo:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'us-east-1:xxxxx-a87e-46ed-9519-xxxxx', 
    RoleArn: 'arn:aws:iam::xxxxx:role/Cognito_xxxxUsersUnauth_Role', 
    AccountId: 'xxxxxxxxx', // your AWS account ID 
}); 

È necessario menzionare l'ARN del vostro ruolo per la vostra piscina identità.

L'unico documento che lo menziona correttamente è this one.

quelle sbagliate:

forse mi manca qualcosa, ma questo è certamente fonte di confusione.

+3

SEI DIO PER ME – ryutamaki

+0

Non penso sia necessario. Come menzionato da Bob nell'altra risposta, puoi impostare la relazione di fiducia per il tuo ruolo IAM. Ho accidentalmente causato che "InvalidIdentityPoolConfigurationException" su "AWS.config.credentials.get" si verifichi ricreando il mio pool di identità e dimenticando di aggiornare la relazione di trust per il ruolo IAM con autenticazione cognitiva. –

+1

Inoltre, non mi piace l'idea di esporre il mio ID account AWS e le informazioni sul ruolo in un sito Web pubblico in js. –

1

Controllare la sezione "Relazione di trust" del ruolo assegnato al proprio pool di identità, gli utenti di autenticazione. Assicurarsi di disporre di criteri che definiscono l'accesso al pool Cognito.

Il modo più semplice per ottenere le dichiarazioni politiche requisito è,

  1. Modifica la piscina
  2. Crea nuovo ruolo per il pool di identità
  3. In Modifica IAM questo ruolo per copiare le dichiarazioni politiche
  4. Add queste relazioni di trust per il ruolo richiesto richiesto
Problemi correlati