Agent Runtime 创建并访问弹性部署

如何使用 agr 创建弹性部署(Deployment),并分别通过本地代理和生产数据面访问已部署的应用。完成这篇后,你将获得一个可接收请求的弹性部署,并能验证本地调试路径和生产数据面访问路径。你也可以参考 Deployment Cookbook 快速入门与示例代码来快速上手。

相关产品
Agent Runtime 产品页,含版本规格、价格与购买入口。

一、目标与结果

·创建一个与已有沙箱工具关联的弹性部署。

·查询弹性部署详情,确认沙箱工具、伸缩配置和生命周期配置符合预期。

·通过本地代理验证本地调试访问。

·通过生产数据面验证带短期 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

赞 (0)
上一篇 4天前
下一篇 4天前