Questa pagina descrive come eseguire la migrazione completa da Amazon Simple Storage Service (Amazon S3) a Cloud Storage per gli utenti che inviano richieste utilizzando un'API. Una volta completata la migrazione, puoi utilizzare tutte le funzionalità di Cloud Storage, inclusi più progetti e OAuth 2.0 per l'autenticazione.
Se vuoi iniziare a utilizzare Cloud Storage rapidamente, puoi scegliere una migrazione semplice, che richiede solo alcune semplici modifiche agli strumenti e alle librerie che utilizzi attualmente con Amazon S3.
Migrazione da Amazon S3 a Cloud Storage
Per eseguire la migrazione completa da Amazon S3 a Cloud Storage, devi completare i seguenti passaggi:
- Modifica le intestazioni
x-amz-*
esistenti con le intestazionix-goog-*
corrispondenti. - Modifica il codice XML dell'elenco di controllo dell'accesso AWS (ACL) nel codice XML ACL di Cloud Storage corrispondente (consulta la sezione Creazione e gestione degli controllo dell'accesso dell'accesso).
- Imposta l'intestazione x-goog-project-id nelle tue richieste.
Configura l'autenticazione OAuth 2.0 come descritto in Autenticazione OAuth 2.0. Il primo passaggio consiste nel registrare la tua applicazione (da cui emetteremo le richieste) su Google. Se usi OAuth 2.0, l'intestazione
Authorization
avrà il seguente aspetto:Authorization: Bearer OAUTH2_TOKEN
OAuth 2.0 si basa su SSL per motivi di sicurezza, invece di richiedere all'applicazione di eseguire direttamente la firma crittografica ed è più facile da implementare. Con OAuth, la tua applicazione può richiedere l'accesso ai dati associati all'account di un utente e l'accesso può essere limitato a più livelli, tra cui sola lettura, lettura/scrittura e controllo completo. Per maggiori informazioni, consulta Ambiti OAuth 2.0 di Cloud Storage e Credenziali dell'account utente.
Controllo dell'accesso
Questa sezione mostra alcuni esempi di controllo dell'accesso#39;accesso per aiutarti a eseguire la migrazione da Amazon S3 a Cloud Storage. Per una panoramica del controllo dell'accesso in Cloud Storage, consulta Controllo dell'accesso.
In Cloud Storage, esistono diversi modi per applicare ACL a bucket e oggetti (consulta Creazione e gestione degli controllo dell'accesso#39;accesso). Due dei modi in cui specifichi gli ACL sono analoghi a quelli utilizzati in Amazon S3:
- Il parametro della stringa di query
acl
consente di applicare ACL per ambiti specifici. - L'intestazione della richiesta
x-goog-acl
consente di applicare ACL predefiniti, noti anche come ACL predefiniti.
Utilizzo del parametro della stringa di query acl
Puoi utilizzare il parametro della stringa di query acl
per una richiesta Cloud Storage
esattamente come lo useresti per una richiesta Amazon S3. Il parametro acl
viene utilizzato in combinazione con il metodo PUT
per applicare gli ACL a un oggetto esistente, un bucket esistente o un bucket che stai creando. Quando utilizzi il parametro della stringa di query acl
in una richiesta PUT
, devi allegare un documento XML (con la sintassi ACL di Cloud Storage) al corpo della richiesta. Il documento XML contiene le singole voci ACL da applicare al bucket o all'oggetto.
L'esempio seguente mostra una richiesta PUT
ad Amazon S3 che utilizza il parametro della stringa di query acl
. Gli ACL sono definiti in un documento XML inviato nel corpo della richiesta. La richiesta PUT
modifica gli ACL su un oggetto denominato
europe/france/paris.jpg
che si trova in un bucket denominato my-travel-maps
. L'ACL concede l'autorizzazione FULL_CONTROL
a jane@gmail.com.
PUT europe/france/paris.jpg?acl HTTP/1.1 Host: my-travel-maps.s3.amazonaws.com Date: Wed, 06 Nov 2013 19:28:18 GMT Content-Length: 598 Content-Type: application/xml Authorization: AWS4-HMAC-SHA256 Credential=AWS-ACCESS-KEY/20131106/us-east-1/s3/aws4_request, SignedHeaders=content-length;content-type;date;host, Signature=4c45f25bb679fdab0de5a287625d6a143414728d93c9aeb9f4cc91c33a1c45fg <?xml version='1.0' encoding='utf-8'?> <AccessControlPolicy> <Owner> <ID>5a6557ba40f7c86496ffceae789fcd888abc1b62a7149873a0fe12c0f60a7d95</ID> <DisplayName>ownerEmail@example.com</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>fd447671d60b979f78ee6fcec7b22afc80e6b26a4db16eed01afb8064047949b</ID> <DisplayName>jane@gmail.com</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
Ecco la stessa richiesta a Cloud Storage:
PUT europe/france/paris.jpg?acl HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Wed, 06 Nov 2013 19:37:33 GMT Content-Length: 268 Content-Type: application/xml Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <?xml version='1.0' encoding='utf-8'?> <AccessControlList> <Entries> <Entry> <Permission>FULL_CONTROL</Permission> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
Tieni presente che Cloud Storage non richiede un elemento <Owner/>
nel documento XML ACL. Per saperne di più, consulta Proprietà di bucket e oggetti.
Puoi anche recuperare gli ACL di bucket e oggetti utilizzando il parametro della stringa di query acl
con il metodo GET
. Gli ACL sono descritti in un documento XML, allegato al corpo della risposta. Devi disporre dell'autorizzazione FULL_CONTROL
per applicare o recuperare gli ACL su un oggetto o un bucket.
Applica ACL con l'intestazione di una richiesta di estensione
Puoi utilizzare l'intestazione x-goog-acl
in una richiesta Cloud Storage per applicare ACL predefiniti a bucket e oggetti esattamente come useresti l'intestazione x-amz-acl
in una richiesta Amazon S3. In genere, puoi utilizzare l'intestazione x-goog-acl
(x-amz-acl
) per applicare un ACL predefinito a un bucket o a un oggetto durante la creazione o il caricamento del bucket o dell'oggetto. Gli ACL predefiniti di Cloud Storage sono simili agli ACL predefiniti di Amazon S3, inclusi gli ACL privati, di lettura pubblica, di lettura e di scrittura pubblica e di altri. Per un elenco degli ACL predefiniti di Cloud Storage, consulta ACL predefiniti.
L'esempio seguente mostra una richiesta di oggetto PUT
che applica l'ACL public-read
a un oggetto denominato europe/france/paris.jpg
che viene caricato in un bucket denominato my-travel-maps
in Amazon S3.
PUT europe/france/paris.jpg HTTP/1.1 Host: my-travel-maps.s3.amazonaws.com Date: Wed, 06 Nov 2013 20:48:42 GMT Content-Length: 888814 Content-Type: image/jpg x-amz-acl: public-read Authorization: AWS4-HMAC-SHA256 Credential=AWS-ACCESS-KEY/20131106/us-east-1/s3/aws4_request, SignedHeaders=content-length;content-type;date;host, Signature=808150c37dbd1b425b2398421d6fc3dd6d4942dfaae9e519fd5835aa62fd62ab <888814 bytes in entity body>
Ecco la stessa richiesta a Cloud Storage:
PUT europe/france/paris.jpg HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Wed, 06 Nov 2013 20:49:57 GMT Content-Length: 888814 Content-Type: image/jpg x-goog-acl: public-read Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <888814 bytes in entity body>
Puoi anche utilizzare l'intestazione x-goog-acl
per applicare un ACL predefinito a un bucket o a un oggetto esistente. Per farlo, includi il parametro della stringa di query acl
nella richiesta, ma non includere un documento XML nella richiesta. L'applicazione di un ACL predefinito a un oggetto o bucket esistente è utile se vuoi passare da un ACL predefinito a un altro o se vuoi aggiornare gli ACL personalizzati in un ACL predefinito. Ad esempio, la seguente richiesta di oggetto PUT
applica l'ACL predefinito private
a un oggetto denominato europe/france/paris.jpg
che si trova in un bucket denominato my-travel-maps
.
PUT europe/france/paris.jpg?acl HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Wed, 06 Nov 2013 00:26:36 GMT Content-Length: 0 x-goog-acl: private Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <empty entity body>
Per saperne di più sulla gestione degli ACL, consulta Creazione e gestione degli elenchi di controllo dell'accesso#39;accesso.
Migrazione da Amazon S3 ai metodi di richiesta Cloud Storage
Cloud Storage supporta gli stessi metodi di richiesta HTTP standard per la lettura e la scrittura di dati nei bucket supportati in Amazon S3. Di conseguenza, la maggior parte degli strumenti e delle librerie che utilizzi attualmente con Amazon S3 funziona così com'è con Cloud Storage. Cloud Storage supporta i seguenti metodi di richiesta:
- Richiesta di servizio per
GET
. - Richieste di bucket, tra cui
PUT
,GET
,DELETE
. - Richieste di oggetto, tra cui
GET
,POST
,PUT
,HEAD
eDELETE
.
Per ulteriori informazioni, consulta i metodi di riferimento dell'API XML. Tieni presente che quando invii richieste a Cloud Storage, devi modificare il corpo della richiesta, ove applicabile, in modo da utilizzare la sintassi di Cloud Storage appropriata. Ad esempio, quando crei una configurazione del ciclo di vita per un bucket, utilizza il codice XML del ciclo di vita di Cloud Storage, che è diverso dall'XML del ciclo di vita Amazon S3.
Esistono alcune differenze tra l'API Cloud Storage XML e Amazon S3, che sono riassunte di seguito:
Funzionalità di Amazon S3 | Funzionalità dell'API XML di Cloud Storage |
---|---|
Se utilizzi chiavi di crittografia fornite dal cliente in un caricamento multiparte, la richiesta finale non include la chiave di crittografia fornita dal cliente. | Nell'API XML di Cloud Storage, per tutte le richieste in un caricamento multiparte, inclusa la richiesta finale, devi fornire la stessa chiave di crittografia fornita dal cliente. Questo requisito esiste perché Cloud Storage non archivia le informazioni della chiave di crittografia mentre attende che la richiesta completi il caricamento, ma richiede la chiave per calcolare un checksum per l'oggetto completato. |
In Amazon S3, le firme V4 possono essere utilizzate per autenticare i caricamenti che utilizzano la codifica di trasferimento in blocchi. | Al momento, nell'API XML di Cloud Storage, la codifica del trasferimento in blocchi e le firme V4 non possono essere utilizzate contemporaneamente. Per impostazione predefinita, alcuni strumenti di Amazon S3 utilizzano la codifica di trasferimento in blocchi insieme alle firme; in questi casi, devi disattivare la codifica del trasferimento in blocchi. |
Parametri della stringa di query del bucket GET/POST:
|
Alternative:
|
Eliminazione di più oggetti. PUBBLICA /?delete |
Utilizza la console Google Cloud per rimuovere facilmente più oggetti. In alternativa, l'API JSON supporta l'invio di richieste batch per ridurre il numero di connessioni HTTP effettuate dal client. |
Migrazione da Amazon S3 alle intestazioni Cloud Storage
Cloud Storage utilizza diverse intestazioni HTTP standard oltre a diverse intestazioni HTTP (estensione) personalizzate. Se stai passando da Amazon S3 a Cloud Storage, puoi convertire le intestazioni Amazon S3 personalizzate nell'intestazione personalizzata Cloud Storage equivalente o in una funzionalità simile come mostrato nelle tabelle di seguito.
Per molte intestazioni Amazon S3, è sufficiente sostituire il prefisso x-amz
con x-goog
:
Intestazione Amazon S3 | Intestazione Cloud Storage |
---|---|
x-amz-storage-class |
x-goog-storage-class |
x-amz-acl |
x-goog-acl |
x-amz-date |
x-goog-date |
x-amz-meta-* |
x-goog-meta-* |
x-amz-copy-source |
x-goog-copy-source |
x-amz-metadata-directive |
x-goog-metadata-directive |
x-amz-copy-source-if-match |
x-goog-copy-source-if-match |
x-amz-copy-source-if-none-match |
x-goog-copy-source-if-none-match |
x-amz-copy-source-if-unmodified-since |
x-goog-copy-source-if-unmodified-since |
x-amz-copy-source-if-modified-since |
x-goog-copy-source-if-modified-since |
Diverse intestazioni differiscono o non si applicano in Cloud Storage:
Intestazione Amazon S3 | Intestazione Cloud Storage |
---|---|
x-amz-server-side-encryption |
Non obbligatorio. Cloud Storage cripta automaticamente tutti i dati prima che vengano scritti su disco. Per ulteriori informazioni, vedi Crittografia. |
x-amz-grant-* |
x-goog-acl con un valore ACL predefinito. |
x-amz-mfa |
Utilizza l'autenticazione OAuth 2.0. |
x-amz-website-redirect-location , x-amz-copy-source-range |
n/d |
Per un riferimento alle intestazioni di Cloud Storage, consulta Intestazioni HTTP e parametri delle stringhe di query per l'API XML.
Passaggi successivi
- Pianifica una migrazione da Amazon S3.
- Trasferisci i tuoi dati in Cloud Storage da origini esterne, come Amazon S3 e Archiviazione BLOB di Microsoft Azure, utilizzando Storage Transfer Service.
- Crea trasferimenti basati su eventi che utilizzano le notifiche di eventi Amazon S3 per mantenere sincronizzato un bucket Cloud Storage con Amazon S3.