In che modo è possibile concedere un accesso di lettura pubblico ad alcuni oggetti all'interno del bucket Amazon S3?

Ultimo aggiornamento: 15-04-2021

Voglio che alcuni oggetti all’interno del bucket Amazon Simple Storage Service (Amazon S3) siano pubblicamente leggibili. Tuttavia, non voglio cambiare le autorizzazioni su altri oggetti che si trovano nello stesso bucket. In che modo posso farlo?

Breve descrizione

Abilita l’accesso di lettura pubblico in uno dei seguenti modi:

  • Aggiorna la lista di controllo accessi (ACL) dell’oggetto tramite la console Amazon S3
  • Aggiorna l’ACL dell’oggetto tramite AWS Command Line Interface (AWS CLI)
  • Utilizza una policy di bucket che conceda l’accesso di lettura pubblico ad uno specifico tag dell’oggetto
  • Utilizza una policy di bucket che conceda l’accesso di lettura pubblico ad un prefisso specifico

Risoluzione

Importante: prima di iniziare conferma di non avere alcuna impostazione di blocco dell’accesso pubblico a livello di account o a livello di bucket. Le impostazioni non devono impedire di rendere gli oggetti pubblici. Per impostazione predefinita, le impostazioni di blocco dell’accesso pubblico sono impostate su Vero nei nuovi bucket S3.

Aggiorna l’ACL dell’oggetto tramite la console Amazon S3

Per rendere pubblici più oggetti contemporaneamente segui queste fasi:

Attenzione: dopo aver reso pubblici più oggetti, non è possibile annullare quest’azione per più oggetti contemporaneamente. Per rimuovere l’accesso pubblico devi entrare in ogni oggetto all’interno della console Amazon S3. Quindi, dalla scheda Autorizzazioni dell’oggetto, modifica Accesso pubblico. Devi effettuare questa operazione per ogni oggetto per cui intendi annullare l’accesso pubblico concesso. Assicurati di rivedere attentamente la lista di oggetti prima di renderli pubblici.

1.    Apri la Amazon S3 console.

2.    Dalla lista dei bucket scegli il bucket con gli oggetti che intendi aggiornare.

3.    Vai alla cartella che contiene gli oggetti.

4.    Dalla lista oggetti seleziona tutti gli oggetti che intendi rendere pubblici.

5.    Scegli Azioni, quindi scegli Rendi pubblico.

6.    Nella finestra di dialogo Rendi pubblico conferma che la lista oggetti sia corretta.

7.    Scegli Rendi pubblico.

Per rendere pubblico un oggetto individuale segui queste fasi:

1.    Dalla console Amazon S3 scegli il bucket con l’oggetto che intendi aggiornare.

2.    Vai alla cartella che contiene l’oggetto.

3.    Apri l’oggetto scegliendo il link sul nome dell’oggetto.

4.    Scegli la scheda Autorizzazioni.

5.    Scegli Modifica.

6.    Nella sezione Tutti seleziona Lettura oggetti.

7.    Seleziona Comprendo gli effetti di queste modifiche sull’oggetto.

8.    Scegli Salva modifiche.

Aggiorna l’ACL dell’oggetto tramite AWS CLI

Per un oggetto già archiviato in Amazon S3 è possibile eseguire questo comando per aggiornare l’ACL per l’accesso di lettura pubblico:

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --acl public-read

Nota: se ricevi errori nell’esecuzione dei comandi AWS CLI assicurati di utilizzare l’ultima versione di AWS CLI.

Oppure esegui questo comando per concedere il controllo totale dell’oggetto al proprietario dell’account AWS e l’accesso di lettura pubblico a tutti gli altri:

Nota: per il valore di --grant-full-control inserisci l’ID utente canonico dell’account.

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --grant-full-control id="008exampleA45666666668889999008853" --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers

Utilizza una policy di bucket che conceda l’accesso di lettura pubblico ad uno specifico tag dell’oggetto

Importante: prima di iniziare assicurati di rivedere i prezzi per il tagging dell’oggetto S3.

Innanzitutto aggiungi una policy di bucket che conceda l’accesso di lettura pubblico a qualsiasi oggetto con un tag specifico. Per esempio, questa policy consente l’accesso di lettura pubblico a ogni oggetto taggato con la coppia di chiave-valore public=yes:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/public": "yes"
                }
            }
        }
    ]
}

Quindi aggiungi il tag agli oggetti che intendi rendere pubblicamente leggibili. È possibile aggiungere o gestire i tag dell’oggetto tramite la console Amazon S3. Oppure è possibile utilizzare AWS CLI.

Per controllare se un oggetto ha dei tag esistenti esegui questo comando AWS CLI:

aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject

Per aggiungere un tag a un oggetto che non ha tag esistenti, esegui questo comando:

Attenzione: questo comando sovrascrive tutti i tag dell’oggetto esistenti.

aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet={Key=public,Value=yes}'

Per aggiungere un tag ad un oggetto che ha dei tag esistenti esegui il seguente comando. Assicurati di includere il nuovo tag dell’oggetto insieme ai tag esistenti che intendi mantenere.

aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet=[{Key=public,Value=n},{Key=exampletag1,Value=one},{Key=exampletag2,Value=two}]'

Dopo aver aggiunto il tag dell’oggetto esegui questo comando per rivedere i tag di tutti gli oggetti:

aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject

Utilizza una policy di bucket che conceda l’accesso di lettura pubblico a un prefisso specifico

Attenzione: la seguente policy di bucket garantisce l’accesso di lettura pubblico a tutti gli oggetto sotto un prefisso specifico. Prima di utilizzare la policy di bucket, conferma che il tuo caso d’uso supporti tutti gli oggetti leggibili pubblicamente all’interno del prefisso.

Per concedere l’accesso di lettura pubblico a un prefisso di oggetto specifico aggiungi una policy di bucket simile alla seguente:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/publicprefix/*"]
      }
  ]
}

Quindi copia gli oggetti nel prefisso con accesso di lettura pubblico. È possibile copiare un oggetto nel prefisso eseguendo un comando simile al seguente:

aws s3 cp s3://DOC-EXAMPLE-BUCKET/exampleobject s3://DOC-EXAMPLE-BUCKET/publicprefix/exampleobject

Nota: a seconda del prefisso dell’oggetto la copia dell’oggetto non è richiesta per concedere l’accesso di lettura pubblico.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?