7

Sto tentando di accedere a DynamoDB dall'app di Node distribuita su AWS ElasticBeanStalk. Ricevo un errore "L'utente non è autorizzato a eseguire: dynamodb: PutItem su risorsa"AWS DynamoDB Problema: l'utente non è autorizzato a eseguire: dynamodb: PutItem sulla risorsa

Funziona perfettamente a livello locale, solo quando si esegue il deployment su AWS si interrompe.

Qualcuno conosce la correzione? Grazie in anticipo!

+0

codice: 'AccessDeniedException', statusCode: 400, –

risposta

2

Controllare la chiave di accesso che si sta utilizzando per connettersi a DynamoDB nell'app Node su AWS. Questa chiave di accesso apparterrà a un utente che non dispone dei privilegi necessari in IAM. Quindi, trova l'utente IAM, crea o aggiorna una politica appropriata e dovresti essere bravo.

Per Beanstalk è necessario impostare i criteri utente quando si pubblica. Controlla the official docs here.

E controllare the example from here too, per gentile concessione di @Tirath Shah.

+0

La stessa chiave di accesso funziona perfettamente localmente. Ho anche creato un utente simile come locale con privilegi simili e anche quello non ha funzionato –

+0

Stai utilizzando dynamodb-local per lo sviluppo locale? Hai codificato le chiavi nell'app? O li prendi dall'ambiente? Se non sono hard-coded, provali esplicitamente codificati. Vedi se riesci a verificare che la chiave e il segreto siano esattamente come ti aspetti. Funzionano altre operazioni, come GetItem ecc.? – smcstewart

+0

Attualmente è hard-coded nel file ~/.aws/credentials .. Non ho provato getItem dall'app .. Ma l'ho provato sulla riga di comando dalla stessa macchina e sono stato in grado di ottenere tutti gli elementi da il DB –

8

L'accesso dynamoDB negato è generalmente un problema di politica. Controlla i criteri IAM/Ruolo che stai utilizzando. Un controllo rapido è di aggiungere

AmazonDynamoDBFullAccess 

politica nel tuo ruolo andando alla scheda "Autorizzazioni" nella console di AWS. Se funziona dopo, significa che devi creare una politica di accesso corretta e allegarla al tuo ruolo.

+0

Anche se 'AmazonDynamoDBFullAccess' dovrebbe funzionare, è meglio concedere autorizzazioni solo per le funzioni che ci si aspetta di chiamare, che in questo caso è' dynamodb: PutItem'. Questo può aiutare a evitare chiamate e conseguenze indesiderate. [Qui] (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/api-permissions-reference.html) è l'elenco completo dei permessi possibili. –

+1

@DanSalo Leggendo il commento del poster, penso che stava dicendo di aggiungere FullAccess per vedere se questo ha risolto il problema. Se è così, allora sai che si tratta di un problema di autorizzazioni e quindi puoi adattare le autorizzazioni in modo appropriato. – Thom

Problemi correlati