Come posso concedere l'accesso pubblico in lettura ad alcuni oggetti nel mio bucket Amazon S3?
Voglio che alcuni oggetti all'interno del mio bucket Amazon Simple Storage Service (Amazon S3) siano leggibili pubblicamente. 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.
Per impostazione predefinita, i nuovi bucket, punti di accesso e oggetti non consentono l'accesso pubblico. Se il blocco dell'accesso pubblico è attivato per tutti i bucket all'interno dell'account, viene visualizzato il messaggio "Bucket e oggetti non pubblici". Per ulteriori informazioni, consulta Configurazione delle impostazioni di blocco dell'accesso pubblico per l'account.
Risoluzione
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 policy del bucket, verifica che il proprio caso d'uso supporti tutti gli oggetti leggibili pubblicamente all'interno del prefisso. Questa policy non concede l'accesso all'elenco per il prefisso. L'utente può accedere all'oggetto solo se il percorso dell'oggetto è noto. Quando si accede a un oggetto che non esiste nel prefisso, l'utente riceve un errore 403.
Per concedere l'accesso in lettura pubblico a un prefisso di oggetto specifico, aggiungi una policy del 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 è necessaria per concedere l'accesso in lettura pubblico.
Informazioni correlate
Video correlati

Contenuto pertinente
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata 3 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa