来自Google Composer Airflow Environment的数据存储区导出操作员权限错误

时间:2019-07-19 01:18:36

标签: python airflow datastore google-cloud-composer

我在datastore_export_operator.DatastoreExportOperator任务下运行气流DAG时收到权限错误。气流环境是使用Google Composer创建的,并且具有默认的google_cloud_datastore_default连接,但是我仍然收到此错误:

[2019-07-19 01:08:36,618] {models.py:1796} ERROR - <HttpError 403 when requesting https://datastore.googleapis.com/v1beta1/projects/{project-name}:export?alt=json returned "The caller does not have permission">

请注意-我可以使用默认连接成功访问bigquery和云存储,但是我无法访问数据存储

我的完全追随者在下面

from airflow import DAG
from datetime import datetime, timedelta
from airflow.contrib.operators import datastore_export_operator
bucket_name = 'my-bucket-name'
datastore_conn_id = 'google_cloud_datastore_default'
cloud_storage_conn_id = 'google_cloud_storage_default'
overwrite_existing = 'true'
entity_filter = {'kinds' : [''], 'namespaceIds' : ['']}
default_args = {
  'owner': 'Jordan',
  'depends_on_past': False,
  'start_date': datetime(2019, 7, 18),
  'email_on_failure': True, 
  'email': ['jordan@jordan.com'], 
  'retries': 1, 
  'retry_delay': timedelta(minutes=2), 
}

dag = DAG('novelty.stats.adunit.daily', 
  schedule_interval='@daily',
  default_args=default_args
)

t1 = datastore_export_operator.DatastoreExportOperator(
  dag=dag,
  task_id='ad_unit_config_to_storage',
  bucket=bucket_name,
  entity_filter=entity_filter,
  datastore_conn_id=datastore_conn_id,
  cloud_storage_conn_id='cloud_storage_conn_id
)

1 个答案:

答案 0 :(得分:0)

看起来像是IAM政策问题。我建议将以下IAM角色roles/datastore.importExportAdmin明确添加到您的Composer环境service account中。

我还注意到错误日志https://datastore.googleapis.com/v1beta1/projects/{project-name}中的某些奇怪现象,其中项目名称未解析为您的GCP项目ID。尽管由于日志是由models.py产生的事实,但这可能是一个红色的鲱鱼。让我们看看IAM策略更改是否可以解决此问题。