0

我在 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"',

没有成功

4

1 回答 1

0

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

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

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

于 2018-06-19T02:43:22.243 回答