如何获取作曲家数据文件夹的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/file1
比 gs://<bucket>/data/file1
.
要 "the same"
(Semi-Dynamically) 您可以使用 Composer API 获取环境详细信息并解析存储桶。当然,你需要事先知道名称、位置和项目。
在这三个中,我认为使用 FileToGoogleCloudStorageOperator 的那个是最干净、最简单的。
我需要将文件从 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/file1
比gs://<bucket>/data/file1
. 要 "the same"
(Semi-Dynamically) 您可以使用 Composer API 获取环境详细信息并解析存储桶。当然,你需要事先知道名称、位置和项目。
在这三个中,我认为使用 FileToGoogleCloudStorageOperator 的那个是最干净、最简单的。