Gerenciar o ciclo de vida de armazenamento de BLOBs do AzureManage the Azure Blob storage lifecycle

Conjuntos de dados têm ciclos de vida exclusivos.Data sets have unique lifecycles. No início do ciclo de vida, as pessoas geralmente acessam alguns dados.Early in the lifecycle, people access some data often. Mas a necessidade de acesso cai drasticamente à medida que os dados envelhecem.But the need for access drops drastically as the data ages. Alguns dados permanecem ociosos na nuvem e raramente são acessados depois de armazenados.Some data stays idle in the cloud and is rarely accessed once stored. Alguns dados expiram dias ou meses após a criação, enquanto outros conjuntos de dados são lidos e modificados ativamente durante seu tempo de vida.Some data expires days or months after creation, while other data sets are actively read and modified throughout their lifetimes. O gerenciamento do ciclo de vida do armazenamento de BLOBs do Azure oferece uma política avançada baseada em regras para contas de armazenamento de BLOBs e GPv2.Azure Blob storage lifecycle management offers a rich, rule-based policy for GPv2 and Blob storage accounts. Use a política para fazer a transição de seus dados para as camadas de acesso apropriadas ou expirá-los ao final do ciclo de vida dos dados.Use the policy to transition your data to the appropriate access tiers or expire at the end of the data's lifecycle.

A política de gerenciamento do ciclo de vida permite:The lifecycle management policy lets you:

  • Fazer a transição dos blobs para uma camada de armazenamento mais esporádico (frequente para esporádico, frequente para arquivos ou esporádico para arquivos), a fim de otimizar o desempenho e os custosTransition blobs to a cooler storage tier (hot to cool, hot to archive, or cool to archive) to optimize for performance and cost
  • Excluir os blobs no final dos respectivos ciclos de vidaDelete blobs at the end of their lifecycles
  • Definir regras a serem executadas uma vez por dia no nível da conta de armazenamentoDefine rules to be run once per day at the storage account level
  • Aplicar regras a contêineres ou a um subconjunto de blobs (usando prefixos como filtros)Apply rules to containers or a subset of blobs (using prefixes as filters)

Considere um cenário em que os dados recebem acesso frequente durante os estágios iniciais do ciclo de vida, mas apenas ocasionalmente após duas semanas.Consider a scenario where data gets frequent access during the early stages of the lifecycle, but only occasionally after two weeks. Após o primeiro mês, o conjunto de dados raramente é acessado.Beyond the first month, the data set is rarely accessed. Nesse cenário, o armazenamento frequente é melhor durante os estágios iniciais.In this scenario, hot storage is best during the early stages. O armazenamento frio é mais apropriado para acesso ocasional.Cool storage is most appropriate for occasional access. O armazenamento de arquivos é a melhor opção de camada depois que os dados ficam em um mês.Archive storage is the best tier option after the data ages over a month. Ajustando as camadas de armazenamento em relação à idade dos dados, você pode criar as opções de armazenamento menos dispendiosas para suas necessidades.By adjusting storage tiers in respect to the age of data, you can design the least expensive storage options for your needs. Para conseguir essa transição, as regras de política de gerenciamento do ciclo de vida estão disponíveis para mover os dados antigos para camadas mais frias.To achieve this transition, lifecycle management policy rules are available to move aging data to cooler tiers.

Observação

Os recursos descritos neste artigo agora estão disponíveis para contas que têm um namespace hierárquico.The features described in this article are now available to accounts that have a hierarchical namespace. Para examinar as limitações, confira o artigo Problemas conhecidos com o Azure Data Lake Storage Gen2.To review limitations, see the Known issues with Azure Data Lake Storage Gen2 article.

Suporte da conta de armazenamentoStorage account support

A política de gerenciamento do ciclo de vida está disponível com contas do Uso Geral v2 (GPv2), contas de armazenamento de BLOBs e contas de armazenamento de blob de blocos Premium.The lifecycle management policy is available with General Purpose v2 (GPv2) accounts, Blob storage accounts, and Premium Block Blob storage accounts. No portal do Azure, você pode atualizar uma conta de Uso Geral (GPv1) existente para uma conta do GPv2.In the Azure portal, you can upgrade an existing General Purpose (GPv1) account to a GPv2 account. Para saber mais sobre as contas de armazenamento, confira Visão geral da conta de armazenamento do Azure.For more information about storage accounts, see Azure storage account overview.

PreçosPricing

