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

时间:2018-05-15 19:07:02

标签: google-cloud-platform google-cloud-composer

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

1)我需要使用私钥(.pem)文件来访问SFTP服务器。该文件应存放在何处以及如何访问?在本地Airflow中,我只将文件放在/ dags /中的文件夹/ keys /中。

2)我需要将文件从SFTP服务器移动到云存储。使用Airflow,我将这些从SFTP服务器下载到Airflow工作器实例上的特定位置,然后从那里上传。我可以使用Composer做类似的事情,还是因为我无法访问文件系统而有解决方法?

2 个答案:

答案 0 :(得分:7)

1)假设只需要在任务运行时访问.pem文件(而不是DAG定义解析时间),您可以将它放在environment's Cloud Storage bucket的/ data目录中。它在路径/ home / airflow / gcs / data上安装了保险丝。您可以使用Cloud Composer gcloud component上传文件。

2)这里有2个选项。

  1. 从SFTP服务器写入/ home / airflow / gcs / data,它是保存在云存储桶中的保险丝。您可以将其保留在那里或使用GoogleCloudStorageToGoogleCloudStorageOperator将其移动到您真正想要的位置。

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

答案 1 :(得分:1)

对于2.,基于cloud composer文档:

  

当您在Cloud Storage存储桶中修改DAG或插件时,Cloud Composer会跨集群中的所有节点同步数据。 Cloud Composer通过本地复制单向同步dags /和plugins /文件夹,并使用Cloud Storage FUSE双向同步data /和log /文件夹。

您可以在操作员中将文件写入本地目录/home/airflow/gcs/data,然后云编写器将双向与gs://bucket/data同步目录。

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

相关问题