为现有云资源分配和绑定 EIP 的场景描述
分配弹性 IP 地址(EIP)并将其绑定到现有的阿里云资源以实现公网访问。该技能仅关注 EIP 产品的能力。
支持的资源类型:
EcsInstance:ECS 实例(需要实例 ID)
NetworkInterface:弹性网络接口/ENI(需要 ENI ID + 私有 IP 地址)
SlbInstance:经典负载均衡器/CLB(需要 CLB 实例 ID)
Nat:NAT 网关(需要 NAT 网关 ID)
HaVip:高可用性虚拟 IP(需要 HaVip ID)
IpAddress:直接 IP 地址绑定(需要 VPC ID + IP 地址)
关键原则:
✅ 只对用户提供的资源 ID 进行操作 - 从不查询或自动选择资源
✅ 快速失败 - 立即停止不可恢复的错误
✅ 不创建资源 - 只绑定到现有的资源(不创建新的 ECS/NAT/VPC)
✅ 用户确认 - 在分配之前询问关键的 EIP 参数
✅ 失败时清理 - 如果绑定失败,则释放新分配的 EIP
预检查
- Aliyun CLI 版本验证(>= 3.3.3)
预检查:Aliyun CLI >= 3.3.3 是必需的
运行 aliyun version 来验证 >= 3.3.3。如果没有安装或版本太低,运行 curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash 来更新,或者参阅 references/cli-installation-guide.md 来获取安装说明。
预检查:Aliyun CLI 插件更新是必需的
[MUST] 运行 aliyun configure set --auto-plugin-install true 来启用自动插件安装。
[MUST] 运行 aliyun plugin update 来确保任何现有的插件都是最新的。
aliyun configure set --auto-plugin-install true
CLI_VERSION=$(aliyun version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
[ "$(printf '%s\n' "3.3.3" "$CLI_VERSION" | sort -V | head -n1)" != "3.3.3" ] && echo "❌ CLI < 3.3.3" && exit 1
aliyun plugin update
aliyun configure list # 检查有效的配置文件(AK/STS/OAuth)。永远不要回显 AK/SK。
工作流概述
所有命令的关键规则:
[MUST] CLI User-Agent — 每个 aliyun CLI 命令调用都必须包含:--user-agent AlibabaCloud-Agent-Skills/alibabacloud-network-eip-associate
每个 aliyun 产品命令必须包含 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-network-eip-associate(不适用于 configure 命令)
使用插件模式(kebab-case):aliyun vpc allocate-eip-address,而不是 AllocateEipAddress
VPC 命令需要 --biz-region-id
CRITICAL:--biz-region-id 只设置 API 请求体中的 RegionId 参数;它不控制 CLI 连接到的 API 端点。
API 端点由 CLI 配置文件的配置区域确定。
在运行任何 VPC 命令之前,您必须将 CLI 配置文件的区域设置为目标区域:aliyun configure set --region {REGION}
jq 不可用 — 使用 grep 来解析 JSON 输出
全局变量来跟踪:
CREATED_EIPS:在此会话中创建的 EIP 分配 ID 数组(用于用户控制的失败时清理)
REGION:目标区域(必须由用户显式提供,无默认值)
INSTANCE_TYPE:目标资源类型(EcsInstance/NetworkInterface/SlbInstance/Nat/HaVip/IpAddress)
USE_EXISTING_EIP:布尔标志(true = 使用现有的 EIP,false = 创建新的 EIP)
ALLOCATION_ID:EIP 实例 ID(来自现有的 EIP 或新分配的)
工作流阶段:
阶段 1:提取用户输入,验证资源,选择现有的/新的 EIP
步骤 1.1-1.2:提取参数,设置 CLI 区域
步骤 1.3:检查资源是否已经绑定了 EIP(DescribeEipAddresses)
步骤 1.3.5:检查 ECS 是否有 PIP/公网 IP(仅 ECS,DescribeInstanceAttribute)
步骤 1.4:用户选择现有的 EIP 或新的 EIP
步骤 1.5:使用现有的 EIP(查询可用的 EIP,让用户选择)
步骤 1.6:创建新的 EIP(确认参数)
步骤 1.7:预分配验证(仅适用于新的 EIP)
阶段 2:分配 EIP(仅当 USE_EXISTING_EIP = false 时)
阶段 3:将 EIP 绑定到目标资源(实际执行)
阶段 4:验证绑定
阶段 5:失败时清理(询问用户是否保留或释放新创建的 EIP)
阶段 1:提取用户输入和验证资源
步骤 1.1:从用户消息中提取所需的参数
来自用户的必需参数:
区域:目标区域(例如,cn-beijing,cn-hangzhou)- 必须由用户显式提供,无默认值
资源类型:ECS / ENI / CLB / NAT / HAVIP / IP 之一
资源 ID:确切的实例 ID,ENI ID,NAT ID 等
附加参数(实例类型特定):
如果 NetworkInterface:必须有 PrivateIpAddress(绑定的私有 IP 地址)
如果 IpAddress:必须有 VpcId(IP 地址所在的 VPC ID)
如果任何必需的参数缺失,停止并询问用户:
❌ 缺失:Region[必需] | ResourceType[ECS/ENI/CLB/NAT/HAVIP/IP] | ResourceID | [PrivateIP for ENI] | [VpcId for IP]
CRITICAL:区域必须由用户显式提供。不要使用默认区域(如 cn-hangzhou)。不要在没有用户显式提供的值的情况下继续。
步骤 1.1.1:输入验证(安全)
验证输入以防止命令注入:
区域:^[a-z]{2,3}-[a-z]+-\d
[a-z]$(例如,cn-beijing)