Salvar e carregar snapshots do ambiente

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Nesta página, explicamos como salvar e carregar o estado do seu ambiente usando snapshots de ambiente.

É possível configurar seu ambiente para salvar snapshots automaticamente. Para mais informações, consulte Configurar snapshots programados.

Sobre snapshots de ambiente

Os snapshots de ambiente armazenam o estado do ambiente. É possível salvar e carregar snapshots do ambiente sob demanda.

Você pode usar snapshots para:

Como os snapshots são armazenados

Um snapshot de ambiente é um conjunto de arquivos que descrevem o estado do seu ambiente e armazenam o backup dos dados dele.

É possível criar vários snapshots do seu ambiente. Os snapshots de ambiente não são incrementais. É possível usar qualquer snapshot de forma independente.

O Cloud Composer não exclui snapshots quando você exclui seu ambiente.

Por padrão, o Cloud Composer armazena snapshots na pasta snapshots/ no bucket do seu ambiente. Também é possível especificar um local personalizado ao criar um snapshot.

Embora a interface do Cloud Storage mostre os dados como pastas para facilitar, os buckets funcionam em uma estrutura de arquivo simples. Isso não muda a forma como você trabalha com salvar e carregar snapshots no console do Google Cloud , mas tenha isso em mente ao realizar operações diretamente nos arquivos do seu bucket. Para mais informações, consulte Namespace de objetos.

Considerações de segurança para snapshots

Para mitigar esse risco de segurança, armazene informações sensíveis usadas pelos DAGs do Airflow, como chaves ou senhas, no Secret Manager. Para mais informações, consulte Configurar o Secret Manager para seu ambiente.

Verifique as permissões de segurança do bucket do seu ambiente. Se você armazenar snapshots de ambiente em um bucket personalizado, verifique se as permissões de acesso estão configuradas corretamente no seu projeto. Ao atribuir permissões, verifique se a conta de serviço do ambiente tem permissões suficientes para salvar e carregar snapshots do bucket.

Quais dados são salvos em snapshots

O Cloud Composer salva os seguintes dados em snapshots:

  • Substituições da configuração do Airflow.
  • Variáveis de ambiente.
  • Lista de pacotes PyPI personalizados, como requisitos.
  • Um backup do banco de dados do Airflow, incluindo estados de tarefas executadas e histórico de execuções de DAG.
  • Um backup das pastas /dags, /data e /plugins do bucket do ambiente.
  • A chave fernet do ambiente.
  • Outras informações sobre a configuração do ambiente, como parâmetros de escalonamento e desempenho. O Cloud Composer não usa essas informações ao carregar snapshots.

Quais dados são carregados dos snapshots

O Cloud Composer carrega os seguintes dados dos snapshots:

  • Substituições da configuração do Airflow.
  • Variáveis de ambiente.
  • Pacotes PyPI personalizados, a menos que você pule a instalação deles.

  • O conteúdo do banco de dados do Airflow, incluindo estados de tarefas executadas e histórico de execuções de DAG.

  • O conteúdo das pastas /dags, /data e /plugins do snapshot é carregado no bucket do ambiente.

  • A chave fernet do snapshot é usada para recriptografar os dados do snapshot com a chave fernet do ambiente. A chave fernet do ambiente permanece inalterada.

Embora o Cloud Composer armazene algumas informações sobre a configuração do ambiente em snapshots, elas não são usadas ao carregar snapshots. Os seguintes parâmetros do seu ambiente não mudam quando você carrega um snapshot:

  • Configuração do ambiente, como parâmetros de escalonamento e desempenho.
  • Configuração de rede do ambiente.
  • Conteúdo do bucket do ambiente fora das pastas /dags, /data e /plugins.
  • Identificadores de ambiente.

Todas as configurações aplicadas na infraestrutura do Cloud Composer sem usar a API do Cloud Composer podem ser perdidas ao carregar um snapshot.

Sobre operações parcialmente concluídas

Ao carregar um snapshot, a operação pode ser concluída com êxito, falhar ou ser concluída parcialmente:

  • As operações bem-sucedidas carregam todos os dados do snapshot.
  • As operações com falha não introduzem mudanças.
  • As operações parcialmente concluídas carregam um subconjunto de dados do snapshot. Essas operações são informadas como falhas, mas a mensagem de erro indica quais dados foram carregados. Por exemplo, se os pacotes PyPI forem instalados, mas as substituições de opções de configuração do Airflow não forem bem-sucedidas, a mensagem de erro vai indicar isso.

Para uma operação parcialmente concluída, tente carregar o mesmo snapshot novamente. O Cloud Composer ignora as etapas que foram concluídas na tentativa anterior. Por exemplo, se uma operação falhou devido a um tempo limite, mas o banco de dados foi carregado com êxito, a próxima tentativa não vai carregar o banco de dados novamente.

