阿里云E-HPC Instant作业管理技能 技能概述 通过阿里云CLI(优先)或SDK工具,实现对E-HPC Instant计算平台作业及计算资源的全生命周期管理。 交互原则 - 用户友好 :使用"您"而非"你",保持专业而友好的语调 - 透明操作 :所有关键配置信息必须向用户展示并获得确认 - 安全第一 :遵循最小权限原则,避免意外操作 - 错误处理 :提供清晰的错误信息和解决方案 - 格式规范 :使用简单、清晰、易读的输出格式 执行流程 - Step1: 配置预加载 - Step2: 前置条件校验 - Step3: 作业管理执行 - Step4: 作业任务执行结果输出 Step 1: 配置预加载 [MUST] 必须首先尝试读取 文件,严禁跳过此检查步骤。 - 文件存在且读取成功 :加载其中的参数值,向用户提示预配置已加载并展示关键参数摘要,然后进入 Step 2。 - 文件不存在 :向用户提示未检测到预配置文件,将在 Step 2 中通过交互方式获取必要参数,然后进入 Step 2。 - 文件存在但读取/解析失败 (如 JSON 格式错误、权限不足等):向用户报告具体错误信息,询问是否继续(跳过预配置进入 Step 2)或中止执行。 Step 2: 前置条件校验 所有作业管理任务通用校验 1. 阿里云CLI配置 :验证CLI已安装并配置AccessKey - CLI版本要求…

\"job- 后跟字母数字\"\n}\n\nvalidate_job_name() {\n # 阿里云作业名约束:1-64 位,字母/数字/下划线/连字符,必须以字母或数字开头\n validate_pattern \"JobName\" \"$1\" '^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}

阿里云E-HPC Instant作业管理技能 技能概述 通过阿里云CLI(优先)或SDK工具,实现对E-HPC Instant计算平台作业及计算资源的全生命周期管理。 交互原则 - 用户友好 :使用"您"而非"你",保持专业而友好的语调 - 透明操作 :所有关键配置信息必须向用户展示并获得确认 - 安全第一 :遵循最小权限原则,避免意外操作 - 错误处理 :提供清晰的错误信息和解决方案 - 格式规范 :使用简单、清晰、易读的输出格式 执行流程 - Step1: 配置预加载 - Step2: 前置条件校验 - Step3: 作业管理执行 - Step4: 作业任务执行结果输出 Step 1: 配置预加载 [MUST] 必须首先尝试读取 文件,严禁跳过此检查步骤。 - 文件存在且读取成功 :加载其中的参数值,向用户提示预配置已加载并展示关键参数摘要,然后进入 Step 2。 - 文件不存在 :向用户提示未检测到预配置文件,将在 Step 2 中通过交互方式获取必要参数,然后进入 Step 2。 - 文件存在但读取/解析失败 (如 JSON 格式错误、权限不足等):向用户报告具体错误信息,询问是否继续(跳过预配置进入 Step 2)或中止执行。 Step 2: 前置条件校验 所有作业管理任务通用校验 1. 阿里云CLI配置 :验证CLI已安装并配置AccessKey - CLI版本要求…

\"1-64 位字母/数字/下划线/连字符\"\n}\n\nvalidate_image_id() {\n validate_pattern \"ImageId\" \"$1\" '^m-[a-zA-Z0-9]+

阿里云E-HPC Instant作业管理技能 技能概述 通过阿里云CLI(优先)或SDK工具,实现对E-HPC Instant计算平台作业及计算资源的全生命周期管理。 交互原则 - 用户友好 :使用"您"而非"你",保持专业而友好的语调 - 透明操作 :所有关键配置信息必须向用户展示并获得确认 - 安全第一 :遵循最小权限原则,避免意外操作 - 错误处理 :提供清晰的错误信息和解决方案 - 格式规范 :使用简单、清晰、易读的输出格式 执行流程 - Step1: 配置预加载 - Step2: 前置条件校验 - Step3: 作业管理执行 - Step4: 作业任务执行结果输出 Step 1: 配置预加载 [MUST] 必须首先尝试读取 文件,严禁跳过此检查步骤。 - 文件存在且读取成功 :加载其中的参数值,向用户提示预配置已加载并展示关键参数摘要,然后进入 Step 2。 - 文件不存在 :向用户提示未检测到预配置文件,将在 Step 2 中通过交互方式获取必要参数,然后进入 Step 2。 - 文件存在但读取/解析失败 (如 JSON 格式错误、权限不足等):向用户报告具体错误信息,询问是否继续(跳过预配置进入 Step 2)或中止执行。 Step 2: 前置条件校验 所有作业管理任务通用校验 1. 阿里云CLI配置 :验证CLI已安装并配置AccessKey - CLI版本要求…

\"m- 后跟字母数字\"\n}\n\nvalidate_vswitch_id() {\n validate_pattern \"VSwitchId\" \"$1\" '^vsw-[a-zA-Z0-9]+

阿里云E-HPC Instant作业管理技能 技能概述 通过阿里云CLI(优先)或SDK工具,实现对E-HPC Instant计算平台作业及计算资源的全生命周期管理。 交互原则 - 用户友好 :使用"您"而非"你",保持专业而友好的语调 - 透明操作 :所有关键配置信息必须向用户展示并获得确认 - 安全第一 :遵循最小权限原则,避免意外操作 - 错误处理 :提供清晰的错误信息和解决方案 - 格式规范 :使用简单、清晰、易读的输出格式 执行流程 - Step1: 配置预加载 - Step2: 前置条件校验 - Step3: 作业管理执行 - Step4: 作业任务执行结果输出 Step 1: 配置预加载 [MUST] 必须首先尝试读取 文件,严禁跳过此检查步骤。 - 文件存在且读取成功 :加载其中的参数值,向用户提示预配置已加载并展示关键参数摘要,然后进入 Step 2。 - 文件不存在 :向用户提示未检测到预配置文件,将在 Step 2 中通过交互方式获取必要参数,然后进入 Step 2。 - 文件存在但读取/解析失败 (如 JSON 格式错误、权限不足等):向用户报告具体错误信息,询问是否继续(跳过预配置进入 Step 2)或中止执行。 Step 2: 前置条件校验 所有作业管理任务通用校验 1. 阿里云CLI配置 :验证CLI已安装并配置AccessKey - CLI版本要求…

\"vsw- 后跟字母数字\"\n}\n\nvalidate_security_group_id() {\n validate_pattern \"SecurityGroupId\" \"$1\" '^sg-[a-zA-Z0-9]+

阿里云E-HPC Instant作业管理技能 技能概述 通过阿里云CLI(优先)或SDK工具,实现对E-HPC Instant计算平台作业及计算资源的全生命周期管理。 交互原则 - 用户友好 :使用"您"而非"你",保持专业而友好的语调 - 透明操作 :所有关键配置信息必须向用户展示并获得确认 - 安全第一 :遵循最小权限原则,避免意外操作 - 错误处理 :提供清晰的错误信息和解决方案 - 格式规范 :使用简单、清晰、易读的输出格式 执行流程 - Step1: 配置预加载 - Step2: 前置条件校验 - Step3: 作业管理执行 - Step4: 作业任务执行结果输出 Step 1: 配置预加载 [MUST] 必须首先尝试读取 文件,严禁跳过此检查步骤。 - 文件存在且读取成功 :加载其中的参数值,向用户提示预配置已加载并展示关键参数摘要,然后进入 Step 2。 - 文件不存在 :向用户提示未检测到预配置文件,将在 Step 2 中通过交互方式获取必要参数,然后进入 Step 2。 - 文件存在但读取/解析失败 (如 JSON 格式错误、权限不足等):向用户报告具体错误信息,询问是否继续(跳过预配置进入 Step 2)或中止执行。 Step 2: 前置条件校验 所有作业管理任务通用校验 1. 阿里云CLI配置 :验证CLI已安装并配置AccessKey - CLI版本要求…

\"sg- 后跟字母数字\"\n}\n\nvalidate_region() {\n validate_pattern \"Region\" \"$1\" '^[a-z][a-z0-9-]*[a-z0-9]

阿里云E-HPC Instant作业管理技能 技能概述 通过阿里云CLI(优先)或SDK工具,实现对E-HPC Instant计算平台作业及计算资源的全生命周期管理。 交互原则 - 用户友好 :使用"您"而非"你",保持专业而友好的语调 - 透明操作 :所有关键配置信息必须向用户展示并获得确认 - 安全第一 :遵循最小权限原则,避免意外操作 - 错误处理 :提供清晰的错误信息和解决方案 - 格式规范 :使用简单、清晰、易读的输出格式 执行流程 - Step1: 配置预加载 - Step2: 前置条件校验 - Step3: 作业管理执行 - Step4: 作业任务执行结果输出 Step 1: 配置预加载 [MUST] 必须首先尝试读取 文件,严禁跳过此检查步骤。 - 文件存在且读取成功 :加载其中的参数值,向用户提示预配置已加载并展示关键参数摘要,然后进入 Step 2。 - 文件不存在 :向用户提示未检测到预配置文件,将在 Step 2 中通过交互方式获取必要参数,然后进入 Step 2。 - 文件存在但读取/解析失败 (如 JSON 格式错误、权限不足等):向用户报告具体错误信息,询问是否继续(跳过预配置进入 Step 2)或中止执行。 Step 2: 前置条件校验 所有作业管理任务通用校验 1. 阿里云CLI配置 :验证CLI已安装并配置AccessKey - CLI版本要求…

