我在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
)
答案 0 :(得分:0)
看起来像是IAM政策问题。我建议将以下IAM角色roles/datastore.importExportAdmin明确添加到您的Composer环境service account中。
我还注意到错误日志https://datastore.googleapis.com/v1beta1/projects/{project-name}
中的某些奇怪现象,其中项目名称未解析为您的GCP项目ID。尽管由于日志是由models.py
产生的事实,但这可能是一个红色的鲱鱼。让我们看看IAM策略更改是否可以解决此问题。