Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
O Apache Airflow tem uma interface da API REST que pode ser usada para executar tarefas como ver informações sobre execuções e tarefas do DAG, atualizar DAGs, configurar o Airflow, adicionar e excluir conexões e listar usuários.
Para um exemplo de como usar a API REST do Airflow com funções do Cloud Run, consulte Como acionar DAGs com o Cloud Functions.
Versões da API REST do Airflow
As seguintes versões da API REST do Airflow estão disponíveis no Cloud Composer 1:
- O Airflow 1 usa a API REST experimental.
O Airflow 2 usa a API REST estável. A API REST experimental foi interrompida pelo Airflow.
Ainda será possível usar a API REST experimental no Airflow 2 se você ativá-la por meio de uma substituição da configuração do Airflow, como descrito em mais detalhes.
Antes de começar
Enable the Cloud Composer API.
Ativar a API REST estável do Airflow
Airflow 2
A API REST estável já está ativada por padrão no Airflow 2.
O Cloud Composer usa o próprio back-end de autenticação da API, que é integrado ao Identity-Aware Proxy.A autorização funciona da maneira padrão fornecida pelo Airflow. Quando um novo usuário
autoriza por meio da API, a conta do usuário recebe o papel Op
por padrão.
É possível ativar ou desativar a API REST estável ou alterar o papel de usuário padrão substituindo as seguintes opções de configuração do Airflow:
Seção | Chave | Valor | Observações |
---|---|---|---|
api
|
(Airflow 2.2.5 e anteriores) auth_backend (Airflow 2.3.0 e posterior) auth_backends
|
airflow.composer.api.backend.composer_auth
|
Para desativar a API REST estável, mude para
airflow.api.auth.backend.deny_all |
api
|
composer_auth_user_registration_role
|
Op
|
É possível especificar qualquer outro papel. |
Airflow 1
A API REST estável não está disponível no Airflow 1. Em vez disso, use a API REST experimental.
Ativar a API REST experimental do Airflow
Airflow 2
Por padrão, o recurso de autenticação da API está desativado na API experimental. O servidor da Web do Airflow nega todas as solicitações feitas.
Para ativar o recurso de autenticação da API e a API experimental do Airflow 2, substitua a seguinte opção de configuração do Airflow:
Seção | Chave | Valor | Observações |
---|---|---|---|
api
|
(Airflow 2.2.5 e versões anteriores) auth_backend (Airflow 2.3.0 e versões mais recentes) auth_backends
|
airflow.api.auth.backend.default
|
O padrão é airflow.composer.api.backend.composer_auth . |
api
|
enable_experimental_api
|
True
|
O padrão é False . |
Airflow 1
Por padrão, o recurso de autenticação da API está desativado no Airflow 1.10.11 e versões posteriores. O servidor da Web do Airflow nega todas as solicitações feitas. Como você usa as solicitações para acionar DAGs, ative esse recurso.
Para ativar o recurso de autenticação da API no Airflow 1, substitua a seguinte opção de configuração do Airflow:
Seção | Chave | Valor | Observações |
---|---|---|---|
api |
auth_backend |
airflow.api.auth.backend.default |
O padrão é airflow.api.auth.backend.deny_all |
Depois de definir essa opção de configuração como
airflow.api.auth.backend.default
, o servidor da Web do Airflow aceita todas as
sem autenticação. Mesmo que o próprio servidor da Web do Airflow
não exija autenticação, ele ainda está protegido pelo Identity-Aware Proxy, que
fornece a própria camada de autenticação.
Permitir chamadas de API para a API REST do Airflow usando o controle de acesso do servidor da Web
Dependendo do método usado para chamar a API REST do Airflow, o método do autor da chamada podem estar usando o endereço IPv4 ou IPv6. Desbloqueie o tráfego de IP para a API REST do Airflow usando o Controle de acesso do servidor da Web.
Use a opção de configuração padrão, que é All IP addresses have access (default)
.
se você não souber de quais endereços IP vai chamar a API REST do Airflow
será enviado.
Fazer chamadas para a API REST do Airflow
Acessar o client_id do proxy do IAM
Para fazer uma solicitação ao endpoint da API REST do Airflow, a função exige o ID do cliente do proxy do IAM que protege o servidor da Web do Airflow.
O Cloud Composer não fornece essas informações diretamente. Em vez disso, faça uma solicitação não autenticada no servidor da Web do Airflow e capture o ID do cliente do URL de redirecionamento:
cURL
curl -v AIRFLOW_URL 2>&1 >/dev/null | grep -o "client_id\=[A-Za-z0-9-]*\.apps\.googleusercontent\.com"
Substitua AIRFLOW_URL
pelo URL da interface da Web do Airflow.
Na saída, procure a string depois de client_id
. Exemplo:
client_id=836436932391-16q2c5f5dcsfnel77va9bvf4j280t35c.apps.googleusercontent.com
Python
Salve o código a seguir em um arquivo chamado get_client_id.py
. Preencha os
valores de project_id
, location
e composer_environment
. Em seguida, execute
o código no Cloud Shell ou no ambiente local.
Chamar a API REST do Airflow usando client_id
Faça as seguintes substituições:
- Substitua o valor da variável
client_id
pelo valorclient_id
recebido na etapa anterior. - Substitua o valor da variável
webserver_id
pelo ID do projeto de locatário, que faz parte do URL da interface da Web do Airflow antes de.appspot.com
. Você recebeu o URL da interface da Web do Airflow em uma etapa anterior. Especifique a versão da API REST do Airflow usada:
- Se você usa a API REST estável do Airflow, defina a variável
USE_EXPERIMENTAL_API
comoFalse
. - Se você usa a API REST experimental do Airflow, não é necessário fazer alterações. A variável
USE_EXPERIMENTAL_API
já está definida comoTrue
.
- Se você usa a API REST estável do Airflow, defina a variável
Acessar a API REST do Airflow usando uma conta de serviço
O banco de dados do Airflow limita o comprimento do campo de e-mail a 64 caracteres. sometimess vezes, as contas de serviço têm endereços de e-mail com mais de 64 caracteres. No momento, não é possível criar usuários do Airflow para essas contas de serviço. Se não houver um usuário do Airflow para essa conta de serviço, o acesso à API REST do Airflow resultará em erros HTTP 401 e 403.
Como solução alternativa, você pode fazer o pré-registro de um usuário do Airflow para uma conta de serviço. Para
fazer isso, use accounts.google.com:NUMERIC_USER_ID
como o nome de usuário e qualquer
string exclusiva como o e-mail.
Para acessar
NUMERIC_USER_ID
em uma conta de serviço, execute:gcloud iam service-accounts describe \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --format="value(oauth2ClientId)"
Substitua:
SA_NAME
pelo nome da conta de serviço.PROJECT_ID
pelo ID do projeto.
Crie um usuário do Airflow com o papel
Op
para a conta de serviço:IU do Airflow
Acesse a IU do Airflow.
Acesse Administrador > Usuários e clique em Criar. O usuário do Airflow precisa ter o papel
Admin
para abrir esta página.Especifique
accounts.google.com:NUMERIC_USER_ID
como o nome do usuário. SubstituaNUMERIC_USER_ID
pelo ID do usuário da etapa anterior.Especifique um identificador exclusivo como o e-mail. Você pode usar qualquer string exclusiva.
Especifique o papel do usuário. Por exemplo,
Op
Verifique se a caixa de seleção Is Active? está marcada.
Especifique o nome e o sobrenome do usuário. Você pode usar qualquer string.
Clique em Save.
gcloud
No Airflow 2, execute o comando da CLI do Airflow a seguir:
gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users create -- \ -u accounts.google.com:NUMERIC_USER_ID \ -e UNIQUE_ID \ -f UNIQUE_ID \ -l - -r Op --use-random-password
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado.NUMERIC_USER_ID
pelo ID do usuário da etapa anterior.UNIQUE_ID
pelo identificador do usuário do Airflow. Você pode usar qualquer string exclusiva.
Depois de criar um usuário do Airflow para uma conta de serviço, o autor da chamada autenticado porque a conta de serviço é reconhecida como um usuário pré-registrado, e fez login no Airflow.
Como dimensionar o componente da API REST do Airflow
A API REST e os endpoints da interface do Airflow são executados no componente, ou seja, no servidor da Web do Airflow. Caso você use intensamente a API REST, Aumento dos parâmetros de CPU e memória para ajustar os recursos do servidor da Web do Airflow para a carga esperada.