从另一个项目访问存储桶?

时间:2018-06-18 13:03:23

标签: airflow google-cloud-composer

我在VM中有一个脚本,用于在另一个项目的存储桶中写入数据。

我想使用Airflow安排此脚本,但当脚本需要写入数据时,我有IAM访问问题:

  

AccessDeniedException:403 148758369895-compute@developer.gserviceaccount.com没有对******的storage.objects.list访问权限

要启动脚本,我使用以下命令:

bash_command=' gcloud config set project project2 && gcloud compute --project "project1" ssh --zone "europe-west1-c" "VMname" --command="python script.py"',

如果我想使用Google Cloud Shell启动脚本,我需要使用 gcloud auth login 但是如何使用Airflow / Composer执行此操作?

我试过

bash_command='gcloud auth login && gcloud config set project project2 && gcloud compute --project "project1" ssh --zone "europe-west1-c" "VMname" --command="python script.py"',

没有成功

1 个答案:

答案 0 :(得分:0)

在GCP项目之间共享资源的推荐方法是授予与您的Cloud Composer环境关联的服务帐户在目标项目中所需的最低IAM权限。

在您的情况下,您将在目标项目或目标存储桶上授予服务帐户用户 148758369895-compute@developer.gserviceaccount.com objectViewer角色。

但要小心! 148758369895-compute@developer.gserviceaccount.com 似乎是默认的Google Compute Engine服务帐户。授予其他权限还可以为Composer项目中的其他VM提供相同的权限。要避免这种情况:创建自定义服务帐户并在创建环境时将其与Composer环境相关联。