Perché ricevo un errore di accesso negato quando provo ad accedere ad Amazon S3 utilizzando un SDK AWS?
Posso accedere alle mie risorse Amazon Simple Storage Service (Amazon S3) quando utilizzo l’interfaccia della linea di comando AWS (AWS CLI). Tuttavia, ricevo un errore di accesso negato quando utilizzo un SDK AWS. Come posso risolvere questo problema?
Risoluzione
Nota: se durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS compaiono degli errori, assicurati di utilizzare la versione più recente di AWS CLI.
Verifica la tua interfaccia della linea di comando AWS e le credenziali dell'SDK AWS
Innanzitutto, verifica che AWS CLI e l'SDK AWS che stai utilizzando siano configurati con le stesse credenziali. Per fare ciò, segui questi passaggi:
per configurare le credenziali su AWS CLI, esegui questo comando:
aws iam list-access-keys
se utilizzi un ruolo AWS Identity and Access Management (IAM) associato ad AWS CLI, esegui questo comando per ottenere il ruolo:
aws sts get-caller-identity
per configurare le credenziali sull'SDK AWS che stai utilizzando, esegui una chiamata GetCallerIdentity utilizzando il tuo client Servizio di token di sicurezza AWS (AWS STS). Ad esempio, se utilizzi AWS SDK per Python (Boto3), esegui get\ _caller_identity.
Se AWS CLI e l'SDK AWS utilizzano credenziali diverse, usa l'SDK AWS con le credenziali archiviate in AWS CLI.
Risoluzione dei problemi relativi alle richieste di AWS CLI e dell'SDK di AWS ad Amazon S3
Se le credenziali utilizzate dall'interfaccia a linea di comando e dall'SDK AWS sono le stesse, continua a risolvere i problemi ponendoti queste domande:
- Le richieste dell’interfaccia a linea di comando e SDK a S3 provengono dalla stessa origine? Ovvero, controlla se le richieste provengono dalla stessa istanza di Amazon Elastic Compute Cloud (Amazon EC2).
- Se le richieste provengono dalla stessa origine, SDK utilizza le credenziali previste? Ad esempio, se utilizzi AWS SDK per Python (Boto3), l'SDK ti consente di configurare le credenziali utilizzando più metodi. Ciò significa che Boto3 cerca le credenziali in più posizioni in un ordine specifico. Se vengono specificate in anticipo credenziali errate, verranno utilizzate le medesime credenziali. Per ulteriori informazioni sull'ordine seguito da Boto3 nella ricerca delle credenziali, consulta Credenziali sul sito Web di Boto3 SDK.
Verifica che gli endpoint VPC consentano le richieste a S3
Se le richieste vengono inviate da origini diverse, controlla se l’origine che utilizza l'SDK stia inviando richieste tramite un endpoint VPC. Quindi, verifica che l'endpoint VPC consenta la richiesta che stai tentando di inviare ad Amazon S3.
La policy degli endpoint VPC in questo esempio consente le autorizzazioni di download e caricamento per DOC-EXAMPLE-BUCKET. Se utilizzi questo endpoint VPC, ti viene negato l'accesso a qualsiasi altro bucket.
{
"Statement": [
{
"Sid": "Access-to-specific-bucket-only",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
Se non riscontri problemi nelle tue credenziali o nell’origine, esamina alcuni dei motivi per cui S3 potrebbe restituire un errore di accesso negato. Per ulteriori informazioni, vedi Come posso risolvere gli errori 403 di accesso negato di Amazon S3?
Informazioni correlate
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 4 anni fa
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata un anno fa