帮你快速理解、总结文档立即下载

创建并访问弹性部署

最近更新时间:2026-09-10 10:03:30
本文档已由 AI 辅助审校
我的收藏
本文介绍如何使用 agr 创建弹性部署(Deployment),并分别通过本地代理和生产数据面访问已部署的应用。完成本文后,您将获得一个可接收请求的弹性部署,并能验证本地调试路径和生产数据面访问路径。您也可以参考 Deployment Cookbook 快速入门与示例代码来快速上手。

目标与结果

创建一个与已有沙箱工具关联的弹性部署。
查询弹性部署详情,确认沙箱工具、伸缩配置和生命周期配置符合预期。
通过本地代理验证本地调试访问。
通过生产数据面验证带短期 Token 的访问。
按生命周期策略清理弹性部署,必要时清理保留的 PAUSED 沙箱实例和沙箱工具。

前提条件

开始前,请确认:
已安装并初始化 agr,且 agr status 和 agr doctor 检查通过。
当前身份具备创建、查询和删除弹性部署,以及调用 AcquireDeploymentToken 的权限。
已创建了一个常驻型的自定义沙箱工具。
已确认沙箱工具中应用监听的 HTTP 端口。下文以 8080 为例。
已安装 curl。
设置示例变量:
export AGR_REGION='ap-shanghai'
export AGR_DOMAIN='tencentags.com'
export TOOL_ID='sdt-replace-me'
export DEPLOYMENT_NAME='deployment-quickstart'
说明:
示例中的 TOOL_ID、DEPLOYMENT_TOKEN 等值需替换为实际返回值。

步骤概览

1. 创建弹性部署。
2. 查询弹性部署。
3. 通过本地代理访问。
4. 通过生产数据面访问。
5. 清理资源。

执行步骤

步骤 1:创建弹性部署

下面的配置允许从零实例按需启动,最多扩展到 10 个实例;实例空闲 5 分钟后停止并释放。
参数
示例值
说明
MinInstanceCount
0
允许从零实例按需启动。
MaxInstanceCount
10
最多扩展到的实例数。
MaxInstanceRequestConcurrency
100
单实例最大请求并发数。
IdleTimeoutSeconds
300
实例空闲 300 秒(5 分钟)后触发空闲处理。
IdleAction
STOP
空闲后停止实例并释放。
agr deployment create \\
--region "${AGR_REGION}" \\
--deployment-name "${DEPLOYMENT_NAME}" \\
--tool-id "${TOOL_ID}" \\
--scaling-configuration '{
"MinInstanceCount": 0,
"MaxInstanceCount": 10,
"MaxInstanceRequestConcurrency": 100
}' \\
--lifecycle-configuration '{
"IdleTimeoutSeconds": 300,
"IdleAction": "STOP"
}'
从 CLI 响应中复制 DeploymentId,再设置后续步骤使用的环境变量:
export DEPLOYMENT_ID='dpl-replace-me'
创建成功后弹性部署为 ACTIVE,表示入口可以接收请求,但不保证沙箱实例已经完成启动。首次请求可能包含按需启动延迟。

步骤 2:查询弹性部署

agr deployment get "${DEPLOYMENT_ID}" --region "${AGR_REGION}"
agr deployment list --region "${AGR_REGION}"
确认详情中的沙箱工具、伸缩配置和生命周期配置符合预期。

查看受管沙箱实例的 Metadata

如需查看由弹性部署创建或管理的沙箱实例,可按沙箱工具查询沙箱实例,并输出 JSON:
agr instance list \\
--tool-id "${TOOL_ID}" \\
--region "${AGR_REGION}" \\
-o json
在返回的 Data.Items[].Metadata 中,弹性部署会投影以下平台字段:
Metadata 名称
说明
tencentags.com/managed-by
沙箱实例当前由弹性部署管理时,值为 deployment;解除管理关系时会移除。
tencentags.com/deployment-id
建立 Metadata 投影的弹性部署 ID;解除管理关系后可能保留,用于展示历史来源。
tencentags.com/affinity-id
首次会话亲和成功后写入的完整 Affinity ID;未启用或尚未建立亲和时不存在。
说明:
同一沙箱工具也可能被用于直接创建独立沙箱实例,因此查询结果不一定都归当前弹性部署管理。

步骤 3:通过本地代理访问

deployment proxy 适合本地调试。下面把本机 127.0.0.1:18080 转发到弹性部署的 8080 端口:
agr deployment proxy "${DEPLOYMENT_ID}" 18080:8080 \\
--region "${AGR_REGION}"
该命令会占用当前终端。在另一个终端发起请求:
curl --fail-with-body --silent --show-error \\
http://127.0.0.1:18080/
验证完成后,回到代理终端按 Ctrl+C。
警告:
本地代理默认只监听 127.0.0.1,仅适合本地调试,请勿把本地调试代理作为生产入口。

步骤 4:通过生产数据面访问

生产客户端应先调用 AcquireDeploymentToken:
agr api call AcquireDeploymentToken \\
--region "${AGR_REGION}" \\
--request '{
"DeploymentId": "'"${DEPLOYMENT_ID}"'"
}' \\
--output json
从响应的 Data.Response.Response.Token 复制 Token:
export DEPLOYMENT_TOKEN='replace-with-short-lived-token'
然后访问端口对应的数据面域名:
curl --fail-with-body --silent --show-error \\
--header "X-Access-Token: ${DEPLOYMENT_TOKEN}" \\
"https://8080-${DEPLOYMENT_ID}.${AGR_REGION}.agents.${AGR_DOMAIN}/"
警告:
Token 是短期凭证。请勿把它写入代码仓库、日志或长期配置;过期后重新调用 AcquireDeploymentToken。

结果验证

本地代理的 curl 请求应返回沙箱工具中应用在 8080 端口的响应。
生产数据面的 curl 请求应返回沙箱工具中应用在 8080 端口的响应。
agr deployment get 和 agr deployment list 返回的详情中,沙箱工具、伸缩配置和生命周期配置符合预期。

资源清理

先删除弹性部署并等待异步删除完成:
agr deployment delete "${DEPLOYMENT_ID}" \\
--region "${AGR_REGION}" \\
--wait
删除弹性部署时,平台会按照进入 DELETING 状态时固定的 IdleAction 处理其管理的沙箱实例:
STOP:自动停止并释放沙箱实例,无需手动删除。
PAUSE:暂停并保留沙箱实例;这些 PAUSED 沙箱实例需要手动删除。
本示例使用 STOP,因此弹性部署删除完成后,无需手动删除其管理的沙箱实例。如果您将 IdleAction 改为 PAUSE,并且这个沙箱工具是专门为本教程创建的,请先确认没有其他业务使用它,再列出仍关联到沙箱工具的沙箱实例:
agr instance list --tool-id "${TOOL_ID}" \\
--region "${AGR_REGION}"
仅对仍保留的 PAUSED 沙箱实例逐个执行删除:
export INSTANCE_ID='replace-with-instance-id'

agr instance delete "${INSTANCE_ID}" \\
--region "${AGR_REGION}" \\
--yes \\
--wait
确认不存在仍需保留的沙箱实例后,再删除不再使用的沙箱工具:
agr tool delete "${TOOL_ID}" \\
--region "${AGR_REGION}" \\
--yes \\
--wait