Questa pagina descrive come completare una semplice migrazione da Amazon Simple Storage Service (Amazon S3) a Cloud Storage. In una migrazione semplice, utilizzi gli strumenti e le librerie esistenti per generare richieste REST autenticate ad Amazon S3 per inviare richieste autenticate a Cloud Storage.
Se non hai mai utilizzato Cloud Storage e non utilizzerai l'API direttamente, ti consigliamo di utilizzare la Google Cloud console per configurare e gestire i trasferimenti. La console Google Cloud fornisce un'interfaccia grafica a Cloud Storage che ti consente di svolgere molte delle tue attività di archiviazione utilizzando solo un browser, inclusa la migrazione dei dati da Amazon S3 a Cloud Storage.
Se vuoi che Cloud Storage memorizzi un backup dei tuoi dati Amazon S3, valuta la possibilità di utilizzare i trasferimenti basati sugli eventi, che utilizzano le notifiche di eventi Amazon S3 per mantenere automaticamente sincronizzato un bucket Cloud Storage con l'origine Amazon S3.
Esegui la migrazione da Amazon S3 a Cloud Storage in uno scenario di migrazione semplice
Per effettuare richieste a Cloud Storage, devi completare i seguenti passaggi:
- Imposta un progetto Google Cloud predefinito.
- Ottieni una chiave HMAC (Hash-based Message Authentication Code).
Nelle librerie o negli strumenti esistenti, apporta le seguenti modifiche:
- Modifica l'endpoint della richiesta in modo che utilizzi l'endpoint della richiesta dell'API XML di Cloud Storage.
- Sostituisci la chiave di accesso e la chiave segreta di Amazon Web Services (AWS) con l'ID accesso e la chiave segreta di Cloud Storage corrispondenti (chiamati collettivamente chiave HMAC di Cloud Storage).
Assicurati che le intestazioni
x-amz-
utilizzino valori Cloud Storage supportati. Ad esempio,x-amz-storage-class
deve utilizzare una delle classi di archiviazione Cloud Storage disponibili.Quando utilizzi l'API Cloud Storage XML in uno scenario di migrazione semplice, specificare l'identificatore della firma
AWS
nell'intestazioneAuthorization
consente a Cloud Storage di sapere che deve aspettarsi intestazionix-amz-*
e la sintassi XML ACL di Amazon S3 nella tua richiesta. Cloud Storage elabora le intestazionix-amz-*
che hanno un equivalentex-goog-*
, ad esempio quelle elencate nella tabella delle intestazioni, ed elabora l'intestazionex-amz-decoded-content-length
.
Dopo aver apportato queste modifiche, puoi iniziare a utilizzare gli strumenti e le librerie esistenti per inviare richieste HMAC a Cloud Storage.
Ad esempio, i seguenti esempi mostrano come elencare i bucket Cloud Storage utilizzando l'SDK Amazon S3:
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Go.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Impostare un progetto predefinito
Per utilizzare Cloud Storage in uno scenario di migrazione semplice, ti consigliamo
di impostare un progetto predefinito, che Cloud Storage utilizza per
eseguire determinate operazioni, come il servizio GET
o il bucket PUT
. Se non imposti un progetto predefinito, devi specificare un'intestazione del progetto in determinate richieste.
Per impostare un progetto predefinito:
- Apri la pagina Impostazioni Cloud Storage nella consoleGoogle Cloud .
- Seleziona la scheda Interoperabilità.
Fai clic su Imposta PROJECT-ID come progetto predefinito, che si trova nella sezione Progetto predefinito per l'accesso interoperabile.
Se il progetto è già quello predefinito, viene visualizzato PROJECT-ID è il tuo progetto predefinito per l'accesso interoperabile.
Questo progetto è ora il tuo progetto predefinito. Puoi modificare il progetto predefinito in qualsiasi momento scegliendone un altro e seguendo questi passaggi.
In alternativa, specifica un'intestazione del progetto
Invece di impostare un progetto predefinito o in aggiunta a questa impostazione, puoi utilizzare l'intestazione
x-amz-project-id
nelle singole richieste che richiedono di specificare un
progetto.
- Una richiesta che utilizza
x-amz-project-id
utilizza il progetto specificato nell'intestazione, anche se esiste un progetto predefinito.
L'intestazione x-amz-project-id
è utile quando:
- Stai lavorando con più progetti.
- Le tue richieste vengono effettuate da un account di servizio associato a un progetto diverso, perché gli account di servizio utilizzano il progetto padre come progetto predefinito.
Tieni presente che Amazon S3 non ha progetti, quindi a seconda degli strumenti
o delle librerie client che utilizzi, specificare un'intestazione x-amz-project-id
potrebbe non essere
un'opzione. In questo caso, devi impostare un progetto predefinito.
Utilizzare le chiavi HMAC
Per utilizzare l'API Cloud Storage XML in uno scenario di migrazione semplice, utilizza le chiavi HMAC (Hash-based Message Authentication Code) di Cloud Storage per le credenziali. In genere, devi creare una chiave HMAC associata a un account di servizio; tuttavia, puoi anche utilizzarne una associata a un account utente.
Autenticarsi in uno scenario di migrazione semplice
Utilizzare l'intestazione Authorization
Per le operazioni in uno scenario di migrazione semplice che richiedono l'autenticazione, includi un'intestazione della richiesta Authorization
proprio come fai per le richieste ad Amazon S3. La sintassi dell'intestazione Authorization
per una richiesta Amazon S3 è:
Authorization: AWS4-HMAC-SHA256 Credential=AWS-ACCESS-KEY/CREDENTIAL_SCOPE, SignedHeaders=SIGNED_HEADERS, Signature=SIGNATURE
In uno scenario di migrazione semplice, devi solo modificare l'intestazione per utilizzare l'ID accesso HMAC di Cloud Storage e assicurarti che Signature
che alleghi
venga calcolato con la chiave segreta HMAC di Cloud Storage:
Authorization: ALGORITHM Credential=GOOG-ACCESS-ID/CREDENTIAL_SCOPE, SignedHeaders=SIGNED_HEADERS, Signature=SIGNATURE
Le parti dell'intestazione Authorization
sono:
ALGORITHM: l'algoritmo di firma e la versione che stai utilizzando. L'utilizzo di
AWS4-HMAC-SHA256
indica che stai utilizzando una firma HMAC V4 e che intendi inviare intestazionix-amz-*
. Puoi anche utilizzareGOOG4-HMAC-SHA256
, che indica che stai utilizzando una firma HMAC V4 e che intendi inviare intestazionix-goog-*
, oGOOG4-RSA-SHA256
, che indica che stai utilizzando una firma RSA V4 e che intendi inviare intestazionix-goog-*
.GOOG-ACCESS-ID: l'ID accesso identifica l'entità che effettua e firma la richiesta. In una migrazione semplice, sostituisci l'ID chiave di accesso Amazon Web Service (AWS) che utilizzi per accedere ad Amazon S3 con l'ID accesso HMAC di Cloud Storage. L'ID accesso HMAC di Cloud Storage inizia con
GOOG
.CREDENTIAL_SCOPE: l'ambito delle credenziali, come definito nella firma. In una migrazione semplice, non devi modificare l'ambito delle credenziali se utilizzi
AWS4-HMAC-SHA256
per il valore ALGORITHM.SIGNED_HEADERS: un elenco separato da punto e virgola dei nomi delle intestazioni che devono essere incluse per firmare questa richiesta. Tutte le intestazioni devono essere in minuscolo e ordinate in base al codice carattere.
Un esempio di stringa di intestazione firmata in stile Amazon S3 è il seguente:
content-type;host;x-amz-date
In una migrazione semplice, non è necessario apportare modifiche alla stringa di intestazione firmata.
SIGNATURE: la firma che consente di autenticare la richiesta. In una migrazione semplice, sostituisci le informazioni della chiave di accesso AWS con le informazioni equivalenti della chiave HMAC di Cloud Storage.
Esempio di richiesta di autenticazione
Gli esempi seguenti caricano un oggetto denominato /europe/france/paris.jpg
in un
bucket denominato my-travel-maps
, applicano l'ACL predefinito public-read
e
definiscono un'intestazione di metadati personalizzata per i revisori. Ecco la richiesta a un bucket
in Amazon S3:
PUT europe/france/paris.jpg HTTP/1.1 Host: my-travel-maps.s3.amazonaws.com Date: Mon, 11 Mar 2019 23:46:19 GMT Content-Length: 888814 Content-Type: image/jpg x-amz-acl: public-read x-amz-date:20190311T192918Z x-amz-meta-reviewer: joe,jane Authorization: AWS4-HMAC-SHA256 Credential=AWS-ACCESS-KEY/20190311/us-east-1/s3/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-acl;x-amz-date;x-amz-meta-reviewer, Signature=SIGNATURE
Ecco la richiesta di un bucket in Cloud Storage:
PUT europe/france/paris.jpg HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Mon, 11 Mar 2019 23:46:19 GMT Content-Length: 888814 Content-Type: image/jpg x-amz-acl: public-read x-amz-date:20190311T192918Z x-amz-meta-reviewer: joe,jane Authorization: AWS4-HMAC-SHA256 Credential=GOOG-ACCESS-ID/20190311/us-east-1/s3/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-acl;x-amz-date;x-amz-meta-reviewer, Signature=SIGNATURE
Ecco la richiesta canonica corrispondente creata per questa richiesta:
PUT /europe/france/paris.jpg content-length:888814 content-type:image/jpg host:my-travel-maps.storage.googleapis.com x-amz-acl:public-read x-amz-date:20190311T192918Z x-amz-meta-reviewer:joe,jane content-length,content-type,host,x-amz-acl,x-amz-date,x-amz-meta-reviewer 82e3da8b3f35989512e8d428add7eca73ab0e5f36586e66fbad8e1051343cbd2
Ecco la stringa da firmare corrispondente creata per questa richiesta:
AWS4-HMAC-SHA256 20190311T192918Z 20190311/us-east-1/s3/aws4_request 73918a5ff373d7a03e406fbf9ea35675396b06fca2af76c27a5c451fa783ef65
Questa richiesta non ha fornito un'intestazione Content-MD5, pertanto nella seconda riga del messaggio viene visualizzata una stringa vuota.
Controllo dell'accesso in uno scenario di migrazione semplice
Per supportare le migrazioni semplici, Cloud Storage accetta le ACL prodotte da
Amazon S3. In uno scenario di migrazione semplice, utilizzi AWS
come identificatore della firma, che indica a Cloud Storage di prevedere la sintassi ACL utilizzando la sintassi XML ACL di Amazon S3. Devi assicurarti che gli ACL Amazon S3 che utilizzi
corrispondano al modello ACL Cloud Storage. Ad esempio, se i tuoi strumenti e
le tue librerie utilizzano la sintassi ACL di Amazon S3 per concedere l'autorizzazione WRITE
per il bucket, allora
devono anche concedere l'autorizzazione READ
per il bucket perché le autorizzazioni Cloud Storage
sono concentriche. Non è necessario specificare sia l'autorizzazione WRITE
che
READ
quando concedi l'autorizzazione WRITE
utilizzando la
sintassi di Cloud Storage.
Cloud Storage supporta la sintassi ACL di Amazon S3 nei seguenti scenari:
- In una richiesta a Cloud Storage per recuperare gli ACL (ad esempio, una richiesta di
GET
oggetto o di bucketGET
), Cloud Storage restituisce la sintassi degli ACL di Amazon S3. - In una richiesta a Cloud Storage per applicare ACL (ad esempio, una richiesta di
PUT
oggetto o diPUT
bucket), Cloud Storage prevede di ricevere la sintassi ACL di Amazon S3.
L'intestazione Authorization
in uno scenario di migrazione semplice utilizza AWS
per l'identificatore della firma, ma con l'ID accesso HMAC di Cloud Storage.
Authorization: AWS4-HMAC-SHA256 Credential=GOOG-ACCESS-ID/CREDENTIAL_SCOPE, SignedHeaders=SIGNED_HEADERS, Signature=SIGNATURE
L'esempio seguente mostra una richiesta GET
a Cloud Storage per restituire
le ACL per un oggetto.
GET europe/france/paris.jpg?acl HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Thu, 21 Feb 2019 23:50:10 GMT Content-Type: application/xml X-Amz-Date: 20190221T235010Z Authorization: AWS4-HMAC-SHA256 Credential=GOOGMC5PDPA5JLZYQMHQHRAX/20190221/region/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature=29088b1d6dfeb2549f6ff67bc3744abb7e45475f0ad60400485805415bbfc534
La risposta alla richiesta include la lista di controllo degli accessi utilizzando la sintassi della lista di controllo degli accessi di Amazon S3.
<?xml version='1.0' encoding='UTF-8'?> <AccessControlPolicy> <Owner> <ID>00b4903a972faa8bcce9382686e9129676f1cd6e5def1f5663affc2ba4652490 </ID> <DisplayName>OwnerName</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:type='CanonicalUser'> <ID>00b4903a972faa8bcce9382686e9129676f1cd6e5def1f5663affc2ba4652490</ID> <DisplayName>UserName</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
L'esempio seguente mostra una richiesta PUT
a Cloud Storage per impostare
le ACL per un oggetto. L'esempio mostra un corpo della richiesta con la sintassi ACL di Amazon S3.
PUT europe/france/paris.jpg?acl HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Thu, 21 Feb 2019 23:50:10 GMT Content-Type: application/xml Content-Length: 337 X-Amz-Date: 20190221T235010Z Authorization: AWS4-HMAC-SHA256 Credential=GOOGMC5PDPA5JLZYQMHQHRAX/20190221/region/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature=29088b1d6dfeb2549f6ff67bc3744abb7e45475f0ad60400485805415bbfc534 <?xml version='1.0' encoding='utf-8'?> <AccessControlPolicy> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="AmazonCustomerByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
Infine, in uno scenario di migrazione semplice, puoi anche utilizzare l'identificatore della firma GOOG1
nell'intestazione Authorization
. In questo caso, devi utilizzare la sintassi ACL di Cloud Storage e assicurarti che tutte le intestazioni x-amz-*
vengano modificate in x-goog-*
. Anche se è possibile, ti consigliamo di scegliere una migrazione completa per usufruire di tutti i vantaggi di Cloud Storage.
Supporto della compatibilità dell'API XML con Amazon S3
Per discussioni sull'interoperabilità dell'API XML, consulta Stack Overflow utilizzando il tag google-cloud-storage.
Passaggi successivi
- Pianifica una migrazione da Amazon S3.
- Trasferisci i dati a Cloud Storage da origini esterne, ad esempio Amazon S3 e Microsoft Azure Blob Storage, utilizzando Storage Transfer Service.
- Crea trasferimenti basati sugli eventi che utilizzano le notifiche di eventi Amazon S3 per mantenere sincronizzato un bucket Cloud Storage con Amazon S3.