2014-09-04 16 views
5

Sono stato bloccato cercando di utilizzare l'AWS con iOS per 2 giorni. Ho scaricato il progetto di esempio da qui: https://github.com/awslabs/aws-sdk-ios-samplesSDK Amazon Web Service iOS

Ho fatto esattamente come ho detto i passaggi, ho usato i cocoapod per collegare tutte le librerie.

Ho anche creato un secchio e ancora una volta seguito i passaggi su come ottenere l'ID per cambiarlo all'interno del codice come illustrato di seguito:

AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider 
                 credentialsWithRegionType:AWSRegionUSEast1 
                 accountId:AWSAccountID 
                 identityPoolId:CognitoPoolID 
                 unauthRoleArn:CognitoRoleUnauth 
                 authRoleArn:nil]; 

Quindi, in pratica, quando Im cercando di caricare alcune immagini/files (nell'esempio utilizzando il servizio di archiviazione S3 di Amazon, ottengo un errore:

2014-09-04 15:11:57.475 S3TransferManagerSample[5437:400b] AWSiOSSDKv2 [Error] AWSCredentialsProvider.m 
    line:356 | __40-[AWSCognitoCredentialsProvider refresh]_block_invoke299 | Unable to refresh. 
    Error is [Error Domain=com.amazonaws.AWSSTSErrorDomain Code=0 "The operation couldn’t be completed. (com.amazonaws.AWSSTSErrorDomain error 0.)" 
    UserInfo=0x14d17770 {Type=Sender, Message=Not authorized to perform sts:AssumeRoleWithWebIdentity, __text=(
"\n ", 
"\n ", 
"\n ", 
"\n " 
), Code=AccessDenied}] 

Giusto per essere chiari, io ho già creato un ruolo e ha dato un criterio: AdministratorAccess e usato l'ARN ruolo per impostare the

unauthRoleArn:CognitoRoleUnauth 

Ho letto la documentazione e non riesco a trovare il problema da nessuna parte. Ho la sensazione che abbia qualcosa a che fare con il ruolo e la politica data al ruolo.

Apprezzerei molto qualsiasi suggerimento su come iniziare o come risolvere questo problema.

Grazie, e se avete bisogno di maggiori dettagli sulla domanda non esitate a commentare e darò di più, come la domanda è diventata un po 'lunga.

risposta

5

l'errore che si verifica è dovuto alle relazioni di trust nel proprio ruolo, non alle autorizzazioni per le credenziali sul ruolo.

è necessario assicurarsi relazioni di fiducia è il tuo ruolo:

  1. fiducia alla piscina identità che si sta utilizzando (i aud corrisponde alla piscina identità id).
  2. identità di fiducia con l'autenticazione in dotazione (la amr partite non autenticato o autenticato a seconda del caso d'uso).

Fare attenzione durante la modifica dei ruoli creati durante la procedura guidata di installazione o il riutilizzo dei ruoli poiché questi due valori potrebbero non corrispondere e generare l'errore sopra riportato.

È inoltre possibile trovare this blog post utile per comprendere come funziona Cognito.

+0

Quando ho creato il ruolo ho modificato solo le autorizzazioni di quel ruolo in Accesso amministratore, non ho modificato nient'altro. Devo modificare le relazioni di trust del ruolo? Non so davvero su cosa impostarlo. – RJiryes

+0

Inoltre, cosa intendi se fosse "per questo pool di identità"? Ho creato il pool di identità come parte del servizio Cognito, mentre i ruoli sono impostati nella console di gestione IAM. Ho letto un sacco di cose riguardo AWS, e penso di essere un po 'confuso. Scusa se mi sembra un po 'oscuro. Grazie. – RJiryes

+0

Sono andato avanti e ho cancellato il mio attuale Identity Pool e ne ho creato uno nuovo, l'errore che stavo facendo è scomparso. Ma ora non sta caricando i file, sto ricevendo un altro errore ora durante il tentativo di caricare: – RJiryes