Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página explica como salvar e carregar o estado do ambiente usando snapshots do ambiente.
É possível configurar seu ambiente para salvar snapshots automaticamente. Para mais informações, consulte Configurar snapshots programados.
Sobre os 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 os snapshots para:
Restaure o ambiente para um estado anterior. Crie backups do seu ambiente usando snapshots e, em seguida, carregue um deles para restaurar o ambiente. Por exemplo, é possível reverter uma operação de atualização que instala pacotes PyPI ou modifica as opções de configuração do Airflow, mesmo após a atualização do ambiente.
Faça upgrades lado a lado e copie ambientes. Crie um snapshot de um ambiente atual, crie um novo ambiente que use a mesma versão do Cloud Composer ou uma versão mais recente e aplique o snapshot a esse novo ambiente. Esse procedimento é semelhante à migração. Finalize as DAGs antes de fazer o snapshot para evitar execuções de DAG duplicadas.
Como os snapshots são armazenados
Um snapshot de ambiente é um conjunto de arquivos que descrevem o estado do ambiente e armazenam o backup dos dados do ambiente.
É possível criar vários snapshots do seu ambiente. Os snapshots do ambiente não são incrementais. É possível usar qualquer snapshot de forma independente.
O Cloud Composer não exclui snapshots quando você exclui o 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 exiba os dados como pastas para maior comodidade, os buckets funcionam em uma estrutura de arquivos simples. Isso não muda a forma de trabalhar com o salvamento e o carregamento de snapshots no console do Google Cloud, mas lembre-se disso ao realizar operações diretamente nos arquivos do bucket. Para mais informações, consulte Namespace de objetos.
Considerações de segurança para snapshots
Para reduzir esse risco de segurança, é possível armazenar informações sensíveis usadas por 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 do ambiente em um bucket personalizado, verifique se as permissões de acesso estão configuradas corretamente no 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 o histórico de execuções do DAG.
- Um backup das pastas
/dags
,/data
e/plugins
do bucket do ambiente. - Chave Fernet do ambiente.
- Outras informações sobre a configuração do ambiente, como os parâmetros de escalonamento e desempenho do ambiente. O Cloud Composer não usa essas informações ao carregar instantâneos.
Quais dados são carregados de 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 o 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, ele não é usado ao carregar snapshots. Os parâmetros a seguir do ambiente não mudam quando você carrega um snapshot:
- Configurações do ambiente, como escala e parâmetros de 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 Cloud Composer podem ser perdidas ao carregar um snapshot.
Sobre operações parcialmente concluídas
Quando você carrega um snapshot, a operação pode ser concluída, falhar ou ser parcialmente concluída:
- 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 relatadas 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ção de configuração do Airflow não tiverem sucesso, a mensagem de erro indicará isso.
Para uma operação parcialmente concluída, tente carregar o mesmo snapshot novamente. O Cloud Composer pula etapas que foram concluídas na tentativa anterior. Por exemplo, se uma operação falhar em um tempo limite, mas o banco de dados for carregado, a próxima tentativa não vai carregar o banco de dados novamente.
Antes de começar
Os snapshots são compatíveis com o Cloud Composer 2 versão 2.0.9 e mais recentes. O Cloud Composer 1 é compatível com o salvamento de snapshots do ambiente nas versões 1.18.5 e posteriores.
Os snapshots não criam um ambiente. Se você quiser carregar um snapshot de um ambiente para outro, primeiro crie um ambiente e carregue o snapshot nele.
Não é possível carregar snapshots em ambientes que estão no estado de erro. Não é possível corrigir esses ambientes carregando um snapshot. Ainda é possível carregar um snapshot atual em um novo ambiente.
Só é possível carregar snapshots na mesma versão do Airflow ou em uma versão mais recente. Por exemplo, não é possível carregar um snapshot do Airflow 2.9.3 para o Airflow 2.7.3.
É possível carregar um snapshot de um build mais recente do Airflow da mesma versão para um ambiente com um build anterior. Por exemplo, é possível carregar
airflow-2.9.3-build.6
paraairflow-2.9.3-build.5
. Recomendamos carregar snapshots em builds anteriores apenas se for necessário.O tamanho máximo do banco de dados do Airflow compatível com snapshots é de 20 GB. Se o banco de dados do seu ambiente ocupar mais de 20 GB, reduz o tamanho do banco de dados do Airflow antes de salvar um instantâneo.
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 o XCom afeta a performance do banco de dados do Airflow e pode causar falhas ao carregar instantâneos ou fazer upgrade do seu 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 seu 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 aplicá-la 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, em relação à 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:
No console do Google Cloud, acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Clique em Salvar snapshot.
Na caixa de diálogo Save snapshot, selecione onde armazenar o snapshot:
Para armazenar o snapshot na pasta
/snapshots
no bucket do ambiente, selecione Usar a 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.
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 ambienteLOCATION
pela região em que o ambiente está localizado;- (Opcional)
SNAPSHOTS_FOLDER
com o URI de uma pasta de bucket para armazenar o snapshot. Se você omitir esse argumento, o Cloud Composer vai salvar o snapshot na pasta/snapshots
no bucket do seu ambiente.
O exemplo a seguir usa o local padrão:
gcloud composer environments snapshots save \
example-environment \
--location us-central1
O exemplo a seguir é salvo em uma pasta personalizada:
gcloud composer environments snapshots save \
example-environment \
--location us-central1 \
--snapshot-location "gs://example-bucket/environment_snapshots"
API
Crie uma solicitação de API
environments.saveSnapshot
.No corpo da solicitação, no campo
snapshotLocation
, especifique a pasta em que você quer salvar o snapshot.
{
"snapshotLocation": "SNAPSHOTS_FOLDER"
}
Substitua:
SNAPSHOTS_FOLDER
pelo 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 do ambiente no 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.
Carregar um snapshot do ambiente
Considere a seguinte situação. Por exemplo, a recuperação é ativada e o Airflow executa um DAG em uma programação entre o momento em que o snapshot foi criado e o momento em que ele foi carregado. Nesse caso, depois que você carrega o snapshot, o Airflow não tem informações sobre a execução do DAG que ocorreu. Portanto, ele executa o DAG novamente para o mesmo horário e data.
Como outro exemplo, considere um DAG que é executado em uma programação diária. Você tira um snapshot, o Airflow executa esse DAG e, em seguida, você carrega o snapshot no mesmo dia. Nesse caso, o Airflow executa o DAG novamente, mesmo que a atualização esteja desativada.
Console
Para carregar um snapshot no ambiente:
No console do Google Cloud, acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Clique em Carregar snapshot.
Na caixa de diálogo Carregar snapshot, clique em Procurar.
Selecione uma pasta que armazene o snapshot. O nome da pasta lista o ID do projeto, o local 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
.(Opcional) Para pular a instalação de pacotes PyPI personalizados do snapshot, selecione Pular instalação de pacotes PyPI. Se você carregar um snapshot de um ambiente com pacotes PyPI personalizados instalados, o Cloud Composer não vai instalar esses pacotes personalizados.
Clique em Carregar e aguarde até que o Cloud Composer carregue o snapshot.
gcloud
O comando gcloud composer environments snapshots load
carrega um
snapshot no ambiente.
O argumento
--snapshot-path
especifica uma pasta em que o snapshot está localizado.O nome da pasta lista o ID do projeto, o local do ambiente e o carimbo de data/hora em que o snapshot foi salvo. Por exemplo,
gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.(Opcional) O argumento
--skip-pypi-packages-installation
pula a instalação de pacotes PyPI personalizados do snapshot. Se você carregar um snapshot de um ambiente com pacotes PyPI personalizados instalados, o Cloud Composer não vai instalar esses pacotes personalizados.
gcloud composer environments snapshots load \
DESTINATION_ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-path "SNAPSHOT_PATH"
Substitua:
DESTINATION_ENVIRONMENT_NAME
pelo nome do ambiente em que você quer carregar o snapshot.LOCATION
pela região em que o ambiente está localizado;SNAPSHOT_PATH
com o URI de um bucket, seguido pelo caminho para o snapshot.
Exemplo:
gcloud composer environments snapshots load \
example-environment \
--location us-central1 \
--snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"
API
Crie uma solicitação de API
environments.loadSnapshot
.No corpo da solicitação, no campo
snapshotPath
, especifique o URI de um bucket, seguido pelo caminho para o snapshot. O nome da pasta lista o ID do projeto, o local do ambiente e o carimbo de data/hora em que o snapshot foi salvo. Por exemplo,gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.(Opcional) No corpo da solicitação, no campo
skipPypiPackagesInstallation
, especifique se o Cloud Composer precisa pular a instalação de pacotes PyPI personalizados do snapshot. Se você carregar um snapshot de um ambiente com pacotes PyPI personalizados instalados, o Cloud Composer não vai instalar esses pacotes personalizados.Este campo é opcional. Se você omitir esse campo, o Cloud Composer vai instalar os pacotes PyPI do snapshot.
{
"snapshotPath": "SNAPSHOT_PATH"
}
Substitua:
SNAPSHOT_PATH
pelo URI de uma pasta de bucket para armazenar o snapshot.
Exemplo:
// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot
{
"snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
"skipPypiPackagesInstallation": "False"
}
Terraform
Não é possível salvar e carregar snapshots do ambiente usando o 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.