Denominazione di oggetti Amazon S3
La chiave oggetto (o nome di chiave) identifica l'oggetto in modo univoco in un bucket Amazon S3. Quando si crea un oggetto, si specifica il nome della chiave. Ad esempio, nella console Amazon S3
Il nome della chiave dell’oggetto è costituito da una sequenza di caratteri Unicode in codifica UTF-8, con una lunghezza massima di 1.024 byte o circa 1.024 caratteri latini. In alcune lingue, un singolo carattere può richiedere 2 byte per la codifica. Quando si assegna un nome agli oggetti, occorre tenere presente quanto segue:
-
I nomi delle chiavi degli oggetti fanno distinzione tra maiuscole e minuscole.
-
I nomi delle chiavi dell’oggetto includono i prefissi (denominati come cartelle nella console). Ad esempio,
Development/Projects.xlsè il nome completo della chiave dell’oggettoProjects.xlsche si trova all’interno del prefisso (o cartella)Development. Il prefisso, il delimitatore (/) e il nome dell’oggetto sono inclusi nel limite di 1.024 byte per il nome della chiave dell’oggetto. Per ulteriori informazioni su prefissi e cartelle, consultare Scelta dei nomi delle chiavi di oggetti. -
Alcuni caratteri potrebbero richiedere una gestione speciale quando vengono utilizzati nei nomi delle chiavi degli oggetti. Per ulteriori informazioni, consulta Linee guida per la denominazione delle chiavi degli oggetti.
Nota
I nomi delle chiavi dell’oggetto con il valore "soap" non sono supportati per le richieste virtual-hosted-style. Per i valori dei nomi delle chiavi dell’oggetto in cui viene utilizzato "soap", è necessario utilizzare un URL in stile percorso.
Scelta dei nomi delle chiavi di oggetti
Il modello di dati di Amazon S3 è una struttura flat: crei un bucket e il bucket archivia gli oggetti. Non c'è nessuna gerarchia di bucket secondari o sottocartelle. Tuttavia, è possibile applicare una gerarchia logica utilizzando delimitatori e prefissi di nomi di chiavi come avviene nella console di Amazon S3. La console di Amazon S3 supporta il concetto di cartella. Per ulteriori informazioni su come modificare i metadati dalla console di Amazon S3, consulta Modifica dei metadati degli oggetti nella console di Amazon S3.
Supponiamo che il bucket (admin-created) contenga quattro oggetti con le seguenti chiavi:
Development/Projects.xls
Finance/statement1.pdf
Private/taxdocument.pdf
s3-dg.pdf
La console utilizza i prefissi dei nomi di chiavi (Development/, Finance/ e Private/) e il delimitatore (/) per visualizzare una struttura di cartelle. Poiché la chiave s3-dg.pdf non include un prefisso delimitato da barra, i relativi oggetti vengono visualizzati direttamente a livello root del bucket. Se si apre la cartella Development/, viene visualizzato l'oggetto Projects.xlsx in essa contenuto.
Amazon S3 supporta i bucket e gli oggetti e non sono presenti gerarchie. Tuttavia, i prefissi e i delimitatori nel nome della chiave di un oggetto consentono alla console di Amazon S3 e agli SDK AWS di applicare la gerarchia e introdurre il concetto di cartella.
La console di Amazon S3 implementa la creazione di oggetti cartella creando un oggetto a byte zero con il prefisso di cartella e il valore di delimitatore come chiave. Questi oggetti cartella non vengono visualizzati nella console. Altrimenti, si comporterebbero come qualsiasi altro oggetto e potrebbero essere visualizzati e modificati tramite REST API, AWS CLI e gli SDK AWS.
Linee guida per la denominazione delle chiavi degli oggetti
Puoi utilizzare qualsiasi carattere UTF-8 all'interno del nome di un oggetto. Tuttavia, utilizzare alcuni caratteri nei nomi delle chiavi può causare problematiche con alcuni protocolli e applicazioni. Le seguenti linee guida garantiscono la massima conformità con DNS, i caratteri sicuri per il Web, i parser XML e altre interfacce API.
Caratteri sicuri
I seguenti set di caratteri possono essere utilizzati con la massima sicurezza nei nomi delle chiavi:
| Alphanumeric characters |
|
| Special characters |
|
Di seguito sono riportati esempi di nomi di chiavi validi per gli oggetti:
-
4my-organization -
my.great_photos-2014/jan/myvacation.jpg -
videos/2014/birthday/video1.wmv
Nota
Se utilizzi la console di Amazon S3 per scaricare un oggetto il cui nome della chiave termina con un punto (.), il punto viene rimosso dal nome della chiave dell’oggetto scaricato. Per mantenere il punto alla fine del nome della chiave dell’oggetto scaricato, è necessario utilizzare AWS Command Line Interface (AWS CLI), gli AWS SDK o la REST API di Amazon S3.
Inoltre, tieni a mente le seguenti limitazioni sui prefissi:
-
Gli oggetti con il prefisso
./devono essere caricati o scaricati con AWS CLI, gli AWS SDK o la REST API. Non è possibile utilizzare la console Amazon S3 per caricare questi oggetti. -
Le chiavi dell’oggetto contenenti elementi di percorso relativo (ad esempio,
../) sono valide se, quando analizzate da sinistra a destra, il numero cumulativo dei segmenti di percorso relativo non supera il numero di elementi di percorso non relativo rilevati. Questa regola si applica a tutte le richieste effettuate tramite la console Amazon S3, la REST API di Amazon S3, AWS CLI e gli AWS SDK.Ad esempio:
videos/2014/../../video1.wmvè valido.videos/../../video1.wmvnon è valido.videos/../../2014/video1.wmvnon è valido.
Segmenti di percorso relativo con solo punto
Le chiavi dell’oggetto contenenti segmenti di percorso con solo punto (. o ..) possono causare un comportamento imprevisto se elaborate da applicazioni, SDK o strumenti che li interpretano come riferimenti di percorsi relativi.
I seguenti modelli possono causare problemi:
-
folder/./file.txt: contiene il riferimento alla directory corrente -
folder/../file.txt: contiene il riferimento alla directory principale -
./file.txt: inizia con il riferimento alla directory corrente -
../file.txt: inizia con il riferimento alla directory principale
I seguenti modelli funzionano normalmente:
-
folder/.hidden/file.txt: il punto fa parte del nome del file, non è standalone -
folder/..backup/file.txti punti fanno parte del nome del file, non sono standalone
Quando le applicazioni elaborano le chiavi degli oggetti con segmenti con solo punto, possono verificarsi i seguenti impatti sul comportamento:
-
Normalizzazione del percorso: molti sistemi risolvono i riferimenti
.e..automaticamente, modificando potenzialmente il percorso effettivo (ad esempiofolder/./file.txtdiventafolder/file.txt). -
Problemi di accesso: le applicazioni potrebbero non riuscire a individuare gli oggetti a causa delle differenze di risoluzione dei percorsi.
-
Comportamento incoerente: strumenti e SDK diversi potrebbero gestire questi modelli in modo diverso.
Importante
Per evitare questi problemi, è consigliabile non utilizzare segmenti di percorso con solo punto nei nomi delle chiavi dell’oggetto. È possibile utilizzare convenzioni di denominazione alternative per scopi organizzativi.
Caratteri che potrebbero richiedere una gestione speciale
I seguenti caratteri in un nome di chiave potrebbero richiedere ulteriori operazioni di gestione del codice e molto probabilmente dovranno essere codificati tramite URL o vi si dovrà fare riferimento come HEX. Alcuni di essi sono caratteri non stampabili ed è possibile che non vengano gestiti dal browser in uso; per tale motivo, richiedono una gestione speciale:
-
E commerciale (
&) -
Simbolo del dollaro (
$) -
I caratteri ASCII sono compresi tra 00-1F hex (0-31 decimale) e 7F (127 decimale)
-
Simbolo at (
@) -
Segno uguale (
=) -
Punto e virgola (
;) -
Barra obliqua (
/) -
Due punti (
:) -
Segno più (
+) -
Spazio - È possibile che in alcuni casi vadano perse sequenze significative di spazi (in particolare, gli spazi multipli)
-
Virgola (
,) -
Punto interrogativo (
?)
Caratteri da evitare
È consigliabile non utilizzare i seguenti caratteri nel nome di una chiave a causa della gestione significativa dei caratteri speciali, che non è coerente in tutte le applicazioni:
-
Barra rovesciata (
\) -
Parentesi graffa di sinistra (
{) -
Caratteri ASCII non stampabili (caratteri decimali da 128 a 255)
-
Accento circonflesso (
^) -
Parentesi graffa di destra (
}) -
Carattere di percentuale (
%) -
Accento grave o apice inverso (
`) -
Parentesi quadra di destra (
]) -
Virgolette (
") -
Segno maggiore di (
>) -
Parentesi quadra di sinistra (
[) -
Tilde (
~) -
Segno minore di (
<) -
Simbolo di numero (
#) -
Barra verticale (
|)
Vincoli della chiave dell’oggetto correlati a XML
Come specificato dallo standard XML sulla gestione di fine riga
Di seguito è riportato un elenco di tali caratteri speciali e dei loro codici di entità XML equivalenti:
L’apostrofo (
') deve essere sostituito con'Le virgolette (
") devono essere sostituite con"La e commerciale (
&) deve essere sostituita con&Il segno minore di (
<) deve essere sostituito con<Il segno maggiore di (
>) deve essere sostituito con>Il ritorno a capo (
\r) deve essere sostituito con o
Il carattere di nuova riga (
\n) deve essere sostituito con o

Nell'esempio seguente viene illustrato l'utilizzo di un codice di entità XML come sostituzione di un ritorno a capo. Questa richiesta DeleteObjects elimina un oggetto con il parametro key /some/prefix/objectwith\rcarriagereturn (dove \r è il ritorno a capo).
<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Object> <Key>/some/prefix/objectwith carriagereturn</Key> </Object> </Delete>
Ordinamento delle chiavi degli oggetti
Amazon S3 dispone le chiavi degli oggetti, compresi i prefissi, in ordine lessicografico in base ai valori di byte con codifica UTF-8.
I caratteri ASCII vengono disposti nel seguente ordine:
-
Caratteri speciali (ad esempio
!,/) -
Lettere maiuscole (A–Z)
-
Lettere minuscole (a–z)
Caratteri non ASCII (ad esempio é, 中 文) sono codificati come sequenze UTF-8 multi-byte e in genere vengono ordinati in base ai caratteri ASCII a causa dei loro valori di byte elevati (ad esempio 0xC3 per é, 0xE4 per 中).
Ad esempio, i prefissi apple/, Apple/, éclair/, 中 文/ vengono ordinati come segue:
1. Apple/ (inizia con 0x41)
2. apple/ (inizia con 0x61)
3. éclair/ (inizia con 0xC3 0xA9)
4. 中 文/ (inizia con 0xE4 0xB8 0xAD 0xE6 0x96 0x87)