O recurso de gerenciamento do ciclo de vida é gratuito.The lifecycle management feature is free of charge. O custo de operação normal para as chamadas à API Listar Blobs e Definir Camada de Blob é cobrado dos clientes.Customers are charged the regular operation cost for the List Blobs and Set Blob Tier API calls. A operação de exclusão é gratuita.Delete operation is free. Para obter mais informações sobre preços, confira Preços do Blob de Blocos.For more information about pricing, see Block Blob pricing.

Disponibilidade regionalRegional availability

O recurso de gerenciamento do ciclo de vida está disponível em todas as regiões do Azure.The lifecycle management feature is available in all Azure regions.

Adicionar ou remover uma políticaAdd or remove a policy

Você pode adicionar, editar ou remover uma política usando qualquer um dos seguintes métodos:You can add, edit, or remove a policy by using any of the following methods:

Este artigo mostra como gerenciar a política usando os métodos do portal e do PowerShell.This article shows how to manage policy by using the portal and PowerShell methods.

Observação

Se você habilitar as regras de firewall para sua conta de armazenamento, as solicitações de gerenciamento do ciclo de vida poderão ser bloqueadas.If you enable firewall rules for your storage account, lifecycle management requests may be blocked. Você pode desbloquear essas solicitações fornecendo exceções para serviços confiáveis da Microsoft.You can unblock these requests by providing exceptions for trusted Microsoft services. Para obter mais informações, confira a seção Exceções em Configurar firewalls e redes virtuais.For more information, see the Exceptions section in Configure firewalls and virtual networks.

Há duas maneiras de adicionar uma política por meio do portal do Azure.There are two ways to add a policy through the Azure portal.

Exibição de lista de portal do AzureAzure portal List view

  1. Entre no portal do Azure.Sign in to the Azure portal.

  2. Selecione todos os recursos e, em seguida, selecione sua conta de armazenamento.Select All resources and then select your storage account.

  3. Em serviço blob, selecione Gerenciamento de ciclo de vida para exibir ou alterar suas regras.Under Blob Service, select Lifecycle management to view or change your rules.

  4. Selecione a guia exibição de lista .Select the List view tab.

  5. Selecione Adicionar regra e preencha os campos de formulário do conjunto de ações .Select Add rule and then fill out the Action set form fields. No exemplo a seguir, os BLOBs são movidos para o armazenamento frio, caso não tenham sido modificados por 30 dias.In the following example, blobs are moved to cool storage if they haven't been modified for 30 days.

    Página conjunto de ações de gerenciamento do ciclo de vida no portal do Azure

  6. Selecione conjunto de filtros para adicionar um filtro opcional.Select Filter set to add an optional filter. Em seguida, selecione procurar para especificar um contêiner e uma pasta pela qual filtrar.Then, select Browse to specify a container and folder by which to filter.

    Página conjunto de filtros de gerenciamento do ciclo de vida no portal do Azure

  7. Selecione examinar + adicionar para examinar as configurações de política.Select Review + add to review the policy settings.

  8. Selecione Adicionar para adicionar a nova política.Select Add to add the new policy.

Exibição de código portal do AzureAzure portal Code view

  1. Entre no portal do Azure.Sign in to the Azure portal.

  2. Selecione todos os recursos e, em seguida, selecione sua conta de armazenamento.Select All resources and then select your storage account.

  3. Em serviço blob, selecione Gerenciamento de ciclo de vida para exibir ou alterar sua política.Under Blob Service, select Lifecycle management to view or change your policy.

  4. O JSON a seguir é um exemplo de uma política que pode ser colada na guia exibição de código .The following JSON is an example of a policy that can be pasted into the Code view tab.

    {
      "rules": [
        {
          "name": "ruleFoo",
          "enabled": true,
          "type": "Lifecycle",
          "definition": {
            "filters": {
              "blobTypes": [ "blockBlob" ],
              "prefixMatch": [ "container1/foo" ]
            },
            "actions": {
              "baseBlob": {
                "tierToCool": { "daysAfterModificationGreaterThan": 30 },
                "tierToArchive": { "daysAfterModificationGreaterThan": 90 },
                "delete": { "daysAfterModificationGreaterThan": 2555 }
              },
              "snapshot": {
                "delete": { "daysAfterCreationGreaterThan": 90 }
              }
            }
          }
        }
      ]
    }
    
  5. Clique em Salvar.Select Save.

  6. Para obter mais informações sobre este exemplo de JSON, consulte as seções política e regras .For more information about this JSON example, see the Policy and Rules sections.

PolíticaPolicy

