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

Ultimo aggiornamento: 15/02/2022

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

Breve descrizione

Concedi l'accesso di lettura pubblico in uno dei modi seguenti:

  • Aggiorna la lista di controllo degli accessi (ACL) dell'oggetto utilizzando la console Amazon S3
  • Aggiorna l'ACL dell'oggetto utilizzando 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 a un prefisso specifico

Importante: la concessione dell'accesso pubblico tramite le ACL del bucket e dell'oggetto non funziona per i bucket con Proprietà dell'oggetto S3 con impostazione Proprietario del bucket applicato. Nella maggior parte dei casi, le ACL non sono necessarie per concedere autorizzazioni a oggetti e bucket. Invece, utilizza le policy di AWS Identity Access and Management (IAM) e le policy dei bucket S3 per concedere autorizzazioni a oggetti e bucket.

Soluzione

Importante: prima di iniziare, verifica di non avere impostazioni di blocco dell'accesso pubblico a livello di account o 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, completa la seguente procedura:

Attenzione: dopo aver reso pubblici diversi oggetti, non è possibile annullare questa azione per più oggetti contemporaneamente. Per rimuovere l'accesso pubblico devi entrare in ogni oggetto all'interno della console Amazon S3. Quindi, dalla scheda Permissions (Autorizzazioni) dell'oggetto, modifica Public access (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.    Accedi alla console di Amazon S3.

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 Actions (Azioni), quindi scegli Make public (Rendi pubblico).

6.    Nella finestra di dialogo Make public (Rendi pubblico) conferma che la lista oggetti sia corretta.

7.    Scegli Make public (Rendi pubblico).

Per rendere pubblico un singolo oggetto, puoi ripetere il processo precedente o completare questa procedura:

1.    Dalla Console Amazon S3, scegli il bucket con l'oggetto che desideri aggiornare.

2.    Vai alla cartella che contiene l'oggetto.

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

4.    Seleziona la scheda Permissions (Autorizzazioni).

5.    Seleziona Edit (Modifica).

6.    Nella sezione Everyone (Tutti), seleziona Objects Read (Oggetti letti).

7.    Seleziona I understand the effects of these changes on this object (Comprendo gli effetti di queste modifiche sull'oggetto).

8.    Scegli Save changes (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 degli errori durante l'esecuzione dei comandi dell'AWS CLI, assicurati di utilizzare la versione più recente dell'AWS CLI.

Oppure, puoi eseguire questo comando per concedere il pieno controllo dell'oggetto al proprietario dell'account AWS e l'accesso di lettura 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 controllare i prezzi dell'applicazione di tag agli oggetti S3.

In primo luogo, aggiungi una policy di bucket che consenta 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. Puoi aggiungere o gestire tag oggetto utilizzando la console Amazon S3. In alternativa, puoi utilizzare AWS CLI.

Per verificare se un oggetto ha 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 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 questa politica di bucket, verifica che il 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 politica 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?