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.
- 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"). - Restaurar o objeto:
aws --endpoint-url $ENDPOINT s3api restore-object ---bucket $BUCKET --key $KEY --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Bulk"}}' - 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ç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ç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.