Nesta página, você aprenderá como fazer a migração completa do Amazon Simple Storage Service (Amazon S3) para o Cloud Storage, se você for um usuário que envia solicitações usando uma API. Após a migração, será possível usar todos os recursos do Cloud Storage, incluindo vários projetos e o OAuth 2.0 para autenticação.
Se você quiser começar a usar o Cloud Storage rapidamente, escolha uma migração simples, que requer apenas algumas alterações simples nas ferramentas e bibliotecas que você usa atualmente com o Amazon S3.
Migrar do Amazon S3 para o Cloud Storage
Para migrar totalmente do Amazon S3 para o Cloud Storage, siga estas etapas:
- Altere os cabeçalhos
x-amz-*
atuais para os cabeçalhosx-goog-*
correspondentes. - Mude o XML de ACL do AWS para o XML de ACL do Cloud Storage correspondente. Consulte Como criar e gerenciar listas de controle de acesso.
- Defina o cabeçalho x-goog-project-id em suas solicitações.
Prepare-se para usar a autenticação do OAuth 2.0, conforme descrito em Autenticação do OAuth 2.0. O primeiro passo é registrar o aplicativo que emitirá as solicitações no Google. Usar OAuth 2.0 significa que o cabeçalho
Authorization
será semelhante ao abaixo:Authorization: Bearer OAUTH2_TOKEN
O OAuth 2.0 depende do SSL para segurança, em vez de exigir que seu aplicativo faça assinaturas criptográficas diretamente, além de ser mais fácil de implementar. Com ele, o aplicativo pode solicitar acesso a dados associados à conta de um usuário, e o acesso pode ser definido em vários níveis, incluindo somente leitura, leitura e gravação, e controle total. Para mais informações, consulte Escopos OAuth 2.0 do Cloud Storage e Acessar dados em nome de um usuário.
Controle de acesso
Nesta seção, mostraremos alguns exemplos de controle de acesso para ajudá-lo a migrar do Amazon S3 para o Cloud Storage. Para uma visão geral do controle de acesso no Cloud Storage, consulte Controle de acesso.
No Cloud Storage, há várias maneiras de aplicar ACLs a buckets e objetos. Consulte Como criar e gerenciar listas de controle de acesso. Duas das formas de especificar ACLs são semelhantes ao que é feito no Amazon S3:
- O parâmetro de string de consulta
acl
permite aplicar ACLs para escopos específicos. - O cabeçalho de solicitação
x-goog-acl
permite aplicar ACLs predefinidas, que às vezes são conhecidas como ACLs automáticas.
Como usar o parâmetro de string de consulta "acl"
É possível usar o parâmetro de string de consulta acl
na solicitação do Cloud Storage exatamente da mesma forma que ele é utilizado na solicitação do Amazon S3. O parâmetro acl
é usado junto com o método PUT
para aplicar ACLs aos seguintes elementos: um objeto atual, um bucket atual ou um bucket que está sendo criado. Ao usar o parâmetro de string de consulta acl
em uma solicitação PUT
, é necessário anexar um documento XML (usando a sintaxe de ACL do Cloud Storage) ao corpo da solicitação. O documento XML contém as entradas de ACL individuais que você quer aplicar ao bucket ou objeto.
Veja no exemplo abaixo uma solicitação PUT
para o Amazon S3 que usa o parâmetro de string de consulta acl
. As ACLs são definidas em um documento XML enviado no corpo da solicitação. A solicitação PUT
altera as ACLs em um objeto chamado europe/france/paris.jpg
, que está em um bucket chamado my-travel-maps
. A ACL concede a permissão 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>
A seguir, a mesma solicitação para o 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>
O Cloud Storage não exige um elemento <Owner/>
no documento XML da ACL. Para mais informações, consulte Propriedade do bucket e do objeto.
Também é possível recuperar as ACLs de intervalos e objetos usando o parâmetro de string de consulta acl
com o método GET
. As ACLs são descritas em um documento XML, que está anexado ao corpo da resposta. É necessário ter a permissão FULL_CONTROL
para aplicar ou recuperar ACLs em um objeto ou bucket.
Aplicar ACLs com um cabeçalho de solicitação de extensão
É possível usar o cabeçalho x-goog-acl
na solicitação do Cloud Storage para aplicar ACLs predefinidas a buckets e objetos exatamente da mesma forma que o cabeçalho x-amz-acl
é usado na solicitação do Amazon S3. Normalmente, usa-se o
cabeçalho x-goog-acl
(x-amz-acl
) para aplicar uma ACL predefinida a um bucket ou
objeto ao criá-lo ou fazer upload dele. As
ACLs predefinidas do Cloud Storage são semelhantes às ACLs pré-configuradas
do Amazon S3, incluindo as opções privada, de leitura pública, de leitura e gravação públicas,
entre outras. Para ver a lista de ACLs predefinidas do Cloud Storage, consulte
ACLs predefinidas.
O exemplo a seguir mostra uma solicitação de objeto PUT
que aplica a ACL public-read
a um objeto chamado europe/france/paris.jpg
, que está sendo enviado para um bucket chamado my-travel-maps
no 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>
Veja abaixo a mesma solicitação para o 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>
Também é possível usar o cabeçalho x-goog-acl
para aplicar uma ACL predefinida a um bucket ou objeto atual. Para fazer isso, inclua o parâmetro de string de consulta acl
na sua solicitação, mas não inclua um documento XML nela. Aplicar uma ACL predefinida a um objeto ou bucket atual é útil se você quiser mudar de uma ACL predefinida para outra ou atualizar ACLs personalizadas para uma predefinida. Por exemplo, a solicitação de objeto PUT
a seguir aplica a ACL predefinida private
a um objeto chamado europe/france/paris.jpg
, que está em um bucket chamado 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>
Para mais informações sobre o gerenciamento de ACLs, consulte Como criar e gerenciar listas de controle de acesso.
Migrar dos métodos de solicitação do Amazon S3 para os do Cloud Storage
O Cloud Storage aceita os mesmos métodos de solicitação HTTP padrão para ler e gravar dados em buckets que são utilizados no Amazon S3. Portanto, a maioria das ferramentas e bibliotecas que você usa atualmente com o Amazon S3 funciona no Cloud Storage, sem a necessidade de alterações. O Cloud Storage aceita os métodos de solicitação a seguir:
- Solicitação de serviço para
GET
- Solicitações de bucket, incluindo
PUT
,GET
eDELETE
- Solicitações de objetos, incluindo
GET
,POST
,PUT
,HEAD
eDELETE
Para mais informações, consulte Métodos de referência da API XML. Lembre-se de que ao enviar solicitações para o Cloud Storage, é necessário alterar o corpo da solicitação, quando aplicável, para usar a sintaxe apropriada do Cloud Storage. Por exemplo, ao criar uma configuração de ciclo de vida para um bucket, use o XML do ciclo de vida do Cloud Storage, que é diferente daquele do Amazon S3.
Há algumas diferenças entre a API XML do Cloud Storage e o Amazon S3, que estão resumidas abaixo:
Funcionalidade do Amazon S3 | Funcionalidade da API XML do Cloud Storage |
---|---|
Ao usar chaves de criptografia fornecidas pelo cliente em um upload de várias partes, a solicitação final não inclui a chave de criptografia fornecida pelo cliente. | Na API XML do Cloud Storage, todas as solicitações em um upload de várias partes, incluindo a solicitação final, exigem que você forneça a mesma chave de criptografia fornecida pelo cliente. Esse requisito existe porque o Cloud Storage não armazena as informações da chave de criptografia enquanto aguarda a solicitação completar o upload, mas requer que a chave calcule uma soma de controle para o objeto concluído. |
No Amazon S3, é possível usar assinaturas V4 para autenticar uploads que usam codificação de transferência em partes. | Na API XML do Cloud Storage, a codificação de transferência fragmentada e as assinaturas V4 não podem ser usadas simultaneamente. Por padrão, algumas ferramentas do Amazon S3 usam a codificação de transferência fragmentada juntamente com assinaturas. Nesse caso, desative a codificação de transferência fragmentada. |
Parâmetros da string de consulta de bucket GET/POST:
|
Alternativas:
|
Exclusão de vários objetos. POST /?delete |
Use o console do Google Cloud para remover facilmente vários objetos. Como alternativa, a API JSON aceita o envio de solicitações em lote para reduzir o número de conexões HTTP feitas por seu cliente. |
Migrar cabeçalhos do Amazon S3 para o Cloud Storage
O Cloud Storage usa vários cabeçalhos HTTP padrão, além de diversos cabeçalhos HTTP personalizados (extensão). Na migração do Amazon S3 para o Cloud Storage, é possível converter cabeçalhos personalizados do Amazon S3 em cabeçalhos personalizados equivalentes do Cloud Storage ou em uma funcionalidade semelhante, conforme mostrado nas tabelas abaixo.
Para muitos cabeçalhos do Amazon S3, basta substituir o prefixo x-amz
por x-goog
:
Cabeçalho do Amazon S3 | Cabeçalho do 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 |
Vários cabeçalhos são diferentes ou não se aplicam ao Cloud Storage:
Cabeçalho do Amazon S3 | Cabeçalho do Cloud Storage |
---|---|
x-amz-server-side-encryption |
Não é obrigatório. Todos os dados do Cloud Storage são criptografados automaticamente antes de serem gravados no disco. Para mais informações, consulte Criptografia. |
x-amz-grant-* |
x-goog-acl com um valor de ACL predefinido. |
x-amz-version-id |
x-goog-generation |
x-amz-mfa |
Use a autenticação do OAuth 2.0. |
x-amz-decoded-content-length |
Não é aceito como cabeçalho x-goog |
x-amz-website-redirect-location , x-amz-copy-source-range |
n/a |
Consulte os cabeçalhos HTTP e parâmetros de string de consulta da API XML para uma referência aos cabeçalhos do Cloud Storage.
A seguir
- Planeje uma migração do Amazon S3.
- Transfira seus dados para o Cloud Storage de fontes externas, como o Amazon S3 e o Armazenamento de Blobs do Azure da Microsoft, usando o Serviço de transferência do Cloud Storage.
- Crie transferências orientadas por eventos que usam as notificações de eventos do Amazon S3 para manter um bucket do Cloud Storage sincronizado com o Amazon S3.