Questa pagina descrive come completare una semplice migrazione da Amazon Simple Storage Service (Amazon S3) a di archiviazione ideale in Cloud Storage. In una semplice migrazione, utilizzi gli strumenti e i librerie per la generazione di richieste REST autenticate in Amazon S3 le richieste autenticate a Cloud Storage.
Se non hai dimestichezza con Cloud Storage e non utilizzerai direttamente l'API, valuta la possibilità di utilizzare la console Google Cloud per configurare e gestire i trasferimenti. La La console Google Cloud fornisce un'interfaccia grafica a Cloud Storage che consente di svolgere molte delle attività di archiviazione usando solo un browser, inclusa la migrazione dei dati da Amazon S3 a Cloud Storage.
Se vuoi che Cloud Storage archivi un backup dei tuoi dati Amazon S3, Prendi in considerazione i trasferimenti basati su eventi, che utilizzano gli eventi Amazon S3 Notifiche per mantenere automaticamente sincronizzato un bucket Cloud Storage con la tua sorgente 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 il seguenti passaggi:
- Imposta un progetto Google Cloud predefinito.
- Ottieni una chiave HMAC (codice di autenticazione dei messaggi basato su hash).
Negli strumenti o nelle librerie esistenti, apporta le seguenti modifiche:
- Cambia l'endpoint della richiesta per utilizzare Cloud Storage Endpoint richiesta API XML.
- Sostituisci la chiave di accesso e la chiave segreta di Amazon Web Services (AWS) con l'ID di accesso e il segreto di Cloud Storage corrispondente (chiamati collettivamente chiave HMAC di Cloud Storage).
Assicurati che gli intestazioni
x-amz-
utilizzino valori Cloud Storage supportati. Ad esempio,x-amz-storage-class
deve utilizzare uno degli classi di archiviazione di Cloud Storage disponibili.Quando usi l'API XML di Cloud Storage in una semplice migrazione dello scenario, specificando l'identificatore di firma
AWS
nella L'intestazioneAuthorization
indica a Cloud Storage di prevederex-amz-*
e sintassi XML ACL Amazon S3 nella tua richiesta. Cloud Storage elabora le intestazionix-amz-*
che hanno un corrispondentex-goog-*
, ad esempio quelle elencate nella tabella delle intestazioni.
Dopo aver apportato queste modifiche, puoi iniziare a utilizzare gli strumenti e i per inviare richieste HMAC a Cloud Storage.
Ad esempio, gli esempi riportati di seguito mostrano come elencare i bucket Cloud Storage utilizzando l'SDK Amazon S3:
Go
Per ulteriori informazioni, consulta API Cloud Storage Go documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Impostare un progetto predefinito
Per utilizzare Cloud Storage in uno scenario di migrazione semplice, è consigliabile
di impostare un progetto predefinito, che Cloud Storage utilizza per
eseguire determinate operazioni, ad esempio GET
servizio o PUT
bucket. Se
Non impostare un progetto predefinito, devi specificare un'intestazione del progetto.
in alcune richieste.
Per impostare un progetto predefinito:
- Apri la pagina Impostazioni di Cloud Storage nella console Google Cloud.
- Seleziona la scheda Interoperabilità.
Fai clic su Imposta PROJECT-ID come progetto predefinito, che si trova nella nella sezione Progetto predefinito per l'accesso interoperabile.
Se il progetto è già il progetto predefinito, vedrai PROJECT-ID è il progetto predefinito per l'accesso interoperabile.
Questo progetto è ora il 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, o in aggiunta a, impostare un progetto predefinito, puoi utilizzare
x-amz-project-id
nelle singole richieste che richiedono di specificare un
progetto.
- Una richiesta che usa
x-amz-project-id
usa il progetto specificato in anche se esiste già 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 altro perché gli account di servizio usano il progetto padre come predefinito progetto.
Tieni presente che Amazon S3 non ha progetti, pertanto, a seconda degli strumenti o delle librerie client che utilizzi, la specifica di un'intestazione x-amz-project-id
potrebbe non essere un'opzione. In questo caso, devi impostare un progetto predefinito.
Utilizzare le chiavi HMAC
Per usare l'API XML di Cloud Storage in uno scenario di migrazione semplice, utilizza 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. In alternativa, puoi utilizzare una chiave associata a un account utente.
Eseguire l'autenticazione in uno scenario di migrazione semplice
Utilizza l'intestazione Authorization
Per le operazioni in uno scenario di migrazione semplice che richiedono l'autenticazione, devi includere un'intestazione della richiesta Authorization
, come faresti 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, modifica solo l'intestazione per utilizzare il tuo ID accesso HMAC di Cloud Storage e assicurati che il Signature
che alleghi sia 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 viene utilizzata una firma HMAC V4. e intendi inviare intestazionix-amz-*
. Puoi anche utilizzareGOOG4-HMAC-SHA256
, che indica che stai utilizzando una firma HMAC V4 e intendi inviare intestazionix-goog-*
, ovveroGOOG4-RSA-SHA256
, indica che stai utilizzando una firma RSA V4 e intendi inviarex-goog-*
intestazioni.GOOG-ACCESS-ID: l'ID accesso identifica l'entità che effettuando e firmando la richiesta. In una migrazione semplice, sostituisci l'ID chiave di accesso di Amazon Web Service (AWS) che utilizzi per accedere ad Amazon S3 con il tuo ID accesso HMAC di Cloud Storage. Il tuo HMAC Cloud Storage l'ID di accesso inizia con
GOOG
.CREDENTIAL_SCOPE: l'ambito delle credenziali, come definito nella firma. In una semplice migrazione, non è necessario cambia l'ambito delle credenziali se utilizzi
AWS4-HMAC-SHA256
per Valore ALGORITHM.SIGNED_HEADERS: un elenco separato da punti e virgole dei nomi delle intestazioni che devono essere inclusi 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 dell'intestazione firmata.
SIGNATURE: la firma che autorizza l'invio della richiesta autenticati. In una semplice migrazione, sostituisci la chiave di accesso AWS con le informazioni chiave HMAC Cloud Storage equivalenti.
Esempio di richiesta di autenticazione
I seguenti esempi caricano un oggetto denominato /europe/france/paris.jpg
in un
bucket denominato my-travel-maps
, applicare l'ACL predefinito public-read
e definire 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 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, quindi viene visualizzata una stringa vuota nella seconda riga del messaggio.
Controllo dell'accesso in uno scenario di migrazione semplice
Per supportare migrazioni semplici, Cloud Storage accetta ACL generati
Amazon S3. In uno scenario di migrazione semplice, utilizzi AWS
come firma
che indica a Cloud Storage di aspettarsi la sintassi ACL utilizzando
Sintassi XML ACL Amazon S3. Devi assicurarti che le ACL di Amazon S3 che utilizzi siano mappate al modello ACL di Cloud Storage. Ad esempio, se i tuoi strumenti e le tue librerie utilizzano la sintassi ACL di Amazon S3 per concedere l'autorizzazione al bucket WRITE
, devono anche concedere l'autorizzazione al bucket READ
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 nelle seguenti scenari aggiuntivi:
- In una richiesta a Cloud Storage per recuperare gli ACL (ad esempio, un
GET
Oggetto o richiesta di bucketGET
), Cloud Storage restituisce Amazon S3 Sintassi ACL. - In una richiesta a Cloud Storage per applicare ACL (ad esempio una richiesta di
PUT
oggetto oPUT
bucket), Cloud Storage si aspetta di ricevere la sintassi ACL di Amazon S3.
L'intestazione Authorization
in uno scenario di migrazione semplice utilizza AWS
per
identificatore di firma, ma con il tuo ID di accesso Google.
Authorization: AWS4-HMAC-SHA256 Credential=GOOG-ACCESS-ID/CREDENTIAL_SCOPE, SignedHeaders=SIGNED_HEADERS, Signature=SIGNATURE
L'esempio seguente mostra una richiesta GET
da restituire a Cloud Storage
gli ACL di 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 l'ACL che utilizza la sintassi ACL 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 da impostare
gli ACL di un oggetto. L'esempio mostra un corpo della richiesta con la sintassi dell'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>jane@gmail.com</EmailAddress> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
Infine, in uno scenario di migrazione semplice, puoi anche utilizzare la firma GOOG1
nell'intestazione Authorization
. In questo caso, devi utilizzare la sintassi ACL di Cloud Storage e assicurarti che tutti gli intestazioni x-amz-*
siano impostati su x-goog-*
. Anche se è possibile, ti consigliamo di scegliere una migrazione completa per usufruire di tutti i vantaggi dello spazio di archiviazione sul cloud.
Supporto per la 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 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 sincronizzato un bucket Cloud Storage con Amazon S3.