如何使用 Cloud Composer 下载和访问文件?

How can I download and access files using Cloud Composer?

我有一些与文件相关的用例,但我不确定如何使用 Cloud Composer 最好地完成这些用例。我应该如何最好地完成这些?

1)我需要使用私钥 (.pem) 文件来访问 SFTP 服务器。这个文件应该存储在哪里,应该如何访问?在本地 Airflow 中,我会将文件放在与 /dags/ 相同目录中的文件夹 /keys/ 中。

2)我需要将文件从 SFTP 服务器移动到云存储。使用 Airflow on prem,我将这些从 SFTP 服务器下载到 Airflow worker 实例上的特定位置,然后从那里上传。我能否使用 Composer 执行类似的操作,或者是否有解决方法,因为我无法访问文件系统?

1)假设.pem文件只需要在任务运行时间访问(相对于DAG定义解析时间),你可以把它放在[=10=的/data目录下].

2) 这里有2个选项

  1. 从您的 SFTP 服务器写入 /home/airflow/gcs/data,它已熔断安装到您的 Cloud Storage 存储桶。您可以将其留在那里或使用 GoogleCloudStorageToGoogleCloudStorageOperator 将其移动到您真正想要的位置。

  2. 如果你想复制到本地磁盘和从本地磁盘复制到云存储,你需要在同一个任务中执行这两个步骤(因为 Cloud Composer 环境使用 CeleryExecutor,任务在相同的 DAG 不能保证在同一台机器上 运行)。您应该能够写入 /home/airflow 和 /tmp.

对于 2.,基于云作曲家文档:

When you modify DAGs or plugins in the Cloud Storage bucket, Cloud Composer synchronizes the data across all the nodes in the cluster. Cloud Composer synchronizes the dags/ and plugins/ folders uni-directionally by copying locally and synchronizes data/ and logs/ folders bi-directionally by using Cloud Storage FUSE.

您可以在 operators 中将文件写入本地目录 /home/airflow/gcs/data,cloud composer 会将目录与 gs://bucket/data 双向同步。

更多详细信息,您可以查看此文档以了解 google cloud composer 如何与 google 云存储交互: https://cloud.google.com/composer/docs/concepts/cloud-storage