Arquivando e acessando dados frios

IBM Cloud® Object Storage "Archive" e "Accelerated Archive" são opções de baixo custo para dados raramente acessados. É possível armazenar dados executando a transição de qualquer uma das camadas de armazenamento (Standard, Vault, Cold Vault e Flex) para archive off-line de longo prazo ou usar a opção on-line Cold Vault. Com o novo recurso "Accelerated Archive", você pode acessar rapidamente dados inativos com a restauração ocorrendo em menos de duas horas.

Esse recurso não é suportado atualmente no Object Storage para Satellite. Saiba mais.

Os níveis Archive e Accelerated Archive têm uma duração mínima de armazenamento de 90 dias. Os objetos excluídos antes desse período ainda incorrerão em cobranças de armazenamento pelo período total de 90 dias.

Tanto o Archive quanto o Accelerated Archive têm um tamanho mínimo de objeto para faturamento de 128KBs. Os objetos menores do que isso ainda podem ser arquivados, mas serão cobrados de acordo com a taxa de tamanho de objeto 128KB.

Os objetos gravados no Vault ou no Cold Vault serão cobrados pela duração mínima total do armazenamento nessas camadas, mesmo que o objeto seja arquivado antes da duração mínima.

É possível arquivar objetos usando o console da web, a API de REST e as ferramentas de terceiros que são integradas ao IBM Cloud Object Storage.

Para obter mais informações sobre terminais, consulte Terminais e locais de armazenamento

Incluir ou gerenciar uma política de archive em um depósito

Ao criar ou modificar uma política de archive para um depósito, considere o seguinte:

  • Uma política de archive pode ser incluída em um depósito novo ou existente a qualquer momento.
  • Uma política de archive existente pode ser modificada ou desativada.
  • Uma política de archive recém-incluída ou modificada aplica-se a novos objetos transferidos por upload e não afeta objetos existentes.

Crie um bucket no console depois de fazer login e configure sua política de arquivamento.

Para arquivar imediatamente novos objetos transferidos por upload para um depósito, insira 0 dias na política de archive.

O archive está disponível somente em determinadas regiões. Consulte Serviços integrados para obter mais detalhes.

Restaurar um objeto arquivado

Para acessar um objeto arquivado, deve-se restaurá-lo para a camada de armazenamento original. Ao restaurar um objeto, é possível especificar o número de dias que você deseja que o objeto fique disponível. No término do período especificado, a cópia restaurada é excluída.

O processo de restauração para "Accelerated Archive" leva até 2 horas, enquanto o processo de restauração para Archive leva até 12 horas.

Os subestados do objeto arquivado são:

  • Arquivado: um objeto no estado arquivado foi movido de sua camada de armazenamento on-line (Standard, Vault, Cold Vault e Flex) para a camada de archive off-line, com base na política de archive no depósito.
  • Restaurando: um objeto no estado restaurando está no processo de geração de uma cópia do estado arquivado para sua camada de armazenamento on-line original.
  • Restaurado: um objeto no estado restaurado é uma cópia do objeto arquivado que foi restaurada para sua camada de armazenamento on-line original por um período de tempo especificado. No término do período, a cópia do objeto é excluída, enquanto mantém o objeto arquivado.

Restaurando um objeto usando a CLI do AWS

Os exemplos a seguir usam variáveis de ambiente para maior clareza: Eles devem ser configurados para os valores desejados; por exemplo, $ENDPOINT seria configurado para https://s3.us.cloud-object-storage.appdomain.cloud ou https://s3.eu-de.private.cloud-object-storage.appdomain.cloud ou qualquer outro valor necessário.

  1. Verifique o status do objeto: aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEY. A classe de armazenamento será mostrada como ("StorageClass": "GLACIER").
  2. Restaurar o objeto: aws --endpoint-url $ENDPOINT s3api restore-object ---bucket $BUCKET --key $KEY --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Bulk"}}'
  3. Verifique o status: aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEY

Limitações

As políticas de archive são implementadas usando o subconjunto da operação de API S3 PUT Bucket Lifecycle Configuration.

A funcionalidade suportada inclui:

  • Especificar uma data ou o número de dias no futuro quando os objetos executam a transição para um estado arquivado.
  • Configurar regras de expiração para objetos.

Políticas que especificam uma data no passado podem levar alguns dias para serem concluídas.

A funcionalidade não suportada inclui:

  • Múltiplas regras de transição por depósito.
  • Filtrar objetos para archive usando um prefixo ou chave do objeto.
  • Definição de camada entre as classes de armazenamento.

