tencent cloud

APIs

Cloud Virtual Machine
History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
Tencent Cloud Lighthouse
History
Introduction
API Category
Making API Requests
Image APIs
Firewall APIs
Key APIs
Instance APIs
CCN APIs
Snapshot APIs
Other APIs
Cloud Disk APIs
Scene APIs
Package APIs
Quota APIs
Region APIs
Data Types
Error Codes
Auto Scaling
History
Introduction
API Category
Making API Requests
Scaling Group APIs
Scaling Group Instances APIs
Launch Configuration APIs
Scheduled Action APIs
Alarm Trigger Policy APIs
Notification APIs
Lifecycle Hook APIs
Instance Refresh APIs
Other APIs
Data Types
Error Codes
Batch Compute
History
Introduction
API Category
Making API Requests
Compute Environment APIs
Configuration Viewing-related APIs
Task Template-related APIs
Job-related APIs
Data Types
Error Codes
Tencent Cloud Automation Tools
History
Introduction
API Category
Making API Requests
Remote Command APIs
Scheduled Execution APIs
Managed Instance APIs
Scenario APIs
Statistics APIs
Data Types
Error Codes
Edge Computing Machine
History
API Category
Making API Requests
Region APIs
Module APIs
Instance APIs
Image APIs
VPC APIs
Subnet APIs
Route Table APIs
CLB APIs
ENI APIs
EIP APIs
HAVIP APIs
Other API
Key APIs
Security Group APIs
Data Types
Error Codes
Tencent Kubernetes Engine
History
Introduction
API Category
Making API Requests
Elastic Cluster APIs
Resource Reserved Coupon APIs
Cluster APIs
Third-party Node APIs
Relevant APIs for Addon
Network APIs
Node APIs
Node Pool APIs
TKE Edge Cluster APIs
Cloud Native Monitoring APIs
Scaling group APIs
Super Node APIs
Other APIs
Data Types
Error Codes
TKE API 2022-05-01
Tencent Container Registry
History
Introduction
API Category
Making API Requests
Instance Management APIs
Namespace APIs
Access Control APIs
Instance Synchronization APIs
Tag Retention APIs
Trigger APIs
Helm Chart APIs
Image Repository APIs
Custom Account APIs
Data Types
Error Codes
Tencent Cloud Elastic Microservice
History
Introduction
API Category
Making API Requests
Environment APIs
ModifyIngress
Resource APIs
Application APIs
Service APIs
Application Deployment APIs
Access Policy APIs
Configuration file APIs
Log collecting APIs
Scaling Rule APIs
Application Version APIs
Other APIs
Workload APIs
Data Types
Error Codes
Serverless Cloud Function
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
Function and Layer Status Description
Data Types
Error Codes
Event Bridge
History
Introduction
API Category
Making API Requests
Delivery Target APIs
Event Bus APIs
Event Rule APIs
Event Connector APIs
Data Transformer APIs
Event Storage APIs
Data Types
Error Codes
Cloud Object Storage
Introduction
Common Request Headers
Common Response Headers
Error Codes
Request Signature
Action List
Service APIs
Bucket APIs
Object APIs
Batch Operation APIs
Data Processing APIs
Job and Workflow
Content Moderation APIs
Cloud Antivirus API
Cloud File Storage
History
Introduction
API Category
Snapshot APIs
File system APIs
Lifecycle APIs
Other APIs
Data Flow APIs
Making API Requests
Permission Group APIs
Service APIs
Scaling APIs
Data Migration APIs
Data Types
Error Codes
Cloud Block Storage
History
Introduction
API Category
Making API Requests
Snapshot APIs
Cloud Disk APIs
Data Types
Error Codes
Cloud HDFS
History
Introduction
API Category
Making API Requests
Other APIs
Permission group APIs
Permission rule APIs
Mount point APIs
Lifecycle rule APIs
File system APIs
Restoration task APIs
Data Types
Error Codes
Cloud Log Service
History
Introduction
API Category
Making API Requests
Topic Management APIs
Log Set Management APIs
Index APIs
Topic Partition APIs
Machine Group APIs
Collection Configuration APIs
Log APIs
Metric APIs
Alarm Policy APIs
Data Processing APIs
Kafka Protocol Consumption APIs
Kafka Task APIs
Kafka Data Subscription APIs
COS Task APIs
SCF Delivery Task APIs
Scheduled SQL Analysis APIs
COS Data Import Task APIs
Data Types
Error Codes
TDSQL-C for MySQL
History
Introduction
API Category
Making API Requests
Instance APIs
Multi-Availability Zone APIs
Other APIs
Audit APIs
Database Proxy APIs
Backup and Recovery APIs
Parameter Management APIs
Billing APIs
serverless APIs
Resource Package APIs
Account APIs
Performance Analysis APIs
Data Types
Error Codes
TencentDB for MySQL
History
Introduction
API Category
Instance APIs
Making API Requests
Data Import APIs
Database Proxy APIs
Database Audit APIs
Security APIs
Task APIs
Backup APIs
Account APIs
Rollback APIs
Parameter APIs
Database APIs
Monitoring APIs
Log-related API
Data Types
Error Codes
TencentDB for MariaDB
History
Introduction
API Category
Making API Requests
Security Group APIs
Other APIs
Account APIs
Parameter Management APIs
Monitoring Management APIs
Instance Management APIs
Backup and Restoration APIs
Data Types
Error Codes
TencentDB for PostgreSQL
History
Introduction
API Category
Making API Requests
Instance APIs
Read-only Replica APIs
Backup and Recovery APIs
Parameter Management APIs
Security Group APIs
Performance Optimization APIs
Account APIs
Specification APIs
Network APIs
Data Types
Error Codes
TencentDB for SQL Server
History
Introduction
API Category
Making API Requests
Sales and fee related APIs
Instance Management related APIs
Operation and maintenance management related APIs
Network management related APIs
Account management related APIs
Database management related APIs
Security group management related APIs
Data security encryption related APIs
Parameter configuration related APIs
Extended Event related APIs
Log management related APIs
Read only instance management related APIs
Publish and subscribe related APIs
Backup related APIs
Data migration (cold standby migration) related APIs
Rollback related APIs
Data migration (DTS old version) related APIs
SQL Server Integration Services (SSIS) related APIs
Data Types
Error Codes
TDSQL for MySQL
History
Introduction
API Category
Security Group APIs
Other APIs
Making API Requests
TDSQL APIs
Data Types
Error Codes
Tencent Cloud Distributed Cache (Redis OSS-Compatible)
History
Introduction
API Category
Making API Requests
Instance APIs
Parameter Management APIs
Other APIs
Backup and Restoration APIs
Region APIs
Monitoring and Management APIs
Log APIs
Data Types
Error Codes
TencentDB for MongoDB
History
Introduction
API Category
Making API Requests
Instance APIs
Backup APIs
Account APIs
Other APIs
Task APIs
Introduction
Data Types
Error Codes
TencentDB for TcaplusDB
History
Introduction
API Category
Making API Requests
Table Group APIs
Other APIs
Table APIs
Cluster APIs
Data Types
Error Codes
Data Transfer Service
History
Introduction
API Category
Making API Requests
(NewDTS) Data Migration APIs
Data Sync APIs
Data Consistency Check APIs
(NewDTS) Data Subscription APIs
Data Types
Error Codes
DTS API 2018-03-30
TencentDB for DBbrain
History
Introduction
Introduction
API Category
Making API Requests
Session Killing APIs
Exception Detection APIs
Other APIs
Redis related APIs
Health Report Email Sending APIs
Space Analysis APIs
Security Audit APIs
Slow Log Analysis APIs
Database Audit APIs
Data Types
Error Codes
DBbrain APIs 2019-10-16
Virtual Private Cloud
History
Introduction
API Category
Making API Requests
VPC APIs
Route Table APIs
Elastic Public IP APIs
Elastic IPv6 APIs
Highly Available Virtual IP APIs
ENI APIs
Bandwidth Package APIs
NAT Gateway APIs
Direct Connect Gateway APIs
Cloud Connect Network APIs
Network ACL APIs
Network Parameter Template APIs
Network Detection-Related APIs
Flow Log APIs
Gateway Traffic Monitor APIs
Private Link APIs
Traffic Mirroring APIs
Other APIs
Subnet APIs
VPN Gateway APIs
Security Group APIs
Snapshot Policy APIs
Error Codes
Data Types
Cloud Load Balancer
History
Introduction
API Category
Instance APIs
Listener APIs
Backend Service APIs
Target Group APIs
Redirection APIs
Other APIs
Classic CLB APIs
Load Balancing APIs
Making API Requests
Data Types
Error Codes
CLB API 2017
Direct Connect
History
Introduction
API Category
Making API Requests
Direct Connect APIs
Data Types
Error Codes
Content Delivery Network
History
Introduction
API Category
Content Management APIs
Real-time Log APIs
Service Query APIs
Data Query APIs
Making API Requests
Log Query APIs
Domain Name Management APIs
Configuration Management APIs
Obsoleted APIs
Other APIs
Data Types
Error Codes
Global Application Acceleration Platform
History
Introduction
API Category
Rule APIs
Connection Group APIs
Making API Requests
Origin Server APIs
Listener APIs
Connection APIs
Certificate APIs
Other APIs
Data Types
Error Codes
Tencent Cloud Firewall
History
Introduction
API Category
Making API Requests
Intrusion Defense APIs
Access Control APIs
Other APIs
Enterprise Security Group APIs
Firewall Status APIs
Data Types
Error Codes
Tencent Cloud EdgeOne
History
Introduction
API Category
Making API Requests
Site APIs
Acceleration Domain Management APIs
Site Acceleration Configuration APIs
Edge Function APIs
Alias Domain APIs
Security Configuration APIs
Layer 4 Application Proxy APIs
Content Management APIs
Data Analysis APIs
Log Service APIs
Billing APIs
Certificate APIs
Origin Protection APIs
Load Balancing APIs
Diagnostic Tool APIs
Custom Response Page APIs
API Security APIs
DNS Record APIs
Content Identifier APIs
Legacy APIs
Ownership APIs
Image and Video Processing APIs
Multi-Channel Security Gateway APIs
Version Management APIs
Data Types
Error Codes
Cloud Workload Protection Platform
History
Introduction
API Category
Asset Management APIs
Virus Scanning APIs
Abnormal Log-in APIs
Password Cracking APIs
Malicious Request APIs
High-Risk Command APIs
Local Privilege Escalation APIs
Reverse Shell APIs
Vulnerability Management APIs
New Baseline Management APIs
Baseline Management APIs
Advanced Defense APIs
Security Operation APIs
Expert Service APIs
Other APIs
Overview Statistics APIs
Settings Center APIs
Making API Requests
Intrusion Detection APIs
Data Types
Error Codes
Key Management Service
History
Introduction
API Category
Key APIs
Making API Requests
Asymmetric Key APIs
Data Types
Error Codes
Secrets Manager
History
Introduction
API Category
Making API Requests
Data Security APIs
Other APIs
Data Types
Error Codes
Captcha
History
Introduction
API Category
Making API Requests
Server APIs
Error Codes
Customer Identity and Access Management
History
Introduction
API Category
Making API Requests
User Management APIs
Data Sync APIs
Audit Management APIs
Data Types
Error Codes
Security Token Service
History
Introduction
API Category
Making API Requests
STS APIs
Data Types
Error Codes
SSL Certificates
History
Introduction
API Category
Making API Requests
Certificate APIs
Certificate Renewal (Certificate ID Unchanged) APIs
CSR APIs
Data Types
Error Codes
Private DNS
History
Introduction
API Category
Making API Requests
Private DNS APIs
Data Types
Error Codes
DNSPod
History
Introduction
API Category
Making API Requests
Line APIs
Package and Value-Added Service APIs
Batch Operation APIs
Group APIs
Record APIs
DNS Query Volume APIs
Alias APIs
Domain APIs
Data Types
Error Codes
Elastic MapReduce
History
Introduction
API Category
Cluster Resource Management APIs
Cluster Services APIs
User Management APIs
Data Inquiry APIs
Scaling APIs
Configuration APIs
Other APIs
Serverless HBase APIs
YARN Resource Scheduling APIs
Making API Requests
Data Types
Error Codes
Elasticsearch Service
History
Introduction
API Category
Instance APIs
Making API Requests
Data Types
Error Codes
Data Lake Compute
History
Introduction
API Category
Making API Requests
Data Table APIs
Task APIs
Metadata APIs
Service Configuration APIs
Permission Management APIs
Database APIs
Data Source Connection APIs
Data Optimization APIs
Data Engine APIs
Resource Group for the Standard Engine APIs
Data Types
Error Codes
Face Recognition
History
Introduction
API Category
Making API Requests
Face Detection and Analysis APIs
Facial Feature Localization APIs
Face Comparison APIs
Group Management APIs
Face Search APIs
Face Verification APIs
Image-based Liveness Detection (High Precision) APIs
Data Types
Error Codes
eKYC
History
Introduction
API Category
Making API Requests
Selfie Verification (Pure API) APIs
Selfie Verification (App SDK) APIs
Identity Verification (App SDK) APIs
Identity Verification(Mobile HTML5) APIs
AI Face Shield (Pure API) APIs
Other APIs
Data Types
Error Codes
Text To Speech
History
Introduction
API Category
Making API Requests
General Text-to-Speech APIs
Data Types
Error Codes
Tencent Machine Translation
History
Introduction
API Category
Making API Requests
APIs
Error Codes
Optical Character Recognition
History
Introduction
API Category
Making API Requests
Document Intelligent APIs
Card and Document OCR APIs
General Text OCR APIs
Vehicle Scene OCR APIs
Data Types
Error Codes
IoT Hub
History
Introduction
API Category
Making API Requests
Device Shadow APIs
Device APIs
CA Certificate APIs
Product APIs
Data Types
Error Codes
TDMQ for CKafka
History
Introduction
API Category
Making API Requests
Other APIs
ACL APIs
Instance APIs
Routing APIs
DataHub APIs
Topic APIs
Data Types
Error Codes
Cloud Message Queue
History
API Category
Making API Requests
Topic APIs
Queue APIs
Introduction
Data Types
Error Codes
Chat
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C APIs
C++
Short Message Service
History
Introduction
API Category
Making API Requests
SMS Mobile Number APIs
SMS Conversion Rate APIs
Status Pull APIs
SMS Statistics APIs
SMS Signature APIs
SMS Delivery APIs
SMS Template APIs
Data Types
Error Codes
SMS Callback APIs
Tencent Push Notification Service
Overview
API Overview
Call Method
Push APIs
Tag APIs
Account APIs
Statistics APIs
User Attribute APIs
Server-Side Error Codes
Server SDKs
API (Java)
Simple Email Service
History
Introduction
API Category
Making API Requests
Domain Verification APIs
Mail APIs
Template APIs
Statistics APIs
Sender Address APIs
Blocklist APIs
Sending Status Query APIs
Batch Task APIs
Custom Blocklist APIs
Data Types
Error Codes
Tencent Real-Time Communication
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
StreamLive
History
Introduction
API Category
Making API Requests
Input Management APIs
Input Security Group Management APIs
Channel Management APIs
Plan APIs
Watermark Management APIs
Statistics APIs
Data Types
Error Codes
StreamPackage
History
Introduction
API Category
Making API Requests
Channel Management APIs
Advertising Insertion Configuration Management APIs
Channel linear assembly management APIs
VOD remux task APIs
Usage Query APIs
HarvestJob Management APIs
Data Types
Error Codes
StreamLink
History
API Category
Making API Requests
Flow APIs
Data Types
Error Codes
Cloud Streaming Services
History
Introduction
API Category
Making API Requests
Live Pad APIs
Live Stream Mix APIs
Time Shifting APIs
Monitoring Data Query APIs
Billing Data Query APIs
Live Transcoding APIs
Delayed Playback Management APIs
Domain Name Management APIs
Watermark Management APIs
Certificate Management APIs
Stream Pulling APIs
Recording Management APIs
Live Callback APIs
Screencapturing and Porn Detection APIs
Authentication Management APIs
Live Stream Management APIs
Data Types
Error Codes
Video on Demand
History
Introduction
API Category
Other APIs
Media Processing APIs
Task Management APIs
Media Upload APIs
Media Management APIs
Event Notification Relevant API
Media Categorization APIs
Domain Name Management APIs
Distribution APIs
AI-based Sample Management APIs
Region Management APIs
Data Statistics APIs
Carousel-Related APIs
Just In Time Transcode APIs
No longer recommended APIs
Making API Requests
AI-based image processing APIs
Parameter Template APIs
Task Flow APIs
Data Types
Error Codes
Video on Demand API 2024-07-18
Media Processing Service
History
Introduction
API Category
Making API Requests
Processing Task Initiation APIs
Task Management APIs
Transcoding and Enhancement Template APIs
Watermark Template APIs
Screenshot Template APIs
Media AI Template APIs
Media AI—Hotword Lexicon APIs
Media AI—Sample Management APIs
Media Quality Inspection Template APIs
Live Streaming Recording Template APIs
Orchestration Management APIs
Data Statistics APIs
StreamLink—Security Group Management APIs
Other APIs
Image Processing Template APIs
AI Generation APIs
Other APIs
Data Types
Error Codes
Cloud Application Rendering
History
Introduction
API Category
Making API Requests
User APIs
Application Management APIs
Project Management APIs
Concurrency Management APIs
Stream Push Service APIs
Data Types
Error Codes
Game Multimedia Engine
History
Introduction
API Category
Usage APIs
Recording APIs
Making API Requests
Voice Chat APIs
Application APIs
Data Types
Error Codes
Tag
History
Introduction
API Category
Making API Requests
Write APIs
Read APIs
Project APIs
Data Types
Error Codes
Cloud Access Management
History
Introduction
API Category
Making API Requests
User APIs
Policy APIs
Role APIs
Identity Provider APIs
Data Types
Error Codes
CloudAudit
History
Introduction
API Category
Calling Method
CloudAudit APIs
Data Types
Error Codes
Tencent Cloud Organization
History
Introduction
API Category
Making API Requests
Organization Settings APIs
Department and Member Management APIs
Unified Member Login APIs
Member Access Management APIs
Organization Service Management APIs
Organization Management Policy APIs
Resource Sharing APIs
Identity Center Management APIs
Identity Center User Management APIs
Identity Center User Group Management APIs
Identity Center Management SCIM Synchronization APIs
Identity Center Single Sign-On Management APIs
Identity Center Permission Configuration Management APIs
Identity Center Multi-Account Authorization Management APIs
Identity Center Sub-User Synchronization Management APIs
Data Types
Error Codes
TCO API 2018-12-25
Tencent Cloud Observability Platform
History
Introduction
API Category
Making API Requests
Monitoring Data Query APIs
Alarm APIs
Legacy Alert APIs
Notification Template APIs
TMP APIs
Grafana Service APIs
Event Center APIs
TencentCloud Managed Service for Prometheus APIs
Monitoring APIs
Data Types
Error Codes
Real User Monitoring
History
Introduction
API Category
Making API Requests
Console APIs
Business System and Project Information APIs
Custom Speed Test APIs
Custom Event APIs
API Monitoring APIs
Exception Analysis APIs
Page View APIs
Static Resource Monitoring APIs
Log APIs
Page Performance APIs
Data Types
Error Codes
International Partners
History
Introduction
API Category
Making API Requests
Customer Management APIs
Credit Management APIs
Agent APIs
Bill Management APIs
Voucher Management APIs
Commission Management APIs
Data Types
Error Codes
Billing Center
API Category
Funds Management APIs
Order Management APIs
Resource Management APIs
Bill Management APIs
Cost Allocation Management APIs
Cost Management APIs
Making API Requests
Organization Account APIs
Data Types
Error Codes
TDSQL Boundless
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
TDMQ for MQTT
History
Introduction
API Category
Making API Requests
Cluster APIs
Topic APIs
Authorization Policy APIs
User APIs
Client APIs
Message APIs
Message Enhancement Rule APIs
Data Types
Error Codes
Tencent HY
History
Introduction
API Category
Making API Requests
Hunyuan Text APIs
Hunyuan 3D APIs
Data Types
Error Codes
Smart Media Hosting
History
Introduction
API Category
Making API Requests
PaaS Service APIs
Official Cloud Disk APIs
Data Types
Error Codes
Quota Center
History
Introduction
API Category
Making API Requests
Alarm APIs
Data Types
Error Codes
Message Center
History
Introduction
API Category
Making API Requests
Message Subscription APIs
Data Types
Error Codes
Business Intelligence
History
Introduction
API Category
Making API Requests
Project Management APIs
Role APIs
Database Table APIs
Report Embedding APIs
Page Management APIs
Data Types
Error Codes
LLM Knowledge Engine Basic API
History
Introduction
API Category
Making API Requests
Atomic Capability APIs
Data Types
Error Codes
Tencent Cloud Agent Development Platform
History
API Category
Making API Requests
Atomic Capability APIs
Operation Optimization APIs
Document Library APIs
Q&A Database APIs
Knowledge Tag APIs
Application Management APIs
Enterprise Management APIs
Billing APIs
Release Management APIs
Dialogue Endpoint APIs
Data Statistics APIs
Data Types
Error Codes
Tencent Cloud Blockchain as a Service
History
Introduction
API Category
Making API Requests
Hyperledger Fabric 2.3 APIs
Data Types
Error Codes
Performance Testing Service
History
Introduction
API Category
Making API Requests
PTS-related APIs
Data Types
Error Codes
Real-time Teleoperation
History
Introduction
API Category
Making API Requests
Project APIs
Device APIs
Session APIs
Authorization APIs
Other APIs
Data Types
Error Codes
Gateway Load Balancer
History
Introduction
API Category
Making API Requests
Target Group APIs
GWLB APIs
Other APIs
Data Types
Error Codes
Identity Aware Platform
History
Introduction
API Category
Making API Requests
IAP APIs
Error Codes
Cloud Dedicated Cluster
History
Introduction
API Category
Making API Requests
Cloud Dedicated Cluster (CDC) APIs
Data Types
Error Codes
Image Creation Large Model
History
Introduction
API Category
Making API Requests
Image Style Transfer APIs
Data Types
Error Codes
Face Fusion
API Category
Making API Requests
Image Face Fusion (Basic) APIs
Video Face Fusion (Single Face) APIs
Data Types
Error Codes
Tencent Smart Advisor-Chaotic Fault Generator
History
Introduction
API Category
Making API Requests
Task APIs
Template Library APIs
Data Types
Error Codes
Tencent HealthCare Omics Platform
History
Introduction
API Category
Making API Requests
Environment Management APIs
Tencent Healthcare Omics Platform APIs
Data Types
Error Codes
Tencent Cloud TCHouse-D
History
Introduction
API Category
Making API Requests
Cluster Operation APIs
Database and Table APIs
Cluster Information Viewing APIs
Hot-Cold Data Layering APIs
Database and Operation Audit APIs
User and Permission APIs
Resource Group Management APIs
Data Types
Error Codes
Tencent Cloud WeData
History
Introduction
API Category
Making API Requests
Project Management APIs
Smart Ops Related Interfaces
Resource Group APIs
Data Development APIs
Data Asset - Data Dictionary APIs
Data Development APIs
Ops Center APIs
Data Exploration APIs
Data Operations Related Interfaces
Asset APIs
Metadata Related Interfaces
Task Operations APIs
Data Security APIs
Instance Operation and Maintenance Related Interfaces
Data Map and Data Dictionary APIs
Data Quality Related Interfaces
DataInLong APIs
Platform Management APIs
Data Source Management APIs
Data Quality APIs
Platform Management APIs
Asset Data APIs
Data Source Management APIs
Data Types
Error Codes
WeData API 2025-08-06
Anti-DDoS
History
Introduction
API Category
Making API Requests
Anti-DDoS Advanced Instance APIs
Resource List APIs
Protection Configuration APIs
Other APIs
Alarm Notification APIs
Connection Configuration APIs
Intelligent Scheduling APIs
Black hole unblocking APIs
Statistical Report APIs
Data Types
Error Codes
Cloud Contact Center
History
Introduction
API Category
Making API Requests
Agent APIs
Skill Group APIs
Number APIs
Dual Call APIs
Predictive Outbound Call APIs
SIP Phone APIs
Call Service Record APIs
Billing APIs
Other APIs
Outbound Call APIs
Speech Intelligent Agent APIs
Data Types
Error Codes
Tencent Cloud Super App as a Service
History
Introduction
API Category
Making API Requests
Operation Management APIs
Platform Management APIs
Sensitive API-Related APIs
Role Management APIs
Team Management APIs
Other Console APIs
Mini Program or Mini Game APIs
Management-Sensitive APIs
Global Domain Management APIs
Superapp APIs
User Management APIs
Data Types
Tencent Cloud Smart Advisor
History
Introduction
API Category
Making API Requests
Other APIs
Task APIs
Cloud Architecture Console APIs
Data Types
Error Codes
TDMQ for RabbitMQ
History
Introduction
API Category
Making API Requests
Relevant APIs for RabbitMQ Serverless PAAS Capacity
RabbitMQ Serverless Instance Management APIs
Data Types
Error Codes
Control Center
History
Introduction
API Category
Making API Requests
Account Factory APIs
Data Types
Error Codes
TDMQ for CMQ
API Documentation
API 2.0 to 3.0 Switch Guide
Tencent Cloud TCHouse-P
History
Introduction
API Category
Making API Requests
Information Query APIs
Instance APIs
Query APIs
Cluster Management APIs
Cluster Operation APIs
Data Types
Error Codes
TDMQ for RocketMQ
History
API Category
Making API Requests
Topic APIs
Consumer Group APIs
Message APIs
Role Authentication APIs
Hitless Migration APIs
Cloud Migration APIs
Cluster APIs
Data Types
Error Codes
Cloud Dedicated Zone
History
Introduction
API Category
Making API Requests
Availability Zone APIs
Data Types
Error Codes
Tencent Cloud Health Dashboard
History
Introduction
API Category
Making API Requests
Event APIs
Data Types
Error Codes
Application Performance Management
History
Introduction
API Category
Making API Requests
Application APIs
Business System APIs
General Query APIs
Unavailable APIs
Performance Analysis APIs
Data Types
Error Codes
Config
History
Introduction
API Category
Making API Requests
Rule APIs
Resource APIs
Data Types
Error Codes
Automatic Speech Recognition
History
Introduction
API Category
Making API Requests
Recording Recognition APIs
Real-Time Speech Recognition APIs
Data Types
Error Codes
Tencent Cloud TI Platform
History
Introduction
API Category
Making API Requests
Online Service APIs
Data Types
Error Codes
Web Application Firewall
History
Introduction
API Category
Making API Requests
Asset Management APIs
Billing APIs
Protection Settings APIs
Other APIs
IP Management APIs
Integration APIs
Log Service APIs
Security Overview APIs
Rule Engine APIs
Data Types
Error Codes
Cloud Security Center
History
Introduction
API Category
Making API Requests
Multi-account management related APIs
Scan Task APIs
Risk Center APIs
Asset Center APIs
Cloud Boundary Analysis APIs
Cloud API Anomaly Detection APIs
Report Download APIs
Solid Protection APIs
Cloud Security Center Overview APIs
Data Types
Error Codes
Risk Control Engine
History
Introduction
API Category
Making API Requests
TencentCloud API APIs
Data Types
Error Codes
TencentDB for CTSDB
History
Introduction
API Category
Making API Requests
Instance APIs
Database APIs
Data Types
Error Codes
Tencent Interactive Whiteboard
History
Introduction
API Category
Making API Requests
Whiteboard Push APIs
Other APIs
Document Transcoding APIs
Real-Time Recording APIs
Statistics Query APIs
Whiteboard Snapshot APIs
Recording Video Generation APIs
Data Types
Error Codes
Tencent Container Security Service
History
Introduction
API Category
Making API Requests
Network Security APIs
Cluster Security APIs
Security Compliance APIs
Runtime security - High-risk syscalls
Runtime Security - Reverse Shell APIs
Runtime Security APIs
Alert Settings APIs
Advanced prevention - K8s API abnormal requests
Asset Management APIs
Security Operations - Log Analysis APIs
Runtime Security - Trojan Call APIs
Runtime Security - Container Escape APIs
Image Security APIs
Billing APIs
Data Types
Error Codes
Domains
History
Introduction
API Category
Making API Requests
Domain Management APIs
Domain Query APIs
Bulk Operation APIs
Registrant Profile APIs
Other APIs
Data Types
Error Codes
Low-code Interactive Classroom
History
Introduction
API Category
Making API Requests
User Login APIs
Room Management APIs
Group Management APIs
Application Configuration APIs
Recording Management APIs
Courseware Management APIs
User Management APIs
Developer APIs
Data Types
Error Codes

