Perché ricevo messaggi di errore Accesso negato per ListObjectsV2 quando eseguo il comando sync nel mio bucket Amazon S3?

Ultimo aggiornamento: 26-03-2021

Sto eseguendo il comando aws s3 sync per copiare oggetti in o da un bucket Amazon Simple Storage Service (Amazon S3). Tuttavia ricevo un errore di accesso negato quando chiamo l'operazione ListObjectsV2. Come posso risolvere questo problema?

Breve descrizione

Quando si esegue il comando aws s3 sync, Amazon S3 emette le seguenti chiamate API: ListObjectsV2, CopyObject, GetObject e PutObject.

Più specificamente, accade quanto segue:

1.    Amazon S3 elenca la fonte e la destinazione per controllare se l'oggetto esiste.

2.    Amazon S3 esegue quindi le seguenti chiamate API:

Chiamata CopyObject per un'operazione da bucket a bucket
GetObject per un'operazione da bucket a locale
PutObject per un'operazione da locale a bucket

Nota: questo articolo presuppone che le chiamate GetObject e PutObject siano già concesse all'utente o al ruolo di AWS Identity Access Management (IAM). Questo articolo spiega come risolvere l'errore di Accesso Negato causato da autorizzazioni ListBuckets improprie.

Risoluzione

Verifica di disporre dell'autorizzazione per s3:ListBucket sui bucket Amazon S3 in cui o da cui si stanno copiando gli oggetti. Devi disporre di questa autorizzazione per eseguire le operazioni ListObjectsV2.

Nota: s3:ListBucketè il nome dell'autorizzazione che permette a un utente di elencare gli oggetti in un bucket. ListObjectsV2 è il nome della chiamata API che elenca gli oggetti in un bucket.

Se il tuo utente o ruolo IAM appartengono a un altro account AWS, controlla se le tue policy IAM e bucket permettono l’operazione s3:ListBucket. Devi disporre dell'autorizzazione per s3:ListBucket sia sulla policy IAM che sulla policy del bucket.

Se il tuo utente o ruolo appartiene all'account del proprietario del bucket, non sono necessarie né le policy IAM né quelle del bucket per permettere s3:ListBucket. Ne basta una sola per permettere l’operazione.

Importante: se la policy IAM o la policy del bucket permettono già l'operazione s3:ListBucket, controlla l'altra policy per eventuali istruzioni che rifiutano esplicitamente l'operazione. Un’enunciazione di rifiuto esplicito sostituisce un'enunciazione di permesso.

Di seguito è riportato un esempio di policy IAM che concede l'accesso a s3:ListBucket:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "Stmt1546506260896",
    "Action": "s3:ListBucket",
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET"
  }]
}

Di seguito è riportato un esempio di policy bucket che concede all’utente arn:aws:iam::123456789012:user/testuser l’accesso a s3:ListBucket:

{
  "Id": "Policy1546414473940",
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "Stmt1546414471931",
    "Action": "s3:ListBucket",
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET",
    "Principal": {
      "AWS": [
        "arn:aws:iam::123456789012:user/testuser"
      ]
    }
  }]
}

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?