Definir a política de ciclo de vida de objetos para buckets de armazenamento

Nesta página, mostramos como definir a política de ciclo de vida de objetos para buckets de armazenamento isolados do Google Distributed Cloud (GDC, na sigla em inglês).

Antes de começar

Os buckets de armazenamento são recursos com escopo para um projeto específico. O projeto funciona como um contêiner, agrupando seus buckets e permitindo o gerenciamento deles pelo servidor da API Management. Antes de realizar as operações nesta página, crie um projeto ou selecione um em que você tenha permissões suficientes.

Papéis do IAM obrigatórios

Entre em contato com o administrador do projeto do IAM para solicitar os seguintes papéis no namespace do projeto:

  • Administrador de buckets do projeto (project-bucket-admin): cria, atualiza e exclui buckets de armazenamento.
  • Leitor de objetos de buckets do projeto (project-bucket-object-viewer): visualiza e verifica detalhes de buckets e objetos de armazenamento.

Para mais informações, consulte Conceder acesso a buckets.

Preparar o ambiente

Para executar comandos no servidor da API Management ou no servidor da API global, faça o seguinte:

  1. Faça login e gere o arquivo kubeconfig para o servidor da API Management zonal, se você não tiver um.
  2. Para buckets de zona dupla, faça o seguinte:
    • Verifique com o operador de infraestrutura (IO, na sigla em inglês) se o recurso personalizado BucketLocationConfig foi criado para as zonas pareadas.
    • Gere o arquivo kubeconfig para o servidor da API global.

Definir a política de ciclo de vida de objetos no bucket

É possível usar a política de ciclo de vida de objetos para gerenciar automaticamente os objetos nos buckets. Isso ajuda a armazenar dados com mais eficiência durante todo o ciclo de vida. Uma configuração de ciclo de vida é uma lista de regras para expirar um grupo de objetos com base em determinados critérios correspondentes.

É possível criar um bucket com ou sem política de ciclo de vida de objetos. Além disso, é possível aplicar, atualizar ou remover uma política de ciclo de vida depois que o bucket for criado.

Para buckets sem controle de versões, a expiração significa remover o objeto de forma assíncrona.

Para buckets com controle de versões, se a versão atual do objeto não for um marcador de exclusão, a expiração tornará a versão atual desatualizada e adicionará um marcador de exclusão à versão atual.

Para definir e modificar a política de ciclo de vida de objetos, atualize o campo Bucket.spec.bucketPolicy.lifecyclePolicy.

CLI

A seguir, alguns exemplos de recursos de bucket com diferentes políticas de ciclo de vida de objetos configuradas:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire all objects after 365 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 365
        id: expire-all-after-365-days
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects in the logs/ directory after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-logs-dir-after-30-days
        status: Enabled
        filter:
          prefixFilter: "logs/"
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects having specific tag after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-tagged-objects-after-30-days
        status: Enabled
        filter:
          tagFilters:
          - key: environment
            value: dev
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire noncurrent versions after 90 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - noncurrentExpiration:
          noncurrentDays: 90
        id: expire-noncurrent-after-90-days
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects on a specific date"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          date: "2027-01-01T00:00:00Z"
        id: expire-on-specific-date
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with multiple lifecycle rules and advanced filters"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      # Rule 1: Expire objects in 'tmp/' directory AND tagged with 'status=ready' after 7 days
      - expiration:
          days: 7
        id: expire-ready-tmp-objects
        status: Enabled
        filter:
          prefixFilter: "tmp/"
          tagFilters:
          - key: status
            value: ready
      # Rule 2: Expire all objects in 'logs/' directory after 90 days
      - expiration:
          days: 90
        id: expire-logs-after-90-days
        status: Enabled
        filter:
          prefixFilter: "logs/"

Todas as atualizações na política de ciclo de vida se aplicam aos objetos atuais e aos objetos enviados após a atualização.

Quando o bucket também tem o bloqueio de objetos configurado, os objetos são protegidos contra expiração antes do término dos dias de retenção.