签名方法 v3

聚焦模式
字号
最后更新时间: 2021-11-15 17:22:46

签名方法 v3 (TC3-HMAC-SHA256)功能上覆盖了以前的签名方法 v1,而且更安全,支持更大的请求,支持 json 格式,性能有一定提升,推荐使用该签名方法计算签名。

首次接触,建议使用 API Explorer 中的“签名串生成”功能,选择签名版本为“API 3.0 签名 v3”,可以生成签名过程进行验证,也可直接生成 SDK 代码。推荐使用腾讯云 API 配套的 7 种常见的编程语言 SDK,已经封装了签名和请求过程,均已开源,支持 PythonJavaPHPGoNodeJS.NETC++

腾讯云 API 会对每个请求进行身份验证,用户需要使用安全凭证,经过特定的步骤对请求进行签名(Signature),每个请求都需要在公共请求参数中指定该签名结果并以指定的方式和格式发送请求。

申请安全凭证

本文使用的安全凭证为密钥,密钥包括 SecretId 和 SecretKey。每个用户最多可以拥有两对密钥。

  • SecretId:用于标识 API 调用者身份,可以简单类比为用户名。
  • SecretKey:用于验证 API 调用者的身份,可以简单类比为密码。
  • 用户必须严格保管安全凭证,避免泄露,否则将危及财产安全。如已泄漏,请立刻禁用该安全凭证。

