管理 API Token¶
在 BentoCloud 中,API Token 是授权的关键方法。你可以使用 Token 来
登录 BentoCloud
管理 BentoCloud 资源
访问启用了授权的受保护部署
本教程解释了如何在 BentoCloud 中创建和使用 API Token。
API Token 的类型¶
BentoCloud 提供两种类型的 API Token
特性 |
个人 API Token |
组织 API Token |
---|---|---|
所有权 |
属于个人用户 |
属于组织 |
管理 |
由 Token 创建者管理 |
对所有成员可见,但只有管理员才能创建、更新或删除 Token,以及查看 Token 值 |
有效期 |
如果创建者离开组织,Token 将失效 |
即使创建者离开组织,Token 仍然有效。其他管理员仍可对其进行管理 |
用例 |
个人开发和测试 |
持续集成/部署 (CI/CD) 流水线、常规自动化任务、共享和长期工作流 |
对于需要频繁更新、部署或访问受保护端点的持续自动化任务,我们建议使用组织 API Token 以确保持续性。个人 API Token 在关联用户离开组织时将失效。
创建 API Token¶
点击任意 BentoCloud 页面右上角的个人资料图片,然后选择 API Tokens。
选择个人 API Token 或组织 API Token,然后点击 创建。
在出现的对话框中,指定以下字段。请注意,你必须至少选择一种访问类型。
名称: API Token 的名称。
描述: Token 的描述,详细说明其用途。
开发运营访问 (Developer Operations Access): 授予访问 BentoCloud 并管理其资源的权限。
受保护端点访问 (Protected Endpoint Access): 授予访问具有受保护端点的 Bento 部署的权限。如果选择此类型,需要选择你希望 Token 访问的部署。如果你希望 Token 访问所有受保护部署,选择 所有部署。
过期时间 (Expired At): 设置 Token 的过期日期。Token 过期后将无法使用。
点击 提交。
记录 Token。
所有可用的 Token 都显示在 API Tokens 页面上。如果不再需要某个 Token,点击 删除。
使用 BentoML CLI 登录 BentoCloud¶
CLI 登录需要具有开发运营访问权限 (Developer Operations Access) 的 API Token。
运行
bentoml cloud login
命令。bentoml cloud login
按照屏幕上的说明登录。
? How would you like to authenticate BentoML CLI? [Use arrows to move] > Create a new API token with a web browser Paste an existing API token
或者,如果你已有可用的 Token,可以通过设置
api-token
参数来登录。bentoml cloud login --api-token <your-api-token>
注意
创建 Token 后会自动显示以上命令。
预期输出
Successfully logged in as user "user" in organization "mybentocloud".
要在本地检索当前端点和 API Token,请确保已安装
jq
,然后运行bentoml cloud current-context | jq '("endpoint:" + .endpoint + ", api_token:" + .api_token)'
登录后,你应该能够管理 BentoCloud 资源。有关 CLI 的更多信息,请参阅 BentoCloud CLI。
访问受保护部署¶
你可以使用具有受保护端点访问权限 (Protected Endpoint Access) 的 Token 来访问受保护的 Bento 部署。以下示例提供了与启用了授权的 Hello world 摘要服务交互的不同方式。
在 HTTP 请求的头部中包含 Token。
curl -s -X POST \
'https://app-name.organization.cloud-apps.bentoml.com/summarize' \
-H 'Authorization: Bearer $YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"text": "Your long text to summarize"
}'
在你的客户端中设置 token
参数。
import bentoml
client = bentoml.SyncHTTPClient("https://app-name.organization.cloud-apps.bentoml.com", token="******")
response = client.summarize(text="Your long text to summarize")
print(response)
要从网页浏览器访问受保护部署,你可以使用支持此功能的任何浏览器扩展程序在头部中添加 Token,例如 Google Chrome 中的 Header Inject。
按照上述 创建 API Token 部分的步骤创建一个用户 Token。请确保选择你希望该 Token 访问的目标部署。
在 Google Chrome 中安装并启用 Header Inject。
选择 Header Inject,点击“添加”,并指定“头部名称”和“头部值”。
头部名称: 输入
Authorization
。头部值: 输入
Bearer $YOUR_TOKEN
。
点击 保存。
再次访问你的受保护部署的暴露 URL,你应该就能够访问它了。
使用环境变量进行 API 认证¶
使用 Python 调用 BentoCloud API 时,你可以设置以下环境变量进行认证
BENTO_CLOUD_API_KEY
: 你的 BentoCloud API TokenBENTO_CLOUD_API_ENDPOINT
: 你组织的特定 BentoCloud 端点
示例
export BENTO_CLOUD_API_KEY=cur7h***************
export BENTO_CLOUD_API_ENDPOINT=https://organization_name.cloud.bentoml.com
注意
使用环境变量时,请确保同时设置 BENTO_CLOUD_API_KEY
和 BENTO_CLOUD_API_ENDPOINT
,因为两者都是认证所必需的。
监控 API Token¶
BentoCloud 提供一种特殊类型的 API Token,称为监控 Token (Monitoring Tokens),它仅适用于 BYOC (Bring Your Own Cloud,自带云) 客户。这些 Token 专门用于以联合方式访问 Prometheus 指标。
注意
监控 Token 默认是禁用的。如果你的组织需要访问这些 Token,请联系 BentoML 团队启用此功能。
使用监控 Token
按照上述 创建 API Token 部分的步骤创建一个监控 Token,确保选择“监控 Token”选项。
使用 Token 通过联合端点访问 Prometheus 指标
curl -H "Authorization: Bearer $YOUR_TOKEN" \ --get \ --data-urlencode 'match[]={yatai_ai_bento_function!=""}' \ https://prometheus.monitoring.$YOUR_CLUSTER.bentoml.ai/federate
此端点允许你将 BentoML 部署的指标导出到自己的监控基础设施。