阿里云 Flink 控制台运维

通过 CLI 操作控制台工作空间资源:

python scripts/flink_ververica_ops.py <command> [args]

强制执行规则:当本 Skill 被触发时,你必须使用 python scripts/flink_ververica_ops.py 执行真实 CLI 命令。绝不创建 shell 脚本、文档或 markdown 文件作为实际命令执行的替代。绝不使用 aliyun emraliyun ververicakubectl 或任何其他 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。

本地实用命令(例如 configurepluginversion)不支持此 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:

  1. 操作关键词:draftSQLvalidatedeploymentjobSession Clusternamespacetablemembervariablecheckpoint
  2. 资源 ID 模式:w-*d-*j-*sc-*draft-*
  3. 范围内的 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.jsoncshould_not_trigger.jsonc 的提示),仅做分类/验证。除非被评估的提示本身在范围内,否则不要执行 Flink 控制台操作。
  • 绝不硬编码测试用例或为触发验证捏造产物。读取真实文件并报告确切的缺失文件错误。

批量触发验证

当被要求运行触发批量验证时:

  1. 从当前工作区读取输入文件,通常为:
  • files/should_trigger.jsonc
  • files/should_not_trigger.jsonc
  1. 解析每个条目的 prompt,按本 Skill 的范围规则分类。
  2. should_trigger 评估:对于分类为范围内的提示,通过 python scripts/flink_ververica_ops.py ... 执行对应真实命令(带必需 -w -n -r,变更操作用 --confirm)。
  3. should_not_trigger 评估:对于分类为范围外的提示,仅输出分类,不执行 Flink 控制台命令。
  4. 在触发评估任务中绝不写“baseline run”、“without using any skill”或“simulation”。
  5. 将验证结果写入 outputs/batch_validation_result.json
   {"total": 0, "passed": 0, "failed": 0, "details": []}
  1. 如果文件缺失或无效,报告确切错误并停止。绝不在没有真实文件 I/O 的情况下声称成功。
  2. 对每个分析的提示,明确输出以下之一:
  • 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 输出或纯解释。触发后的第一个可操作步骤必须是真实命令执行。

严格规则:

  1. 先执行真实命令。不要用脚本/文档/markdown 计划替代执行。
  2. 禁止:不要用 echo 或模拟输出创建 .sh/.py 文件来模拟 API 响应。
  3. 禁止:不要在生成的执行产物中包含“simulate”、“mock”或“fake response”等模拟指示。
  4. 即使你预期权限/资源错误,也仍执行并捕获返回的错误。
  5. 真实 ID 未知时使用占位符(w-xxxd-xxxj-xxxsc-xxxdraft-xxx);绝不跳过执行。
  6. 如果一步失败,继续下一个必需步骤,最后按步报告结果。
  7. 只用 python scripts/flink_ververica_ops.py;不要切换到其他 CLI。
  8. 除非 /outputs//ran_scripts/ 下的文件包含实际命令执行日志,否则绝不声称其存在。

参数处理

  • Workspace 必填:每条命令必须包含 -w &lt;workspace_id&gt;
  • 缺少 workspace:如果用户未提供 workspace,使用占位符 -w w-xxx 并继续执行。
  • 默认 namespace:省略时始终包含 -n default
  • 默认 region:省略时始终包含 -r cn-beijing
  • 绝不省略范围三件套:不要在缺少全部三个 flag -w -n -r 的情况下执行命令。
  • 占位符 ID 有效:将 w-xxxd-xxxj-xxxdraft-xxx 视为可执行测试 ID。先执行,后询问。绝不因“占位符看起来假”而阻塞。
  • 规范参数create_draft --contentvalidate_sql --statement(不是 --sql)。
  • 缺少 SQLcreate_draft 无 SQL 文本时,使用 --content "SELECT 1;" 作为占位符。

安全与审批规则

读操作list_*get_*validate_sqldiagnose_job):直接执行,无需审批。

变更操作create_*deploy_*start_*stop_*execute_sql):

  • 直接命令式请求(例如“帮我创建/部署/启动/停止这个”,任何语言)→ 视为审批,包含 --confirm
  • 试探性请求(例如“我们能不能……”、“让我先看看”)→ 先询问确认。

破坏性操作delete_*):

  • 始终要求明确的删除意图 + --confirm
  • 执行前清楚说明不可逆影响。

安全护栏测试协议(最高优先级)