申请安全凭证的具体步骤如下:

  1. 登录 腾讯云管理中心控制台
  2. 前往 云API密钥 的控制台页面。
  3. 云API密钥 页面,单击【新建密钥】即可以创建一对密钥。

签名过程

云 API 支持 GET 和 POST 请求。对于GET方法,只支持 Content-Type: application/x-www-form-urlencoded 协议格式。对于POST方法,目前支持 Content-Type: application/json 以及 Content-Type: multipart/form-data 两种协议格式,json 格式绝大多数接口均支持,multipart 格式只有特定接口支持,此时该接口不能使用 json 格式调用,参考具体业务接口文档说明。推荐使用 POST 请求,因为两者的结果并无差异,但 GET 请求只支持 32 KB 以内的请求包。

下面以云服务器查询广州区实例列表作为例子,分步骤介绍签名的计算过程。我们选择该接口是因为:

  1. 云服务器默认已开通,该接口很常用;
  2. 该接口是只读的,不会改变现有资源的状态;
  3. 接口覆盖的参数种类较全,可以演示包含数据结构的数组如何使用。

在示例中,不论公共参数或者接口的参数,我们尽量选择容易犯错的情况。在实际调用接口时,请根据实际情况来,每个接口的参数并不相同,不要照抄这个例子的参数和值。

