如何在GCP Cloud Composer中通过Token免谷歌账户访问Airflow UI?
GCP Cloud Composer 无谷歌账户访问Airflow UI的解决方案
核心说明
GCP Cloud Composer支持通过生成短期身份验证令牌,构造无需谷歌账户直接访问Airflow UI的链接,类似AWS MWAA的功能。令牌通过gcloud CLI或GCP API生成,有效期通常为1小时,生成时需要具备对应Composer环境的权限(如roles/composer.environmentRunner或更高权限)。
Bash 解决方案
以下脚本会自动获取Airflow UI地址并生成带令牌的登录链接:
#!/bin/bash # 配置参数 ENVIRONMENT_NAME="你的Composer环境名" LOCATION="你的环境所在区域(如us-central1)" # 获取Airflow UI基础URL AIRFLOW_URI=$(gcloud composer environments describe $ENVIRONMENT_NAME --location=$LOCATION --format "value(config.airflowUri)") # 生成带令牌的登录链接 LOGIN_URL=$(gcloud composer environments run $ENVIRONMENT_NAME --location=$LOCATION web-login -- --redirect-to="/") echo "无需账户的Airflow UI登录链接:" echo $LOGIN_URL
说明:web-login命令默认会生成包含短期令牌的完整登录URL,--redirect-to参数可指定跳转后的Airflow页面(默认是首页)。
Python 解决方案
使用google-cloud-composer客户端库和google-auth来生成令牌并构造链接:
首先安装依赖:
pip install google-cloud-composer google-auth
然后编写代码:
import google.auth from google.cloud import composer_v1 def generate_airflow_login_link(environment_name, location): # 获取认证凭据 credentials, project_id = google.auth.default() client = composer_v1.EnvironmentsClient(credentials=credentials) # 获取环境详情,提取Airflow URI environment_path = client.environment_path(project_id, location, environment_name) environment = client.get_environment(name=environment_path) airflow_uri = environment.config.airflow_uri # 生成登录令牌 request = composer_v1.GenerateAirflowLoginTokenRequest( name=environment_path, redirect_uri=f"{airflow_uri}/" ) response = client.generate_airflow_login_token(request=request) # 构造完整登录链接 login_link = f"{airflow_uri}/login?token={response.token}" return login_link # 配置参数 ENV_NAME = "你的Composer环境名" LOCATION = "你的环境所在区域" # 生成并打印链接 login_url = generate_airflow_login_link(ENV_NAME, LOCATION) print(f"无需账户的Airflow UI登录链接:{login_url}")
说明:该方法通过GCP官方API生成令牌,无需依赖gcloud CLI,适合集成到Python应用中。生成的令牌有效期为1小时,过期后需重新生成。
注意事项
- 生成令牌的账号需要拥有
roles/composer.environmentRunner或更高权限(如roles/composer.admin)。 - 令牌为短期有效,不可长期保存使用。
- 若需要分享链接给无GCP账户的用户,确保链接仅在有效期内使用,且用户无需额外登录验证。
内容的提问来源于stack exchange,提问作者Nikola197
相关产品推荐
相关产品推荐

