Google 可以做得更好,使这些资源(例如项目)更加清晰。
实际上(据我所知)所有 Google 项目都代表相同的底层项目资源,例如,您可以从 Google Cloud Console 查看 DialogFlow 项目,反之亦然。
我怀疑 (!) 您创建了 2 个不同的项目:一个使用 (Google Cloud Platform) Console,另一个使用 DialogFlow Console
如果您安装了 Cloud SDK(又名 gcloud),您应该能够使用以下方式列出您的所有项目(Cloud、DialogFlow 等):
gcloud projects list
现在,回答您的问题。 Google (!) 项目的用户是 Google 帐户用户和组,还包括服务帐户。您可以列出给定项目的用户:
gcloud projects get-iam-policy ${PROJECT}
理想情况下,您要做的是确保此政策在两个项目中都得到体现。我不愿意提供脚本,因为服务帐户使这种共享变得复杂。服务帐户跨项目工作,但它们是在项目中自动创建的。一个简单的帐户复制和粘贴可能会破坏您的某些东西。
也就是说,这是一个gcloud 命令,用于从一个项目${SRC} 中枚举${ROLE} (roles/owner) 的列表:
PSRC=...
ROLE="roles/owner"
MEMBERS=$(gcloud projects get-iam-policy ${PSRC} \
--flatten=bindings \
--filter=bindings.role:${ROLE} \
--format="value(bindings.members)") && echo ${MEMBERS}
注意如果需要,可能有一种方法可以拆分user:some@email.com
然后您可以遍历此列表并将这些帐户添加(!)到${PDST}
for MEMBER in ${MEMBERS}
do
gcloud projects add-iam-policy-binding ${DST} \
--member=${MEMBER} \
--role=${ROLE}
done
最后,当您创建 DialogFlow 项目时,您可以选择使用现有的 Google(云)项目。下一次,你按照这个流程,请寻找“新建或使用现有项目”提示。您将能够选择您之前创建的项目来重用您的用户。