将Google云存储桶配置为Airflow Log文件夹

时间:2017-09-19 13:54:33

标签: amazon-s3 google-cloud-storage airflow

我们刚开始在我们的数据管道项目中使用Apache airflow。在探索这些功能后,我们了解了如何将远程文件夹配置为气流中的日志目的地。为此我们

创建了一个谷歌云桶。 从Airflow UI创建了一个新的GS连接

enter image description here

我无法理解所有字段。我刚从谷歌控制台在我的项目下创建了一个示例GS Bucket,并将该项目ID提供给此Connection.Left密钥文件路径和范围为空白。 然后编辑airflow.cfg文件如下

remote_base_log_folder = gs://my_test_bucket/
remote_log_conn_id = test_gs

此更改后重新启动了Web服务器和调度程序。但是我的Dags仍然没有将日志写入GS存储桶。我能够看到在base_log_folder中创建日志的日志。但是我的存储桶中没有创建任何内容。 我的身边是否需要额外的配置才能让它正常工作

注意:使用Airflow 1.8。(同样我遇到AmazonS3的问题。)

2017年9月20日更新

尝试附加屏幕截图的GS方法

enter image description here  我仍然没有收到桶中的日志

由于 Anoop R

2 个答案:

答案 0 :(得分:0)

是的,您需要提供有关S3和GCP连接的其他信息。

<强> S3

配置通过额外字段作为JSON传递。您只能提供个人资料

{"profile": "xxx"}

或凭据

{"profile": "xxx", "aws_access_key_id": "xxx", "aws_secret_access_key": "xxx"}

或配置文件的路径

{"profile": "xxx", "s3_config_file": "xxx", "s3_config_format": "xxx"}

如果是第一个选项,boto将尝试检测您的凭据。

源代码 - airflow/hooks/S3_hook.py:107

<强> GCP

您可以提供key_pathscope(请参阅Service account credentials),也可以按以下顺序从您的环境中提取凭据:

  • 环境变量GOOGLE_APPLICATION_CREDENTIALS指向包含存储凭据信息的文件。
  • 存储与gcloud命令行工具关联的“众所周知”文件。
  • Google App Engine(制作和测试)
  • Google Compute Engine制作环境。

源代码 - airflow/contrib/hooks/gcp_api_base_hook.py:68

答案 1 :(得分:0)

未将日志写入存储桶的原因可能与服务帐户有关,而不是与气流本身配置有关。确保它可以访问上述存储桶。我过去也遇到过同样的问题。

为服务帐户添加更多慷慨的权限,例如甚至是项目范围内的编辑器,然后缩小范围。您也可以尝试使用带有该密钥的gs客户端,看看是否可以写入存储桶。

就我个人而言,此范围适用于编写日志:“https://www.googleapis.com/auth/cloud-platform

相关问题