活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 一键部署Llama3大模型学习机 0代码一键部署,预装最新主流大模型Llama3与StableDiffusion
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      查看所有产品

      智能边缘云

      智能边缘云

        • 产品动态
        • 产品简介
        • 图说智能边缘云ECX
        • 产品定义
        • 产品优势
        • 产品功能
        • 功能特性
        • 计算功能
        • 存储功能
        • 网络功能
        • 应用场景
        • 节点分布
        • 使用限制
        • 术语解释
        • 使用须知
        • 计费说明
        • 计费概述
        • 算力计费
        • 网络计费
        • 价格
        • 产品开通
        • 配置变更
        • 产品退订
        • 欠费说明
        • 快速入门
        • 入门概述
        • 查询订单和费用
        • 商务账号绑定天翼云账号
        • 用户指南
        • 边缘虚拟机
        • 实例
        • 边缘实例概述
        • 闲时抢占型虚拟机
        • 如何创建实例
        • 实例生命周期
        • 查看实例及实例信息
        • 登录边缘实例
        • 实例自定义数据
        • 升级实例
        • 管理实例
        • 实例运行监控
        • 存储挂载及卸载
        • 边缘主机备份
        • VPC网卡切换VPC或子网
        • 修改网卡IP
        • 添加VPC内网辅助网卡
        • 修改默认网卡
        • 删除网卡
        • 开启或关闭源/目的检查
        • 启用与取消IPv6地址
        • 镜像
        • 镜像概述
        • 镜像查看及管理
        • 创建自定义镜像
        • 管理自定义镜像
        • 镜像市场供应商入驻及镜像管理
        • SSH密钥
        • SSH密钥概述
        • 创建和管理SSH密钥
        • 添加和使用SSH密钥管理虚拟机
        • 标签管理
        • 启动模板
        • 启动模板概述
        • 创建及管理启动模板
        • 使用启动模板创建虚拟机
        • 虚机组
        • 虚机组概述
        • 创建及管理虚机组
        • 虚机组策略生效
        • 边缘存储
        • 云硬盘
        • 云硬盘概述
        • 创建云硬盘
        • 挂载云硬盘
        • 卸载云硬盘
        • 云硬盘快照
        • 云硬盘其它操作
        • 本地盘
        • 本地裸盘
        • 文件存储
        • 备份
        • 备份概述
        • 云硬盘备份操作
        • 备份存储库管理
        • 边缘网络
        • 虚拟私有云
        • 虚拟私有云概述
        • 创建和管理虚拟私有云
        • 创建和管理子网
        • 创建虚拟机选择虚拟私有云
        • IPv6网段管理
        • 安全组
        • 安全组概述
        • 创建和管理安全组
        • 添加和管理安全组规则
        • 导入导出安全组规则
        • 关联虚拟机管理
        • 零信任接入
        • 零信任接入VPC
        • 零信任访问云上资源场景介绍
        • 弹性公网IP
        • 弹性公网IP概述
        • 创建和管理弹性公网IP
        • 修改带宽大小
        • 共享带宽
        • 共享带宽概述
        • 创建和管理共享带宽
        • 公网IP加入共享带宽
        • 公网IP移出共享带宽
        • NAT网关
        • NAT网关概述
        • 创建和管理NAT网关实例
        • 创建和管理SNAT条目
        • 创建和管理DNAT条目
        • 弹性负载均衡
        • 负载均衡概述
        • 快速入门
        • 创建和管理负载均衡实例
        • 添加和管理监听器
        • 添加和管理后端服务器组
        • 配置转发策略
        • 升配实例规格
        • 指标监控
        • 访问控制策略
        • 访问控制策略管理
        • 路由表
        • 路由表概述
        • 创建和管理路由表
        • 添加和管理路由
        • 子网关联管理
        • 网络ACL
        • 网络ACL概述
        • 创建和管理网络ACL
        • 添加和管理网络ACL规则
        • 关联子网管理
        • SSL证书
        • SSL证书管理
        • 内网VIP
        • 内网VIP概述
        • 创建和管理内网VIP
        • NAT64服务
        • NAT64服务概述
        • 创建和管理NAT64实例
        • 添加和管理NAT64转换
        • 配置黑白名单
        • 公网VIP
        • 公网VIP概述
        • 管理公网VIP
        • IPv6网关
        • IPv6网关概述
        • IPv6地址管理
        • 边边网络
        • 边边网络概述
        • 创建和管理边边网络实例
        • 边边网络关联网络实例管理
        • 路由管理
        • 对等连接
        • 对等连接概述
        • 创建和管理对等连接
        • 弹性网卡
        • 弹性网卡管理
        • 边缘云专线
        • 边缘云专线概述
        • 边缘云专线管理
        • 边缘裸金属
        • 实例
        • 边缘裸金属实例概述
        • 创建边缘裸金属
        • 实例生命周期
        • 重装边缘裸金属
        • 镜像服务
        • 裸金属镜像概述
        • 裸金属镜像管理
        • Kickstart模版
        • 查看带宽列表
        • 运维与监控
        • 操作日志
        • 数据监控
        • 告警配置
        • 消息管理
        • 查询计费用量
        • 最佳实践
        • 快速部署DeepSeek的最佳实践
        • 批量设置有序的虚拟机名称
        • 从零开始实践零信任网络接入VPC
        • 批量创建边缘虚拟机
        • 高可用最佳实践
        • 天翼云ECX,助您快速搭建低时延Palworld幻兽帕鲁Windows服务器
        • 天翼云ECX,助您快速搭建低时延Palworld幻兽帕鲁Linux服务器
        • 虚拟机通过NAT网关实现公网互访
        • API参考
        • API概览
        • 概述
        • 状态码
        • 接入指南
        • 常见问题
        • 售前类
        • 定义类
        • 计费类
        • 购买类
        • 功能类
        • 视频专区
        • 相关协议
        • 智能边缘云产品服务协议
          无相关产品

          本页目录

          帮助中心 智能边缘云 API参考 API概览 接入指南
          接入指南
          更新时间 2024-09-19 10:42:44
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2024-09-19 10:42:44
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          智能边缘云的 API 使用指南

          一、 前置步骤

          如何获取 AK/SK

          • Access Key:简写为AK,对http请求进行签名,签名机制是为了访问更加安全, access key为用户独有,并作为身份标识;
          • Secret Key:简写为SK,用户私有的,请勿给他人。

          调用智能边缘云 OpenAPI 需要 AK/SK 认证鉴权,下面为 AK/SK 获取方法:

          AK/SK 从 天翼云 IAM 申请,获取地址:https://vip.ctcdn.cn/

          登录页面中选择【天翼云账号】登录,如下图所示:

          iShot_2024-06-28_14.33.54.png

          登录后,在左侧【个人中心】下,选择【AccessKey管理】,点击【新增】,工作区选择【系统内置工作区】。

          image.png

          创建 AK 后,点击查看,验证后就可以获取到 SK。

          image-20240527164637715.png

          充值与集群自助权限申请

          调用 OpenAPI 开通资源前,需要确保账户下有集群自助权限,确认地址:https://ecx.ctyun.cn/vm/vm/list ;

          • 账号充值:按需开通资源时,要求可用现金余额最少100元;
          • 如果在租户控制台创建资源时没有集群可选项(下图 ①),请找售后或运营申请集群自助权限;
          • 如果在租户控制台看到集群下没有配额(下图 ②),请找售后或运营申请资源配额。

          image-20240614173636187.png

          调用地址

          API 的调用地址:https://ecx-global.ctapi.ctyun.cn

          二、签名示例

          认证头部header部分

          名称 描述 是否必选 示例
          Content-Type 消息体的类型 是 application/json
          ctyun-eop-request-id 流水号 是 0ffb9b07-d5a8-4e19-b3ce-12dfb9705a1d
          Eop-Authorization 签名认证信息 是 4a4bdc57e06542199b5f98d4cd107be2 Headers=ctyun-eop-request-id;eop-date Signature=b2WEo4nh9ewn6SWOP0ii5g8L0z9CT5gprpDWntlCX9I=
          Eop-date 时间,15分钟有效期(实际传时间为北京东八区UTC+8时间。TZ仅为格式,非UTC时间。) 是 20221107T093029Z

          Python

          Python SDK 下载地址:https://eop.ctyun.cn/ebp/static/sdk/py/ctapi_sdk_python.py

          调用方法:将下面代码复制到下载的 sdk 代码最下面后执行

          # 认证信息
          ak = "your ak"
          sk = "your sk"
          endpoint = "https://ecx-global.ctapi.ctyun.cn"
          
          # 请求路径
          path1 = "/v3/cluster/describeRegionClusters"
          path2 = "/v3/cluster/describeInstanceSpec"
          path3 = "/v3/vpc/createVPC"
          
          # 请求参数
          params1 = {}
          params2 = {"nodeCode": "hn-changde-1"}
          params3 = {"nodeCode": "hn-changde-1"}
          
          # 发起请求
          response1 = get(f"{endpoint}{path1}", params1)
          response2 = get(f"{endpoint}{path2}", params2)
          response3 = post(f"{endpoint}{path2}", "", params3)
          
          # 打印响应
          print("Response for describeRegionClusters:")
          print(json.loads(response1))
          
          print("\nResponse for describeInstanceSpec:")
          print(json.loads(response2))
          

          Golang

          Go SDK 下载地址:https://eop.ctyun.cn/ebp/static/sdk/go/ctapi_sdk_go.zip

          调用方法:下面代码包括了 sdk 代码和调用示例

          package main
          
          import (
          	"bytes"
          	"crypto/hmac"
          	"crypto/sha256"
          	"encoding/base64"
          	"encoding/json"
          	"fmt"
          	"io/ioutil"
          	"net/http"
          	"sort"
          	"strings"
          	"time"
          
          	"github.com/google/uuid"
          )
          
          const (
          	METHOD_GET    = "GET"
          	METHOD_POST   = "POST"
          	METHOD_HEAD   = "HEAD"
          	METHOD_PATCH  = "PATCH"
          	METHOD_PUT    = "PUT"
          	METHOD_DELETE = "DELETE"
          )
          
          var (
          	ak       = "ak"
          	sk       = "sk"
          	endpoint = "https://ecx-global.ctapi.ctyun.cn"
          )
          
          func hmacSHA256(secret, data string) []byte {
          	h := hmac.New(sha256.New, []byte(secret))
          	h.Write([]byte(data))
          	return h.Sum(nil)
          }
          
          func base64OfHmac(data []byte) string {
          	return base64.StdEncoding.EncodeToString(data)
          }
          
          func getRequestUUID() string {
          	return uuid.New().String()
          }
          
          func getSortedStr(data map[string]interface{}) string {
          	keys := make([]string, 0, len(data))
          	for k := range data {
          		keys = append(keys, k)
          	}
          	sort.Strings(keys)
          
          	var strList []string
          	for _, k := range keys {
          		strList = append(strList, fmt.Sprintf("%s=%v", k, data[k]))
          	}
          	return strings.Join(strList, "&")
          }
          
          func buildSign(ak, sk string, queryParams, bodyParams map[string]interface{}, eopDate, requestUUID, method string, file bool, contentType string) string {
          	var bodyStr string
          	if !file {
          		if bodyParams != nil {
          			bodyBytes, _ := json.Marshal(bodyParams)
          			bodyStr = string(bodyBytes)
          		}
          	}
          
          	var bodyDigest string
          	if method == METHOD_POST || method == METHOD_PUT {
          		if file {
          			bodyDigest = fmt.Sprintf("%x", sha256.Sum256([]byte(bodyStr)))
          		} else {
          			bodyBytes, _ := json.Marshal(bodyParams)
          			bodyDigest = fmt.Sprintf("%x", sha256.Sum256(bodyBytes))
          		}
          	} else {
          		bodyDigest = fmt.Sprintf("%x", sha256.Sum256([]byte(bodyStr)))
          	}
          
          	headerStr := fmt.Sprintf("ctyun-eop-request-id:%s\neop-date:%s\n", requestUUID, eopDate)
          	queryStr := getSortedStr(queryParams)
          	signatureStr := fmt.Sprintf("%s\n%s\n%s", headerStr, queryStr, bodyDigest)
          
          	printLog(fmt.Sprintf("signature_str is: %s", signatureStr))
          
          	kTime := hmacSHA256(sk, eopDate)
          	kAk := hmacSHA256(string(kTime), ak)
          	kDate := hmacSHA256(string(kAk), strings.Split(eopDate, "T")[0])
          
          	signatureBase64 := base64OfHmac(hmacSHA256(string(kDate), signatureStr))
          	signHeader := fmt.Sprintf("%s Headers=ctyun-eop-request-id;eop-date Signature=%s", ak, signatureBase64)
          	return signHeader
          }
          
          func getSignHeaders(ak, sk string, queryParams, body map[string]interface{}, method, contentType string, file bool, uuid string) map[string]string {
          	now := time.Now()
          	eopDate := now.Format("20060102T150405Z")
          	headers := map[string]string{
          		"Content-type":         contentType,
          		"ctyun-eop-request-id": uuid,
          		"Eop-Authorization":    buildSign(ak, sk, queryParams, body, eopDate, uuid, method, file, contentType),
          		"Eop-date":             eopDate,
          	}
          	return headers
          }
          
          func execute(ak, sk, urlStr, method string, queryParams, bodyParams map[string]interface{}, headerParams map[string]string, contentType string, file bool) (string, error) {
          	queryStr := getSortedStr(queryParams)
          	requestUUID := getRequestUUID()
          	headers := getSignHeaders(ak, sk, queryParams, bodyParams, method, contentType, file, requestUUID)
          
          	for k, v := range headerParams {
          		headers[k] = v
          	}
          
          	if len(queryStr) > 0 {
          		urlStr = fmt.Sprintf("%s?%s", urlStr, queryStr)
          	}
          
          	var reqBody []byte
          	if bodyParams != nil {
          		reqBody, _ = json.Marshal(bodyParams)
          	}
          
          	fmt.Println("Request URL:", urlStr)
          	fmt.Println("Request Method:", method)
          	fmt.Println("Request Headers:", headers)
          	fmt.Println("Request Body:", string(reqBody))
          
          	req, err := http.NewRequest(method, urlStr, bytes.NewBuffer(reqBody))
          	if err != nil {
          		return "", err
          	}
          
          	for k, v := range headers {
          		req.Header.Set(k, v)
          	}
          
          	client := &http.Client{}
          	resp, err := client.Do(req)
          	if err != nil {
          		return "", err
          	}
          	defer resp.Body.Close()
          
          	body, _ := ioutil.ReadAll(resp.Body)
          	fmt.Println("Response Status:", resp.Status)
          	fmt.Println("Response Headers:", resp.Header)
          	fmt.Println("Response Body:", string(body))
          
          	return string(body), nil
          }
          
          /* ********************************* 调用示例 *********************************************** */
          func printLog(logInfo string) {
          	now := time.Now()
          	logInfo = fmt.Sprintf("[%s]: %s", now.Format("2006-01-02 15:04:05"), logInfo)
          	fmt.Println(logInfo)
          }
          
          func main() {
          	path1 := "/v3/cluster/describeRegionClusters"
          	path2 := "/v3/cluster/describeInstanceSpec"
          
          	params1 := map[string]interface{}{}
          	params2 := map[string]interface{}{"nodeCode": "hn-changde-1"}
          
          	response1, err := execute(ak, sk, endpoint+path1, METHOD_GET, params1, nil, nil, "application/json;charset=UTF-8", false)
          	if err != nil {
          		fmt.Println("Error:", err)
          		return
          	}
          	fmt.Println("Response for describeRegionClusters:")
          	fmt.Println(response1)
          
          	response2, err := execute(ak, sk, endpoint+path2, METHOD_GET, params2, nil, nil, "application/json;charset=UTF-8", false)
          	if err != nil {
          		fmt.Println("Error:", err)
          		return
          	}
          	fmt.Println("\nResponse for describeInstanceSpec:")
          	fmt.Println(response2)
          }
          

          三、OpenAPI 接口文档

          接口文档地址: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=69&data=55

          接口在线调试,如下图所示,填写 AK/SK 后测试接口:

          image-20240606210003019.png

          image-20240606210044770.png

          SDK 下载地址:

          image.png

          上一篇 :  状态码
          下一篇 :  常见问题
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

           文本反馈
          搜索
          ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2025天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明