如何获取作曲家数据文件夹的GCS路径

How to get the GCS path of composer data folder

我需要将文件从 FTP 服务器复制到特定的 GCS 位置。 我正在使用 ftp_hook 将文件下载到 /data 文件夹中。 我需要将此文件移动到不同的 GCS 存储桶而不是 Composer GCS 存储桶。

我正在尝试使用 GoogleCloudStorageToGoogleCloudStorageOperator 运算符将文件从作曲家存储桶复制到所需的存储桶。 为此,我需要在 Airflow 任务中读取作曲家桶。我不想将其添加为自定义变量,因为我的作曲家本身是动态创建的。 那么如何获取我的数据文件夹所在的composer bucket的信息呢?

更新:

我刚刚发现(也许是新发现)您可以使用存储桶访问环境变量。这是在 Composer 中自动定义的。

COMPOSER_BUCKET = os.environ["GCS_BUCKET"]

原文:

我不是 100% 确定你是否想动态地执行此操作(即,相同的 DAG 无需任何修改就可以在其他 Composer 环境中工作),无论如何,这就是我的想法:

  • (没有动态) 你可以在环境中点击查看Composer使用的bucket,应该在"DAGs folder"下面(其实就是DAG所在的文件夹,直接取出/dags)

  • (动态) 因为你想要的是将文件从 Composer 复制到 GCS,你可以使用 FileToGoogleCloudStorageOperator and use file the is mapped to the Composer Bucket。请注意,本地存储和 Composer 存储桶是相互映射的,因此访问路径 home/airflow/gcs/data/file1gs://<bucket>/data/file1.

  • 要 "the same"
  • (Semi-Dynamically) 您可以使用 Composer API 获取环境详细信息并解析存储桶。当然,你需要事先知道名称、位置和项目。

在这三个中,我认为使用 FileToGoogleCloudStorageOperator 的那个是最干净、最简单的。