假设用户的 SecretId 和 SecretKey 分别是:AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE 和 Gu5t9xGARNpq86cd98joQYCN3EXAMPLE。用户想查看广州区云服务器名为“未命名”的主机状态,只返回一条数据。则请求可能为:

curl -X POST https://cvm.tencentcloudapi.com \
-H "Authorization: TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE/2019-02-25/cvm/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea809ad7a8c8f7a4507b9bddcbaa8e581f516e8da2f66e2c5a96525168" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Host: cvm.tencentcloudapi.com" \
-H "X-TC-Action: DescribeInstances" \
-H "X-TC-Timestamp: 1551113065" \
-H "X-TC-Version: 2017-03-12" \
-H "X-TC-Region: ap-guangzhou" \
-d '{"Limit": 1, "Filters": [{"Values": ["\u672a\u547d\u540d"], "Name": "instance-name"}]}'

下面详细解释签名计算过程。

1. 拼接规范请求串

按如下伪代码格式拼接规范请求串(CanonicalRequest):

CanonicalRequest =
  HTTPRequestMethod + '\n' +
  CanonicalURI + '\n' +
  CanonicalQueryString + '\n' +
  CanonicalHeaders + '\n' +
  SignedHeaders + '\n' +
  HashedRequestPayload
字段名称 解释
HTTPRequestMethod HTTP 请求方法(GET、POST )。此示例取值为 POST
CanonicalURI URI 参数,API 3.0 固定为正斜杠(/)。
CanonicalQueryString 发起 HTTP 请求 URL 中的查询字符串,对于 POST 请求,固定为空字符串"",对于 GET 请求,则为 URL 中问号(?)后面的字符串内容,例如:Limit=10&Offset=0。
注意:CanonicalQueryString 需要参考 RFC3986 进行 URLEncode,字符集 UTF8,推荐使用编程语言标准库,所有特殊字符均需编码,大写形式。
CanonicalHeaders 参与签名的头部信息,至少包含 host 和 content-type 两个头部,也可加入自定义的头部参与签名以提高自身请求的唯一性和安全性。
拼接规则:
  1. 头部 key 和 value 统一转成小写,并去掉首尾空格,按照 key:value\n 格式拼接;
  2. 多个头部,按照头部 key(小写)的 ASCII 升序进行拼接。
