Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
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 o Cloud Run functions, consulte Como acionar DAGs com o Cloud Run functions.
Versões da API REST do Airflow
- O Airflow 2 usa a API REST estável.
- A API REST experimental foi interrompida pelo Airflow.
Configurar a API REST estável do Airflow
A API REST estável está ativada por padrão no Airflow 2. O Cloud Composer usa o próprio back-end de autenticação da API.
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 versões anteriores) auth_backend (Airflow 2.3.0 e versões mais recentes) 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. |
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 de chamada pode usar um endereço IPv4 ou IPv6. Não se esqueça de desbloquear o tráfego IP para a API REST do Airflow usando o controle de acesso ao servidor da Web.
Use a opção de configuração padrão, que é
All IP addresses have access (default)
, se você não tiver certeza de quais endereços IP
serão enviados para as chamadas da API REST do Airflow.
Fazer chamadas para a API REST do Airflow
Nesta seção, fornecemos um exemplo de script Python que pode ser usado para acionar DAGs com a API REST estável do Airflow.
Coloque o conteúdo do exemplo a seguir em um arquivo chamado
composer2_airflow_rest_api.py
e defina as seguintes variáveis:
dag_id
: nome de um DAG, conforme definido no arquivo de origem do DAG.dag_config
: configuração da execução do DAG.web_server_url
: o URL do servidor da Web do Airflow. O formato éhttps://<web-server-id>.composer.googleusercontent.com
.
Acessar a API REST do Airflow usando uma conta de serviço
O banco de dados do Airflow em versões anteriores à 2.3.0 limita o comprimento do campo de e-mail a 64 caracteres. Às 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 vai 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 Segurança > Listar usuários e clique em Adicionar um novo registro. O usuário do Airflow precisa ter o papel
Admin
para abrir essa 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 Está ativo? está marcada.
Especifique o nome e o sobrenome do usuário. Você pode usar qualquer string.
Clique em Save.
gcloud
Execute o seguinte comando da CLI do Airflow:
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, um autor da chamada é autenticado porque a conta de serviço é reconhecida como pré-registrada e conectada ao Airflow.
Como escalonar o componente da API REST do Airflow
Os endpoints da API REST do Airflow e da interface do Airflow são executados no servidor da Web do Airflow. Se você usa a API REST intensamente, considere aumentar a quantidade de CPU e memória disponíveis para o servidor da Web do Airflow, com base na carga esperada.