无法从顶点AI自定义作业中使用`gcloud auth print-token'
背景
- 我想使用一个带有顶点AI自定义作业的服务帐户,并创建一个身份令牌。
- 一旦顶点自定义作业完成,我试图通知云运行API。
- 我已经创建了一个具有
角色/run.invoker
角色的服务帐户,并确认服务帐户可以访问云运行API。- 我使用了服务帐户中的凭据,并创建了一个身份令牌,将受众设置为云运行API URL
请将受众设置为云运行api url问题设置为云运行API url问题。
- 当使用
gcloud ai custom-jobs创建
或通过 golang client ,无法为自定义服务帐户获得身份令牌。-
gcloud auth print-nidentity-token
导致错误:-
(gcloud.auth.print-istentity-token)无法从当前凭据获得身份令牌。
-
- 使用找不到响应。
- 命令:
curl \ -s \ - 得到 \ -data-urlencode“ aigair = $ cloud_run_api_url” \ -data-urlencode“格式= full” \ -h“元数据 - 风味:google” \ http:// metadata/computemetadata/v1/instance/service-accounts/default/Identity
- 响应:<代码>找不到
- 命令:
-
- 我需要一些指导,涉及哪种设置 /调用自定义作业的方式,我可以访问服务帐户的身份令牌。
详细信息
- 为了测试创建身份令牌的
FROM alpine:3.6
RUN apk add --update python curl which bash
RUN curl -sSL https://sdk.cloud.google.com | bash -s -- --disable-prompts
ENV PATH $PATH:/root/google-cloud-sdk/bin
CMD ["gcloud", "auth", "print-identity-token", "--verbosity", "debug"]
- ,使用下面的Docker文件指定自定义容器:
以下产生工作身份令牌:
- ✅在本地运行此图像
- ✅使用顶点AI GUI上的“创建”按钮运行此图像,并将服务帐户设置为我的自定义帐户,为此用例创建。
- ✅使用
gcloud
在没有服务帐户集的情况下运行此图像(使用该项目的Vertex-ai默认服务帐户)
-
以下结果错误(促使我问这个问题的问题) :
-
❌使用
gcloud
在以下设置中运行此图像,我得到错误:- 命令(删除图像名称/服务帐户):
gcloud ai custom-jobs创建\ -Region = Asia-Northeast1 \ - display-name = cli_identity_test \ - worker-pool-spec = machine-type = n2-standard-4,replica-count = 1,container-image-uri =&lt; image name&gt; \ \ -Service-account =&lt;服务帐户电子邮件&gt;
- 错误:
debug :( gcloud.auth.print-isentity-token)无法从当前凭据获得身份令牌。 Trackback(最近的最新电话): 文件“/root/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py”,第987行,在execute中 资源= calliope_command.run(cli = self,args = args) 文件“/root/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py”,第809行 资源= command_instance.run(args) 文件“/root/google-cloud-sdk/lib/googlecloudsdk/calliope/exceptions.py”,第129行,在tryfunc 返回func(*args,** kwargs) 文件“/root/google-cloud-sdk/lib/surface/auth/print_identity_token.py”,第130行 凭据= _run(args) 文件“/root/google-cloud-sdk/lib/surface/auth/print_identity_token.py”,第78行,in _run “无法从当前的凭据获得身份令牌。”) InvalidIdentityTokenerror:从当前的凭据无法获得身份令牌。 错误:( gcloud.auth.print-nidentity-token)无法从当前凭据获得身份令牌。
- 命令(删除图像名称/服务帐户):
-
❌使用自定义服务帐户运行图像,并使用顶点AI Golang API客户端库来启动作业
-
角色的注释,
- 我也尝试扩展与我的服务帐户相关的角色,但是这些没有解决错误:
- 要匹配默认的顶点ai服务帐户(
角色/aiplatform.customcodeserviceagent
) - 服务帐户令牌创建者(
角色/iam.serviceaccounttokencreator
) - 服务帐户用户(
角色/IAM.Serviceaccountuser
)
- 要匹配默认的顶点ai服务帐户(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我写了 >
我确定您可以使用访问令牌重复使用该API来生成和身份令牌。一次我一次构建云的问题(我认为现在已经修复了)。
I wrote that
I'm sure you can reuse that API with an Access Token to generate and identity token. I had a similar issue with Cloud Build at a time (I think it's fixed now).
您可以使用
示例:云功能的受众看起来像
https://&lt; region&gt; - &lt; project_id&gt; .cloudfunctions.net/&lt; function_name&gt;
You can use
Example: Audience for cloud function will look like
https://<REGION>-<PROJECT_ID>.cloudfunctions.net/<FUNCTION_NAME>