Os usuários da Infraestrutura Clássica (não IAM) não podem configurar a classe de armazenamento de transição para ACCELERATED.

Usando a API de REST e SDKs

Criar uma configuração de ciclo de vida do depósito

Essa implementação da operação PUT usa o parâmetro de consulta lifecycle para definir as configurações de ciclo de vida para o depósito. Essa operação permite uma definição de política de ciclo de vida única para um determinado depósito. A política é definida como uma regra que consiste nos parâmetros a seguir: ID, Status e Transition.

A ação de transição permite que objetos futuros sejam gravados no depósito em um estado arquivado após um período de tempo definido. As mudanças na política de ciclo de vida de um depósito são aplicadas somente a novos objetos gravados nesse depósito.

Os usuários do Cloud IAM devem ter no mínimo a função Writer para incluir uma política de ciclo de vida no depósito.

Os usuários da infraestrutura clássica devem ter Permissões de proprietário e ser capazes de criar depósitos na conta de armazenamento para incluir uma política de ciclo de vida no depósito.

Essa operação não faz uso de parâmetros adicionais de consulta específicos da operação.

Cabeçalhos opcionais
Cabeçalho Tipo Descrição
Content-MD5 Sequência O base64 codificou o hash MD5 de 128 bits da carga útil, que é usado como uma verificação de integridade para garantir que a carga útil não foi alterada em trânsito.
x-amz-checksum-crc32 Sequência Esse cabeçalho é a soma de verificação Base64 codificada e de 32 bits CRC32 do objeto.
x-amz-checksum-crc32c Sequência Esse cabeçalho é a soma de verificação Base64 codificada e de 32 bits CRC32C do objeto.
x-amz-checksum-crc64nvme Sequência Esse cabeçalho é a soma de verificação Base64 codificada e de 64 bits CRC64NVME do objeto. A soma de verificação CRC64NVME é sempre uma soma de verificação completa do objeto.
x-amz-checksum-sha1 Sequência Esse cabeçalho é o Base64 codificado, 160 bits SHA1 digest do objeto.
x-amz-checksum-sha256 Sequência Esse cabeçalho é o Base64 codificado, 256 bits SHA256 digest do objeto.
x-amz-sdk-checksum-algorithm Sequência Indica o algoritmo usado para criar a soma de verificação do objeto ao usar o SDK.

Um cabeçalho Content-MD5 ou um cabeçalho checksum (incluindo x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-crc64nvme, x-amz-checksum-sha1 ou x-amz-checksum-sha256) é necessário como uma verificação de integridade para a carga útil.

O corpo da solicitação deve conter um bloco XML com o esquema a seguir:

Elemento Tipo Filhos Antecessor Restrição
LifecycleConfiguration Contêiner Rule Nenhum Limite 1.
Rule Contêiner ID, Status, Filter, Transition LifecycleConfiguration Limite 1.
ID Sequência Nenhum Rule Deve consistir em (a-z,A-Z, 0-9) e nos símbolos a seguir: ! _ . * ' ( ) -
Filter Sequência Prefix Rule Deve conter um elemento Prefix
Prefix Sequência Nenhum Filter Deve ser definido como <Prefix/>.
Transition Container Days, StorageClass Rule Limite 1 regra de transição e um máximo de 1000 regras totais
Days Número inteiro não negativo Nenhum Transition Deve ser um valor igual a ou maior que 0.
Date Data Nenhum Transistion Deve estar no formato ISO 8601 e a data deve estar no futuro.
StorageClass Sequência Nenhum Transition GLACIER ou ACCELERATED

Sintaxe

PUT https://{endpoint}/{bucket}?lifecycle # path style
PUT https://{bucket}.{endpoint}?lifecycle # virtual host style
<LifecycleConfiguration>
	<Rule>
		<ID>{string}</ID>
		<Status>Enabled</Status>
		<Filter>
			<Prefix/>
		</Filter>
		<Transition>
			<Days>{integer}</Days>
			<StorageClass>{StorageClass}</StorageClass>
		</Transition>
	</Rule>
</LifecycleConfiguration>

Exemplos

Solicitação de amostra

PUT /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 17:50:00 GMT
Authorization: authorization string
Content-Type: text/plain
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Content-Length: 305
<LifecycleConfiguration>
    <Rule>
        <ID>my-archive-policy</ID>
        <Filter>
			<Prefix/>
		</Filter>
        <Status>Enabled</Status>
        <Transition>
            <Days>20</Days>
            <StorageClass>ACCELERATED</StorageClass>
        </Transition>
    </Rule>