此示例计算结果是 content-type:application/json; charset=utf-8\nhost:cvm.tencentcloudapi.com\n
注意:content-type 必须和实际发送的相符合,有些编程语言网络库即使未指定也会自动添加 charset 值,如果签名时和发送时不一致,服务器会返回签名校验失败。
SignedHeaders 参与签名的头部信息,说明此次请求有哪些头部参与了签名,和 CanonicalHeaders 包含的头部内容是一一对应的。content-type 和 host 为必选头部。
拼接规则:
  1. 头部 key 统一转成小写;
  2. 多个头部 key(小写)按照 ASCII 升序进行拼接,并且以分号(;)分隔。
此示例为 content-type;host
HashedRequestPayload 请求正文(payload,即 body,此示例为 {"Limit": 1, "Filters": [{"Values": ["\u672a\u547d\u540d"], "Name": "instance-name"}]})的哈希值,计算伪代码为 Lowercase(HexEncode(Hash.SHA256(RequestPayload))),即对 HTTP 请求正文做 SHA256 哈希,然后十六进制编码,最后编码串转换成小写字母。对于 GET 请求,RequestPayload 固定为空字符串。此示例计算结果是 35e9c5b0e3ae67532d3c9f17ead6c90222632e5b1ff7f6e89887f1398934f064

