Esta página é somente para clientes atuais do serviço Amazon Glacier que usam Vaults e a API REST original de 2012.
Se você estiver procurando por soluções de armazenamento de arquivos, recomendamos usar as classes de armazenamento Amazon Glacier no Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive. Para saber mais sobre essas opções de armazenamento, consulte as classes de armazenamento do Amazon Glacier
O Amazon Glacier (serviço autônomo original baseado em cofre) não aceitará mais novos clientes a partir de 15 de dezembro de 2025, sem impacto para os clientes existentes. O Amazon Glacier é um serviço independente APIs que armazena dados em cofres e é diferente das classes de armazenamento Amazon S3 e Amazon S3 Glacier. Seus dados existentes permanecerão seguros e acessíveis no Amazon Glacier indefinidamente. Nenhuma migração é necessária. Para armazenamento de arquivamento de baixo custo e longo prazo, AWS recomenda as classes de armazenamento Amazon S3 Glacier
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Solicitações de assinatura
O Amazon Glacier exige que você autentique todas as solicitações enviadas assinando a solicitação. Para assinar uma solicitação, calcule uma assinatura digital usando a função de hash criptográfico. Hash criptográfico é uma função que retorna um valor de hash exclusivo com base na entrada. A entrada da função de hash inclui o texto da solicitação e a chave de acesso secreta. A função de hash retorna um valor de hash que você inclui na solicitação como sua assinatura. A assinatura é parte do cabeçalho Authorization de sua solicitação.
Depois de receber sua solicitação, o Amazon Glacier recalcula a assinatura usando a mesma função de hash e entrada que você usou para assinar a solicitação. Se a assinatura resultante corresponder à assinatura na solicitação, o Amazon Glacier processará a solicitação. Do contrário, a solicitação é rejeitada.
O Amazon Glacier oferece suporte à autenticação usando a versão 4 do AWS Signature. O processo para calcular uma assinatura pode ser dividido em três tarefas:
-
Tarefa 1: Criar uma solicitação canônica
Reorganize sua solicitação HTTP em um formato canônico. O uso de um formulário canônico é necessário porque o Amazon Glacier usa o mesmo formulário canônico ao recalcular uma assinatura para compará-la com a que você enviou.
-
Tarefa 2: Criar uma string para assinar
Crie uma string que será usada como um dos valores de entrada para sua função hash criptográfica. A string, chamada string-to-sign, é uma concatenação do nome do algoritmo hash, da data da solicitação, de uma string do escopo da credencial e da solicitação canonizada da tarefa anterior. A cadeia de caracteres do escopo da credencial em si é uma concatenação de informações de data, AWS região e serviço.
-
Tarefa 3: Criar uma assinatura
Crie uma assinatura para sua solicitação usando uma função hash criptográfica que aceita duas strings de entrada: sua string para assinar e uma chave derivada. A chave derivada é calculada começando com sua chave de acesso secreta e usando a string do escopo da credencial para criar uma série de códigos de autenticação de mensagens baseados em hash ()HMACs. Observe que a função hash usada nessa etapa de assinatura não é o algoritmo de hash de árvore usado no Amazon Glacier que carrega dados. APIs
Cálculo de assinatura de exemplo
O exemplo a seguir mostra os detalhes da criação de uma assinatura para Create Vault (PUT vault). Esse exemplo pode ser usado como referência para verificar o método de cálculo da assinatura. Para obter mais informações, consulte Solicitações de AWS API de assinatura no Guia do usuário do IAM.
O exemplo supõe o seguinte:
-
O timestamp da solicitação é
Fri, 25 May 2012 00:24:53 GMT. -
O endpoint é a região Leste dos EUA (Norte da Virgínia)
us-east-1.
A sintaxe de solicitação geral (incluindo o corpo JSON) é:
PUT /-/vaults/examplevault HTTP/1.1 Host: glacier.us-east-1.amazonaws.com Date: Fri, 25 May 2012 00:24:53 GMT Authorization:SignatureToBeCalculatedx-amz-glacier-version: 2012-06-01
O formato canônico da solicitação calculada para Tarefa 1: Crie uma solicitação canônica é:
PUT /-/vaults/examplevault host:glacier.us-east-1.amazonaws.com x-amz-date:20120525T002453Z x-amz-glacier-version:2012-06-01 host;x-amz-date;x-amz-glacier-version e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
A última linha da solicitação canônica é o hash do corpo da solicitação. Além disso, observe a terceira linha vazia na solicitação canônica. Isso porque não há parâmetros de consulta para essa API.
A string para assinar para a Tarefa 2: Criar uma string para assinar é:
AWS4-HMAC-SHA256 20120525T002453Z 20120525/us-east-1/glacier/aws4_request 5f1da1a2d0feb614dd03d71e87928b8e449ac87614479332aced3a701f916743
A primeira linha da string-to-sign é o algoritmo, a segunda linha é a time stamp, a terceira linha é o escopo da credencial e a última linha é o hash da solicitação canônica da Tarefa 1: Crie uma solicitação canônica. O nome do serviço a usar no escopo da credencial é glacier.
Para a Tarefa 3: Criar uma assinatura, a chave derivada pode ser representada como:
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120525"),"us-east-1"),"glacier"),"aws4_request")
Se a chave de acesso secreta, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY, for usada, a assinatura calculada será:
3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
A etapa final é construir o cabeçalho Authorization. Para a chave de acesso de demonstração AKIAIOSFODNN7EXAMPLE, o cabeçalho (com quebras de linha adicionadas por motivo de legibilidade) é:
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120525/us-east-1/glacier/aws4_request, SignedHeaders=host;x-amz-date;x-amz-glacier-version, Signature=3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
Calcular assinaturas para as operações de streaming
Upload Archive (POST archive) e Upload Part (PUT uploadID) são operações de streaming que exigem que você inclua um cabeçalho adicional x-amz-content-sha256 ao assinar e enviar a solicitação. As etapas de assinatura das operações de streaming são exatamente as mesmas de outras operações, com a adição do cabeçalho de streaming.
O cálculo do cabeçalho de streaming x-amz-content-sha256 é baseado no SHA256 hash de todo o conteúdo (carga útil) que deve ser carregado. Observe que esse cálculo é diferente do hash (Computar somas de verificação) da SHA256 árvore. Além dos casos triviais, o valor de hash SHA 256 dos dados da carga útil será diferente do hash da SHA256 árvore dos dados da carga útil.
Se os dados da carga útil forem especificados como uma matriz de bytes, você poderá usar o seguinte trecho de código Java para calcular o hash. SHA256
public static byte[] computePayloadSHA256Hash2(byte[] payload) throws NoSuchAlgorithmException, IOException { BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(payload)); MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); byte[] buffer = new byte[4096]; int bytesRead = -1; while ( (bytesRead = bis.read(buffer, 0, buffer.length)) != -1 ) { messageDigest.update(buffer, 0, bytesRead); } return messageDigest.digest(); }
Da mesma forma, em C#, você pode calcular o SHA256 hash dos dados da carga, conforme mostrado no trecho de código a seguir.
public static byte[] CalculateSHA256Hash(byte[] payload) { SHA256 sha256 = System.Security.Cryptography.SHA256.Create(); byte[] hash = sha256.ComputeHash(payload); return hash; }
Cálculo da assinatura de exemplo para Streaming API
O exemplo a seguir mostra os detalhes da criação de uma assinatura para Upload Archive (POST archive) um dos dois streaming APIs no Amazon Glacier. O exemplo supõe o seguinte:
-
O timestamp da solicitação é
Mon, 07 May 2012 00:00:00 GMT. -
O endpoint é a região Leste dos EUA (Norte da Virgínia), eu-east-1.
-
A carga útil do conteúdo é uma string “Bem-vindo ao Amazon Glacier”.
A sintaxe da solicitação geral (inclusive o corpo JSON) é mostrada no exemplo abaixo. O cabeçalho x-amz-content-sha256 está incluído. Neste exemplo simplificado, x-amz-sha256-tree-hash e x-amz-content-sha256 têm o mesmo valor. No entanto, para uploads de arquivos maiores que 1 MB, este não é o caso.
POST /-/vaults/examplevault HTTP/1.1 Host: glacier.us-east-1.amazonaws.com Date: Mon, 07 May 2012 00:00:00 GMT x-amz-archive-description: my archive x-amz-sha256-tree-hash: SHA256 tree hash x-amz-content-sha256: SHA256 payload hash Authorization:SignatureToBeCalculatedx-amz-glacier-version: 2012-06-01
A forma canônica da solicitação calculada para Tarefa 1: Criar uma solicitação canônica é mostrada abaixo. O cabeçalho de streaming x-amz-content-sha256 é incluído com o valor. Isso significa que você deve ler a carga útil e calcular o SHA256 hash primeiro e depois calcular a assinatura.
POST /-/vaults/examplevault host:glacier.us-east-1.amazonaws.com x-amz-content-sha256:726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628 x-amz-date:20120507T000000Z x-amz-glacier-version:2012-06-01 host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version 726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628
O restante do cálculo da assinatura segue as etapas descritas em Cálculo de assinatura de exemplo. O cabeçalho Authorization que usa a chave de acesso secreta wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY e a chave de acesso AKIAIOSFODNN7EXAMPLE é mostrado abaixo (com quebras de linha adicionadas para fins de legibilidade):
Authorization=AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120507/us-east-1/glacier/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version, Signature=b092397439375d59119072764a1e9a144677c43d9906fd98a5742c57a2855de6