首页 > 解决方案 > 将对话流代理链接到 Google Cloud Console 项目并继承我分配给该项目的所有团队成员?

问题描述

如何创建一个对话流代理并将其与我创建的 Google Cloud Console 项目相关联,并让它继承我分配给该项目的所有团队成员?我正在开发一个对话流项目。我在 Google Cloud Console 中创建了一个新项目并添加了一些团队成员。但是,当我切换到 dialogflow 控制台时,我看不到我的项目和我添加到其中的人。当我在 dialogflow 中创建新代理时,它似乎与我在云控制台中创建的项目无关,我必须与团队明确共享代理。所以谷歌云控制台项目有点没用。例如,在 Azure 认知服务中,我可以将所有内容链接到我的根项目。

最佳CK

标签: dialogflow-esgoogle-cloud-console

解决方案


Google 在使这些资源(例如项目)更清晰方面可以做得更好。

实际上(据我所知)所有 Google 项目都代表相同的底层项目资源,例如,您可以从 Google Cloud Console 查看 DialogFlow 项目,反之亦然。

我怀疑(!)您创建了 2 个不同的项目:一个使用(Google Cloud Platform)控制台,一个使用 DialogFlow控制台

如果您安装了 Cloud SDK(又名gcloud),您应该能够使用以下命令列出您的所有项目(Cloud、DialogFlow 等):

gcloud projects list

现在,回答你的问题。Google (!) 项目的用户是 Google 帐户用户和组,还包括服务帐户。您可以列出给定项目的用户:

gcloud projects get-iam-policy ${PROJECT}

理想情况下,您要做的是确保在两个项目中都反映此策略。我不愿意提供脚本,因为服务帐户使这种共享变得复杂。服务帐户跨项目工作,但它们是在项目中自动创建的。一个简单的帐户复制和粘贴可能会破坏您的某些东西。

也就是说,这是一个从一个项目gcloud中枚举${ROLE}( ) 列表的命令:roles/owner${SRC}

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(云)项目。下一次,你按照这个流程,请寻找“新建或使用现有项目”提示。您将能够选择您之前创建的项目来重用您的用户。


推荐阅读