根据以上规则,示例中得到的规范请求串如下:

POST
/
content-type:application/json; charset=utf-8
host:cvm.tencentcloudapi.com
content-type;host
35e9c5b0e3ae67532d3c9f17ead6c90222632e5b1ff7f6e89887f1398934f064

2. 拼接待签名字符串

按如下格式拼接待签名字符串:

StringToSign =
  Algorithm + \n +
  RequestTimestamp + \n +
  CredentialScope + \n +
  HashedCanonicalRequest
字段名称 解释
Algorithm 签名算法,目前固定为 TC3-HMAC-SHA256
RequestTimestamp 请求时间戳,即请求头部的公共参数 X-TC-Timestamp 取值,取当前时间 UNIX 时间戳,精确到秒。此示例取值为 1551113065
CredentialScope 凭证范围,格式为 Date/service/tc3_request,包含日期、所请求的服务和终止字符串(tc3_request)。Date 为 UTC 标准时间的日期,取值需要和公共参数 X-TC-Timestamp 换算的 UTC 标准时间日期一致;service 为产品名,必须与调用的产品域名一致。此示例计算结果是 2019-02-25/cvm/tc3_request。
HashedCanonicalRequest 前述步骤拼接所得规范请求串的哈希值,计算伪代码为 Lowercase(HexEncode(Hash.SHA256(CanonicalRequest)))。此示例计算结果是 5ffe6a04c0664d6b969fab9a13bdab201d63ee709638e2749d62a09ca18d7031

注意:

  1. Date 必须从时间戳 X-TC-Timestamp 计算得到,且时区为 UTC+0。如果加入系统本地时区信息,例如东八区,将导致白天和晚上调用成功,但是凌晨时调用必定失败。假设时间戳为 1551113065,在东八区的时间是 2019-02-26 00:44:25,但是计算得到的 Date 取 UTC+0 的日期应为 2019-02-25,而不是 2019-02-26。
  2. Timestamp 必须是当前系统时间,且需确保系统时间和标准时间是同步的,如果相差超过五分钟则必定失败。如果长时间不和标准时间同步,可能导致运行一段时间后,请求必定失败,返回签名过期错误。

根据以上规则,示例中得到的待签名字符串如下:

TC3-HMAC-SHA256
1551113065
2019-02-25/cvm/tc3_request
5ffe6a04c0664d6b969fab9a13bdab201d63ee709638e2749d62a09ca18d7031

3. 计算签名

1)计算派生签名密钥,伪代码如下:

SecretKey = "Gu5t9xGARNpq86cd98joQYCN3EXAMPLE"
SecretDate = HMAC_SHA256("TC3" + SecretKey, Date)
SecretService = HMAC_SHA256(SecretDate, Service)
SecretSigning = HMAC_SHA256(SecretService, "tc3_request")

派生出的密钥 SecretDateSecretServiceSecretSigning 是二进制的数据,可能包含不可打印字符,此处不展示中间结果。

请注意,不同的编程语言,HMAC 库函数中参数顺序可能不一样,此处的伪代码密钥参数在后,请以实际编程语言为准。通常标准库函数会提供二进制格式的计算值,也即此处使用的,也会提供打印友好的十六进制格式的计算值,将在下面计算签名结果时使用。

字段名称 解释
SecretKey 原始的 SecretKey,即 Gu5t9xGARNpq86cd98joQYCN3EXAMPLE
Date 即 Credential 中的 Date 字段信息。此示例取值为 2019-02-25
Service 即 Credential 中的 Service 字段信息。此示例取值为 cvm

2)计算签名,伪代码如下:

Signature = HexEncode(HMAC_SHA256(SecretSigning, StringToSign))

此示例计算结果是 72e494ea809ad7a8c8f7a4507b9bddcbaa8e581f516e8da2f66e2c5a96525168

4. 拼接 Authorization

按如下格式拼接 Authorization:

Authorization =
  Algorithm + ' ' +
  'Credential=' + SecretId + '/' + CredentialScope + ', ' +
  'SignedHeaders=' + SignedHeaders + ', ' +
  'Signature=' + Signature
字段名称 解释
Algorithm 签名方法,固定为 TC3-HMAC-SHA256
SecretId 密钥对中的 SecretId,即 AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE
CredentialScope 见上文,凭证范围。此示例计算结果是 2019-02-25/cvm/tc3_request
SignedHeaders 见上文,参与签名的头部信息。此示例取值为 content-type;host
Signature 签名值。此示例计算结果是 72e494ea809ad7a8c8f7a4507b9bddcbaa8e581f516e8da2f66e2c5a96525168

根据以上规则,示例中得到的值为:

TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE/2019-02-25/cvm/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea809ad7a8c8f7a4507b9bddcbaa8e581f516e8da2f66e2c5a96525168

最终完整的调用信息如下:

POST https://cvm.tencentcloudapi.com/
Authorization: TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE/2019-02-25/cvm/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea809ad7a8c8f7a4507b9bddcbaa8e581f516e8da2f66e2c5a96525168
Content-Type: application/json; charset=utf-8
Host: cvm.tencentcloudapi.com
X-TC-Action: DescribeInstances
X-TC-Version: 2017-03-12
X-TC-Timestamp: 1551113065
X-TC-Region: ap-guangzhou
{"Limit": 1, "Filters": [{"Values": ["\u672a\u547d\u540d"], "Name": "instance-name"}]}

5. 签名演示