Uma política de gerenciamento do ciclo de vida é uma coleção de regras em um documento JSON:A lifecycle management policy is a collection of rules in a JSON document:

{
  "rules": [
    {
      "name": "rule1",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {...}
    },
    {
      "name": "rule2",
      "type": "Lifecycle",
      "definition": {...}
    }
  ]
}

Uma política é uma coleção de regras:A policy is a collection of rules:

Nome do parâmetroParameter name Tipo de parâmetroParameter type NotasNotes
rules Uma matriz de objetos de regraAn array of rule objects Pelo menos uma regra é necessária em uma política.At least one rule is required in a policy. Você pode definir até 100 regras em uma política.You can define up to 100 rules in a policy.

Cada regra na política tem vários parâmetros:Each rule within the policy has several parameters:

Nome do parâmetroParameter name Tipo de parâmetroParameter type NotasNotes obrigatóriosRequired
name stringString Um nome de regra pode incluir até 256 caracteres alfanuméricos.A rule name can include up to 256 alphanumeric characters. A regra de nome diferencia maiúsculas de minúsculas.Rule name is case-sensitive. Ela deve ser exclusiva em uma política.It must be unique within a policy. TrueTrue
enabled BoolianoBoolean Um booliano opcional para permitir que uma regra seja temporariamente desabilitada.An optional boolean to allow a rule to be temporary disabled. O valor padrão será true se não estiver definido.Default value is true if it's not set. FalseFalse
type Um valor de enumeraçãoAn enum value O tipo válido atual é Lifecycle.The current valid type is Lifecycle. TrueTrue
definition Um objeto que define a regra de ciclo de vidaAn object that defines the lifecycle rule Cada definição é composta por um conjunto de filtros e um conjunto de ações.Each definition is made up of a filter set and an action set. TrueTrue

RegrasRules

Cada definição de regra inclui um conjunto de filtros e um conjunto de ações.Each rule definition includes a filter set and an action set. O conjunto de filtros limita as ações de regras a determinado conjunto de objetos em um contêiner ou a nomes de objetos.The filter set limits rule actions to a certain set of objects within a container or objects names. O conjunto de ações aplica-se a camada ou excluir ações para o conjunto filtrado de objetos.The action set applies the tier or delete actions to the filtered set of objects.

Regra de exemploSample rule

A regra de exemplo a seguir filtra a conta para executar as ações em objetos que existem dentro container1 e começam com foo.The following sample rule filters the account to run the actions on objects that exist inside container1 and start with foo.

  • Colocar o blob na camada esporádica 30 dias após a última modificaçãoTier blob to cool tier 30 days after last modification
  • Colocar o blob na camada de arquivos 90 dias após a última modificaçãoTier blob to archive tier 90 days after last modification
  • Excluir o blob 2.555 dias (sete anos) após a última modificaçãoDelete blob 2,555 days (seven years) after last modification
  • Excluir instantâneos de blob 90 dias após a criação do instantâneoDelete blob snapshots 90 days after snapshot creation
{
  "rules": [
    {
      "name": "ruleFoo",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ],
          "prefixMatch": [ "container1/foo" ]
        },
        "actions": {
          "baseBlob": {
            "tierToCool": { "daysAfterModificationGreaterThan": 30 },
            "tierToArchive": { "daysAfterModificationGreaterThan": 90 },
            "delete": { "daysAfterModificationGreaterThan": 2555 }
          },
          "snapshot": {
            "delete": { "daysAfterCreationGreaterThan": 90 }
          }
        }
      }
    }
  ]
}

Filtros de regraRule filters

Os filtros limitam as ações de regra a um subconjunto de blobs na conta de armazenamento.Filters limit rule actions to a subset of blobs within the storage account. Se mais de um filtro for definido, um AND lógico será executado em todos os filtros.If more than one filter is defined, a logical AND runs on all filters.

Os filtros incluem:Filters include:

Nome do filtroFilter name Tipo do filtroFilter type NotasNotes ObrigatórioIs Required
blobTypesblobTypes Uma matriz de valores de enumeração predefinidos.An array of predefined enum values. A versão atual oferece suporte a blockBlob.The current release supports blockBlob. SIMYes
prefixMatchprefixMatch Uma matriz de cadeias de caracteres para prefixos a serem correspondidos.An array of strings for prefixes to be match. Cada regra pode definir até 10 prefixos.Each rule can define up to 10 prefixes. Uma cadeia de caracteres de prefixo deve começar com um nome de contêiner.A prefix string must start with a container name. Por exemplo, se você quiser corresponder a todos os BLOBs em https://myaccount.blob.core.windows.net/container1/foo/... para uma regra, o prefixMatch será container1/foo.For example, if you want to match all blobs under https://myaccount.blob.core.windows.net/container1/foo/... for a rule, the prefixMatch is container1/foo. Se você não definir prefixMatch, a regra se aplicará a todos os BLOBs na conta de armazenamento.If you don't define prefixMatch, the rule applies to all blobs within the storage account. NãoNo