</LifecycleConfiguration>

Resposta de amostra

HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 17:51:00 GMT
Connection: close
var params = {
  Bucket: 'STRING_VALUE', /* required */
  LifecycleConfiguration: {
    Rules: [ /* required */
      {
        Status: 'Enabled', /* required */
        ID: 'STRING_VALUE',
        Filter: '', /* required */
        Prefix: '',
        Transitions: [
          {
            Date: DATE, /* required if Days not specified */
            Days: 0, /* required if Date not specified */
            StorageClass: 'STRING_VALUE' /* required */
          },
        ]
      },
    ]
  }
};

s3.putBucketLifecycleConfiguration(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
response = client.put_bucket_lifecycle_configuration(
    Bucket='string',
    LifecycleConfiguration={
        'Rules': [
            {
                'ID': 'string',
                'Status': 'Enabled',
                'Filter': '',
                'Prefix': '',
                'Transitions': [
                    {
                        'Date': datetime(2015, 1, 1),
                        'Days': 123,
                        'StorageClass': 'GLACIER'
                    },
                ]
            },
        ]
    }
)
public SetBucketLifecycleConfigurationRequest(String bucketName,
                                              BucketLifecycleConfiguration lifecycleConfiguration)

Resumo de método

Método Descrição
getBucketName() Obtém o nome do depósito cuja configuração de ciclo de vida está sendo configurada.
getLifecycleConfiguration() Obtém a nova configuração de ciclo de vida para o depósito especificado.
setBucketName(String bucketName) Configura o nome do depósito cuja configuração de ciclo de vida está sendo configurada.
withBucketName(String bucketName) Configura o nome do depósito cuja configuração de ciclo de vida está sendo configurada e retorna esse objeto para que chamadas de método adicionais possam ser encadeadas juntas.

Recuperar uma configuração de ciclo de vida do depósito

Essa implementação da operação GET usa o parâmetro de consulta lifecycle para recuperar as configurações de ciclo de vida para o depósito.

Os usuários do Cloud IAM devem ter no mínimo a função Reader para recuperar um ciclo de vida para um depósito.

Os usuários da infraestrutura clássica devem ter no mínimo permissões Read no depósito para recuperar uma política de ciclo de vida para um depósito.

Essa operação não faz uso de cabeçalhos, parâmetros de consulta ou carga útil específicos da operação adicionais.

Sintaxe

GET https://{endpoint}/{bucket}?lifecycle # path style
GET https://{bucket}.{endpoint}?lifecycle # virtual host style

Exemplos

Solicitação de amostra

GET /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 17:50:00 GMT
Authorization: authorization string

Resposta de amostra

HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 17:51:00 GMT
Connection: close
<LifecycleConfiguration>
    <Rule>
        <ID>my-archive-policy</ID>
        <Filter />
        <Status>Enabled</Status>
        <Transition>
            <Days>20</Days>
            <StorageClass>GLACIER</StorageClass>
        </Transition>
    </Rule>
</LifecycleConfiguration>
var params = {
  Bucket: 'STRING_VALUE' /* required */
};
s3.getBucketLifecycleConfiguration(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
response = client.get_bucket_lifecycle_configuration(Bucket='string')
public GetBucketLifecycleConfigurationRequest(String bucketName)

Excluir uma configuração de ciclo de vida do depósito

Essa implementação da operação DELETE usa o parâmetro de consulta lifecycle para remover quaisquer configurações de ciclo de vida para o depósito. As transições definidas pelas regras não ocorrerão mais para novos objetos.

Nota: as regras de transição existentes serão mantidas para objetos que já foram gravados no depósito antes que as regras fossem excluídas.

Os usuários do Cloud IAM devem ter no mínimo a função Writer para remover uma política de ciclo de vida de um depósito.

Os usuários da infraestrutura clássica devem ter permissões Owner no depósito para remover uma política de ciclo de vida de um depósito.

Essa operação não faz uso de cabeçalhos, parâmetros de consulta ou carga útil específicos da operação adicionais.

Sintaxe

DELETE https://{endpoint}/{bucket}?lifecycle # path style
DELETE https://{bucket}.{endpoint}?lifecycle # virtual host style

Exemplos

Solicitação de amostra

DELETE /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 18:50:00 GMT
Authorization: authorization string

Resposta de amostra

HTTP/1.1 204 No Content
Date: Wed, 7 Feb 2018 18:51:00 GMT
Connection: close
var params = {
  Bucket: 'STRING_VALUE' /* required */
};
s3.deleteBucketLifecycle(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
response = client.delete_bucket_lifecycle(Bucket='string')
public DeleteBucketLifecycleConfigurationRequest(String bucketName)

Restaurar temporariamente um objeto arquivado

Essa implementação da operação POST usa o parâmetro de consulta restore para solicitar a restauração temporária de um objeto arquivado. O usuário deve primeiro restaurar um objeto arquivado antes de fazer download ou modificar o objeto. Ao restaurar um objeto, o usuário deve especificar um período após o qual a cópia temporária do objeto será excluída. O objeto mantém a classe de armazenamento do depósito.

Pode haver um atraso de até 12 horas antes que a cópia restaurada esteja disponível para acesso. Uma solicitação HEAD poderá verificar se a cópia restaurada está disponível.

Para restaurar permanentemente o objeto, o usuário deve copiar o objeto restaurado para um depósito que não tenha uma configuração de ciclo de vida ativa.

Os usuários do Cloud IAM devem ter no mínimo a função Writer para restaurar um objeto.

Os usuários da infraestrutura clássica devem ter no mínimo as permissões Write no depósito e a permissão Read no objeto para restaurá-lo.

Essa operação não faz uso de parâmetros adicionais de consulta específicos da operação.

Cabeçalhos opcionais
Cabeçalho Tipo Descrição
Content-MD5 Sequência O base64 codificou o hash MD5 de 128 bits da carga útil, que é usado como uma verificação de integridade para garantir que a carga útil não foi alterada em trânsito.
x-amz-checksum-crc32 Sequência Esse cabeçalho é a soma de verificação Base64 codificada e de 32 bits CRC32 do objeto.
x-amz-checksum-crc32c Sequência Esse cabeçalho é a soma de verificação Base64 codificada e de 32 bits CRC32C do objeto.
x-amz-checksum-crc64nvme Sequência Esse cabeçalho é a soma de verificação Base64 codificada e de 64 bits CRC64NVME do objeto. A soma de verificação CRC64NVME é sempre uma soma de verificação completa do objeto.
x-amz-checksum-sha1 Sequência Esse cabeçalho é o Base64 codificado, 160 bits SHA1 digest do objeto.
x-amz-checksum-sha256 Sequência Esse cabeçalho é o Base64 codificado, 256 bits SHA256 digest do objeto.
x-amz-sdk-checksum-algorithm Sequência Indica o algoritmo usado para criar a soma de verificação do objeto ao usar o SDK.

O corpo da solicitação deve conter um bloco XML com o esquema a seguir:

Elemento Tipo Filhos Antecessor Restrição
RestoreRequest Contêiner Days, GlacierJobParameters Nenhum Nenhum
Days Integer Nenhum RestoreRequest Especificado o tempo de vida do objeto temporariamente restaurado. O número mínimo de dias para que uma cópia restaurada do objeto possa existir é 1. Após o período de restauração, a cópia temporária do objeto será removida.
GlacierJobParameters Sequência Tier RestoreRequest Nenhum
Tier Sequência Nenhum GlacierJobParameters Opcional e, se for deixado em branco, o padrão será o valor associado à camada de armazenamento da política que estava em vigor quando o objeto foi gravado. Se esse valor não for deixado em branco, ele deverá ser configurado como Bulk se a classe de armazenamento de transição para a política de ciclo de vida do depósito foi configurada como GLACIER e deverá ser configurado como Accelerated se a classe de armazenamento de transição foi configurada como ACCELERATED.

Uma resposta bem-sucedida retornará um 202 se o objeto estiver no estado arquivado e em um 200 se o objeto já estiver no estado restaurado. Se o objeto já estiver no estado restaurado e uma nova solicitação para restaurar o objeto for recebida, o elemento Days atualizará o prazo de expiração do objeto restaurado.

Sintaxe

POST https://{endpoint}/{bucket}/{object}?restore # path style
POST https://{bucket}.{endpoint}/{object}?restore # virtual host style
<RestoreRequest>
	<Days>{integer}</Days>
	<GlacierJobParameters>
		<Tier>Bulk</Tier>
	</GlacierJobParameters>
</RestoreRequest>

Exemplos

Solicitação de amostra

POST /images/backup?restore HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 19:50:00 GMT
Authorization: {authorization string}
Content-Type: text/plain
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Content-Length: 305
<RestoreRequest>
	<Days>3</Days>
	<GlacierJobParameters>
		<Tier>Bulk</Tier>
	</GlacierJobParameters>
</RestoreRequest>

Resposta de amostra

HTTP/1.1 202 Accepted
Date: Wed, 7 Feb 2018 19:51:00 GMT
Connection: close
var params = {
  Bucket: 'STRING_VALUE', /* required */
  Key: 'STRING_VALUE', /* required */
  ContentMD5: 'STRING_VALUE', /* required */
  RestoreRequest: {
   Days: 1, /* days until copy expires */
   GlacierJobParameters: {
     Tier: 'STRING_VALUE' /* required */
   },
  }
 };
 s3.restoreObject(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
});
response = client.restore_object(
    Bucket='string',
    Key='string',
    RestoreRequest={
        'Days': 123,
        'GlacierJobParameters': {
            'Tier': 'string'
        },
    }
)
public RestoreObjectRequest(String bucketName,
                            String key,
                            int expirationInDays)

Resumo de método

Método Descrição
clone() Cria um clone superficial desse objeto para todos os campos, exceto o contexto do manipulador.
getBucketName() Retorna o nome do depósito contendo a referência ao objeto a ser restaurado.
getExpirationInDays() Retorna o tempo em dias da criação de um objeto à sua expiração.
setExpirationInDays(int expirationInDays) Configura o tempo, em dias, entre quando um objeto é transferido por upload para o depósito e quando ele expira.

Obter cabeçalhos de um objeto

Um HEAD fornecido em um caminho para um objeto recupera os cabeçalhos desse objeto. Essa operação não faz uso de parâmetros de consulta ou elementos de carga útil específicos da operação.

Sintaxe

HEAD https://{endpoint}/{bucket-name}/{object-name} # path style
HEAD https://{bucket-name}.{endpoint}/{object-name} # virtual host style

Cabeçalhos de resposta para objetos arquivados

Cabeçalho Tipo Descrição
x-amz-restore string Incluído se o objeto tiver sido restaurado ou se uma restauração estiver em andamento. Se o objeto tiver sido restaurado, a data de validade para a cópia temporária também será retornada.
x-amz-storage-class string Retorna GLACIER ou ACCELERATED se estiver arquivado ou restaurado temporariamente.
x-ibm-archive-transition-time data Retorna a data e hora em que o objeto está planejado para fazer a transição para a camada de archive.
x-ibm-transition string Incluído se o objeto tiver metadados de transição e retornar a camada e o horário original de transição.
x-ibm-restored-copy-storage-class string Incluído se um objeto estiver nos estados RestoreInProgress ou Restored e retornará a classe de armazenamento do depósito.

Solicitação de amostra

HEAD /images/backup HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20160825T183244Z
Host: s3.us.cloud-object-storage.appdomain.cloud

Resposta de amostra

HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 19:51:00 GMT
X-Clv-Request-Id: da214d69-1999-4461-a130-81ba33c484a6
Accept-Ranges: bytes
Server: 3.x
X-Clv-S3-Version: 2.5
ETag: "37d4c94839ee181a2224d6242176c4b5"
Content-Type: text/plain; charset=UTF-8
Last-Modified: Thu, 25 Aug 2017 17:49:06 GMT
Content-Length: 11
x-ibm-transition: transition="ARCHIVE", date="Mon, 03 Dec 2018 22:28:38 GMT"
x-amz-restore: ongoing-request="false", expiry-date="Thu, 06 Dec 2018 18:28:38 GMT"
x-amz-storage-class: "GLACIER"
x-ibm-restored-copy-storage-class: "Standard"
response = client.head_object(
    Bucket='string',
    Key='string'
)
var params = {
  Bucket: 'STRING_VALUE', /* required */
  Key: 'STRING_VALUE', /* required */
};
s3.headObject(params, function(err,data) {
  if (err) console.log(err, err.stack); // an error occurred
  else
    console.log(data);           // successful response
});
public ObjectMetadata()

Resumo de método

Método Descrição
clone() Retorna um clone desse ObjectMetadata.
getRestoreExpirationTime() Retorna o tempo no qual um objeto que foi restaurado temporariamente do ARCHIVE expirará e precisará ser restaurado novamente para ser acessado.
getStorageClass() Retorna a classe de armazenamento original do depósito.
getIBMTransition() Retorne a classe de armazenamento de transição e o tempo de transição.

Próximas etapas

Além do armazenamento a frio, o IBM Cloud atualmente oferece várias classes adicionais de armazenamento de objetos para diferentes necessidades do usuário, todas acessíveis por meio de portais baseados na Web e APIs RESTful. Saiba mais sobre todas as classes de armazenamento disponíveis em IBM Cloud Object Storage.