Java

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.TreeMap;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
public class TencentCloudAPITC3Demo {
  private final static Charset UTF8 = StandardCharsets.UTF_8;
  private final static String SECRET_ID = "AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE";
  private final static String SECRET_KEY = "Gu5t9xGARNpq86cd98joQYCN3EXAMPLE";
  private final static String CT_JSON = "application/json; charset=utf-8";
   public static byte[] hmac256(byte[] key, String msg) throws Exception {
      Mac mac = Mac.getInstance("HmacSHA256");
      SecretKeySpec secretKeySpec = new SecretKeySpec(key, mac.getAlgorithm());
      mac.init(secretKeySpec);
      return mac.doFinal(msg.getBytes(UTF8));
  }
   public static String sha256Hex(String s) throws Exception {
      MessageDigest md = MessageDigest.getInstance("SHA-256");
      byte[] d = md.digest(s.getBytes(UTF8));
      return DatatypeConverter.printHexBinary(d).toLowerCase();
  }
   public static void main(String[] args) throws Exception {
      String service = "cvm";
      String host = "cvm.tencentcloudapi.com";
      String region = "ap-guangzhou";
      String action = "DescribeInstances";
      String version = "2017-03-12";
      String algorithm = "TC3-HMAC-SHA256";
      String timestamp = "1551113065";
      //String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      // 注意时区,否则容易出错
      sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
      String date = sdf.format(new Date(Long.valueOf(timestamp + "000")));
       // ************* 步骤 1:拼接规范请求串 *************
      String httpRequestMethod = "POST";
      String canonicalUri = "/";
      String canonicalQueryString = "";
      String canonicalHeaders = "content-type:application/json; charset=utf-8\n" + "host:" + host + "\n";
      String signedHeaders = "content-type;host";
       String payload = "{\"Limit\": 1, \"Filters\": [{\"Values\": [\"\\u672a\\u547d\\u540d\"], \"Name\": \"instance-name\"}]}";
      String hashedRequestPayload = sha256Hex(payload);
      String canonicalRequest = httpRequestMethod + "\n" + canonicalUri + "\n" + canonicalQueryString + "\n"
              + canonicalHeaders + "\n" + signedHeaders + "\n" + hashedRequestPayload;
      System.out.println(canonicalRequest);
       // ************* 步骤 2:拼接待签名字符串 *************
      String credentialScope = date + "/" + service + "/" + "tc3_request";
      String hashedCanonicalRequest = sha256Hex(canonicalRequest);
      String stringToSign = algorithm + "\n" + timestamp + "\n" + credentialScope + "\n" + hashedCanonicalRequest;
      System.out.println(stringToSign);
       // ************* 步骤 3:计算签名 *************
      byte[] secretDate = hmac256(("TC3" + SECRET_KEY).getBytes(UTF8), date);
      byte[] secretService = hmac256(secretDate, service);
      byte[] secretSigning = hmac256(secretService, "tc3_request");
      String signature = DatatypeConverter.printHexBinary(hmac256(secretSigning, stringToSign)).toLowerCase();
      System.out.println(signature);
       // ************* 步骤 4:拼接 Authorization *************
      String authorization = algorithm + " " + "Credential=" + SECRET_ID + "/" + credentialScope + ", "
              + "SignedHeaders=" + signedHeaders + ", " + "Signature=" + signature;
      System.out.println(authorization);
       TreeMap<String, String> headers = new TreeMap<String, String>();
      headers.put("Authorization", authorization);
      headers.put("Content-Type", CT_JSON);
      headers.put("Host", host);
      headers.put("X-TC-Action", action);
      headers.put("X-TC-Timestamp", timestamp);
      headers.put("X-TC-Version", version);
      headers.put("X-TC-Region", region);
       StringBuilder sb = new StringBuilder();
      sb.append("curl -X POST https://").append(host)
      .append(" -H \"Authorization: ").append(authorization).append("\"")
      .append(" -H \"Content-Type: application/json; charset=utf-8\"")
      .append(" -H \"Host: ").append(host).append("\"")
      .append(" -H \"X-TC-Action: ").append(action).append("\"")
      .append(" -H \"X-TC-Timestamp: ").append(timestamp).append("\"")
      .append(" -H \"X-TC-Version: ").append(version).append("\"")
      .append(" -H \"X-TC-Region: ").append(region).append("\"")
      .append(" -d '").append(payload).append("'");
      System.out.println(sb.toString());
  }
}

Python

# -*- coding: utf-8 -*-
import hashlib, hmac, json, os, sys, time
from datetime import datetime
# 密钥参数
secret_id = "AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE"
secret_key = "Gu5t9xGARNpq86cd98joQYCN3EXAMPLE"
service = "cvm"
host = "cvm.tencentcloudapi.com"
endpoint = "https://" + host
region = "ap-guangzhou"
action = "DescribeInstances"
version = "2017-03-12"
algorithm = "TC3-HMAC-SHA256"
#timestamp = int(time.time())
timestamp = 1551113065
date = datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d")
params = {"Limit": 1, "Filters": [{"Name": "instance-name", "Values": [u"未命名"]}]}
# ************* 步骤 1:拼接规范请求串 *************
http_request_method = "POST"
canonical_uri = "/"
canonical_querystring = ""
ct = "application/json; charset=utf-8"
payload = json.dumps(params)
canonical_headers = "content-type:%s\nhost:%s\n" % (ct, host)
signed_headers = "content-type;host"
hashed_request_payload = hashlib.sha256(payload.encode("utf-8")).hexdigest()
canonical_request = (http_request_method + "\n" +
                   canonical_uri + "\n" +
                   canonical_querystring + "\n" +
                   canonical_headers + "\n" +
                   signed_headers + "\n" +
                   hashed_request_payload)
print(canonical_request)
# ************* 步骤 2:拼接待签名字符串 *************
credential_scope = date + "/" + service + "/" + "tc3_request"
hashed_canonical_request = hashlib.sha256(canonical_request.encode("utf-8")).hexdigest()
string_to_sign = (algorithm + "\n" +
                str(timestamp) + "\n" +
                credential_scope + "\n" +
                hashed_canonical_request)
print(string_to_sign)
# ************* 步骤 3:计算签名 *************
# 计算签名摘要函数
def sign(key, msg):
  return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest()
secret_date = sign(("TC3" + secret_key).encode("utf-8"), date)
secret_service = sign(secret_date, service)
secret_signing = sign(secret_service, "tc3_request")
signature = hmac.new(secret_signing, string_to_sign.encode("utf-8"), hashlib.sha256).hexdigest()
print(signature)
# ************* 步骤 4:拼接 Authorization *************
authorization = (algorithm + " " +
               "Credential=" + secret_id + "/" + credential_scope + ", " +
               "SignedHeaders=" + signed_headers + ", " +
               "Signature=" + signature)