Ações de regraRule actions

As ações são aplicadas aos BLOBs filtrados quando a condição de execução é atendida.Actions are applied to the filtered blobs when the run condition is met.

O gerenciamento do ciclo de vida dá suporte a camadas e exclusão de BLOBs e exclusão de instantâneos de BLOB.Lifecycle management supports tiering and deletion of blobs and deletion of blob snapshots. Defina, pelo menos, uma ação para cada regra em blobs ou instantâneos de blob.Define at least one action for each rule on blobs or blob snapshots.

AçãoAction Blob baseBase Blob InstantâneoSnapshot
tierToCooltierToCool Dá suporte aos blobs atualmente presentes na camada frequenteSupport blobs currently at hot tier Sem suporteNot supported
tierToArchivetierToArchive Dá suporte aos blobs atualmente presentes na camada frequente ou esporádicaSupport blobs currently at hot or cool tier Sem suporteNot supported
excluirdelete Com suporteSupported Com suporteSupported

Observação

Se você definir mais de uma ação no mesmo blob, o gerenciamento do ciclo de vida aplicará a ação mais barata ao blob.If you define more than one action on the same blob, lifecycle management applies the least expensive action to the blob. Por exemplo, a ação delete é mais barata do que a ação tierToArchive.For example, action delete is cheaper than action tierToArchive. A ação tierToArchive é mais barata do que a ação tierToCool.Action tierToArchive is cheaper than action tierToCool.

As condições de execução se baseiam na idade.The run conditions are based on age. Os blobs base usam a hora da última modificação para acompanhar a idade, enquanto os instantâneos de blob usam a hora de criação do instantâneo para executar a mesma tarefa.Base blobs use the last modified time to track age, and blob snapshots use the snapshot creation time to track age.

Condição de execução de açãoAction run condition Valor de condiçãoCondition value DescriçãoDescription
daysAfterModificationGreaterThandaysAfterModificationGreaterThan Valor inteiro que indica a idade em diasInteger value indicating the age in days A condição para ações de blob de baseThe condition for base blob actions
daysAfterCreationGreaterThandaysAfterCreationGreaterThan Valor inteiro que indica a idade em diasInteger value indicating the age in days A condição para ações de instantâneo de BLOBThe condition for blob snapshot actions

ExemplosExamples

Os exemplos a seguir demonstram como tratar cenários comuns com as regras de política de ciclo de vida.The following examples demonstrate how to address common scenarios with lifecycle policy rules.

Mover dados antigos para uma camada mais friaMove aging data to a cooler tier

Este exemplo mostra como fazer a transição de blobs de blocos prefixados com container1/foo ou container2/bar.This example shows how to transition block blobs prefixed with container1/foo or container2/bar. A política faz a transição de blobs que não foram modificados há mais de 30 dias para o armazenamento esporádico e de blobs não modificados há mais de 90 dias para a camada de arquivos:The policy transitions blobs that haven't been modified in over 30 days to cool storage, and blobs not modified in 90 days to the archive tier:

{
  "rules": [
    {
      "name": "agingRule",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ],
          "prefixMatch": [ "container1/foo", "container2/bar" ]
        },
        "actions": {
          "baseBlob": {
            "tierToCool": { "daysAfterModificationGreaterThan": 30 },
            "tierToArchive": { "daysAfterModificationGreaterThan": 90 }
          }
        }
      }
    }
  ]
}

Arquivar dados em ingestãoArchive data at ingest

Alguns dados permanecem ociosos na nuvem e raramente ou nunca são acessados depois de armazenados.Some data stays idle in the cloud and is rarely, if ever, accessed once stored. A política de ciclo de vida a seguir é configurada para arquivar dados após sua ingestão.The following lifecycle policy is configured to archive data once it's ingested. Este exemplo faz a transição de blobs de blocos na conta de armazenamento dentro do contêiner archivecontainer para uma camada de arquivo morto.This example transitions block blobs in the storage account within container archivecontainer into an archive tier. A transição é realizada agindo em BLOBs 0 dias após a hora da última modificação:The transition is accomplished by acting on blobs 0 days after last modified time:

