有没有办法在内部(自动)获取作曲家的环境信息?



我有一个部署在GKE集群上的编写器环境,我的愿望是能够通过operators检索该集群上的信息,例如,无需硬编码,或手动将其放在环境变量中。

我现在想要得到的相关信息:

COMPOSER_SERVICE_ACCOUNT = "<acc_name>@<project_id>.iam.gserviceaccount.com"
COMPOSER_BUCKET = "<bucket_name>"
COMPOSER_PROJECT = "<project_id_where_composer_is_deployed>"
COMPOSER_PYTHON_VERSION = "3.8.12"
COMPOSER_VERSION = "<relevant_v>"
COMPOSER_UI_URL = "<...>"
AIRFLOW_VERSION = "2.3.4"
...

我的直觉是通过BashOperator使用gcloud,但我希望有一个库能够更好地执行此任务。

您可以使用内置的CloudComposerGetEnvironmentOperator操作符:

get_env = CloudComposerGetEnvironmentOperator(
task_id="get_env",
project_id='project',
region='europe-west1',
environment_id='composer-env-name',
)

这个操作符显示所有的环境信息,相当于:

gcloud composer environments describe composer-env-name 
--location europe-west1

如果需要,您可以使用xcom访问结果Dict

如果您不想硬编码参数,如project idComposerenvironment name,您可以使用预定义的Composer环境变量检索它们,例如:

PROJECT_ID = os.getenv("GCP_PROJECT")
COMPOSER_ENV_NAME = os.getenv("COMPOSER_ENVIRONMENT")
get_env = CloudComposerGetEnvironmentOperator(
task_id="get_env",
project_id=PROJECT_ID,
region='europe-west1',
environment_id=COMPOSER_ENV_NAME,
)

最新更新