我在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"',
没有成功
答案 0 :(得分:0)
在GCP项目之间共享资源的推荐方法是授予与您的Cloud Composer环境关联的服务帐户在目标项目中所需的最低IAM权限。
在您的情况下,您将在目标项目或目标存储桶上授予服务帐户用户 148758369895-compute@developer.gserviceaccount.com objectViewer角色。
但要小心! 148758369895-compute@developer.gserviceaccount.com 似乎是默认的Google Compute Engine服务帐户。授予其他权限还可以为Composer项目中的其他VM提供相同的权限。要避免这种情况:创建自定义服务帐户并在创建环境时将其与Composer环境相关联。