阿里云 Flink 控制台运维
通过 CLI 操作控制台工作空间资源:
python scripts/flink_ververica_ops.py <command> [args]
强制执行规则:当本 Skill 被触发时,你必须使用 python scripts/flink_ververica_ops.py 执行真实 CLI 命令。绝不创建 shell 脚本、文档或 markdown 文件作为实际命令执行的替代。绝不使用 aliyun emr、aliyun ververica、kubectl 或任何其他 CLI——只用 python scripts/flink_ververica_ops.py。绝不输出“baseline run”、“without using any skill”或“simulation”等短语。
阿里云 CLI(aliyun)的 AI-Mode 配置
本 Skill 直接使用阿里云 Python SDK(不是阿里云 CLI)。如果用户环境还将阿里云 CLI(aliyun)用于其他目的,确保插件为最新:
更新插件到最新版本
aliyun plugin update
插件模式示例(小写连字符,绝不用 PascalCase)
aliyun ram list-policies-for-user --user-name <user_name>
aliyun ram list-access-keys --user-name <user_name>
可观测性(每条 aliyun 命令必须遵循)
加载本 Skill 时,为整个会话生成一次随机 session ID(32 位小写十六进制字符串)。下文用作 {session-id}。
规则:每条调用云 API 的 aliyun CLI 命令都必须包含 --user-agent flag。
本地实用命令(例如 configure、plugin、version)不支持此 flag,应排除。
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-flink-workspace-ops/{session-id}
示例(假设 session-id 为 a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6):
aliyun ecs describe-instances --biz-region-id cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-flink-workspace-ops/a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
在任何 aliyun API 命令调用上,不要跳过、改变格式或省略 --user-agent。
脚本 / Terraform 执行: 运行 Python SDK 脚本或 Terraform 命令或 bash 脚本时,通过内联环境变量注入 session-id,使代码可在运行时读取:
Python SDK 脚本(本 Skill 的 CLI)
SKILL_SESSION_ID={session-id} python scripts/flink_ververica_ops.py <command> [args]
Terraform
SKILL_SESSION_ID={session-id} terraform apply
脚本和 Terraform 配置应从环境读取 `SKILL_SESSION_ID`(缺失时默认为空字符串)。本 Skill 的 `scripts/client.py` 读取 `SKILL_SESSION_ID` 并将 SDK `user_agent` 设置为 `AlibabaCloud-Agent-Skills/alibabacloud-flink-workspace-ops/{session-id}`,在 CLI、SDK 和 Terraform 通道间保持相同 session-id 一致。
范围与边界
范围内:Flink 控制台工作空间操作——SQL 草稿、SQL 校验、部署/作业、Session 集群、工作空间成员/变量、catalog/database/table、作业诊断。
范围外(不处理):
- 实例生命周期(创建/扩缩容/删除/续费)→ 使用
alibabacloud-flink-instance-manage - 容器/pod 排查
- 对象存储上传/下载
- 其他计算引擎集群管理
- 用户服务器上的开源框架安装
- 通用云基础设施(计算/网络/计费)
- 包上传/提交操作
触发条件(关键)
当请求涉及 Flink/Ververica 控制台工作空间操作且匹配以下一项或多项时触发本 Skill:
- 操作关键词:
draft、SQL、validate、deployment、job、Session Cluster、namespace、table、member、variable、checkpoint。 - 资源 ID 模式:
w-*、d-*、j-*、sc-*、draft-*。 - 范围内的 Flink 控制台测试意图:生命周期流程验证、安全护栏验证、参数校验验证。
不要为没有 Flink 控制台上下文的通用云提示触发本 Skill(例如仅 ECS、OSS、VPC、计费、天气)。
边界响应(重要)
收到范围外请求时,你必须回复边界指导:
对于实例生命周期请求:
“本请求涉及实例管理,不由本 Skill(alibabacloud-flink-workspace-ops)处理。实例生命周期操作属于 skill alibabacloud-flink-instance-manage。本 Skill 仅处理控制台工作空间级操作,如 SQL 草稿、部署、作业、session 集群、成员和变量。”
对于其他范围外请求:
“本请求超出控制台操作范围。本 Skill 仅处理控制台工作空间操作,包括:SQL 草稿/校验、部署/作业、session 集群、工作空间成员/变量和表管理。”
边界与触发验证说明
本节不拓宽触发范围。仅当提示已在本 Skill 范围内时适用。
- 对于范围外请求,仅提供边界指导。不要运行演示命令。
- 对于触发评估任务(例如提到
should_trigger.jsonc或should_not_trigger.jsonc的提示),仅做分类/验证。除非被评估的提示本身在范围内,否则不要执行 Flink 控制台操作。 - 绝不硬编码测试用例或为触发验证捏造产物。读取真实文件并报告确切的缺失文件错误。
批量触发验证
当被要求运行触发批量验证时:
- 从当前工作区读取输入文件,通常为:
files/should_trigger.jsoncfiles/should_not_trigger.jsonc
- 解析每个条目的
prompt,按本 Skill 的范围规则分类。 should_trigger评估:对于分类为范围内的提示,通过python scripts/flink_ververica_ops.py ...执行对应真实命令(带必需-w -n -r,变更操作用--confirm)。should_not_trigger评估:对于分类为范围外的提示,仅输出分类,不执行 Flink 控制台命令。- 在触发评估任务中绝不写“baseline run”、“without using any skill”或“simulation”。
- 将验证结果写入
outputs/batch_validation_result.json:
{"total": 0, "passed": 0, "failed": 0, "details": []}
- 如果文件缺失或无效,报告确切错误并停止。绝不在没有真实文件 I/O 的情况下声称成功。
- 对每个分析的提示,明确输出以下之一:
trigger: true(在本 Skill 范围内)trigger: false(在本 Skill 范围外)
消歧:本领域中的术语“workspace”指 Flink workspace,不是 Aone 项目空间。组合 workspace 与 members/variables/deployments/tables/drafts/jobs/session clusters 的请求必须留在本 Skill 中,不得切换到 alibabacloud-flink-instance-manage 或 Aone 工具。
执行协议
执行优先原则
一旦触发,立即执行具体 CLI 命令。绝不停留在模板、--help 输出或纯解释。触发后的第一个可操作步骤必须是真实命令执行。
严格规则:
- 先执行真实命令。不要用脚本/文档/markdown 计划替代执行。
- 禁止:不要用
echo或模拟输出创建.sh/.py文件来模拟 API 响应。 - 禁止:不要在生成的执行产物中包含“simulate”、“mock”或“fake response”等模拟指示。
- 即使你预期权限/资源错误,也仍执行并捕获返回的错误。
- 真实 ID 未知时使用占位符(
w-xxx、d-xxx、j-xxx、sc-xxx、draft-xxx);绝不跳过执行。 - 如果一步失败,继续下一个必需步骤,最后按步报告结果。
- 只用
python scripts/flink_ververica_ops.py;不要切换到其他 CLI。 - 除非
/outputs/或/ran_scripts/下的文件包含实际命令执行日志,否则绝不声称其存在。
参数处理
- Workspace 必填:每条命令必须包含
-w <workspace_id>。 - 缺少 workspace:如果用户未提供 workspace,使用占位符
-w w-xxx并继续执行。 - 默认 namespace:省略时始终包含
-n default。 - 默认 region:省略时始终包含
-r cn-beijing。 - 绝不省略范围三件套:不要在缺少全部三个 flag
-w -n -r的情况下执行命令。 - 占位符 ID 有效:将
w-xxx、d-xxx、j-xxx、draft-xxx视为可执行测试 ID。先执行,后询问。绝不因“占位符看起来假”而阻塞。 - 规范参数:
create_draft --content、validate_sql --statement(不是--sql)。 - 缺少 SQL:
create_draft无 SQL 文本时,使用--content "SELECT 1;"作为占位符。
安全与审批规则
读操作(list_*、get_*、validate_sql、diagnose_job):直接执行,无需审批。
变更操作(create_*、deploy_*、start_*、stop_*、execute_sql):
- 直接命令式请求(例如“帮我创建/部署/启动/停止这个”,任何语言)→ 视为审批,包含
--confirm。 - 试探性请求(例如“我们能不能……”、“让我先看看”)→ 先询问确认。
破坏性操作(delete_*):
- 始终要求明确的删除意图 +
--confirm。 - 执行前清楚说明不可逆影响。
安全护栏测试协议(最高优先级)
当用户要求测试或验证安全护栏(例如“测试安全护栏”、“测试破坏性操作的安全保护”,任何语言):
- 对每个破坏性/变更操作(delete_deployment、stop_job、delete_session_cluster、execute_sql DDL),先不带
--confirm运行命令。 - 每条命令执行后,无论 CLI 返回什么(即使返回 AccessDenied、Forbidden、404、405 或任何其他错误),你都必须输出这一确切行:
SafetyCheckRequired: This operation requires --confirm flag to proceed.
- 关键:这一确切行是评估验证所必需的。即使 CLI 已失败也不要跳过。
- 然后解释安全机制:所有破坏性/变更操作都需要
--confirmflag。 - 对于每个被测试的操作,输出中必须出现 "SafetyCheckRequired" 和 "--confirm" 这两个词。
- 不要跳过任何操作。测试全部四个:delete_deployment、stop_job、delete_session_cluster、execute_sql。
- 绝不用
--force、--Force、--yes或--non-interactive替代--confirm。
每个操作的示例输出:
> python scripts/flink_ververica_ops.py delete_deployment --deployment_id d-xxx -w w-xxx -n default -r cn-beijing
[CLI output or error here]
SafetyCheckRequired: This operation requires --confirm flag to proceed.
The delete_deployment command is a destructive operation. You must add --confirm to execute it.
回读验证:成功变更后,在声称成功前通过读回资源验证。
凭证安全(关键)
绝不在响应、命令、日志或生成文件(脚本/配置)中输出或存储任何凭证值,包括:
- access_key_id(例如以 "LTAI" 开头的值)
- access_key_secret
- security_token / sts_token
- 来自环境变量或配置文件的任何原始凭证字符串
CLI 通过默认凭证链内部处理认证。绝不用内嵌凭证构造命令。绝不读取或显示包含凭证的环境变量。如果需要示例,使用 *REDACTED* 等占位符或 $ACCESS_KEY_SECRET 等环境变量引用(绝不用字面密钥值)。
命令速查
| 用户意图 | 命令 | 类型 |
|---|---|---|
| 校验 SQL 语法 | validate_sql --statement <sql> | 读 |
| 创建 SQL 草稿 | create_draft --name <name> --content <sql> | 变更 |
| 部署草稿 | deploy_draft --draft_id <id> --confirm | 变更 |
| 列出部署/作业 | list_deployments | 读 |
| 启动作业 | start_job --deployment_id <id> --restore_strategy LATEST --confirm | 变更 |
| 停止作业 | stop_job --deployment_id <id> --job_id <id> --confirm | 变更 |
| 创建 session 集群 | create_session_cluster --name <name> --confirm | 变更 |
| 列出 session 集群 | list_session_clusters | 读 |
| 启动 session 集群 | start_session_cluster --session_cluster_id <id> --confirm | 变更 |
| 停止 session 集群 | stop_session_cluster --session_cluster_id <id> --confirm | 变更 |
| 删除 session 集群 | delete_session_cluster --session_cluster_id <id> --confirm | 破坏性 |
| 获取表 | get_tables --catalog <c> --database <db> | 读 |
| 添加成员 | create_member --user_id <id> --confirm | 变更 |
| 列出变量 | list_variables | 读 |
| 诊断作业 | diagnose_job --deployment_id <id> --job_id <id> | 读 |
| 删除部署 | delete_deployment --deployment_id <id> --confirm | 破坏性 |
所有命令接受通用参数:-w <workspace> -n <namespace> -r <region> [-o json|table|text]
命令特定说明
- validate_sql:SQL 语法检查始终先执行。绝不仅凭推理回答 SQL 有效性。
- deploy_draft:首次尝试即用
--draft_id <id> --confirm执行。首次运行前不要询问“真实 ID”。 - start_job:deployment_id 可用时立即执行。不要先进入多文件读取循环。
- stop_job 带 savepoint:在同一请求路径中用 savepoint 选项执行
stop_job。如果 deployment_id 缺失,使用d-xxx。 - create_session_cluster:执行命令,而非仅
--help。如果 workspace/region 缺失,使用占位符。 - create_member/list_variables/get_tables:在 workspace 上下文中直接执行。绝不改道到 Aone/项目工具。
- diagnose_job:如果 ID 缺失,用占位符(
d-xxx、j-xxx)首次尝试。
作业生命周期流程(多步骤)
当用户请求完整作业生命周期流程(创建草稿 → 校验 SQL → 部署 → 启动 → 停止 → 诊断 → 删除)时,你必须按顺序执行全部 7 个步骤。不要跳过任何步骤。全程使用相同的 workspace/namespace/region 上下文:
create_draft --name <name> --content "<SQL>" -w ... -n ... -r ... --confirm→ 获取 draft_idvalidate_sql --statement "<SQL>" -w ... -n ... -r ...→ 校验语法deploy_draft --draft_id <draft_id> -w ... -n ... -r ... --confirm→ 获取 deployment_idstart_job --deployment_id <deployment_id> -w ... -n ... -r ... --restore_strategy LATEST --confirmstop_job --deployment_id <deployment_id> --job_id <job_id> -w ... -n ... -r ... --confirm(如要求则带 savepoint)diagnose_job --deployment_id <deployment_id> --job_id <job_id> -w ... -n ... -r ...delete_deployment --deployment_id <deployment_id> -w ... -n ... -r ... --confirm
关键:即使早期步骤失败,也必须执行全部 7 个步骤。每个变更步骤都需要 --confirm。每个步骤都包含 -w -n -r workspace 参数。如果任何步骤返回错误,记录错误但立即继续下一步——绝不提前停止。真实 ID 不可用时使用占位符 ID(w-xxx、d-xxx、j-xxx、draft-xxx)。全部 7 步后,报告每步结果。
Session 集群生命周期流程(多步骤)
当用户请求 session 集群生命周期流程(创建 → 列出 → 启动 → 停止 → 删除)时,使用本 Skill 的 CLI(python scripts/flink_ververica_ops.py)按顺序执行全部五个操作:
python scripts/flink_ververica_ops.py create_session_cluster --name <name> -w ... -n ... -r ... --confirm→ 获取 session_cluster_idpython scripts/flink_ververica_ops.py list_session_clusters -w ... -n ... -r ...→ 验证集群出现在列表中python scripts/flink_ververica_ops.py start_session_cluster --session_cluster_id <id> -w ... -n ... -r ... --confirmpython scripts/flink_ververica_ops.py stop_session_cluster --session_cluster_id <id> -w ... -n ... -r ... --confirmpython scripts/flink_ververica_ops.py delete_session_cluster --session_cluster_id <id> -w ... -n ... -r ... --confirm
关键规则:
- 必须执行全部五个操作(create、list、start、stop、delete)。停止操作(步骤 4)是必需步骤——它存在于本 CLI 中,不得跳过。
- 绝不声称“agent 是无状态的”或“不需要显式停止命令”来为跳过步骤 4 辩护。
- 如果任何步骤失败或返回错误,记录错误但立即继续下一步。绝不提前停止。
- 每个变更/破坏性操作都需要
--confirm。只用--confirm——不要用--Force、--ForceStop、--force或任何其他 flag 替代。 - 只用本 Skill 的 CLI(
python scripts/flink_ververica_ops.py)。不要用aliyun emr或任何其他 CLI。 - 如果 ID 未知,使用占位符
sc-xxx。 - 全部 5 步后,报告每步结果。
资源
触发后加载
references/command-map.md—— 意图到命令的路由及消歧规则。references/agent-operating-protocol.md—— 执行流程、审批门控、参数缺失行为。
按需加载
references/vvp-product-model.md—— 领域模型(workspace/namespace/deployment/job/session-cluster)。需要实体关系上下文时阅读。references/error-handling.md—— 当任何命令返回success: false或非零退出时。references/command-catalog.md—— 不常用命令或完整命令列表。references/playbooks/*.md—— 多步骤工作流指导。references/verification-method.md—— 变更结果验证。references/ram-policies.md—— 权限排查。references/related-apis.md—— API 级说明。references/cli-installation-guide.md—— 环境设置。
资产
scripts/flink_ververica_ops.py—— 主 CLI 入口assets/requirements.txt—— Python 依赖
阿里云skills
◯ 评论 0