print(authorization)
print('curl -X POST ' + endpoint
    + ' -H "Authorization: ' + authorization + '"'
    + ' -H "Content-Type: application/json; charset=utf-8"'
    + ' -H "Host: ' + host + '"'
    + ' -H "X-TC-Action: ' + action + '"'
    + ' -H "X-TC-Timestamp: ' + str(timestamp) + '"'
    + ' -H "X-TC-Version: ' + version + '"'
    + ' -H "X-TC-Region: ' + region + '"'
    + " -d '" + payload + "'")

go

package main
import (
  "crypto/hmac"
  "crypto/sha256"
  "encoding/hex"
  "fmt"
  "time"
)
func sha256hex(s string) string {
  b := sha256.Sum256([]byte(s))
  return hex.EncodeToString(b[:])
}
func hmacsha256(s, key string) string {
  hashed := hmac.New(sha256.New, []byte(key))
  hashed.Write([]byte(s))
  return string(hashed.Sum(nil))
}
func main() {
  secretId := "AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE"
  secretKey := "Gu5t9xGARNpq86cd98joQYCN3EXAMPLE"
  host := "cvm.tencentcloudapi.com"
  algorithm := "TC3-HMAC-SHA256"
  service := "cvm"
  version := "2017-03-12"
  action := "DescribeInstances"
  region := "ap-guangzhou"
  //var timestamp int64 = time.Now().Unix()
  var timestamp int64 = 1551113065
   // step 1: build canonical request string
  httpRequestMethod := "POST"
  canonicalURI := "/"
  canonicalQueryString := ""
  canonicalHeaders := "content-type:application/json; charset=utf-8\n" + "host:" + host + "\n"
  signedHeaders := "content-type;host"
  payload := `{"Limit": 1, "Filters": [{"Values": ["\u672a\u547d\u540d"], "Name": "instance-name"}]}`
  hashedRequestPayload := sha256hex(payload)
  canonicalRequest := fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n%s",
      httpRequestMethod,
      canonicalURI,
      canonicalQueryString,
      canonicalHeaders,
      signedHeaders,
      hashedRequestPayload)
  fmt.Println(canonicalRequest)
   // step 2: build string to sign
  date := time.Unix(timestamp, 0).UTC().Format("2006-01-02")
  credentialScope := fmt.Sprintf("%s/%s/tc3_request", date, service)
  hashedCanonicalRequest := sha256hex(canonicalRequest)
  string2sign := fmt.Sprintf("%s\n%d\n%s\n%s",
      algorithm,
      timestamp,
      credentialScope,
      hashedCanonicalRequest)
  fmt.Println(string2sign)
   // step 3: sign string
  secretDate := hmacsha256(date, "TC3"+secretKey)
  secretService := hmacsha256(service, secretDate)
  secretSigning := hmacsha256("tc3_request", secretService)
  signature := hex.EncodeToString([]byte(hmacsha256(string2sign, secretSigning)))
  fmt.Println(signature)
   // step 4: build authorization
  authorization := fmt.Sprintf("%s Credential=%s/%s, SignedHeaders=%s, Signature=%s",
      algorithm,
      secretId,
      credentialScope,
      signedHeaders,
      signature)
  fmt.Println(authorization)
   curl := fmt.Sprintf(`curl -X POST https://%s\
-H "Authorization: %s"\
-H "Content-Type: application/json; charset=utf-8"\
-H "Host: %s" -H "X-TC-Action: %s"\
-H "X-TC-Timestamp: %d"\
-H "X-TC-Version: %s"\
-H "X-TC-Region: %s"\
-d '%s'`, host, authorization, host, action, timestamp, version, region, payload)
  fmt.Println(curl)
}

PHP

<?php
$secretId = "AKIDz8krbsJ5yKBZQpn74WFkmLPx3EXAMPLE";
$secretKey = "Gu5t9xGARNpq86cd98joQYCN3EXAMPLE";
$host = "cvm.tencentcloudapi.com";
$service = "cvm";
$version = "2017-03-12";
$action = "DescribeInstances";
$region = "ap-guangzhou";
// $timestamp = time();
$timestamp = 1551113065;
$algorithm = "TC3-HMAC-SHA256";
// step 1: build canonical request string
$httpRequestMethod = "POST";
$canonicalUri = "/";
$canonicalQueryString = "";
$canonicalHeaders = "content-type:application/json; charset=utf-8\n"."host:".$host."\n";
$signedHeaders = "content-type;host";
$payload = '{"Limit": 1, "Filters": [{"Values": ["\u672a\u547d\u540d"], "Name": "instance-name"}]}';
$hashedRequestPayload = hash("SHA256", $payload);
$canonicalRequest = $httpRequestMethod."\n"
  .$canonicalUri."\n"
  .$canonicalQueryString."\n"
  .$canonicalHeaders."\n"
  .$signedHeaders."\n"
  .$hashedRequestPayload;
echo $canonicalRequest.PHP_EOL;
// step 2: build string to sign
$date = gmdate("Y-m-d", $timestamp);
$credentialScope = $date."/".$service."/tc3_request";
$hashedCanonicalRequest = hash("SHA256", $canonicalRequest);
$stringToSign = $algorithm."\n"
  .$timestamp."\n"
  .$credentialScope."\n"
  .$hashedCanonicalRequest;
echo $stringToSign.PHP_EOL;
// step 3: sign string
$secretDate = hash_hmac("SHA256", $date, "TC3".$secretKey, true);
$secretService = hash_hmac("SHA256", $service, $secretDate, true);
$secretSigning = hash_hmac("SHA256", "tc3_request", $secretService, true);
$signature = hash_hmac("SHA256", $stringToSign, $secretSigning);
echo $signature.PHP_EOL;
// step 4: build authorization
$authorization = $algorithm
  ." Credential=".$secretId."/".$credentialScope
  .", SignedHeaders=content-type;host, Signature=".$signature;
echo $authorization.PHP_EOL;
$curl = "curl -X POST https://".$host
  .' -H "Authorization: '.$authorization.'"'
  .' -H "Content-Type: application/json; charset=utf-8"'
  .' -H "Host: '.$host.'"'
  .' -H "X-TC-Action: '.$action.'"'
  .' -H "X-TC-Timestamp: '.$timestamp.'"'
  .' -H "X-TC-Version: '.$version.'"'
  .' -H "X-TC-Region: '.$region.'"'
  ." -d '".$payload."'";
echo $curl.PHP_EOL;

签名失败

存在以下签名失败的错误码,请根据实际情况处理。

错误码 错误描述
AuthFailure.SignatureExpire 签名过期。Timestamp 与服务器接收到请求的时间相差不得超过五分钟。
AuthFailure.SecretIdNotFound 密钥不存在。请到控制台查看密钥是否被禁用,是否少复制了字符或者多了字符。
AuthFailure.SignatureFailure 签名错误。可能是签名计算错误,或者签名与实际发送的内容不相符合,也有可能是密钥 SecretKey 错误导致的。
AuthFailure.TokenFailure 临时证书 Token 错误。
AuthFailure.InvalidSecretId 密钥非法(不是云 API 密钥类型)。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