Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página explica como guardar e carregar o estado do seu ambiente através de capturas instantâneas do ambiente.
Pode configurar o seu ambiente para guardar automaticamente capturas de ecrã. Para mais informações, consulte o artigo Configure instantâneos agendados.
Acerca dos instantâneos do ambiente
Os instantâneos do ambiente armazenam o estado do seu ambiente. Pode guardar e carregar instantâneos do ambiente a pedido.
Pode usar as capturas instantâneas para:
Restaurar o seu ambiente para um estado anterior. Crie cópias de segurança do seu ambiente através de instantâneos e, em seguida, carregue um dos instantâneos para restaurar o seu ambiente. Por exemplo, pode reverter uma operação de atualização que instala pacotes PyPI ou substitui opções de configuração do Airflow, mesmo depois de o seu ambiente ser atualizado com êxito.
Fazer atualizações lado a lado e copiar ambientes. Crie um instantâneo de um ambiente existente, crie um novo ambiente que use a mesma versão ou uma versão posterior do Cloud Composer e, em seguida, aplique o instantâneo a este novo ambiente. Este procedimento é semelhante à migração. Certifique-se de que pausa os DAGs antes de criar o instantâneo para evitar execuções duplicadas de DAGs.
Migre os seus ambientes para o Cloud Composer 3.
Como são armazenados os instantâneos
Uma captura instantânea do ambiente é um conjunto de ficheiros que descrevem o estado do seu ambiente e armazenam a cópia de segurança dos dados do ambiente.
Pode criar várias capturas instantâneas do seu ambiente. Os instantâneos do ambiente não são incrementais. Pode usar qualquer imagem instantânea independentemente de outras imagens instantâneas.
O Cloud Composer não elimina instantâneos quando elimina o seu ambiente.
Por predefinição, o Cloud Composer armazena instantâneos na pasta snapshots/
no contentor do seu ambiente. Também pode especificar uma localização personalizada
quando cria uma imagem instantânea.
Embora a IU do Cloud Storage apresente os dados como pastas para maior conveniência, os contentores funcionam numa estrutura de ficheiros simples. Isto não altera a forma como trabalha com a guardar e carregar instantâneos na Google Cloud consola, mas tenha isto em atenção quando realizar operações diretamente nos ficheiros no seu contentor. Para mais informações, consulte o artigo Espaço de nomes de objetos.
Considerações de segurança para instantâneos
Para mitigar este risco de segurança, pode armazenar informações confidenciais usadas por DAGs do Airflow, como chaves ou palavras-passe, no Secret Manager. Para mais informações, consulte o artigo Configure o Secret Manager para o seu ambiente.
Certifique-se de que verifica as autorizações de segurança do contentor do seu ambiente. Se armazenar instantâneos do ambiente num contentor personalizado, certifique-se de que as autorizações de acesso estão configuradas corretamente no seu projeto. Ao atribuir autorizações, certifique-se de que a conta de serviço do ambiente tem autorizações suficientes para guardar e carregar instantâneos do contentor.
Que dados são guardados nos resumos
O Cloud Composer guarda os seguintes dados em instantâneos:
- Substituições da configuração do Airflow.
- Variáveis de ambiente.
- Lista de pacotes PyPI personalizados, como requisitos.
- Uma cópia de segurança da base de dados do Airflow, incluindo os estados das tarefas executadas e o histórico de execuções de DAG.
- Uma cópia de segurança das pastas
/dags
,/data
e/plugins
do contentor do ambiente. - Chave Fernet do ambiente.
- Outras informações sobre a configuração do ambiente, como a escala e os parâmetros de desempenho do ambiente. O Cloud Composer não usa estas informações quando carrega capturas de ecrã.
Que dados são carregados a partir de capturas de ecrã
O Cloud Composer carrega os seguintes dados a partir de instantâneos:
- Substituições da configuração do Airflow.
- Variáveis de ambiente.
Pacotes PyPI personalizados (a menos que opte por ignorar a instalação).
O conteúdo da base de dados do Airflow, incluindo os estados das tarefas executadas e o histórico de execuções de DAGs.
Os conteúdos das pastas
/dags
,/data
e/plugins
da captura de ecrã são carregados para o contentor do ambiente.A chave Fernet da imagem instantânea é usada para voltar a encriptar os dados da imagem instantânea com a chave Fernet do próprio ambiente. A chave Fernet do ambiente permanece inalterada.
Embora o Cloud Composer armazene algumas informações sobre a configuração do ambiente em capturas de ecrã, estas não são usadas quando são carregadas. Os seguintes parâmetros do seu ambiente não são alterados quando carrega uma captura instantânea:
- Configuração do ambiente, como a escala do ambiente e os parâmetros de desempenho.
- Configuração de rede do ambiente.
- Conteúdos do contentor do ambiente fora das pastas
/dags
,/data
e/plugins
. - Etiquetas de ambiente.
Todas as definições que aplicou na infraestrutura do Cloud Composer sem usar a API Cloud Composer podem ser perdidas quando carrega uma captura de ecrã.
Acerca das operações parcialmente concluídas
Quando carrega uma captura instantânea, a operação pode ser bem-sucedida, falhar ou ser concluída parcialmente:
- As operações bem-sucedidas carregam todos os dados do instantâneo.
- As operações com falhas não introduzem alterações.
- As operações parcialmente concluídas carregam um subconjunto de dados do resumo. Essas operações são comunicadas como falhadas, mas a mensagem de erro indica que dados foram carregados com êxito. Por exemplo, se os pacotes PyPI estiverem instalados, mas as substituições da opção de configuração do Airflow não tiverem sido bem-sucedidas, a mensagem de erro indica esta situação.
Para uma operação parcialmente concluída, pode tentar carregar novamente a mesma imagem instantânea. O Cloud Composer ignora os passos que foram bem-sucedidos na tentativa anterior. Por exemplo, se uma operação falhar devido a um limite de tempo, mas a base de dados for carregada com êxito, a tentativa seguinte não carrega novamente a base de dados.
Antes de começar
As capturas instantâneas são suportadas no Cloud Composer 2 versão 2.0.9 e posteriores. O Cloud Composer 1 suporta a gravação de instantâneos do ambiente nas versões 1.18.5 e posteriores.
Os instantâneos não criam um ambiente. Se quiser carregar uma captura instantânea de um ambiente para outro, primeiro tem de criar um novo ambiente e, em seguida, carregar a captura instantânea para esse ambiente.
Não pode carregar instantâneos para ambientes que estejam no estado de erro. Não é possível corrigir estes ambientes carregando um instantâneo. Continua a poder carregar uma captura de ecrã existente para um novo ambiente.
Só pode carregar instantâneos para a mesma versão ou uma versão posterior do Cloud Composer ou do Airflow. Por exemplo, não pode carregar uma imagem instantânea do Cloud Composer 2.8.4 para um ambiente com o Cloud Composer 2.8.3. Como outro exemplo, não pode carregar uma captura de ecrã do Airflow 2.7.3 para o Airflow 2.6.3.
As imagens instantâneas não alteram a versão do Cloud Composer. Se atualizar o seu ambiente para uma versão posterior do Cloud Composer e, em seguida, carregar uma captura de ecrã de uma versão anterior, o ambiente mantém a versão atual do Cloud Composer. Por exemplo, o carregamento de uma captura de ecrã do Cloud Composer 2.8.3 para o Cloud Composer 2.8.4 não reverte o ambiente para o Cloud Composer 2.8.3.
O tamanho máximo da base de dados do Airflow que suporta resumos é de 20 GB. Se a base de dados do seu ambiente ocupar mais de 20 GB, reduza o tamanho da base de dados do Airflow antes de guardar uma captura de ecrã.
O número total de objetos nas pastas
/dags
,/plugins
e/data
no contentor do ambiente tem de ser inferior a 100 000 para criar instantâneos.Se usar o mecanismo XCom para transferir ficheiros, certifique-se de que o usa de acordo com as diretrizes do Airflow. A transferência de ficheiros grandes ou de um grande número de ficheiros através do XCom afeta o desempenho da base de dados do Airflow e pode originar falhas ao carregar instantâneos ou atualizar o 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 contentor do ambiente não pode exceder os 1024 símbolos. Caso contrário, não é possível criar instantâneos.
Se guardar instantâneos numa localização fora do contentor do seu ambiente, a conta de serviço do seu ambiente tem de ter autorizações de leitura e escrita para a localização especificada. Por exemplo, a função de administrador de objetos de armazenamento tem essas autorizações. Pode aplicá-la a um projeto ou a um contentor específico.
A criação e o armazenamento de capturas instantâneas geram custos adicionais relacionados com o Cloud Storage. Para mais informações, consulte a secção Preços.
Guarde um instantâneo do ambiente
O Cloud Composer guarda as capturas instantâneas do ambiente numa subpasta, relativamente à pasta que especificar.
O nome da pasta contém o ID do projeto, a localização do ambiente, o nome do ambiente e a data/hora em que a captura de ecrã foi guardada. Por exemplo:
/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.
Consola
Para criar um instantâneo do seu ambiente:
Na Google Cloud consola, aceda à página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.
Clique em Guardar instantâneo.
Na caixa de diálogo Guardar imagem instantânea, selecione onde armazenar a imagem instantânea:
Para armazenar a captura instantânea na pasta
/snapshots
no contentor do ambiente, selecione Usar pasta de capturas instantâneas no contentor do ambiente (predefinição).Para armazenar a captura instantânea na pasta personalizada, selecione Usar pasta personalizada noutro contentor e, de seguida, especifique uma localização.
Clique em Guardar.
gcloud
O comando gcloud composer environments snapshots save
guarda uma imagem instantânea do seu ambiente.
- O argumento
snapshot-location
especifica uma pasta onde a imagem instantânea é guardada. Por predefinição, as capturas instantâneas são guardadas na pasta/snapshots
no contentor do seu ambiente. Por exemplo,gs://us-central1-example-916807e1-bucket/snapshots
. Também pode especificar qualquer outra pasta.
Para guardar um instantâneo do seu ambiente, execute o seguinte comando:
gcloud composer environments snapshots save \
ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-location "SNAPSHOTS_FOLDER"
Substituir:
ENVIRONMENT_NAME
com o nome do ambiente.LOCATION
com a região onde o ambiente está localizado.- (Opcional)
SNAPSHOTS_FOLDER
com o URI de uma pasta do contentor onde armazenar a captura de ecrã. Se omitir este argumento, o Cloud Composer guarda a imagem instantânea na pasta/snapshots
no contentor do seu ambiente.
O exemplo seguinte usa a localização predefinida:
gcloud composer environments snapshots save \
example-environment \
--location us-central1
O exemplo seguinte guarda o ficheiro numa pasta personalizada:
gcloud composer environments snapshots save \
example-environment \
--location us-central1 \
--snapshot-location "gs://example-bucket/environment_snapshots"
API
Construa um pedido de API
environments.saveSnapshot
.No corpo do pedido, no campo
snapshotLocation
, especifique a pasta onde quer guardar a imagem instantânea.
{
"snapshotLocation": "SNAPSHOTS_FOLDER"
}
Substituir:
SNAPSHOTS_FOLDER
com o URI de uma pasta do contentor onde guardar a captura de ecrã.
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 guardar nem carregar instantâneos do ambiente a partir do Terraform.
Guardar e carregar instantâneos são ações realizadas num ambiente, e os instantâneos resultantes não fazem parte da definição de um ambiente. Uma vez que o Terraform gere apenas a configuração do ambiente do Cloud Composer, não pode guardar nem carregar instantâneos do ambiente a partir dele.
Carregue um instantâneo do ambiente
Considere a seguinte situação. Por exemplo, se a opção catch-up estiver ativada e o Airflow executar um DAG num horário entre o momento em que a imagem instantânea foi criada e o momento em que foi carregada. Neste caso, depois de carregar a imagem instantânea, o Airflow não tem informações sobre a execução do DAG que ocorreu, pelo que o Airflow executa o DAG novamente para a mesma hora e dados.
Como outro exemplo, considere um DAG que é executado num horário diário. Tira uma captura de ecrã, o Airflow executa este DAG e, de seguida, carrega a captura de ecrã no mesmo dia. Neste caso, o Airflow executa o DAG novamente, mesmo que a opção catch-up esteja desativada.
Consola
Para carregar uma captura instantânea para o seu ambiente:
Na Google Cloud consola, aceda à página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.
Clique em Carregar instantâneo.
Na caixa de diálogo Carregar resumo, clique em Procurar.
Selecione uma pasta que armazene o instantâneo. O nome da pasta indica o ID do seu projeto, a localização do ambiente e a data/hora em que a captura de ecrã foi guardada. Por exemplo,
/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.(Opcional) Para ignorar a instalação de pacotes PyPI personalizados a partir da imagem instantânea, selecione Ignorar instalação de pacotes PyPI. Se carregar uma imagem instantânea de um ambiente com pacotes PyPI personalizados instalados, o Cloud Composer não instala estes pacotes personalizados.
Clique em Carregar e aguarde até que o Cloud Composer carregue a captura instantânea.
gcloud
O comando gcloud composer environments snapshots load
carrega uma
imagem instantânea para o seu ambiente.
O argumento
--snapshot-path
especifica uma pasta onde a imagem está localizada.O nome da pasta apresenta o ID do seu projeto, a localização do ambiente e a data/hora em que a captura instantânea foi guardada. 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
ignora a instalação de pacotes PyPI personalizados a partir do instantâneo. Se carregar uma imagem instantânea de um ambiente com pacotes PyPI personalizados instalados, o Cloud Composer não instala estes pacotes personalizados.
gcloud composer environments snapshots load \
DESTINATION_ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-path "SNAPSHOT_PATH"
Substituir:
DESTINATION_ENVIRONMENT_NAME
com o nome do ambiente onde quer carregar a captura de ecrã.LOCATION
com a região onde o ambiente está localizado.SNAPSHOT_PATH
com o URI de um contentor, seguido do caminho para a imagem instantânea.
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
Construa um pedido de API
environments.loadSnapshot
.No corpo do pedido, no campo
snapshotPath
, especifique o URI de um contentor, seguido do caminho para a imagem instantânea. O nome da pasta apresenta o ID do seu projeto, a localização do ambiente e a data/hora em que a captura instantânea foi guardada. Por exemplo,gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
.(Opcional) No corpo do pedido, no campo
skipPypiPackagesInstallation
, especifique se o Cloud Composer tem de ignorar a instalação de pacotes PyPI personalizados a partir da captura instantânea. Se carregar uma imagem instantânea de um ambiente com pacotes PyPI personalizados instalados, o Cloud Composer não instala estes pacotes personalizados.Este campo é opcional. Se omitir este campo, o Cloud Composer instala pacotes PyPI a partir da captura instantânea.
{
"snapshotPath": "SNAPSHOT_PATH"
}
Substituir:
SNAPSHOT_PATH
com o URI de uma pasta de contentor onde armazenar a captura de ecrã.
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 guardar nem carregar instantâneos do ambiente através do Terraform.
Guardar e carregar instantâneos são ações realizadas num ambiente, e os instantâneos resultantes não fazem parte da definição de um ambiente. Uma vez que o Terraform gere apenas a configuração do ambiente do Cloud Composer, não pode guardar nem carregar instantâneos do ambiente a partir dele.