Observação

É recomendável carregar seus BLOBs diretamente a camada de arquivo para ser mais eficiente.It is recommended to upload your blobs directly the archive tier to be more efficient. Você pode usar o cabeçalho x-MS-acesso-Tier para PutBlob ou PutBlockList com a versão REST 2018-11-09 e mais recente ou nossas bibliotecas de cliente de armazenamento de blob mais recentes.You can use the x-ms-acess-tier header for PutBlob or PutBlockList with REST version 2018-11-09 and newer or our latest blob storage client libraries.

{
  "rules": [
    {
      "name": "archiveRule",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ],
          "prefixMatch": [ "archivecontainer" ]
        },
        "actions": {
          "baseBlob": {
              "tierToArchive": { "daysAfterModificationGreaterThan": 0 }
          }
        }
      }
    }
  ]
}

Expirar os dados com base na idadeExpire data based on age

Espera-se que alguns dados expirem dias ou meses após a criação.Some data is expected to expire days or months after creation. Configure uma política de gerenciamento do ciclo de vida para expirar os dados por exclusão com base na idade deles.You can configure a lifecycle management policy to expire data by deletion based on data age. O exemplo a seguir mostra uma política que exclui todos os blobs de bloco com mais de 365 dias.The following example shows a policy that deletes all block blobs older than 365 days.

{
  "rules": [
    {
      "name": "expirationRule",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ]
        },
        "actions": {
          "baseBlob": {
            "delete": { "daysAfterModificationGreaterThan": 365 }
          }
        }
      }
    }
  ]
}

Excluir instantâneos antigosDelete old snapshots

Para dados que são modificados e acessados regularmente durante seu ciclo de vida, instantâneos geralmente são usados para controlar versões mais antigas dos dados.For data that is modified and accessed regularly throughout its lifetime, snapshots are often used to track older versions of the data. Você pode criar uma política que exclui os instantâneos antigos com base na idade do instantâneo.You can create a policy that deletes old snapshots based on snapshot age. A idade de instantâneo é determinada avaliando-se a hora de criação do instantâneo.The snapshot age is determined by evaluating the snapshot creation time. Esta regra de política exclui instantâneos blobs de blocos no contêiner activedata com 90 dias ou mais após a criação do instantâneo.This policy rule deletes block blob snapshots within container activedata that are 90 days or older after snapshot creation.

{
  "rules": [
    {
      "name": "snapshotRule",
      "enabled": true,
      "type": "Lifecycle",
    "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ],
          "prefixMatch": [ "activedata" ]
        },
        "actions": {
          "snapshot": {
            "delete": { "daysAfterCreationGreaterThan": 90 }
          }
        }
      }
    }
  ]
}

Perguntas FrequentesFAQ

Eu criei uma nova política, por que as ações não são executadas imediatamente?I created a new policy, why do the actions not run immediately?
A plataforma executa a política de ciclo de vida uma vez por dia.The platform runs the lifecycle policy once a day. Depois de configurar uma política, pode levar até 24 horas para que algumas ações sejam executadas pela primeira vez.Once you configure a policy, it can take up to 24 hours for some actions to run for the first time.

Eu resalimentava manualmente um blob arquivado, como impedir que ele fosse movido de volta para a camada de arquivamento temporariamente?I manually rehydrated an archived blob, how do I prevent it from being moved back to the Archive tier temporarily?
Quando um blob é movido de uma camada de acesso para outra, sua hora da última modificação não é alterada.When a blob is moved from one access tier to another, its last modification time doesn't change. Se você reidratar manualmente um blob arquivado na camada quente, ele seria movido de volta para a camada de arquivo pelo mecanismo de gerenciamento do ciclo de vida.If you manually rehydrate an archived blob to hot tier, it would be moved back to archive tier by the lifecycle management engine. Desabilite a regra que afeta esse blob temporariamente para impedir que ele seja arquivado novamente.Disable the rule that affects this blob temporarily to prevent it from being archived again. Habilite novamente a regra quando o blob puder ser movido com segurança de volta para a camada de arquivo morto.Re-enable the rule when the blob can be safely moved back to archive tier. Você também poderá copiar o blob para outro local se ele precisar permanecer na camada quente ou fria permanentemente.You may also copy the blob to another location if it needs to stay in hot or cool tier permanently.

Próximos passosNext steps

Saiba como recuperar dados após uma exclusão acidental:Learn how to recover data after accidental deletion: