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. Dopo la migrazione completa, 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 qualsiasi intestazione
x-amz-*
esistente nelle intestazionix-goog-*
corrispondenti. - Modifica l'elenco di controllo dell'accesso (ACL) XML di AWS con l'elenco di controllo dell'accesso (ACL) XML di Cloud Storage corrispondente (consulta Creare e gestire gli elenchi di controllo 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 dove emetterai le richieste) con Google. Se utilizzi OAuth 2.0, l'intestazione
Authorization
sarà simile alla seguente:Authorization: Bearer OAUTH2_TOKEN
OAuth 2.0 si basa su SSL per la sicurezza invece di richiedere della tua applicazione per eseguire direttamente la firma crittografica ed è più facile da implementare. Con OAuth, la tua applicazione può richiedere l'accesso ai dati associati con l'account di un utente e l'accesso può essere limitato a diversi livelli, tra cui sola lettura, lettura/scrittura e controllo completo. Per ulteriori informazioni, vedi Ambiti OAuth 2.0 di Cloud Storage e Accesso ai dati per conto di un utente.
Controllo degli accessi
Questa sezione mostra alcuni esempi di controllo dell'accesso per aiutarti a eseguire la migrazione da 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 accesso). Due modi in cui specificare ACL sono analoghi a quelli che fai in Amazon S3:
- Il parametro della stringa di query
acl
ti consente di applicare ACL per ambiti specifici. - L'intestazione di richiesta
x-goog-acl
ti consente di applicare ACL predefinite, a volte note come ACL predefinite.
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 faresti per una richiesta Amazon S3. La
Il parametro acl
viene utilizzato insieme al metodo PUT
per applicare gli ACL a
a quanto segue: un oggetto esistente, un bucket esistente o un bucket
è in fase di creazione. Quando utilizzi il parametro della stringa di query acl
in una richiesta PUT
, devi allegare un documento XML (utilizzando la sintassi ACL di Cloud Storage) al corpo della richiesta. Il documento XML contiene le singole voci ACL che
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
. Le ACL sono definite 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
. 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 ulteriori informazioni, consulta Proprietà di bucket e oggetti.
Puoi anche recuperare gli ACL di bucket e oggetti utilizzando la stringa di query acl
con il metodo GET
. Le ACL sono descritte in un documento XML,
che è allegato al corpo della risposta. Devi disporre dell'autorizzazione FULL_CONTROL
per applicare o recuperare gli ACL su un oggetto o un bucket.
Applicare ACL con un'intestazione di richiesta di estensione
Puoi utilizzare l'intestazione x-goog-acl
in una richiesta Cloud Storage per applicarla
ACL predefiniti per bucket e oggetti esattamente allo stesso modo in cui utilizzeresti
x-amz-acl
in una richiesta Amazon S3. In genere utilizzi
Intestazione x-goog-acl
(x-amz-acl
) per applicare un ACL predefinito a un bucket oppure
quando crei o carichi il bucket o l'oggetto. La
Gli ACL predefiniti di Cloud Storage sono simili ad Amazon S3
ACL predefiniti, tra cui private, public-read, public-read-write,
e non solo. 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
un bucket o un oggetto esistente. A tale scopo, includi il parametro della stringa di query acl
nella richiesta, ma non includere un documento XML. Applicazione di un
l'ACL predefinito a un oggetto o un bucket esistente è utile se vuoi
da un ACL predefinito a un altro oppure vuoi aggiornare ACL personalizzati
predefinito. Ad esempio, la seguente richiesta di oggetto PUT
applica il
predefinito ACL private
in un oggetto denominato europe/france/paris.jpg
che è
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 ulteriori informazioni sulla gestione degli ACL, consulta Creazione e gestione degli elenchi di controllo dell'accesso.
Metodi di richiesta per la migrazione da Amazon S3 a Cloud Storage
Cloud Storage supporta gli stessi metodi di richiesta HTTP standard leggere e scrivere dati nei bucket, come sono supportate in Amazon S3. Pertanto, la maggior parte degli strumenti e delle librerie che utilizzi attualmente con Amazon S3 funzionano così come sono 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 oggetti, incluse
GET
,POST
,PUT
,HEAD
eDELETE
.
Per maggiori informazioni, consulta la sezione Metodi di riferimento dell'API XML. Tieni presente che, quando invii richieste a Cloud Storage, devi modificare il corpo della richiesta, se applicabile, per utilizzare la sintassi di Cloud Storage appropriata. Ad esempio, quando crei una configurazione del ciclo di vita per un bucket, utilizza il file XML del ciclo di vita di Cloud Storage, che è diverso dal file XML del ciclo di vita di Amazon S3.
Ci sono alcune differenze tra l'API XML di Cloud Storage e Amazon S3, riepilogati di seguito:
Funzionalità di Amazon S3 | Funzionalità dell'API XML di Cloud Storage |
---|---|
Quando si utilizzano chiavi di crittografia fornite dal cliente in una caricamento multiparte, la richiesta finale non include la chiave di crittografia fornita dal cliente. | Nell'API XML di Cloud Storage, tutte le richieste in un caricamento multiparte inclusa la richiesta finale, richiedono di fornire lo stesso chiave di crittografia fornita dal cliente. Questo requisito esiste perché Cloud Storage non memorizza le informazioni sulla chiave di crittografia mentre aspetta la richiesta per completare il caricamento, ma richiede la chiave per calcolare un checksum per l'oggetto completato. |
In Amazon S3, V4 le firme possono essere usate per autenticare i caricamenti che usano codifica di trasferimento. | Nell'API XML di Cloud Storage, al momento non è possibile utilizzare contemporaneamente la codifica del trasferimento suddiviso in blocchi e le firme V4. Per impostazione predefinita, alcuni strumenti Amazon S3 utilizzano la codifica di trasferimento frazionata insieme alle firme. In questi casi, devi disattivare la codifica di trasferimento frazionata. |
Parametri della stringa di query del bucket GET/POST:
|
Alternative:
|
Eliminazione di più oggetti. POST /?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 dalle intestazioni di Amazon S3 a quelle di Cloud Storage
Cloud Storage utilizza diverse intestazioni HTTP standard e o intestazioni HTTP personalizzate (estensione). Se stai passando da Amazon S3 ad Cloud Storage, puoi convertire le intestazioni Amazon S3 personalizzate nel un'intestazione personalizzata Cloud Storage equivalente o funzionalità simili come come mostrato nelle tabelle di seguito.
Per molte intestazioni Amazon S3, devi semplicemente 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 sono diverse 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 siano scritti su disco. Per ulteriori informazioni, vedi Crittografia. |
x-amz-grant-* |
x-goog-acl con un valore ACL predefinito. |
x-amz-version-id |
x-goog-generation |
x-amz-mfa |
Utilizza l'autenticazione OAuth 2.0. |
x-amz-website-redirect-location , x-amz-copy-source-range |
n/a |
Consulta la sezione Intestazioni HTTP e parametri di stringa di query per l'API XML per un riferimento alle intestazioni di Cloud Storage.
Passaggi successivi
- Pianifica una migrazione da Amazon S3.
- Trasferisci i dati in Cloud Storage da origini esterne, ad esempio come Amazon S3 e Microsoft Azure Blob Storage, usando Storage Transfer Service.
- Crea trasferimenti basati sugli eventi che utilizzano le notifiche evento Amazon S3 per mantenere un bucket Cloud Storage sincronizzato con Amazon S3.