除了创建、更新和删除服务等管理操作以外,开发者通常还需要在发布服务之前进行不公开测试。此选项适用于 Cloud Run 服务,而不适用于 Cloud Run 作业。
开始前须知
请确保您授予访问要向其进行身份验证的服务的权限。您必须将 Cloud Run Invoker 角色授予开发者或开发者组:
控制台界面
前往 Google Cloud 控制台:
选择服务,但不点击它。
点击右侧面板中的权限标签页。(您可能需要先点击右上角的显示信息面板。)
点击添加成员。
在添加成员字段中,输入开发者帐号电子邮件地址。
从选择角色下拉菜单中选择
Cloud Run Invoker
角色。点击保存。
gcloud
使用 gcloud run services add-iam-policy-binding
命令:
gcloud run services add-iam-policy-binding SERVICE \ --member='USER:EMAIL' \ --role='roles/run.invoker'
其中
- SERVICE 是服务的名称。
- USER 的值是
user
或group
,具体取决于您是向单个开发者授权还是向群组授权。 EMAIL 是电子邮件帐号。
例如:
gcloud run services add-iam-policy-binding myservice \ --member='user:test-user@gmail.com' \ --role='roles/run.invoker'
测试专用服务
在 Google Cloud CLI 中使用 Cloud Run 代理
测试专用服务的最简单方法是使用 Google Cloud CLI 中的 Cloud Run 代理。它将此专用服务代理到 http://localhost:8080
(或使用 --port
指定的端口),并提供活跃帐号的令牌或您指定的其他令牌。这可让您使用网络浏览器或 curl
等工具。
这是在浏览器中以私密方式测试网站或 API 的推荐方法。
您可以使用以下命令在本地代理服务:
gcloud beta run services proxy SERVICE --project PROJECT-ID
使用 curl
您也可以在不使用代理的情况下测试专用服务,方法是使用 curl
等工具并在 Authorization
标头中传递一个身份验证令牌:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
为了让 curl
命令正常运行,您必须将一个有效的身份令牌传递给具有 run.routes.invoke
权限的用户,例如 Cloud Run Admin 或 Cloud Run Invoker。如需查看角色及其关联权限的完整列表,请参阅 Cloud Run IAM 角色。
如示例所示,要为当前登录 gcloud
的身份获取有效的身份令牌,您可以使用 gcloud auth print-identity-token
。
请注意,使用 gcloud
命令生成的 ID 令牌应仅在开发设置中使用,因为不需要指定“audience”。如果要求指定 audience
,则可以降低重放攻击的风险。相比之下,通过服务帐号生成令牌时,必须指定 audience
。