\"小写字母/数字/连字符,如 cn-shanghai\"\n}\n\n# ---- 域名/主机名(NAS Server 等)----\n\nvalidate_hostname() {\n # 长度 1-253,仅含字母数字、点、连字符;不允许以连字符开头/结尾\n local name=\"$1\" value=\"$2\"\n if [[ -z \"$value\" ]]; then\n _validate_fail \"$name 不能为空\"\n fi\n if [[ ${#value} -gt 253 ]]; then\n _validate_fail \"$name 长度超过 253\"\n fi\n if [[ ! \"$value\" =~ ^[a-zA-Z0-9]([a-zA-Z0-9.-]*[a-zA-Z0-9])?$ ]]; then\n _validate_fail \"$name 格式无效: '$value'\" \"合法的主机名/域名(字母数字、点、连字符)\"\n fi\n}\n\n# ---- 容器镜像引用 ----\n# 仅允许 registry/repo[:tag][@digest] 中常见字符;拒绝空格、引号、反斜杠等\nvalidate_container_image() {\n local value=\"$1\"\n if [[ -z \"$value\" ]]; then\n _validate_fail \"ContainerImage 不能为空\"\n fi\n if [[ ${#value} -gt 512 ]]; then\n _validate_fail \"ContainerImage 长度超过 512\"\n fi\n if [[ ! \"$value\" =~ ^[a-zA-Z0-9][a-zA-Z0-9._:/@-]*$ ]]; then\n _validate_fail \"ContainerImage 包含非法字符: '$value'\" \"仅允许 字母数字 . _ : / @ -\"\n fi\n}\n\n# ---- 自由文本字段(JOB_DESCRIPTION/VM_PASSWORD 等)----\n# 拒绝任何控制字符、双引号、反斜杠,避免破坏 JSON 字符串\n# 用法: validate_json_safe_text \u003c字段名> \u003c值> [最大长度,默认 256]\nvalidate_json_safe_text() {\n local name=\"$1\" value=\"$2\" maxlen=\"${3:-256}\"\n if [[ -z \"$value\" ]]; then\n _validate_fail \"$name 不能为空\"\n fi\n if [[ ${#value} -gt $maxlen ]]; then\n _validate_fail \"$name 长度超过 $maxlen\"\n fi\n if [[ \"$value\" == *\\\"* ]]; then\n _validate_fail \"$name 不允许包含双引号 (\\\")\"\n fi\n if [[ \"$value\" == *\\\\* ]]; then\n _validate_fail \"$name 不允许包含反斜杠 (\\\\)\"\n fi\n # 拒绝任何 ASCII 控制字符 (0x00-0x1F, 0x7F)\n if [[ \"$value\" =~ [[:cntrl:]] ]]; then\n _validate_fail \"$name 包含非法控制字符\"\n fi\n}\n\n# ---- VM 登录密码 ----\n# Aliyun ECS 密码规则:8-30 位,字母/数字/常见符号;禁止双引号与反斜杠\nvalidate_vm_password() {\n local value=\"$1\"\n if [[ -z \"$value\" ]]; then\n _validate_fail \"VM_PASSWORD 不能为空\" \"请先 export VM_PASSWORD=\u003cyour-password>\"\n fi\n if [[ ${#value} -lt 8 || ${#value} -gt 30 ]]; then\n _validate_fail \"VM_PASSWORD 长度必须为 8-30\"\n fi\n if [[ \"$value\" == *\\\"* || \"$value\" == *\\\\* ]]; then\n _validate_fail \"VM_PASSWORD 不允许包含 \\\" 或 \\\\\"\n fi\n if [[ \"$value\" =~ [[:cntrl:]] ]]; then\n _validate_fail \"VM_PASSWORD 包含非法控制字符\"\n fi\n}\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":4985,"content_sha256":"98675cf60da09e27eab0c751c2670895c2cada30b6714e589ccaa181772c872e"},{"filename":"scripts/cli/create_container_job.sh","content":"#!/bin/bash\n\n# ====================================================================\n# E-HPC Instant - 容器作业创建脚本 (CLI模式)\n# 映射自: create_container_job.py\n# ====================================================================\n# 功能: 使用阿里云CLI创建E-HPC Instant容器作业\n# 配置: 支持NAS挂载、环境变量、GPU实例等高级配置\n# ====================================================================\n\nset -e\n\n# ANSI颜色代码\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;34m'\nCYAN='\\033[0;36m'\nNC='\\033[0m' # No Color\n\n# 加载共享输入校验库\nsource \"$(dirname \"$0\")/_lib_validate.sh\"\n\n# 脚本信息\nSCRIPT_NAME=\"create_container_job.sh\"\nVERSION=\"1.0\"\n\n# 显示帮助信息\nshow_help() {\n cat \u003c\u003c EOF\n${BLUE}E-HPC Instant 容器作业创建工具 v$VERSION${NC}\n\n${YELLOW}功能说明:${NC}\n 创建支持NAS挂载、环境变量、GPU实例的容器作业\n\n${YELLOW}环境变量配置:${NC}\n ALIBABA_CLOUD_REGION_ID - 地域ID (默认: cn-shanghai)\n JOB_NAME - 作业名称 (默认: testX)\n JOB_DESCRIPTION - 作业描述 (默认: container job test)\n CONTAINER_IMAGE - 容器镜像 (默认: registry-vpc.cn-shanghai.aliyuncs.com/demo/xxx:v1.2)\n VSWITCH_ID - 虚拟交换机ID (默认: vsw-xxx)\n SECURITY_GROUP_ID - 安全组ID (默认: sg-xxx)\n NAS_SERVER - NAS服务器地址 (默认: xxx.cn-shanghai.nas.aliyuncs.com)\n\n${YELLOW}示例:${NC}\n # 使用默认配置\n ./$SCRIPT_NAME\n \n # 自定义配置\n JOB_NAME=my-container-job CONTAINER_IMAGE=my-registry/image:tag ./$SCRIPT_NAME\n\nEOF\n}\n\n# 参数解析\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n -h|--help)\n show_help\n exit 0\n ;;\n *)\n echo \"未知参数: $1\"\n show_help\n exit 1\n ;;\n esac\ndone\n\necho -e \"${BLUE}🚀 E-HPC Instant 容器作业创建工具${NC}\"\necho -e \"${BLUE}=================================${NC}\"\n\n# 验证阿里云CLI\nALIYUN_CLI=\"aliyun\"\nif ! command -v \"$ALIYUN_CLI\" &> /dev/null; then\n echo -e \"${RED}❌ 错误: 未找到 aliyun CLI${NC}\"\n echo -e \"${YELLOW}请先安装并配置阿里云CLI${NC}\"\n exit 1\nfi\n\n# 获取配置参数\nREGION=\"${ALIBABA_CLOUD_REGION_ID:-cn-shanghai}\"\nJOB_NAME=\"${JOB_NAME:-testX-$(date +%Y%m%d-%H%M)}\"\nJOB_DESCRIPTION=\"${JOB_DESCRIPTION:-container job test}\"\nCONTAINER_IMAGE=\"${CONTAINER_IMAGE:-registry-vpc.cn-shanghai.aliyuncs.com/demo/xxx:v1.2}\"\nVSWITCH_ID=\"${VSWITCH_ID:-vsw-xxx}\"\nSECURITY_GROUP_ID=\"${SECURITY_GROUP_ID:-sg-xxx}\"\nNAS_SERVER=\"${NAS_SERVER:-xxx.cn-shanghai.nas.aliyuncs.com}\"\n\n# 输入校验:所有外部输入必须通过白名单校验后才允许拼接进 JSON\nvalidate_region \"$REGION\"\nvalidate_job_name \"$JOB_NAME\"\nvalidate_json_safe_text \"JOB_DESCRIPTION\" \"$JOB_DESCRIPTION\" 256\nvalidate_container_image \"$CONTAINER_IMAGE\"\nvalidate_vswitch_id \"$VSWITCH_ID\"\nvalidate_security_group_id \"$SECURITY_GROUP_ID\"\nvalidate_hostname \"NAS_SERVER\" \"$NAS_SERVER\"\n\n# 构建Tasks JSON (映射自Python SDK)\nTASKS_JSON=\"[{\n \\\"TaskSpec\\\": {\n \\\"TaskExecutor\\\": [{\n \\\"Container\\\": {\n \\\"Image\\\": \\\"$CONTAINER_IMAGE\\\",\n \\\"AppId\\\": \\\"ci-ctn-xxx\\\",\n \\\"Command\\\": [\\\"sleep\\\", \\\"180000\\\"],\n \\\"EnvironmentVars\\\": [\n {\n \\\"Name\\\": \\\"RUN_PY_PATH\\\",\n \\\"Value\\\": \\\"/mnt/test.py\\\"\n },\n {\n \\\"Name\\\": \\\"OUTPUT_PATH\\\",\n \\\"Value\\\": \\\"/mnt/output/\\\"\n },\n {\n \\\"Name\\\": \\\"INPUT_PDB_PATH\\\",\n \\\"Value\\\": \\\"/mnt/input/test.pdb\\\"\n },\n {\n \\\"Name\\\": \\\"LOG_PATH\\\",\n \\\"Value\\\": \\\"/mnt/logs\\\"\n }\n ]\n }\n }],\n \\\"VolumeMount\\\": [{\n \\\"MountPath\\\": \\\"/mnt\\\",\n \\\"VolumeDriver\\\": \\\"alicloud/nas\\\",\n \\\"MountOptions\\\": \\\"{\\\\\\\"server\\\\\\\":\\\\\\\"$NAS_SERVER\\\\\\\",\\\\\\\"vers\\\\\\\":\\\\\\\"3\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"/\\\\\\\",\\\\\\\"options\\\\\\\":\\\\\\\"nolock,tcp,noresvport\\\\\\\"}\\\"\n }],\n \\\"Resource\\\": {\n \\\"Disks\\\": [{\\\"Type\\\": \\\"System\\\", \\\"Size\\\": 40}],\n \\\"Cores\\\": 8,\n \\\"Memory\\\": 32,\n \\\"InstanceTypes\\\": [\\\"ecs.gn6v-c8g1.2xlarge\\\"]\n }\n },\n \\\"ExecutorPolicy\\\": {\\\"MaxCount\\\": 1},\n \\\"TaskSustainable\\\": false\n}]\"\n\n# 构建DeploymentPolicy JSON\nDEPLOYMENT_POLICY_JSON=\"{\n \\\"Network\\\": {\n \\\"Vswitch\\\": [\\\"$VSWITCH_ID\\\"],\n \\\"EnableExternalIpAddress\\\": false\n },\n \\\"AllocationSpec\\\": \\\"Standard\\\",\n \\\"Level\\\": \\\"General\\\"\n}\"\n\n# 构建SecurityPolicy JSON\nSECURITY_POLICY_JSON=\"{\n \\\"SecurityGroup\\\": {\n \\\"SecurityGroupIds\\\": [\\\"$SECURITY_GROUP_ID\\\"]\n }\n}\"\n\n# 显示配置摘要\necho -e \"${YELLOW}📋 作业配置摘要:${NC}\"\necho -e \" ${BLUE}作业名称:${NC} $JOB_NAME\"\necho -e \" ${BLUE}作业描述:${NC} $JOB_DESCRIPTION\"\necho -e \" ${BLUE}地域:${NC} $REGION\"\necho -e \" ${BLUE}容器镜像:${NC} $CONTAINER_IMAGE\"\necho -e \" ${BLUE}实例规格:${NC} ecs.gn6v-c8g1.2xlarge (V100 GPU, 8核32GB)\"\necho -e \" ${BLUE}网络配置:${NC} vSwitch=$VSWITCH_ID\"\necho -e \" ${BLUE}安全组:${NC} $SECURITY_GROUP_ID\"\necho -e \" ${BLUE}NAS挂载:${NC} $NAS_SERVER\"\n\n# 用户确认\necho \"\"\nread -p \"$(echo -e \"${YELLOW}❓ 确认提交作业? (y/N): ${NC}\")\" -n 1 -r\necho\nif [[ ! $REPLY =~ ^[Yy]$ ]]; then\n echo -e \"${YELLOW}❌ 操作已取消${NC}\"\n exit 0\nfi\n\n# 提交作业\necho -e \"${BLUE}📤 正在提交作业...${NC}\"\n\nif $ALIYUN_CLI ehpcinstant CreateJob \\\n --JobName \"$JOB_NAME\" \\\n --JobDescription \"$JOB_DESCRIPTION\" \\\n --Tasks \"$TASKS_JSON\" \\\n --DeploymentPolicy \"$DEPLOYMENT_POLICY_JSON\" \\\n --SecurityPolicy \"$SECURITY_POLICY_JSON\" \\\n --region \"$REGION\" \\\n --connect-timeout 5 \\\n --read-timeout 10 \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill; then\n \n echo -e \"${GREEN}✅ 容器作业提交成功!${NC}\"\n echo -e \"${GREEN}💡 后续操作建议:${NC}\"\n echo -e \" • 查看作业状态: ./list_jobs.sh\"\n echo -e \" • 获取详细信息: ./get_job.sh \u003cJobId>\"\nelse\n echo -e \"${RED}❌ 作业提交失败!${NC}\"\n exit 1\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":6175,"content_sha256":"bbfc8cf0ba90807f5c47ae8568dd9c93f7217611c8d3a29241aa32018bf40bb4"},{"filename":"scripts/cli/create_vm_job_batch.sh","content":"#!/bin/bash\n\n# ====================================================================\n# E-HPC Instant - 批处理VM作业创建脚本 (CLI模式)\n# ====================================================================\n# 基于SDK脚本: create_vm_job_batch.py\n# 功能: 创建批处理虚拟机作业,适用于一次性计算任务\n# ====================================================================\n\nset -e\n\n# ANSI颜色代码\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;34m'\nCYAN='\\033[0;36m'\nNC='\\033[0m' # No Color\n\n# 加载共享输入校验库\nsource \"$(dirname \"$0\")/_lib_validate.sh\"\n\n# 显示帮助信息\nshow_help() {\n cat \u003c\u003c EOF\n${BLUE}E-HPC Instant 批处理VM作业创建工具${NC}\n\n${YELLOW}功能说明:${NC}\n 创建批处理虚拟机作业,适用于一次性计算任务\n\n${YELLOW}环境变量配置:${NC}\n JOB_NAME - 作业名称 (默认: create_vm_job)\n JOB_DESCRIPTION - 作业描述 (默认: E-HPC Instant VM批处理作业提交)\n IMAGE_ID - VM镜像ID (默认: m-xxx)\n VSWITCH_ID - 虚拟交换机ID (默认: vsw-xxx)\n SECURITY_GROUP_ID - 安全组ID (默认: sg-xxx)\n REGION - 地域 (默认: cn-shanghai)\n VM_PASSWORD - VM登录密码 (必填,避免明文硬编码)\n\n${YELLOW}使用方式:${NC}\n ./create_vm_job_batch.sh [选项]\n \n${YELLOW}选项:${NC}\n -h, --help 显示此帮助信息\n --dry-run 仅显示配置,不实际提交\n\nEOF\n}\n\n# 参数解析\nDRY_RUN=false\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n -h|--help)\n show_help\n exit 0\n ;;\n --dry-run)\n DRY_RUN=true\n shift\n ;;\n *)\n echo \"未知参数: $1\"\n show_help\n exit 1\n ;;\n esac\ndone\n\n# 验证阿里云CLI\nALIYUN_CLI=\"aliyun\"\nif ! command -v \"$ALIYUN_CLI\" &> /dev/null; then\n echo -e \"${RED}❌ 错误: 未找到 aliyun CLI${NC}\"\n echo -e \"${YELLOW}请先安装阿里云CLI: https://help.aliyun.com/document_detail/121529.html${NC}\"\n exit 1\nfi\n\n# 获取配置参数\nJOB_NAME=\"${JOB_NAME:-create_vm_job}\"\nJOB_DESCRIPTION=\"${JOB_DESCRIPTION:-E-HPC Instant VM批处理作业提交}\"\nIMAGE_ID=\"${IMAGE_ID:-m-xxx}\"\nVSWITCH_ID=\"${VSWITCH_ID:-vsw-xxx}\"\nSECURITY_GROUP_ID=\"${SECURITY_GROUP_ID:-sg-xxx}\"\nREGION=\"${REGION:-cn-shanghai}\"\n\n# 输入校验:所有外部输入必须通过白名单校验后才允许拼接进 JSON\nvalidate_region \"$REGION\"\nvalidate_job_name \"$JOB_NAME\"\nvalidate_json_safe_text \"JOB_DESCRIPTION\" \"$JOB_DESCRIPTION\" 256\nvalidate_image_id \"$IMAGE_ID\"\nvalidate_vswitch_id \"$VSWITCH_ID\"\nvalidate_security_group_id \"$SECURITY_GROUP_ID\"\nvalidate_vm_password \"$VM_PASSWORD\"\n\n# Base64编码的测试脚本\nTEST_SCRIPT_BASE64=\"IyEvYmluL2Jhc2gKCnNsZWVwIDE4MAo=\"\n\necho -e \"${BLUE}⚡ 创建批处理VM作业${NC}\"\necho -e \"${BLUE}====================${NC}\"\n\n# 显示配置摘要\necho -e \"${YELLOW}📋 作业配置:${NC}\"\necho -e \" ${BLUE}作业名称:${NC} $JOB_NAME\"\necho -e \" ${BLUE}作业描述:${NC} $JOB_DESCRIPTION\"\necho -e \" ${BLUE}地域:${NC} $REGION\"\necho -e \" ${BLUE}VM镜像:${NC} $IMAGE_ID\"\necho -e \" ${BLUE}实例规格:${NC} ecs.c7.xlarge (4 CPU, 8GB内存)\"\necho -e \" ${BLUE}vSwitch ID:${NC} $VSWITCH_ID\"\necho -e \" ${BLUE}安全组 ID:${NC} $SECURITY_GROUP_ID\"\necho -e \" ${BLUE}作业类型:${NC} 批处理 (TaskSustainable: false)\"\n\nif [ \"$DRY_RUN\" = true ]; then\n echo -e \"${YELLOW}📝 模拟模式: 仅显示配置,不提交作业${NC}\"\n echo -e \"${GREEN}✅ 配置验证通过!${NC}\"\n exit 0\nfi\n\n# 用户确认\necho \"\"\nread -p \"$(echo -e \"${YELLOW}❓ 确认提交批处理作业? (y/N): ${NC}\")\" -n 1 -r\necho\nif [[ ! $REPLY =~ ^[Yy]$ ]]; then\n echo -e \"${YELLOW}❌ 操作已取消${NC}\"\n exit 0\nfi\n\n# 构建Tasks JSON\nTASKS_JSON=\"[{\n \\\"TaskSpec\\\": {\n \\\"TaskExecutor\\\": [{\n \\\"VM\\\": {\n \\\"Image\\\": \\\"$IMAGE_ID\\\",\n \\\"Script\\\": \\\"$TEST_SCRIPT_BASE64\\\",\n \\\"Password\\\": \\\"$VM_PASSWORD\\\"\n }\n }],\n \\\"VolumeMount\\\": [{\n \\\"MountPath\\\": \\\"/mnt\\\",\n \\\"VolumeDriver\\\": \\\"alicloud/nas\\\",\n \\\"MountOptions\\\": \\\"{\\\\\\\"server\\\\\\\":\\\\\\\"xxx.cn-hangzhou.nas.aliyuncs.com\\\\\\\",\\\\\\\"vers\\\\\\\":\\\\\\\"3\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"/\\\\\\\",\\\\\\\"options\\\\\\\":\\\\\\\"nolock,tcp,noresvport\\\\\\\"}\\\"\n }],\n \\\"Resource\\\": {\n \\\"Disks\\\": [{\n \\\"Type\\\": \\\"System\\\",\n \\\"Size\\\": 40\n }],\n \\\"Cores\\\": 4,\n \\\"Memory\\\": 8,\n \\\"InstanceTypes\\\": [\\\"ecs.c7.xlarge\\\"]\n }\n },\n \\\"ExecutorPolicy\\\": {\n \\\"MaxCount\\\": 1\n },\n \\\"TaskSustainable\\\": false\n}]\"\n\n# 构建DeploymentPolicy JSON\nDEPLOYMENT_POLICY_JSON=\"{\n \\\"Network\\\": {\n \\\"Vswitch\\\": [\\\"$VSWITCH_ID\\\"],\n \\\"EnableExternalIpAddress\\\": false\n },\n \\\"AllocationSpec\\\": \\\"Standard\\\",\n \\\"Level\\\": \\\"General\\\"\n}\"\n\n# 构建SecurityPolicy JSON\nSECURITY_POLICY_JSON=\"{\n \\\"SecurityGroup\\\": {\n \\\"SecurityGroupIds\\\": [\\\"$SECURITY_GROUP_ID\\\"]\n }\n}\"\n\necho -e \"${BLUE}📤 正在提交批处理作业...${NC}\"\n\n# 提交作业\nif $ALIYUN_CLI ehpcinstant CreateJob \\\n --JobName \"$JOB_NAME\" \\\n --JobDescription \"$JOB_DESCRIPTION\" \\\n --Tasks \"$TASKS_JSON\" \\\n --DeploymentPolicy \"$DEPLOYMENT_POLICY_JSON\" \\\n --SecurityPolicy \"$SECURITY_POLICY_JSON\" \\\n --region \"$REGION\" \\\n --connect-timeout 5 \\\n --read-timeout 10 \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill; then\n \n echo -e \"${GREEN}✅ 批处理VM作业提交成功!${NC}\"\n echo -e \"${GREEN}💡 后续操作:${NC}\"\n echo -e \" • 查看作业状态: ./list_jobs.sh\"\n echo -e \" • 获取详情: ./get_job.sh \u003cJobId>\"\nelse\n echo -e \"${RED}❌ 批处理作业提交失败!${NC}\"\n exit 1\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":5842,"content_sha256":"73f146358f03e9629b818fd1eec2844dcc83112dda697511d1d97219304cf80c"},{"filename":"scripts/cli/create_vm_job_longrunning.sh","content":"#!/bin/bash\n\n# ====================================================================\n# E-HPC Instant - 长期运行VM作业创建脚本 (CLI模式)\n# ====================================================================\n# 基于SDK脚本: create_vm_job_longrunning.py\n# 功能: 创建长期运行的虚拟机作业,适用于后台服务场景\n# ====================================================================\n\nset -e\n\n# ANSI颜色代码\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;34m'\nCYAN='\\033[0;36m'\nNC='\\033[0m' # No Color\n\n# 加载共享输入校验库\nsource \"$(dirname \"$0\")/_lib_validate.sh\"\n\n# 显示帮助信息\nshow_help() {\n cat \u003c\u003c EOF\n${BLUE}E-HPC Instant 长期运行VM作业创建工具${NC}\n\n${YELLOW}功能说明:${NC}\n 创建长期运行的虚拟机作业,适用于后台服务、监控等场景\n\n${YELLOW}环境变量配置:${NC}\n JOB_NAME - 作业名称 (默认: create_vm_job)\n JOB_DESCRIPTION - 作业描述 (默认: E-HPC Instant VM 后台服务作业提交)\n IMAGE_ID - VM镜像ID (默认: m-xxx)\n VSWITCH_ID - 虚拟交换机ID (默认: vsw-xxx)\n SECURITY_GROUP_ID - 安全组ID (默认: sg-xxx)\n REGION - 地域 (默认: cn-shanghai)\n VM_PASSWORD - VM登录密码 (必填,避免明文硬编码)\n\n${YELLOW}使用方式:${NC}\n ./create_vm_job_longrunning.sh [选项]\n \n${YELLOW}选项:${NC}\n -h, --help 显示此帮助信息\n --dry-run 仅显示配置,不实际提交\n\nEOF\n}\n\n# 参数解析\nDRY_RUN=false\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n -h|--help)\n show_help\n exit 0\n ;;\n --dry-run)\n DRY_RUN=true\n shift\n ;;\n *)\n echo \"未知参数: $1\"\n show_help\n exit 1\n ;;\n esac\ndone\n\n# 验证阿里云CLI\nALIYUN_CLI=\"aliyun\"\nif ! command -v \"$ALIYUN_CLI\" &> /dev/null; then\n echo -e \"${RED}❌ 错误: 未找到 aliyun CLI${NC}\"\n echo -e \"${YELLOW}请先安装阿里云CLI: https://help.aliyun.com/document_detail/121529.html${NC}\"\n exit 1\nfi\n\n# 获取配置参数\nJOB_NAME=\"${JOB_NAME:-create_vm_job}\"\nJOB_DESCRIPTION=\"${JOB_DESCRIPTION:-E-HPC Instant VM 后台服务作业提交}\"\nIMAGE_ID=\"${IMAGE_ID:-m-xxx}\"\nVSWITCH_ID=\"${VSWITCH_ID:-vsw-xxx}\"\nSECURITY_GROUP_ID=\"${SECURITY_GROUP_ID:-sg-xxx}\"\nREGION=\"${REGION:-cn-shanghai}\"\n\n# 输入校验:所有外部输入必须通过白名单校验后才允许拼接进 JSON\nvalidate_region \"$REGION\"\nvalidate_job_name \"$JOB_NAME\"\nvalidate_json_safe_text \"JOB_DESCRIPTION\" \"$JOB_DESCRIPTION\" 256\nvalidate_image_id \"$IMAGE_ID\"\nvalidate_vswitch_id \"$VSWITCH_ID\"\nvalidate_security_group_id \"$SECURITY_GROUP_ID\"\nvalidate_vm_password \"$VM_PASSWORD\"\n\n# Base64编码的测试脚本\nTEST_SCRIPT_BASE64=\"IyEvYmluL2Jhc2gKCnNsZWVwIDE4MAo=\"\n\necho -e \"${BLUE}🚀 创建长期运行VM作业${NC}\"\necho -e \"${BLUE}======================${NC}\"\n\n# 显示配置摘要\necho -e \"${YELLOW}📋 作业配置:${NC}\"\necho -e \" ${BLUE}作业名称:${NC} $JOB_NAME\"\necho -e \" ${BLUE}作业描述:${NC} $JOB_DESCRIPTION\"\necho -e \" ${BLUE}地域:${NC} $REGION\"\necho -e \" ${BLUE}VM镜像:${NC} $IMAGE_ID\"\necho -e \" ${BLUE}vSwitch ID:${NC} $VSWITCH_ID\"\necho -e \" ${BLUE}安全组 ID:${NC} $SECURITY_GROUP_ID\"\necho -e \" ${BLUE}资源配置:${NC} 4 CPU核心, 8GB内存, 40GB系统盘\"\n\nif [ \"$DRY_RUN\" = true ]; then\n echo -e \"${YELLOW}📝 模拟模式: 仅显示配置,不提交作业${NC}\"\n echo -e \"${GREEN}✅ 配置验证通过!${NC}\"\n exit 0\nfi\n\n# 用户确认\necho \"\"\nread -p \"$(echo -e \"${YELLOW}❓ 确认提交作业? (y/N): ${NC}\")\" -n 1 -r\necho\nif [[ ! $REPLY =~ ^[Yy]$ ]]; then\n echo -e \"${YELLOW}❌ 操作已取消${NC}\"\n exit 0\nfi\n\n# 构建Tasks JSON\nTASKS_JSON=\"[{\n \\\"TaskSpec\\\": {\n \\\"TaskExecutor\\\": [{\n \\\"VM\\\": {\n \\\"Image\\\": \\\"$IMAGE_ID\\\",\n \\\"Script\\\": \\\"$TEST_SCRIPT_BASE64\\\",\n \\\"Password\\\": \\\"$VM_PASSWORD\\\"\n }\n }],\n \\\"VolumeMount\\\": [{\n \\\"MountPath\\\": \\\"/mnt\\\",\n \\\"VolumeDriver\\\": \\\"alicloud/nas\\\",\n \\\"MountOptions\\\": \\\"{\\\\\\\"server\\\\\\\":\\\\\\\"xxx.cn-hangzhou.nas.aliyuncs.com\\\\\\\",\\\\\\\"vers\\\\\\\":\\\\\\\"3\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"/\\\\\\\",\\\\\\\"options\\\\\\\":\\\\\\\"nolock,tcp,noresvport\\\\\\\"}\\\"\n }],\n \\\"Resource\\\": {\n \\\"Disks\\\": [{\n \\\"Type\\\": \\\"System\\\",\n \\\"Size\\\": 40\n }],\n \\\"Cores\\\": 4,\n \\\"Memory\\\": 8\n }\n },\n \\\"ExecutorPolicy\\\": {\n \\\"MaxCount\\\": 1\n },\n \\\"TaskSustainable\\\": true\n}]\"\n\n# 构建DeploymentPolicy JSON\nDEPLOYMENT_POLICY_JSON=\"{\n \\\"Network\\\": {\n \\\"Vswitch\\\": [\\\"$VSWITCH_ID\\\"],\n \\\"EnableExternalIpAddress\\\": true\n },\n \\\"AllocationSpec\\\": \\\"Standard\\\",\n \\\"Level\\\": \\\"General\\\"\n}\"\n\n# 构建SecurityPolicy JSON\nSECURITY_POLICY_JSON=\"{\n \\\"SecurityGroup\\\": {\n \\\"SecurityGroupIds\\\": [\\\"$SECURITY_GROUP_ID\\\"]\n }\n}\"\n\necho -e \"${BLUE}📤 正在提交作业...${NC}\"\n\n# 提交作业\nif $ALIYUN_CLI ehpcinstant CreateJob \\\n --JobName \"$JOB_NAME\" \\\n --JobDescription \"$JOB_DESCRIPTION\" \\\n --Tasks \"$TASKS_JSON\" \\\n --DeploymentPolicy \"$DEPLOYMENT_POLICY_JSON\" \\\n --SecurityPolicy \"$SECURITY_POLICY_JSON\" \\\n --region \"$REGION\" \\\n --connect-timeout 5 \\\n --read-timeout 10 \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill; then\n \n echo -e \"${GREEN}✅ 长期运行VM作业提交成功!${NC}\"\n echo -e \"${GREEN}💡 后续操作:${NC}\"\n echo -e \" • 查看作业状态: ./list_jobs.sh\"\n echo -e \" • 获取详情: ./get_job.sh \u003cJobId>\"\nelse\n echo -e \"${RED}❌ 作业提交失败!${NC}\"\n exit 1\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":5747,"content_sha256":"de7945b0cd1b43fa10438d8f76995558cd6d0c0aa223fd491fd5a7bbe66b95e5"},{"filename":"scripts/cli/delete_jobs.sh","content":"#!/bin/bash\n\n# ====================================================================\n# E-HPC Instant - 作业删除脚本 (CLI模式)\n# ====================================================================\n# 基于SDK脚本: delete_jobs.py\n# 功能: 删除指定的E-HPC Instant作业\n# ====================================================================\n\nset -e\n\n# ANSI颜色代码\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;34m'\nCYAN='\\033[0;36m'\nNC='\\033[0m' # No Color\n\n# 加载共享输入校验库\nsource \"$(dirname \"$0\")/_lib_validate.sh\"\n\n# 显示帮助信息\nshow_help() {\n cat \u003c\u003c EOF\n${BLUE}E-HPC Instant 作业删除工具${NC}\n\n${YELLOW}功能说明:${NC}\n 删除指定的E-HPC Instant作业\n\n${YELLOW}环境变量配置:${NC}\n REGION - 地域 (默认: cn-shanghai)\n\n${YELLOW}使用方式:${NC}\n ./delete_jobs.sh \u003cJobId>\n \n${YELLOW}参数:${NC}\n JobId - 要删除的作业ID (必需)\n\nEOF\n}\n\n# 参数验证\nif [[ $# -eq 0 ]] || [[ \"$1\" == \"-h\" ]] || [[ \"$1\" == \"--help\" ]]; then\n if [[ $# -eq 0 ]]; then\n echo -e \"${RED}❌ 错误: 请提供作业ID${NC}\"\n fi\n show_help\n exit 1\nfi\n\nJOB_ID=\"$1\"\n\n# 输入校验\nvalidate_job_id \"$JOB_ID\"\n\n# 验证阿里云CLI\nALIYUN_CLI=\"aliyun\"\nif ! command -v \"$ALIYUN_CLI\" &> /dev/null; then\n echo -e \"${RED}❌ 错误: 未找到 aliyun CLI${NC}\"\n echo -e \"${YELLOW}请先安装阿里云CLI: https://help.aliyun.com/document_detail/121529.html${NC}\"\n exit 1\nfi\n\nREGION=\"${REGION:-cn-shanghai}\"\nvalidate_region \"$REGION\"\n\necho -e \"${BLUE}🗑️ 删除作业${NC}\"\necho -e \"${BLUE}============${NC}\"\necho -e \"作业ID: ${CYAN}$JOB_ID${NC}\"\necho -e \"地域: ${CYAN}$REGION${NC}\"\necho \"\"\n\n# 安全确认\nread -p \"$(echo -e \"${RED}❓ 确认删除作业 $JOB_ID? 此操作不可逆! (y/N): ${NC}\")\" -n 1 -r\necho\nif [[ ! $REPLY =~ ^[Yy]$ ]]; then\n echo -e \"${YELLOW}❌ 操作已取消${NC}\"\n exit 0\nfi\n\n# 构建JobSpec JSON\nJOB_SPEC_JSON=\"[{\\\"JobId\\\":\\\"$JOB_ID\\\"}]\"\n\necho -e \"${BLUE}📤 正在删除...${NC}\"\n\n# 执行删除\nif $ALIYUN_CLI ehpcinstant DeleteJobs --JobSpec \"$JOB_SPEC_JSON\" --region \"$REGION\" --connect-timeout 5 --read-timeout 10 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill; then\n echo -e \"${GREEN}✅ 作业删除成功!${NC}\"\n echo -e \"${GREEN}💡 提示:${NC}\"\n echo -e \" • 验证结果: ./list_jobs.sh\"\nelse\n echo -e \"${RED}❌ 删除失败!${NC}\"\n exit 1\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2474,"content_sha256":"95f76f139172616b42113c94189a2af1bef090a8a7bfbcc272b5d15f116de8da"},{"filename":"scripts/cli/get_job.sh","content":"#!/bin/bash\n\n# ====================================================================\n# E-HPC Instant - 作业详情查询脚本 (CLI模式)\n# ====================================================================\n# 基于SDK脚本: get_job.py\n# 功能: 获取指定作业的详细信息\n# ====================================================================\n\nset -e\n\n# ANSI颜色代码\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;34m'\nCYAN='\\033[0;36m'\nNC='\\033[0m' # No Color\n\n# 加载共享输入校验库\nsource \"$(dirname \"$0\")/_lib_validate.sh\"\n\n# 显示帮助信息\nshow_help() {\n cat \u003c\u003c EOF\n${BLUE}E-HPC Instant 作业详情查询工具${NC}\n\n${YELLOW}功能说明:${NC}\n 获取指定作业的详细配置和状态信息\n\n${YELLOW}环境变量配置:${NC}\n REGION - 地域 (默认: cn-shanghai)\n\n${YELLOW}使用方式:${NC}\n ./get_job.sh \u003cJobId>\n \n${YELLOW}参数:${NC}\n JobId - 要查询的作业ID (必需)\n\nEOF\n}\n\n# 参数验证\nif [[ $# -eq 0 ]] || [[ \"$1\" == \"-h\" ]] || [[ \"$1\" == \"--help\" ]]; then\n if [[ $# -eq 0 ]]; then\n echo -e \"${RED}❌ 错误: 请提供作业ID${NC}\"\n fi\n show_help\n exit 1\nfi\n\nJOB_ID=\"$1\"\n\n# 输入校验\nvalidate_job_id \"$JOB_ID\"\n\n# 验证阿里云CLI\nALIYUN_CLI=\"aliyun\"\nif ! command -v \"$ALIYUN_CLI\" &> /dev/null; then\n echo -e \"${RED}❌ 错误: 未找到 aliyun CLI${NC}\"\n echo -e \"${YELLOW}请先安装阿里云CLI: https://help.aliyun.com/document_detail/121529.html${NC}\"\n exit 1\nfi\n\nREGION=\"${REGION:-cn-shanghai}\"\nvalidate_region \"$REGION\"\n\necho -e \"${BLUE}🔍 查询作业详情${NC}\"\necho -e \"${BLUE}================${NC}\"\necho -e \"作业ID: ${CYAN}$JOB_ID${NC}\"\necho -e \"地域: ${CYAN}$REGION${NC}\"\necho \"\"\n\n# 执行查询\necho -e \"${BLUE}📤 正在获取详情...${NC}\"\n\nif RESULT=$($ALIYUN_CLI ehpcinstant GetJob --JobId \"$JOB_ID\" --region \"$REGION\" --connect-timeout 5 --read-timeout 10 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill); then\n echo -e \"${GREEN}✅ 查询成功!${NC}\"\n echo \"\"\n echo \"$RESULT\"\n \n echo -e \"${GREEN}💡 提示:${NC}\"\n echo -e \" • 列出所有作业: ./list_jobs.sh\"\n echo -e \" • 删除作业: ./delete_jobs.sh $JOB_ID\"\nelse\n echo -e \"${RED}❌ 查询失败!${NC}\"\n exit 1\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2316,"content_sha256":"177c72e6dbfcc77adf7f305f2bd478e6cccab722271303773715e2f38a671645"},{"filename":"scripts/cli/list_jobs.sh","content":"#!/bin/bash\n\n# ====================================================================\n# E-HPC Instant - 作业列表查询脚本 (CLI模式)\n# ====================================================================\n# 基于SDK脚本: list_jobs.py\n# 功能: 查询E-HPC Instant作业列表,支持过滤条件\n# ====================================================================\n\nset -e\n\n# ANSI颜色代码\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;34m'\nCYAN='\\033[0;36m'\nNC='\\033[0m' # No Color\n\n# 加载共享输入校验库\nsource \"$(dirname \"$0\")/_lib_validate.sh\"\n\n# 显示帮助信息\nshow_help() {\n cat \u003c\u003c EOF\n${BLUE}E-HPC Instant 作业列表查询工具${NC}\n\n${YELLOW}功能说明:${NC}\n 查询E-HPC Instant作业列表,支持按作业ID或名称过滤\n\n${YELLOW}环境变量配置:${NC}\n JOB_ID - 按作业ID过滤 (可选)\n JOB_NAME - 按作业名称过滤 (可选)\n REGION - 地域 (默认: cn-shanghai)\n\n${YELLOW}使用方式:${NC}\n ./list_jobs.sh [选项]\n \n${YELLOW}选项:${NC}\n -h, --help 显示此帮助信息\n\nEOF\n}\n\n# 参数解析\nif [[ $# -gt 0 ]] && ([[ \"$1\" == \"-h\" ]] || [[ \"$1\" == \"--help\" ]]); then\n show_help\n exit 0\nfi\n\n# 验证阿里云CLI\nALIYUN_CLI=\"aliyun\"\nif ! command -v \"$ALIYUN_CLI\" &> /dev/null; then\n echo -e \"${RED}❌ 错误: 未找到 aliyun CLI${NC}\"\n echo -e \"${YELLOW}请先安装阿里云CLI: https://help.aliyun.com/document_detail/121529.html${NC}\"\n exit 1\nfi\n\nREGION=\"${REGION:-cn-shanghai}\"\n\n# 输入校验:防止 JSON 注入\nvalidate_region \"$REGION\"\nif [[ -n \"$JOB_ID\" ]]; then\n validate_job_id \"$JOB_ID\"\nfi\nif [[ -n \"$JOB_NAME\" ]]; then\n validate_job_name \"$JOB_NAME\"\nfi\n\necho -e \"${BLUE}🔍 查询作业列表${NC}\"\necho -e \"${BLUE}================${NC}\"\n\n# 构建过滤条件(输入已通过白名单校验,可安全拼接)\nFILTER_JSON=\"\"\nif [[ -n \"$JOB_ID\" ]] || [[ -n \"$JOB_NAME\" ]]; then\n FILTER_JSON=\"{\"\n if [[ -n \"$JOB_ID\" ]]; then\n FILTER_JSON+=\"\\\"JobId\\\":\\\"$JOB_ID\\\"\"\n if [[ -n \"$JOB_NAME\" ]]; then\n FILTER_JSON+=\",\"\n fi\n fi\n if [[ -n \"$JOB_NAME\" ]]; then\n FILTER_JSON+=\"\\\"JobName\\\":\\\"$JOB_NAME\\\"\"\n fi\n FILTER_JSON+=\"}\"\n \n echo -e \"${YELLOW}📋 过滤条件:${NC}\"\n if [[ -n \"$JOB_ID\" ]]; then\n echo -e \" ${BLUE}作业ID:${NC} $JOB_ID\"\n fi\n if [[ -n \"$JOB_NAME\" ]]; then\n echo -e \" ${BLUE}作业名称:${NC} $JOB_NAME\"\n fi\nfi\n\necho -e \" ${BLUE}地域:${NC} $REGION\"\n\n# 执行查询\necho -e \"${BLUE}📤 正在查询...${NC}\"\n\nQUERY_ARGS=(--region \"$REGION\" --connect-timeout 5 --read-timeout 10 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill)\n\nif [[ -n \"$FILTER_JSON\" ]]; then\n QUERY_ARGS+=(--Filter \"$FILTER_JSON\")\nfi\n\nif RESULT=$($ALIYUN_CLI ehpcinstant ListJobs \"${QUERY_ARGS[@]}\"); then\n echo -e \"${GREEN}✅ 查询成功!${NC}\"\n echo \"\"\n echo \"$RESULT\"\n \n echo -e \"${GREEN}💡 提示:${NC}\"\n echo -e \" • 获取详情: ./get_job.sh \u003cJobId>\"\n echo -e \" • 删除作业: ./delete_jobs.sh \u003cJobId>\"\nelse\n echo -e \"${RED}❌ 查询失败!${NC}\"\n exit 1\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":3220,"content_sha256":"fed6dbad9f791bcd36c78ffa5b6b06c2c7db42483657b510ff15fe88ca61a72a"},{"filename":"scripts/sdk/_lib_validate.py","content":"#!/usr/bin/env python\n# coding=utf-8\n\n# ====================================================================\n# E-HPC Instant SDK - 通用输入校验库\n# ====================================================================\n# 目的:\n# 与 scripts/cli/_lib_validate.sh 保持一致的白名单校验逻辑,\n# 防止来自 sys.argv / 环境变量等不可信来源的恶意字符(双引号、\n# 反斜杠、控制字符等)被直接拼接进 JSON 字符串后引发 JSON/命令注入。\n#\n# 用法:\n# from _lib_validate import validate_job_id, validate_vm_password, ...\n# job_id = validate_job_id(sys.argv[1])\n#\n# 校验失败行为:\n# 抛出 ValidationError,调用方可用 require_argv 等包装函数自动退出。\n# ====================================================================\n\nimport re\nimport sys\n\n\nclass ValidationError(ValueError):\n \"\"\"输入校验失败时抛出的异常。\"\"\"\n\n\ndef _fail(message, hint=None):\n msg = \"❌ 输入校验失败: {0}\".format(message)\n if hint:\n msg += \"\\n 正确格式: {0}\".format(hint)\n raise ValidationError(msg)\n\n\ndef validate_pattern(name, value, regex, hint):\n \"\"\"通用:按正则白名单校验。\"\"\"\n if value is None or value == \"\":\n _fail(\"{0} 不能为空\".format(name), hint)\n if not isinstance(value, str):\n _fail(\"{0} 类型必须为字符串\".format(name), hint)\n if not re.match(regex, value):\n _fail(\"{0} 格式无效: '{1}'\".format(name, value), hint)\n return value\n\n\n# ---- 资源 ID 校验(严格白名单字符)----\n\ndef validate_job_id(value):\n return validate_pattern(\n \"JobId\", value, r\"^job-[a-zA-Z0-9]+$\", \"job- 后跟字母数字\"\n )\n\n\ndef validate_job_name(value):\n return validate_pattern(\n \"JobName\", value, r\"^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$\",\n \"1-64 位字母/数字/下划线/连字符\",\n )\n\n\ndef validate_image_id(value):\n return validate_pattern(\n \"ImageId\", value, r\"^m-[a-zA-Z0-9]+$\", \"m- 后跟字母数字\"\n )\n\n\ndef validate_vswitch_id(value):\n return validate_pattern(\n \"VSwitchId\", value, r\"^vsw-[a-zA-Z0-9]+$\", \"vsw- 后跟字母数字\"\n )\n\n\ndef validate_security_group_id(value):\n return validate_pattern(\n \"SecurityGroupId\", value, r\"^sg-[a-zA-Z0-9]+$\", \"sg- 后跟字母数字\"\n )\n\n\ndef validate_region(value):\n return validate_pattern(\n \"Region\", value, r\"^[a-z][a-z0-9-]*[a-z0-9]$\",\n \"小写字母/数字/连字符,如 cn-shanghai\",\n )\n\n\n# ---- 域名/主机名(NAS Server 等)----\n\ndef validate_hostname(name, value):\n if value is None or value == \"\":\n _fail(\"{0} 不能为空\".format(name))\n if not isinstance(value, str):\n _fail(\"{0} 类型必须为字符串\".format(name))\n if len(value) > 253:\n _fail(\"{0} 长度超过 253\".format(name))\n if not re.match(r\"^[a-zA-Z0-9]([a-zA-Z0-9.-]*[a-zA-Z0-9])?$\", value):\n _fail(\n \"{0} 格式无效: '{1}'\".format(name, value),\n \"合法的主机名/域名(字母数字、点、连字符)\",\n )\n return value\n\n\n# ---- 容器镜像引用 ----\n\ndef validate_container_image(value):\n if value is None or value == \"\":\n _fail(\"ContainerImage 不能为空\")\n if not isinstance(value, str):\n _fail(\"ContainerImage 类型必须为字符串\")\n if len(value) > 512:\n _fail(\"ContainerImage 长度超过 512\")\n if not re.match(r\"^[a-zA-Z0-9][a-zA-Z0-9._:/@-]*$\", value):\n _fail(\n \"ContainerImage 包含非法字符: '{0}'\".format(value),\n \"仅允许 字母数字 . _ : / @ -\",\n )\n return value\n\n\n# ---- 自由文本字段(JOB_DESCRIPTION 等)----\n\n_CTRL_RE = re.compile(r\"[\\x00-\\x1f\\x7f]\")\n\n\ndef validate_json_safe_text(name, value, maxlen=256):\n if value is None or value == \"\":\n _fail(\"{0} 不能为空\".format(name))\n if not isinstance(value, str):\n _fail(\"{0} 类型必须为字符串\".format(name))\n if len(value) > maxlen:\n _fail(\"{0} 长度超过 {1}\".format(name, maxlen))\n if '\"' in value:\n _fail(\"{0} 不允许包含双引号 (\\\")\".format(name))\n if \"\\\\\" in value:\n _fail(\"{0} 不允许包含反斜杠 (\\\\)\".format(name))\n if _CTRL_RE.search(value):\n _fail(\"{0} 包含非法控制字符\".format(name))\n return value\n\n\n# ---- VM 登录密码 ----\n\ndef validate_vm_password(value):\n if value is None or value == \"\":\n _fail(\"VM_PASSWORD 不能为空\", \"请先 export VM_PASSWORD=\u003cyour-password>\")\n if not isinstance(value, str):\n _fail(\"VM_PASSWORD 类型必须为字符串\")\n if len(value) \u003c 8 or len(value) > 30:\n _fail(\"VM_PASSWORD 长度必须为 8-30\")\n if '\"' in value or \"\\\\\" in value:\n _fail(\"VM_PASSWORD 不允许包含 \\\" 或 \\\\\")\n if _CTRL_RE.search(value):\n _fail(\"VM_PASSWORD 包含非法控制字符\")\n return value\n\n\n# ---- 命令行包装 ----\n\ndef require_argv(argv, index, validator, usage):\n \"\"\"从 sys.argv 取第 index 个参数并交给 validator 校验,失败时打印用法并退出。\"\"\"\n if len(argv) \u003c= index:\n sys.stderr.write(\"❌ 错误: 缺少参数\\n\")\n sys.stderr.write(usage + \"\\n\")\n sys.exit(2)\n try:\n return validator(argv[index])\n except ValidationError as e:\n sys.stderr.write(str(e) + \"\\n\")\n sys.stderr.write(usage + \"\\n\")\n sys.exit(2)\n","content_type":"text/x-python; charset=utf-8","language":"python","size":5416,"content_sha256":"178db3c781b992e0e2174b00dfa2938806a55ac5e288d1d6bcb5b550033df410"},{"filename":"scripts/sdk/create_container_job.py","content":"#!/usr/bin/env python\n#coding=utf-8\n\nimport json\nfrom aliyunsdkcore.client import AcsClient\nfrom aliyunsdkcore.request import CommonRequest\n\n# 使用默认凭证链:自动从环境变量、配置文件(~/.aliyun/config.json)、ECS RAM角色等来源获取凭证\nclient = AcsClient(region_id='cn-shanghai')\n\nrequest = CommonRequest()\nrequest.set_accept_format('json')\nrequest.set_domain('ehpcinstant.cn-shanghai.aliyuncs.com')\nrequest.set_method('POST')\nrequest.set_protocol_type('https')\nrequest.set_version('2023-07-01')\nrequest.set_action_name('CreateJob')\nrequest.set_connect_timeout(5000) # 连接超时 5 秒\nrequest.set_read_timeout(10000) # 读取超时 10 秒\nrequest.add_header('User-Agent', 'AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill')\n\ntasks = [\n {\n \"TaskSpec\": {\n \"TaskExecutor\": [\n {\n \"Container\": {\n \"Image\":\"registry-vpc.cn-shanghai.aliyuncs.com/demo/xxx:v1.2\",\n \"AppId\":\"ci-ctn-xxx\",\n \"Command\": [\n \"sleep\",\"180000\",\n ],\n \"EnvironmentVars\": [\n {\n \"Name\": \"RUN_PY_PATH\",\n \"Value\": \"/mnt/test.py\"\n },\n {\n \"Name\": \"OUTPUT_PATH\",\n \"Value\": \"/mnt/output/\"\n },\n {\n \"Name\": \"INPUT_PDB_PATH\",\n \"Value\": \"/mnt/input/test.pdb\"\n },\n {\n \"Name\": \"LOG_PATH\",\n \"Value\": \"/mnt/logs\"\n }\n ]\n }\n }\n ],\n \"VolumeMount\": [\n {\n \"MountPath\": \"/mnt\",\n \"VolumeDriver\": \"alicloud/nas\",\n \"MountOptions\": \"{\\\"server\\\":\\\"xxx.cn-shanghai.nas.aliyuncs.com\\\",\\\"vers\\\":\\\"3\\\",\\\"path\\\":\\\"/\\\",\\\"options\\\":\\\"nolock,tcp,noresvport\\\"}\"\n }\n ],\n \"Resource\": {\n \"Disks\": [\n {\n \"Type\": \"System\",\n \"Size\": 40\n }\n ],\n \"Cores\": 8,\n \"Memory\": 32,\n \"InstanceTypes\":[\n \"ecs.gn6v-c8g1.2xlarge\"\n ]\n }\n },\n \"ExecutorPolicy\": {\n \"MaxCount\": 1\n },\n \"TaskSustainable\": False\n }\n]\n\ndeploymentPolicy = {\n \"Network\": {\n \"Vswitch\": [\n \"vsw-xxx\"\n ],\n \"EnableExternalIpAddress\": False,\n },\n \"AllocationSpec\": \"Standard\",\n \"Level\":\"General\"\n}\n\nsecurityPolicy = {\n \"SecurityGroup\": {\n \"SecurityGroupIds\": [\n \"sg-xxx\"\n ]\n }\n}\n\ntasksStr = json.dumps(tasks)\ndeploymentPolicyStr = json.dumps(deploymentPolicy)\nsecurityPolicyStr = json.dumps(securityPolicy)\n\nrequest.add_query_param('JobName', \"testX\")\nrequest.add_query_param('JobDescription', \"container job test\")\nrequest.add_query_param('Tasks', tasksStr)\nrequest.add_query_param('DeploymentPolicy', deploymentPolicyStr)\nrequest.add_query_param('SecurityPolicy', securityPolicyStr)\n\nresponse = client.do_action(request)\nprint(str(response, encoding='utf-8'))\n","content_type":"text/x-python; charset=utf-8","language":"python","size":2938,"content_sha256":"f417ccb8cc775adf4393f4fe08f57afc75724ae3b12a91b15eb22eab88bef8cd"},{"filename":"scripts/sdk/create_vm_job_batch.py","content":"#!/usr/bin/env python\n#coding=utf-8\n\nimport os\nimport json\nimport base64\nfrom aliyunsdkcore.client import AcsClient\nfrom aliyunsdkcore.request import CommonRequest\n\n# 使用默认凭证链:自动从环境变量、配置文件(~/.aliyun/config.json)、ECS RAM角色等来源获取凭证\nclient = AcsClient(region_id='cn-shanghai')\n\n# VM 登录密码从环境变量读取,避免明文硬编码\nvm_password = os.environ.get('VM_PASSWORD')\nif not vm_password:\n raise EnvironmentError(\"环境变量 VM_PASSWORD 未设置,请先 export VM_PASSWORD=\u003cyour-password>\")\n\nrequest = CommonRequest()\nrequest.set_accept_format('json')\nrequest.set_domain('ehpcinstant.cn-shanghai.aliyuncs.com')\nrequest.set_method('POST')\nrequest.set_protocol_type('https')\nrequest.set_version('2023-07-01')\nrequest.set_action_name('CreateJob')\nrequest.set_connect_timeout(5000) # 连接超时 5 秒\nrequest.set_read_timeout(10000) # 读取超时 10 秒\nrequest.add_header('User-Agent', 'AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill')\n\n# Step 1: 定义 Shell 脚本字符串\nshell_script = \"\"\"#!/bin/bash\n\nsleep 180\n\"\"\"\n\n# Step 2: 将字符串转换为 Base64 编码\n# 注意:Base64 编码需要将字符串转换为字节格式\nencoded_script = base64.b64encode(shell_script.encode('utf-8')).decode('utf-8')\n\ntasks = [\n {\n \"TaskSpec\": {\n \"TaskExecutor\": [\n {\n \"VM\": {\n \"Image\": \"m-xxx\",\n \"Script\": encoded_script,\n \"Password\": vm_password\n }\n }\n ],\n \"VolumeMount\": [\n {\n \"MountPath\": \"/mnt\",\n \"VolumeDriver\": \"alicloud/nas\",\n \"MountOptions\": \"{\\\"server\\\":\\\"xxx.cn-hangzhou.nas.aliyuncs.com\\\",\\\"vers\\\":\\\"3\\\",\\\"path\\\":\\\"/\\\",\\\"options\\\":\\\"nolock,tcp,noresvport\\\"}\"\n }\n ],\n \"Resource\": {\n \"Disks\": [\n {\n \"Type\": \"System\",\n \"Size\": 40\n }\n ],\n \"Cores\": 4,\n \"Memory\": 8,\n \"InstanceTypes\":[\n \"ecs.c7.xlarge\"\n ]\n }\n },\n \"ExecutorPolicy\": {\n \"MaxCount\": 1\n },\n \"TaskSustainable\": False\n }\n ],\n\ndeploymentPolicy = {\n \"Network\": {\n \"Vswitch\": [\n \"vsw-xxx\"\n ],\n \"EnableExternalIpAddress\": False,\n },\n \"AllocationSpec\": \"Standard\",\n \"Level\":\"General\"\n}\n\nsecurityPolicy = {\n \"SecurityGroup\": {\n \"SecurityGroupIds\": [\n \"sg-xxx\"\n ]\n }\n}\n\ntasksStr = json.dumps(tasks)\ndeploymentPolicyStr = json.dumps(deploymentPolicy)\nsecurityPolicyStr = json.dumps(securityPolicy)\n\nrequest.add_query_param('JobName', \"create_vm_job\")\nrequest.add_query_param('JobDescription', \"E-HPC Instant VM批处理作业提交\")\nrequest.add_query_param('Tasks', tasksStr)\nrequest.add_query_param('DeploymentPolicy', deploymentPolicyStr)\nrequest.add_query_param('SecurityPolicy', securityPolicyStr)\n\nresponse = client.do_action(request)\nprint(str(response, encoding='utf-8'))\n","content_type":"text/x-python; charset=utf-8","language":"python","size":2984,"content_sha256":"b022d7c0da43505105c43eeff58bcb3b2d3662f6806b845fee2fbd8757f2d09f"},{"filename":"scripts/sdk/create_vm_job_longrunning.py","content":"#!/usr/bin/env python\n#coding=utf-8\n\nimport os\nimport json\nimport base64\nfrom aliyunsdkcore.client import AcsClient\nfrom aliyunsdkcore.request import CommonRequest\n\n# 使用默认凭证链:自动从环境变量、配置文件(~/.aliyun/config.json)、ECS RAM角色等来源获取凭证\nclient = AcsClient(region_id='cn-shanghai')\n\n# VM 登录密码从环境变量读取,避免明文硬编码\nvm_password = os.environ.get('VM_PASSWORD')\nif not vm_password:\n raise EnvironmentError(\"环境变量 VM_PASSWORD 未设置,请先 export VM_PASSWORD=\u003cyour-password>\")\n\nrequest = CommonRequest()\nrequest.set_accept_format('json')\nrequest.set_domain('ehpcinstant.cn-shanghai.aliyuncs.com')\nrequest.set_method('POST')\nrequest.set_protocol_type('https')\nrequest.set_version('2023-07-01')\nrequest.set_action_name('CreateJob')\nrequest.set_connect_timeout(5000) # 连接超时 5 秒\nrequest.set_read_timeout(10000) # 读取超时 10 秒\nrequest.add_header('User-Agent', 'AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill')\n\n# Step 1: 定义 Shell 脚本字符串\nshell_script = \"\"\"#!/bin/bash\n\nsleep 180\n\"\"\"\n\n# Step 2: 将字符串转换为 Base64 编码\n# 注意:Base64 编码需要将字符串转换为字节格式\nencoded_script = base64.b64encode(shell_script.encode('utf-8')).decode('utf-8')\n\ntasks = [\n {\n \"TaskSpec\": {\n \"TaskExecutor\": [\n {\n \"VM\": {\n \"Image\": \"m-xxx\",\n #\"Script\": encoded_script,\n \"Password\": vm_password\n }\n }\n ],\n \"VolumeMount\": [\n {\n \"MountPath\": \"/mnt\",\n \"VolumeDriver\": \"alicloud/nas\",\n \"MountOptions\": \"{\\\"server\\\":\\\"xxx.cn-hangzhou.nas.aliyuncs.com\\\",\\\"vers\\\":\\\"3\\\",\\\"path\\\":\\\"/\\\",\\\"options\\\":\\\"nolock,tcp,noresvport\\\"}\"\n }\n ],\n \"Resource\": {\n \"Disks\": [\n {\n \"Type\": \"System\",\n \"Size\": 40\n }\n ],\n \"Cores\": 4,\n \"Memory\": 8\n }\n },\n \"ExecutorPolicy\": {\n \"MaxCount\": 1\n },\n \"TaskSustainable\": True\n }\n ],\n\ndeploymentPolicy = {\n \"Network\": {\n \"Vswitch\": [\n \"vsw-xxx\"\n ],\n \"EnableExternalIpAddress\": True,\n },\n \"AllocationSpec\": \"Standard\",\n \"Level\":\"General\"\n}\n\nsecurityPolicy = {\n \"SecurityGroup\": {\n \"SecurityGroupIds\": [\n \"sg-xxx\"\n ]\n }\n}\n\ntasksStr = json.dumps(tasks)\ndeploymentPolicyStr = json.dumps(deploymentPolicy)\nsecurityPolicyStr = json.dumps(securityPolicy)\n\nrequest.add_query_param('JobName', \"create_vm_job\")\nrequest.add_query_param('JobDescription', \"E-HPC Instant VM 后台服务作业提交\")\nrequest.add_query_param('Tasks', tasksStr)\nrequest.add_query_param('DeploymentPolicy', deploymentPolicyStr)\nrequest.add_query_param('SecurityPolicy', securityPolicyStr)\n\nresponse = client.do_action(request)\nprint(str(response, encoding='utf-8'))\n","content_type":"text/x-python; charset=utf-8","language":"python","size":2922,"content_sha256":"f3da23d452af772ae6d22aa5576d2ae7777650037306cb5421e142aa2a033427"},{"filename":"scripts/sdk/delete_jobs.py","content":"#!/usr/bin/env python\n#coding=utf-8\n\nimport sys\nimport os\nimport json\nfrom aliyunsdkcore.client import AcsClient\nfrom aliyunsdkcore.request import CommonRequest\n\n# 引入与 CLI 端 _lib_validate.sh 对齐的输入校验库\nsys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))\nfrom _lib_validate import require_argv, validate_job_id\n\n# 输入校验:JobId 必须符合 ^job-[a-zA-Z0-9]+$ 白名单\njob_id = require_argv(\n sys.argv, 1, validate_job_id,\n \"用法: python delete_jobs.py \u003cJobId> (JobId 形如 job-xxxxxxxx)\"\n)\n\n# 使用默认凭证链:自动从环境变量、配置文件(~/.aliyun/config.json)、ECS RAM角色等来源获取凭证\nclient = AcsClient(region_id='cn-shanghai')\n\nrequest = CommonRequest()\nrequest.set_accept_format('json')\nrequest.set_domain('ehpcinstant.cn-shanghai.aliyuncs.com')\nrequest.set_method('POST')\nrequest.set_protocol_type('https')\nrequest.set_version('2023-07-01')\nrequest.set_action_name('DeleteJobs')\nrequest.set_connect_timeout(5000) # 连接超时 5 秒\nrequest.set_read_timeout(10000) # 读取超时 10 秒\nrequest.add_header('User-Agent', 'AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill')\n\njobSpec = [\n {\n \"JobId\": job_id\n }\n]\n\njobSpecStr = json.dumps(jobSpec)\nrequest.add_query_param('JobSpec', jobSpecStr)\n\nresponse = client.do_action(request)\nprint(str(response, encoding='utf-8'))","content_type":"text/x-python; charset=utf-8","language":"python","size":1377,"content_sha256":"9f506b0caeb3646a3966d41cc2c6e5fb62d7cefcf2fc2aafd3ebec458219d532"},{"filename":"scripts/sdk/get_job.py","content":"#!/usr/bin/env python\n#coding=utf-8\n\nimport sys\nimport os\nimport json\nfrom aliyunsdkcore.client import AcsClient\nfrom aliyunsdkcore.request import CommonRequest\n\n# 引入与 CLI 端 _lib_validate.sh 对齐的输入校验库\nsys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))\nfrom _lib_validate import require_argv, validate_job_id\n\n# 输入校验:JobId 必须符合 ^job-[a-zA-Z0-9]+$ 白名单\njob_id = require_argv(\n sys.argv, 1, validate_job_id,\n \"用法: python get_job.py \u003cJobId> (JobId 形如 job-xxxxxxxx)\"\n)\n\n# 使用默认凭证链:自动从环境变量、配置文件(~/.aliyun/config.json)、ECS RAM角色等来源获取凭证\nclient = AcsClient(region_id='cn-shanghai')\n\nrequest = CommonRequest()\nrequest.set_accept_format('json')\nrequest.set_domain('ehpcinstant.cn-shanghai.aliyuncs.com')\nrequest.set_method('POST')\nrequest.set_protocol_type('https')\nrequest.set_version('2023-07-01')\nrequest.set_action_name('GetJob')\nrequest.set_connect_timeout(5000) # 连接超时 5 秒\nrequest.set_read_timeout(10000) # 读取超时 10 秒\nrequest.add_header('User-Agent', 'AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill')\n\njobSpec = [\n {\n \"JobId\": job_id\n }\n]\n\njobSpecStr = json.dumps(jobSpec)\nrequest.add_query_param('JobSpec', jobSpecStr)\n\nresponse = client.do_action(request)\nprint(str(response, encoding='utf-8'))","content_type":"text/x-python; charset=utf-8","language":"python","size":1369,"content_sha256":"caebed42d4d09021900afd0b4c07c3cca51dc9c9becdefd26d85fd658dce66ba"},{"filename":"scripts/sdk/list_jobs.py","content":"#!/usr/bin/env python\n#coding=utf-8\n\nimport json\nfrom aliyunsdkcore.client import AcsClient\nfrom aliyunsdkcore.request import CommonRequest\n\n# 使用默认凭证链:自动从环境变量、配置文件(~/.aliyun/config.json)、ECS RAM角色等来源获取凭证\nclient = AcsClient(region_id='cn-shanghai')\n\nrequest = CommonRequest()\nrequest.set_accept_format('json')\nrequest.set_domain('ehpcinstant.cn-shanghai.aliyuncs.com')\nrequest.set_method('POST')\nrequest.set_protocol_type('https')\nrequest.set_version('2023-07-01')\nrequest.set_action_name('ListJobs')\nrequest.set_connect_timeout(5000) # 连接超时 5 秒\nrequest.set_read_timeout(10000) # 读取超时 10 秒\nrequest.add_header('User-Agent', 'AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill')\n\nfilter = {\n \"JobId\": \"test\",\n \"JobName\": \"test\"\n}\nfilterStr = json.dumps(filter)\nrequest.add_query_param('Filter', filterStr)\n\nresponse = client.do_action(request)\nprint(str(response, encoding='utf-8'))","content_type":"text/x-python; charset=utf-8","language":"python","size":978,"content_sha256":"ee2cec88d9025e53f6e27fd9a3fa5191bc722b11b394fbf4d4c8167ac42ede1d"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"阿里云E-HPC Instant作业管理技能","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"技能概述","type":"text"}]},{"type":"paragraph","content":[{"text":"通过阿里云CLI(优先)或SDK工具,实现对E-HPC Instant计算平台作业及计算资源的全生命周期管理。","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"交互原则","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"用户友好","type":"text","marks":[{"type":"strong"}]},{"text":":使用\"您\"而非\"你\",保持专业而友好的语调","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"透明操作","type":"text","marks":[{"type":"strong"}]},{"text":":所有关键配置信息必须向用户展示并获得确认","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"安全第一","type":"text","marks":[{"type":"strong"}]},{"text":":遵循最小权限原则,避免意外操作","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"错误处理","type":"text","marks":[{"type":"strong"}]},{"text":":提供清晰的错误信息和解决方案","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"格式规范","type":"text","marks":[{"type":"strong"}]},{"text":":使用简单、清晰、易读的输出格式","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"执行流程","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Step1: 配置预加载","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Step2: 前置条件校验","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Step3: 作业管理执行","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Step4: 作业任务执行结果输出","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 1: 配置预加载","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"[MUST]","type":"text","marks":[{"type":"strong"}]},{"text":" 必须首先尝试读取 ","type":"text"},{"text":"./jobconfig/pre-config.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" 文件,严禁跳过此检查步骤。","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"文件存在且读取成功","type":"text","marks":[{"type":"strong"}]},{"text":":加载其中的参数值,向用户提示预配置已加载并展示关键参数摘要,然后进入 Step 2。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"文件不存在","type":"text","marks":[{"type":"strong"}]},{"text":":向用户提示未检测到预配置文件,将在 Step 2 中通过交互方式获取必要参数,然后进入 Step 2。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"文件存在但读取/解析失败","type":"text","marks":[{"type":"strong"}]},{"text":"(如 JSON 格式错误、权限不足等):向用户报告具体错误信息,询问是否继续(跳过预配置进入 Step 2)或中止执行。","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 2: 前置条件校验","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"所有作业管理任务通用校验","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"阿里云CLI配置","type":"text","marks":[{"type":"strong"}]},{"text":":验证CLI已安装并配置AccessKey","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"CLI版本要求 >= 3.3.3","type":"text","marks":[{"type":"strong"}]},{"text":":运行 ","type":"text"},{"text":"aliyun version","type":"text","marks":[{"type":"code_inline"}]},{"text":" 验证版本 >= 3.3.3。若未安装或版本过低,参考 ","type":"text"},{"text":"references/aliyun-cli.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/aliyun-cli.md","title":null}}]},{"text":" 中的安装说明进行安装或更新。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"[MUST] 运行 ","type":"text"},{"text":"aliyun configure set --auto-plugin-install true","type":"text","marks":[{"type":"code_inline"}]},{"text":" 启用自动插件安装。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"[MUST] 运行 ","type":"text"},{"text":"aliyun plugin update","type":"text","marks":[{"type":"code_inline"}]},{"text":" 确保已安装插件始终为最新版本。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"若无配置,引导用户交互式安装和配置","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"参考:","type":"text"},{"text":"references/aliyun-cli.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/aliyun-cli.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"[MUST] CLI User-Agent","type":"text","marks":[{"type":"strong"}]},{"text":" — 每个 ","type":"text"},{"text":"aliyun","type":"text","marks":[{"type":"code_inline"}]},{"text":" CLI 命令调用必须包含:","type":"text"},{"text":"--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"启用阿里云CLI AI模式","type":"text","marks":[{"type":"strong"}]},{"text":":运行以下初始化命令,附加本Skill执行的AI身份信息:","type":"text"}]}]}]},{"type":"blockquote","content":[{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aliyun configure ai-mode enable\naliyun configure ai-mode set-user-agent --user-agent \"AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill\"\naliyun plugin update","type":"text"}]},{"type":"paragraph","content":[{"text":"阿里云CLI提供了AI模式。启用后,CLI会自动附加AI身份信息,使服务端能够识别并优化Agent调用链路。 ","type":"text"},{"text":"[MUST] 在每个退出点禁用AI模式","type":"text","marks":[{"type":"strong"}]},{"text":" — 在因任何原因交付最终响应之前,务必先禁用AI模式。这适用于所有退出路径:工作流成功、工作流失败、错误/异常、用户取消、会话结束,或任何不再执行CLI命令的场景。 AI模式仅用于Agent Skill调用场景,技能停止运行后","type":"text"},{"text":"必须","type":"text","marks":[{"type":"strong"}]},{"text":"保持禁用状态。","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aliyun configure ai-mode disable","type":"text"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"地域信息","type":"text","marks":[{"type":"strong"}]},{"text":":获取用户指定区域或使用默认区域","type":"text"},{"text":"cn-shanghai","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"权限验证","type":"text","marks":[{"type":"strong"}]},{"text":":确保AccessKey具备E-HPC Instant相关权限","type":"text"}]}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"创建作业任务专项校验","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"镜像准备","type":"text","marks":[{"type":"strong"}]},{"text":":容器/VM镜像已添加至E-HPC Instant平台","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"若无镜像,引导用户交互式添加","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"参考:","type":"text"},{"text":"references/instant-image.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/instant-image.md","title":null}}]}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"网络配置","type":"text","marks":[{"type":"strong"}]},{"text":":vSwitch已创建并可用","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"若无vSwitch,引导用户交互式创建","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"参考:","type":"text"},{"text":"references/vswitch.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/vswitch.md","title":null}}]}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"存储配置","type":"text","marks":[{"type":"strong"}]},{"text":":NAS挂载路径已准备(如需要)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"若需NAS,引导用户交互式配置","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"参考:","type":"text"},{"text":"references/storage.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/storage.md","title":null}}]}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"计算资源配置","type":"text","marks":[{"type":"strong"}]},{"text":":Cores/Memory或InstanceType规格已指定","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"引导用户选择合适的资源配置","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"参考:","type":"text"},{"text":"references/resource.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/resource.md","title":null}}]}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"执行命令","type":"text","marks":[{"type":"strong"}]},{"text":":作业执行命令行已指定","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"确保命令格式正确(特别是JSON数组格式)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"参考:","type":"text"},{"text":"references/job-command.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/job-command.md","title":null}}]}]}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 3: 作业管理执行","type":"text"}]},{"type":"paragraph","content":[{"text":"根据用户需求执行相应的作业管理操作","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"创建作业","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Container容器作业","type":"text"}]}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aliyun ehpcinstant CreateJob \\\n --region cn-shanghai \\\n --JobName 'container-job' \\\n --Tasks '[{\n \"TaskSpec\": {\n \"TaskExecutor\": [{\n \"Container\": {\n \"Image\": \"registry.cn-shanghai.aliyuncs.com/registry/image:tag\",\n \"Command\": \"[\\\"/bin/sh\\\", \\\"-c\\\", \\\"python /app/main.py\\\"]\"\n }\n }],\n \"Resource\": {\n \"Cores\": 2,\n \"Memory\": 4,\n \"Disks\": [{\"Type\":\"System\",\"Size\":40}]\n },\n\t \"VolumeMount\": [\n {\n \"MountPath\": \"/mnt\",\n \"VolumeDriver\": \"alicloud/nas\",\n \"MountOptions\": \"{\\\"server\\\":\\\"xxx.cn-shanghai.nas.aliyuncs.com\\\",\\\"vers\\\":\\\"3\\\",\\\"path\\\":\\\"/\\\",\\\"options\\\":\\\"nolock,tcp,noresvport\\\"}\"\n }\n ],\n },\n \"ExecutorPolicy\": {\"MaxCount\": 1}\n }]' \\\n --DeploymentPolicy '{\"Network\":{\"Vswitch\":[\"vsw-xxxx\"]},\"AllocationSpec\":\"Standard\"}' \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill","type":"text"}]},{"type":"ordered_list","attrs":{"order":2,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"VM虚拟机作业","type":"text"}]}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aliyun ehpcinstant CreateJob \\\n --region cn-shanghai \\\n --JobName 'longrunning-job' \\\n --JobDescription 'Long-running VM job' \\\n --Tasks '[{\n \"TaskSpec\": {\n \"TaskExecutor\": [{\n \"VM\": {\n \"Image\": \"m-xxxx\",\n \"Script\": \"base64_encoded_script\"\n }\n }],\n \"Resource\": {\n \"Disks\": [{\"Type\":\"System\",\"Size\":50}],\n \"InstanceTypes\": [\"ecs.c6.xlarge\"],\n \"Cores\": 4,\n \"Memory\": 8\n },\n\t \"VolumeMount\": [\n {\n \"MountPath\": \"/mnt\",\n \"VolumeDriver\": \"alicloud/nas\",\n \"MountOptions\": \"{\\\"server\\\":\\\"xxx.cn-shanghai.nas.aliyuncs.com\\\",\\\"vers\\\":\\\"3\\\",\\\"path\\\":\\\"/\\\",\\\"options\\\":\\\"nolock,tcp,noresvport\\\"}\"\n }\n ],\n },\n \"ExecutorPolicy\": {\"MaxCount\": 1}\n }]' \\\n --DeploymentPolicy '{\"Network\":{\"Vswitch\":[\"vsw-xxxx\"]},\"AllocationSpec\":\"Standard\"}' \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"查询作业列表","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# 基本列表查询\naliyun ehpcinstant ListJobs --region cn-shanghai \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill\n\n# 分页查询(推荐用于大量作业)\naliyun ehpcinstant ListJobs --region cn-shanghai --PageSize 10 --PageNumber 1 \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill\n\n# 条件过滤(按状态、时间等)\naliyun ehpcinstant ListJobs --region cn-shanghai --Filter '{\"Status\":\"Running\"}' \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"获取作业详情","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aliyun ehpcinstant GetJob --region cn-shanghai --JobId 'job-xxxx' \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"查询作业日志","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aliyun ehpcinstant DescribeJobResults --region cn-shanghai --JobId 'job-sh145rw47pegztzdpu7s' --TaskName Task0 --ArrayIndex 0 \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"删除作业","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# 删除单个作业\naliyun ehpcinstant DeleteJobs --region cn-shanghai --JobSpec '[{\"JobId\":\"job-xxxx\"}]' \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill\n\n# 批量删除(安全方式)\naliyun ehpcinstant DeleteJobs --region cn-shanghai --JobSpec '[{\"JobId\":\"job-xxxx\"},{\"JobId\":\"job-yyyy\"}]' \\\n --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ehpc-instant-job-skill","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"[MUST] 幂等删除原则","type":"text","marks":[{"type":"strong"}]},{"text":" — 当用户请求删除作业时,即使通过 GetJob 或 ListJobs 查询确认作业已不存在,Agent ","type":"text"},{"text":"仍必须","type":"text","marks":[{"type":"strong"}]},{"text":"调用 DeleteJobs API 并传入对应 JobId。DeleteJobs API 具备幂等性:作业存在时执行删除,作业不存在时返回标准 NotFound 响应。严禁 Agent 以\"作业已不存在\"为由自行跳过 API 调用 — 必须让服务端确认最终状态。","type":"text"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 4: 结果输出与后续建议","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"格式化输出执行结果","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"提供后续操作建议(如监控、日志查看等)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"记录关键信息供后续参考","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"作业管理参考执行脚本","type":"text"}]},{"type":"paragraph","content":[{"text":"路径:","type":"text"},{"text":"/home/admin/.openclaw/workspace/skills/ehpcinstant-job-skill/scripts/","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"paragraph","content":[{"text":"CLI脚本","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"create_container_job.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 创建容器作业","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"create_vm_job_batch.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 创建VM作业","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"create_vm_job_longrunning.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 创建长期运行的VM作业","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"list_jobs.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 列出作业(支持分页)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"get_job.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 获取作业详情","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"delete_jobs.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 删除作业","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"SDK脚本","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"对应的Python SDK版本脚本,位于","type":"text"},{"text":"scripts/sdk/","type":"text","marks":[{"type":"code_inline"}]},{"text":"目录","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"create_container_job.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 创建容器作业","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"create_vm_job_batch.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 创建VM作业","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"create_vm_job_longrunning.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 创建长期运行的VM作业","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"list_jobs.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 列出作业(支持分页)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"get_job.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 获取作业详情","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"delete_jobs.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" - 删除作业","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"注意事项","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"CLI命令准确性","type":"text","marks":[{"type":"strong"}]},{"text":":E-HPC Instant使用","type":"text"},{"text":"aliyun ehpcinstant","type":"text","marks":[{"type":"code_inline"}]},{"text":"命令,不是","type":"text"},{"text":"aliyun ehpc","type":"text","marks":[{"type":"code_inline"}]},{"text":"!","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"区域一致性","type":"text","marks":[{"type":"strong"}]},{"text":":所有资源必须在同一区域,跨区域操作会失败","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"配额限制","type":"text","marks":[{"type":"strong"}]},{"text":":注意账户配额限制,避免操作失败","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"成本意识","type":"text","marks":[{"type":"strong"}]},{"text":":作业运行会产生费用,及时清理不需要的资源","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"权限最小化","type":"text","marks":[{"type":"strong"}]},{"text":":为AccessKey配置最小必要权限,提高安全性","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"故障排查与最佳实践","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"常见问题解决方案","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"问题","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"根本原因","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"解决方案","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"InvalidCommand错误","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Command参数格式不正确","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"使用正确的JSON数组格式:","type":"text"},{"text":"[\"/bin/sh\", \"-c\", \"command\"]","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"认证失败","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"AccessKey配置错误或权限不足","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"检查","type":"text"},{"text":"~/.aliyun/config.json","type":"text","marks":[{"type":"code_inline"}]},{"text":"配置,确保具备E-HPC Instant权限","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"镜像不存在","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"镜像ID错误或区域不匹配","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"确认镜像ID正确且在相同区域,参考","type":"text"},{"text":"references/instant-image.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/instant-image.md","title":null}}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"网络配置错误","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"VSwitch ID错误或不可用","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"检查VSwitch ID和安全组配置,参考","type":"text"},{"text":"references/vswitch.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/vswitch.md","title":null}}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"资源配额不足","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"账户配额限制","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"联系阿里云增加配额,或调整资源配置","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"命令执行失败","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"容器内命令路径错误","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"确保命令在镜像环境中可执行,使用绝对路径","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"最佳实践指南","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"命名规范","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"作业名称:","type":"text"},{"text":"应用-算例-时间戳","type":"text","marks":[{"type":"code_inline"}]},{"text":"(如:","type":"text"},{"text":"prod-training-20260411","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"资源名称:包含用途、环境、区域信息","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"资源配置优化","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"根据应用特性选择合适的实例规格","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"避免过度配置造成资源浪费","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"成本控制","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"及时清理已完成的作业","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"使用适当的作业超时设置","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"监控资源使用情况","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"可靠性保障","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"实现作业状态监控和重试机制","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"配置适当的错误处理和告警","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"定期备份重要配置和数据","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"安全性增强","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"使用私有镜像仓库","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"配置最小权限的AccessKey","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"启用网络访问控制和加密","type":"text"}]}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"参考资料与扩展","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"完整API参考","type":"text"}]},{"type":"paragraph","content":[{"text":"如仍有作业管理执行参数不确定,可参考如下链接:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/ehpcinstant.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/ehpcinstant.md","title":null}}]},{"text":" - E-HPC Instant完整CLI命令手册","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"CLI帮助命令:","type":"text"},{"text":"aliyun ehpcinstant \u003cApiName> --help","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"专项配置指南","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/aliyun-cli.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/aliyun-cli.md","title":null}}]},{"text":" - 阿里云CLI配置指南","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/instant-image.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/instant-image.md","title":null}}]},{"text":" - 镜像管理指南","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/vswitch.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/vswitch.md","title":null}}]},{"text":" - 网络vSwitch管理指南","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/storage.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/storage.md","title":null}}]},{"text":" - NAS存储管理指南","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/resource.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/resource.md","title":null}}]},{"text":" - 计算资源配置指南","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/job-command.md","type":"text","marks":[{"type":"link","attrs":{"href":"./references/job-command.md","title":null}}]},{"text":" - 作业命令配置指南","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"官方文档","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"阿里云E-HPC Instant产品文档:https://help.aliyun.com/product/ehpcinstant.html","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"E-HPC Instant API文档:https://api.aliyun.com/document/EhpcInstant/2023-07-01/overview","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"阿里云CLI官方文档:https://help.aliyun.com/document_detail/121529.html","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"安全策略与风险控制","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"操作风险等级分类","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"风险级别","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"操作类型","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Agent行为准则","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"低风险","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"查询类操作 (list, get, check, describe)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"直接执行,无需额外确认","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"中风险","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"配置类操作 (configure, modify, update)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"提示影响范围,获得用户确认后执行","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"高风险","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"创建/删除类操作 (create, delete, remove)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"必须完整展示所有配置信息,用户明确确认后执行","type":"text","marks":[{"type":"strong"}]}]}]}]}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"[MUST] 禁止跳过 API 调用","type":"text","marks":[{"type":"strong"}]},{"text":" — Agent 在执行删除等操作时,不得基于查询结果(如 GetJob 返回 NotFound)自行判定\"无需操作\"而跳过实际的 API 调用。查询与变更之间存在时间窗口,服务端状态可能已变化。Agent 必须始终执行用户请求的目标 API(如 DeleteJobs),由服务端返回权威的最终结果。","type":"text"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"安全检查清单","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ ","type":"text"},{"text":"区域一致性","type":"text","marks":[{"type":"strong"}]},{"text":":确保所有资源在同一区域","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ ","type":"text"},{"text":"配额检查","type":"text","marks":[{"type":"strong"}]},{"text":":验证资源配额是否充足","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ ","type":"text"},{"text":"依赖验证","type":"text","marks":[{"type":"strong"}]},{"text":":确认依赖资源(镜像、网络、存储)存在且可用","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ ","type":"text"},{"text":"权限验证","type":"text","marks":[{"type":"strong"}]},{"text":":确保AccessKey具备必要权限","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ ","type":"text"},{"text":"成本提醒","type":"text","marks":[{"type":"strong"}]},{"text":":对于可能产生较高费用的操作给予提醒","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"敏感操作确认流程","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"信息汇总","type":"text","marks":[{"type":"strong"}]},{"text":":展示所有关键配置参数","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"影响说明","type":"text","marks":[{"type":"strong"}]},{"text":":说明操作的影响范围和潜在风险","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"用户确认","type":"text","marks":[{"type":"strong"}]},{"text":":等待用户明确确认(\"是\"、\"确认\"、\"继续\"等)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"执行操作","type":"text","marks":[{"type":"strong"}]},{"text":":执行确认后的操作","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"结果反馈","type":"text","marks":[{"type":"strong"}]},{"text":":提供详细的操作结果和后续建议","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"alibabacloud-ehpc-instant-job-skill","author":"@skillopedia","source":{"stars":133,"repo_name":"alibabacloud-aiops-skills","origin_url":"https://github.com/aliyun/alibabacloud-aiops-skills/blob/HEAD/skills/computing/ehpc/alibabacloud-ehpc-instant-job-skill/SKILL.md","repo_owner":"aliyun","body_sha256":"b663a598e3e096982c194eddb5c063264b3486427b3da059fffd8ce91f0b3df8","cluster_key":"1bc934c12b6ef73aa98101c87990477ca2b463529b25f1618f3e45dad499361b","clean_bundle":{"format":"clean-skill-bundle-v1","source":"aliyun/alibabacloud-aiops-skills/skills/computing/ehpc/alibabacloud-ehpc-instant-job-skill/SKILL.md","attachments":[{"id":"5288a683-ad5d-5440-b417-6964d1ed727b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/5288a683-ad5d-5440-b417-6964d1ed727b/attachment.md","path":"references/CREDENTIALS.md","size":1613,"sha256":"fc02431317d604403eae1031b3a23dd49d263cd94bbd7aa0085cda4c8d99a5fe","contentType":"text/markdown; charset=utf-8"},{"id":"dcb9a370-4e82-50a5-82e9-fd394c4d2987","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/dcb9a370-4e82-50a5-82e9-fd394c4d2987/attachment.md","path":"references/aliyun-cli.md","size":2333,"sha256":"1ff78ec2ba03aa231a3ca381556e31778a586a237fd341657b903e4643f6a011","contentType":"text/markdown; charset=utf-8"},{"id":"0ef11910-7451-599d-9af5-af1c68cad09e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0ef11910-7451-599d-9af5-af1c68cad09e/attachment.md","path":"references/ehpcinstant.md","size":15663,"sha256":"ac099fe1115f92dffc611227143c7981b611e8789803ba46e0645d2887549807","contentType":"text/markdown; charset=utf-8"},{"id":"0f79692d-bd70-51f1-a1a0-f2fb1783ab25","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0f79692d-bd70-51f1-a1a0-f2fb1783ab25/attachment.md","path":"references/instant-image.md","size":1687,"sha256":"2d32a57cdfe5b8bbc1b2abc6227c752e3d0157e83b73bf20115202c819336d11","contentType":"text/markdown; charset=utf-8"},{"id":"f2ff1c64-bc63-56fe-a584-97712182648f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f2ff1c64-bc63-56fe-a584-97712182648f/attachment.md","path":"references/job-command.md","size":1879,"sha256":"aab42060013cd1d058e306e54e4a34f1e063a560ba0b24a600a81e9720e95562","contentType":"text/markdown; charset=utf-8"},{"id":"cbae4cb6-e861-5bed-ab5c-2caba9b35b01","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/cbae4cb6-e861-5bed-ab5c-2caba9b35b01/attachment.md","path":"references/ram-policies.md","size":8498,"sha256":"258115fd38b7fbed3457dec16d72774b913c335a49795e0829722f9216b7d46b","contentType":"text/markdown; charset=utf-8"},{"id":"ff340ecc-6678-51d3-a52e-b3b825315d37","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ff340ecc-6678-51d3-a52e-b3b825315d37/attachment.md","path":"references/resource.md","size":1599,"sha256":"bc876fcac9651375dffc7bf5b568c751cbffb134d8e83a962b5194d27463abfd","contentType":"text/markdown; charset=utf-8"},{"id":"07dc727c-58ac-58bb-907b-63b66eed702e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/07dc727c-58ac-58bb-907b-63b66eed702e/attachment.md","path":"references/storage.md","size":9571,"sha256":"16fe6f83a0dab9fdc312e6ddbaafd4388cd70a2cc6f81f67f497bfcb4a0d029c","contentType":"text/markdown; charset=utf-8"},{"id":"2141e1e8-1e74-5f21-a1da-9fa1c1bed8dc","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/2141e1e8-1e74-5f21-a1da-9fa1c1bed8dc/attachment.md","path":"references/vswitch.md","size":10003,"sha256":"51bc33c404527b56590618950ac8217471a671eeb73486a27ca26358b9db35ef","contentType":"text/markdown; charset=utf-8"},{"id":"ea6cd262-6f1f-570f-b827-1a2c831644eb","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ea6cd262-6f1f-570f-b827-1a2c831644eb/attachment.sh","path":"scripts/cli/_lib_validate.sh","size":4985,"sha256":"98675cf60da09e27eab0c751c2670895c2cada30b6714e589ccaa181772c872e","contentType":"application/x-sh; charset=utf-8"},{"id":"f6e96764-2a57-5631-bc7c-cd08e825d35c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f6e96764-2a57-5631-bc7c-cd08e825d35c/attachment.sh","path":"scripts/cli/create_container_job.sh","size":6175,"sha256":"bbfc8cf0ba90807f5c47ae8568dd9c93f7217611c8d3a29241aa32018bf40bb4","contentType":"application/x-sh; charset=utf-8"},{"id":"59790b5b-244f-5696-850f-50d38a85a5f3","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/59790b5b-244f-5696-850f-50d38a85a5f3/attachment.sh","path":"scripts/cli/create_vm_job_batch.sh","size":5842,"sha256":"73f146358f03e9629b818fd1eec2844dcc83112dda697511d1d97219304cf80c","contentType":"application/x-sh; charset=utf-8"},{"id":"0f7f5ab9-3c58-5268-bbbc-b21bdeb8183f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0f7f5ab9-3c58-5268-bbbc-b21bdeb8183f/attachment.sh","path":"scripts/cli/create_vm_job_longrunning.sh","size":5747,"sha256":"de7945b0cd1b43fa10438d8f76995558cd6d0c0aa223fd491fd5a7bbe66b95e5","contentType":"application/x-sh; charset=utf-8"},{"id":"6557fa9d-587d-5c4e-8e12-33f8eea3e35c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6557fa9d-587d-5c4e-8e12-33f8eea3e35c/attachment.sh","path":"scripts/cli/delete_jobs.sh","size":2474,"sha256":"95f76f139172616b42113c94189a2af1bef090a8a7bfbcc272b5d15f116de8da","contentType":"application/x-sh; charset=utf-8"},{"id":"ce004f70-c795-52e0-919a-e03850944056","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ce004f70-c795-52e0-919a-e03850944056/attachment.sh","path":"scripts/cli/get_job.sh","size":2316,"sha256":"177c72e6dbfcc77adf7f305f2bd478e6cccab722271303773715e2f38a671645","contentType":"application/x-sh; charset=utf-8"},{"id":"676a4543-d7bd-5bb7-aa9d-48e7bde4ae33","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/676a4543-d7bd-5bb7-aa9d-48e7bde4ae33/attachment.sh","path":"scripts/cli/list_jobs.sh","size":3220,"sha256":"fed6dbad9f791bcd36c78ffa5b6b06c2c7db42483657b510ff15fe88ca61a72a","contentType":"application/x-sh; charset=utf-8"},{"id":"12c426e6-8c38-5f78-9907-834fe25aaf20","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/12c426e6-8c38-5f78-9907-834fe25aaf20/attachment.py","path":"scripts/sdk/_lib_validate.py","size":5416,"sha256":"178db3c781b992e0e2174b00dfa2938806a55ac5e288d1d6bcb5b550033df410","contentType":"text/x-python; charset=utf-8"},{"id":"20f38566-2290-555a-a131-92135be2ca49","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/20f38566-2290-555a-a131-92135be2ca49/attachment.py","path":"scripts/sdk/create_container_job.py","size":2938,"sha256":"f417ccb8cc775adf4393f4fe08f57afc75724ae3b12a91b15eb22eab88bef8cd","contentType":"text/x-python; charset=utf-8"},{"id":"bb436437-5484-52c9-8ecf-78fe04f39bab","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/bb436437-5484-52c9-8ecf-78fe04f39bab/attachment.py","path":"scripts/sdk/create_vm_job_batch.py","size":2984,"sha256":"b022d7c0da43505105c43eeff58bcb3b2d3662f6806b845fee2fbd8757f2d09f","contentType":"text/x-python; charset=utf-8"},{"id":"eaff0339-9ddf-5d98-9804-e814c9e56bcd","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/eaff0339-9ddf-5d98-9804-e814c9e56bcd/attachment.py","path":"scripts/sdk/create_vm_job_longrunning.py","size":2922,"sha256":"f3da23d452af772ae6d22aa5576d2ae7777650037306cb5421e142aa2a033427","contentType":"text/x-python; charset=utf-8"},{"id":"d19b7934-a552-57f4-bb60-4e6d99c1ada3","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d19b7934-a552-57f4-bb60-4e6d99c1ada3/attachment.py","path":"scripts/sdk/delete_jobs.py","size":1377,"sha256":"9f506b0caeb3646a3966d41cc2c6e5fb62d7cefcf2fc2aafd3ebec458219d532","contentType":"text/x-python; charset=utf-8"},{"id":"5d442bc3-994a-55b0-bd5c-66f42f6741bc","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/5d442bc3-994a-55b0-bd5c-66f42f6741bc/attachment.py","path":"scripts/sdk/get_job.py","size":1369,"sha256":"caebed42d4d09021900afd0b4c07c3cca51dc9c9becdefd26d85fd658dce66ba","contentType":"text/x-python; charset=utf-8"},{"id":"20dad869-db8e-5be5-9f9e-521b847b9502","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/20dad869-db8e-5be5-9f9e-521b847b9502/attachment.py","path":"scripts/sdk/list_jobs.py","size":978,"sha256":"ee2cec88d9025e53f6e27fd9a3fa5191bc722b11b394fbf4d4c8167ac42ede1d","contentType":"text/x-python; charset=utf-8"}],"bundle_sha256":"365c3f078f917a621fde4e60614817f9363c34a1b5cd6c03b28fcaf5e74a1346","attachment_count":23,"text_attachments":23,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"skills/computing/ehpc/alibabacloud-ehpc-instant-job-skill/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"general","category_label":"General"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"general","import_tag":"clean-skills-v1","description":"阿里云E-HPC Instant计算平台作业管理工具包,支持E-HPC Instant(EHPC Instant/ehpcinstant)作业的创建/提交、查询、获取详情、查询日志、删除等操作。当用户需要创建作业、查询作业列表、获取作业详情、删除作业、查询作业日志时使用。"}},"renderedAt":1782982119819}

阿里云E-HPC Instant作业管理技能 技能概述 通过阿里云CLI(优先)或SDK工具,实现对E-HPC Instant计算平台作业及计算资源的全生命周期管理。 交互原则 - 用户友好 :使用"您"而非"你",保持专业而友好的语调 - 透明操作 :所有关键配置信息必须向用户展示并获得确认 - 安全第一 :遵循最小权限原则,避免意外操作 - 错误处理 :提供清晰的错误信息和解决方案 - 格式规范 :使用简单、清晰、易读的输出格式 执行流程 - Step1: 配置预加载 - Step2: 前置条件校验 - Step3: 作业管理执行 - Step4: 作业任务执行结果输出 Step 1: 配置预加载 [MUST] 必须首先尝试读取 文件,严禁跳过此检查步骤。 - 文件存在且读取成功 :加载其中的参数值,向用户提示预配置已加载并展示关键参数摘要,然后进入 Step 2。 - 文件不存在 :向用户提示未检测到预配置文件,将在 Step 2 中通过交互方式获取必要参数,然后进入 Step 2。 - 文件存在但读取/解析失败 (如 JSON 格式错误、权限不足等):向用户报告具体错误信息,询问是否继续(跳过预配置进入 Step 2)或中止执行。 Step 2: 前置条件校验 所有作业管理任务通用校验 1. 阿里云CLI配置 :验证CLI已安装并配置AccessKey - CLI版本要求…