google-cloud-platform - 如何使用 Cloud Composer 下载和访问文件?
问题描述
我有一些与文件相关的用例,我不确定如何使用 Cloud Composer 最好地完成这些用例。我应该如何最好地完成这些?
1)我需要使用私钥(.pem)文件来访问 SFTP 服务器。该文件应存储在何处以及应如何访问?在本地 Airflow 中,我只需将文件放在与 /dags/ 相同目录中的文件夹 /keys/ 中。
2)我需要将文件从 SFTP 服务器移动到云存储。使用 Airflow on prem,我将这些从 SFTP 服务器下载到 Airflow 工作实例上的特定位置,然后从那里上传。我是否可以使用 Composer 做类似的事情,或者是否有解决方法,因为我无法访问文件系统?
解决方案
1)假设 .pem 文件只需要在任务运行时访问(而不是 DAG 定义解析时),您可以将其放在环境的 Cloud Storage 存储桶的 /data 目录中。它在路径 /home/airflow/gcs/data 上安装了保险丝。您可以使用 Cloud Composer gcloud 组件上传文件。
2)这里有2个选项。
从您的 SFTP 服务器写入 /home/airflow/gcs/data,该文件已熔断安装到您的 Cloud Storage 存储桶中。您可以将其留在那里或使用GoogleCloudStorageToGoogleCloudStorageOperator将其移动到您真正想要的位置。
如果要复制到本地磁盘和从本地磁盘复制到 Cloud Storage,则需要在同一个任务中执行这两个步骤(由于 Cloud Composer 环境使用 CeleryExecutor,因此不能保证同一个 DAG 中的任务在同一台机器)。您应该能够写入 /home/airflow 和 /tmp。
推荐阅读
- r - 计算置换相关性:如何获得平均 r 值
- java - while循环行数增加
- python - 美丽的汤:无法从中获取文本(价格)
- c# - 迁移成功,但 IIS 不这么认为?
- javascript - 如何在 Nunjucks 中进行不区分大小写的字符串比较
- java - 自定义注释初始化方法不起作用
- swift - 在 Swift Combine Publisher 中,我遇到了“RangeReplaceableCollection”错误
- google-apps-script - 谷歌表格脚本 | 我可以通过脚本公式访问单元格编辑历史吗?
- python-3.x - 我需要从 uma 文件中获取文本并放入另一个空文件
- r - 如何使用 lapply 或 purrr::map 或任何其他快速方式而不是列表的“for循环”?