Antes de começar

  • No Cloud Composer 1, só é possível salvar snapshots, não carregá-los. É possível carregar snapshots de um ambiente do Cloud Composer 1 para ambientes do Cloud Composer 2.
  • Os snapshots são compatíveis com o Cloud Composer 2 versão 2.0.9 e mais recente. O Cloud Composer 1 é compatível com o salvamento de snapshots de ambiente nas versões 1.18.5 e mais recentes.

  • Os snapshots não criam um ambiente. Se você quiser carregar um snapshot de um ambiente para outro, primeiro crie um novo ambiente e carregue o snapshot nele.

  • Não é possível carregar snapshots em ambientes que estão em estado de erro. Não é possível corrigir esses ambientes carregando um snapshot. Você ainda pode carregar um snapshot em um novo ambiente.

  • O tamanho máximo do banco de dados do Airflow que aceita snapshots é de 20 GB. Se o banco de dados do ambiente ocupar mais de 20 GB, reduza o tamanho do banco de dados do Airflow antes de salvar um snapshot.

  • O número total de objetos nas pastas /dags, /plugins e /data no bucket do ambiente precisa ser menor que 100.000 para criar snapshots.

  • Se você usar o mecanismo XCom para transferir arquivos, use-o de acordo com as diretrizes do Airflow. A transferência de arquivos grandes ou de um grande número de arquivos usando XCom afeta o desempenho do banco de dados do Airflow e pode causar falhas ao carregar snapshots ou fazer upgrade do ambiente. Considere usar alternativas como o Cloud Storage para transferir grandes volumes de dados.

  • O comprimento máximo do nome de um objeto no bucket do ambiente não pode ser maior que 1.024 símbolos. Caso contrário, não será possível criar snapshots.

  • Se você salvar snapshots em um local fora do bucket do seu ambiente, a conta de serviço do ambiente precisará ter permissões de leitura e gravação para o local especificado. Por exemplo, o papel de Administrador de objetos do Storage tem essas permissões. É possível aplicar a um projeto ou a um bucket específico.

  • A criação e o armazenamento de snapshots geram custos adicionais relacionados ao Cloud Storage. Para mais informações, consulte Preços.

Salvar um snapshot do ambiente

O Cloud Composer salva snapshots do ambiente em uma subpasta, relativa à pasta especificada. O nome da pasta contém o ID do projeto, o local do ambiente, o nome do ambiente e o carimbo de data/hora em que o snapshot foi salvo. Por exemplo, /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Console

Para criar um snapshot do ambiente:

  1. No console Google Cloud , acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.

  3. Clique em Salvar snapshot.

  4. Na caixa de diálogo Salvar snapshot, selecione onde armazenar o snapshot:

    • Para armazenar o snapshot na pasta /snapshots no bucket do ambiente, selecione Usar pasta de snapshots no bucket do ambiente (padrão).

    • Para armazenar o snapshot na pasta personalizada, selecione Usar pasta personalizada em outro bucket e especifique um local.

  5. Clique em Salvar.

gcloud

O comando gcloud composer environments snapshots save salva um snapshot do seu ambiente.

  • O argumento snapshot-location especifica uma pasta em que o snapshot é salvo. Por padrão, os snapshots são salvos na pasta /snapshots no bucket do seu ambiente. Por exemplo, gs://us-central1-example-916807e1-bucket/snapshots. Também é possível especificar qualquer outra pasta.

Para salvar um snapshot do ambiente, execute:

gcloud composer environments snapshots save \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-location "SNAPSHOTS_FOLDER"

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente
  • LOCATION pela região em que o ambiente está localizado;
  • (Opcional) SNAPSHOTS_FOLDER com o URI de uma pasta do bucket onde armazenar o snapshot. Se você omitir esse argumento, o Cloud Composer vai salvar o snapshot na pasta /snapshots no bucket do ambiente.

O exemplo a seguir usa o local padrão:

gcloud composer environments snapshots save \
  example-environment \
  --location us-central1

O exemplo a seguir salva em uma pasta personalizada:

gcloud composer environments snapshots save \
  example-environment \
  --location us-central1 \
  --snapshot-location "gs://example-bucket/environment_snapshots"

API

  1. Crie uma solicitação de API environments.saveSnapshot.

  2. No corpo da solicitação, no campo snapshotLocation, especifique a pasta em que você quer salvar o snapshot.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Substitua:

  • SNAPSHOTS_FOLDER com o URI de uma pasta do bucket em que o snapshot será salvo.

Exemplo:

// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot

{
  "snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}

Terraform

Não é possível salvar e carregar snapshots de ambiente do Terraform.

Salvar e carregar snapshots são ações realizadas em um ambiente, e os snapshots resultantes não fazem parte da definição de um ambiente. Como o Terraform gerencia apenas a configuração do ambiente do Cloud Composer, não é possível salvar ou carregar snapshots do ambiente com ele.

Carregar um snapshot do ambiente

No Cloud Composer 1, só é possível salvar snapshots, não carregá-los. É possível carregar snapshots de um ambiente do Cloud Composer 1 para ambientes do Cloud Composer 2. Por exemplo, ao migrar seus ambientes para o Cloud Composer 2.

A seguir