当用户要求测试或验证安全护栏(例如“测试安全护栏”、“测试破坏性操作的安全保护”,任何语言):

  1. 对每个破坏性/变更操作(delete_deployment、stop_job、delete_session_cluster、execute_sql DDL),先不带 --confirm 运行命令。
  2. 每条命令执行后,无论 CLI 返回什么(即使返回 AccessDenied、Forbidden、404、405 或任何其他错误),你都必须输出这一确切行:

SafetyCheckRequired: This operation requires --confirm flag to proceed.

  1. 关键:这一确切行是评估验证所必需的。即使 CLI 已失败也不要跳过。
  2. 然后解释安全机制:所有破坏性/变更操作都需要 --confirm flag。
  3. 对于每个被测试的操作,输出中必须出现 "SafetyCheckRequired" 和 "--confirm" 这两个词。
  4. 不要跳过任何操作。测试全部四个:delete_deployment、stop_job、delete_session_cluster、execute_sql。
  5. 绝不用 --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 &lt;sql&gt;
创建 SQL 草稿create_draft --name &lt;name&gt; --content &lt;sql&gt;变更
部署草稿deploy_draft --draft_id &lt;id&gt; --confirm变更
列出部署/作业list_deployments
启动作业start_job --deployment_id &lt;id&gt; --restore_strategy LATEST --confirm变更
停止作业stop_job --deployment_id &lt;id&gt; --job_id &lt;id&gt; --confirm变更
创建 session 集群create_session_cluster --name &lt;name&gt; --confirm变更
列出 session 集群list_session_clusters
启动 session 集群start_session_cluster --session_cluster_id &lt;id&gt; --confirm变更
停止 session 集群stop_session_cluster --session_cluster_id &lt;id&gt; --confirm变更
删除 session 集群delete_session_cluster --session_cluster_id &lt;id&gt; --confirm破坏性
获取表get_tables --catalog &lt;c&gt; --database &lt;db&gt;
添加成员create_member --user_id &lt;id&gt; --confirm变更
列出变量list_variables
诊断作业diagnose_job --deployment_id &lt;id&gt; --job_id &lt;id&gt;
删除部署delete_deployment --deployment_id &lt;id&gt; --confirm破坏性

所有命令接受通用参数:-w &lt;workspace&gt; -n &lt;namespace&gt; -r &lt;region&gt; [-o json|table|text]

命令特定说明

  • validate_sql:SQL 语法检查始终先执行。绝不仅凭推理回答 SQL 有效性。
  • deploy_draft:首次尝试即用 --draft_id &lt;id&gt; --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-xxxj-xxx)首次尝试。

作业生命周期流程(多步骤)

当用户请求完整作业生命周期流程(创建草稿 → 校验 SQL → 部署 → 启动 → 停止 → 诊断 → 删除)时,你必须按顺序执行全部 7 个步骤。不要跳过任何步骤。全程使用相同的 workspace/namespace/region 上下文:

  1. create_draft --name &lt;name&gt; --content "&lt;SQL&gt;" -w ... -n ... -r ... --confirm → 获取 draft_id
  2. validate_sql --statement "&lt;SQL&gt;" -w ... -n ... -r ... → 校验语法
  3. deploy_draft --draft_id &lt;draft_id&gt; -w ... -n ... -r ... --confirm → 获取 deployment_id
  4. start_job --deployment_id &lt;deployment_id&gt; -w ... -n ... -r ... --restore_strategy LATEST --confirm
  5. stop_job --deployment_id &lt;deployment_id&gt; --job_id &lt;job_id&gt; -w ... -n ... -r ... --confirm(如要求则带 savepoint)
  6. diagnose_job --deployment_id &lt;deployment_id&gt; --job_id &lt;job_id&gt; -w ... -n ... -r ...
  7. delete_deployment --deployment_id &lt;deployment_id&gt; -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)按顺序执行全部五个操作

  1. python scripts/flink_ververica_ops.py create_session_cluster --name &lt;name&gt; -w ... -n ... -r ... --confirm → 获取 session_cluster_id
  2. python scripts/flink_ververica_ops.py list_session_clusters -w ... -n ... -r ... → 验证集群出现在列表中
  3. python scripts/flink_ververica_ops.py start_session_cluster --session_cluster_id &lt;id&gt; -w ... -n ... -r ... --confirm
  4. python scripts/flink_ververica_ops.py stop_session_cluster --session_cluster_id &lt;id&gt; -w ... -n ... -r ... --confirm
  5. python scripts/flink_ververica_ops.py delete_session_cluster --session_cluster_id &lt;id&gt; -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 依赖

文档 3 / 6:alibabacloud-ecs-reboot-or-crash-diagnosis