tencent cloud

C++ API

PDF
フォーカスモード
フォントサイズ
最終更新日: 2026-01-23 11:39:51
TencentCloud APIは完全にアップグレードされたバージョン3.0です。このバージョンでは、性能が最適化され、全リージョンにデプロイされ、近接アクセスとリージョン別アクセスをサポートし、アクセスレイテンシが顕著に低下しました。APIの説明がより詳細になり、エラーコードの説明がより包括的になり、SDKにAPIレベルのコメントが追加され、Tencent Cloud製品をより便利かつ迅速に利用できます。ここでは、C++ APIの呼び出し方法について簡単に説明します。 現在、クラウドサーバー(CVM)、クラウドディスク(CBS)、プライベートネットワーク(VPC)、クラウドデータベース(TencentDB)などのTencent Cloud製品をサポートしています。今後、他のクラウド製品のアクセスもサポートする予定です。期待してください。

リクエスト構造を理解する

1. サービスアドレス(endpoint)

APIは近接リージョンアクセス(例:cvm製品ドメインはcvm.tencentcloudapi.com)をサポートしており、指定リージョンドメインアクセス(例:広州地域のドメインはcvm.ap-guangzhou.tencentcloudapi.com)もサポートしています。各リージョンのパラメータについては、共通パラメータのリージョンリストを参照してください。詳細は各製品の「リクエスト構造」ドキュメントで当該リージョンのサポート状況を確認してください。
注意:
レイテンシの影響を受けやすい業務には、リージョン付きのドメインの指定を推奨されます。

2. 通信プロトコル

TencentCloud APIのすべてのAPIはHTTPSを介して通信を行い、高セキュリティの通信チャネルを提供します。

3. リクエスト方法

サポートされている HTTP リクエスト方法:
POST(推奨)
GET
POSTリクエストがサポートするContent-Typeの種類:
application/json(推奨)、署名方式 v3(TC3-HMAC-SHA256)を使用する必要があります。
application/x-www-form-urlencoded の場合、署名方式 v1(HmacSHA1 または HmacSHA256)を使用する必要があります。
multipart/form-data(一部のAPIのみサポートされています)、署名方式 v3(TC3-HMAC-SHA256)を使用する必要があります。
GETリクエストのリクエストパッケージサイズは32KBを超えてはなりません。POSTリクエストで署名方式v1(HmacSHA1、HmacSHA256)を使用する場合、1MBを超えてはなりません。POSTリクエストで署名方式v3(TC3-HMAC-SHA256)を使用する場合、10MBをサポートします。

4. 文字エンコーディング

いずれもUTF-8エンコーディングを使用しています。

共通パラメータ

説明:
共通パラメータはユーザーとAPI署名を識別するためのパラメータであり、正常にリクエストを開始するには、リクエストごとにこれらのパラメータを含める必要があります。

署名方法 V3 共通パラメータ

署名方式 v3(時には TC3-HMAC-SHA256 とも呼ばれる)は、署名方式 v1(一部のドキュメントでは「署名方式」と略称される)と比較して、より安全で、より大きなリクエストパッケージをサポートし、POST JSON 形式をサポートし、パフォーマンスが一定向上しています。この署名方式を使用して署名を計算することを推奨します。使用方法については、以下の「署名方式の紹介」を参照してください。
パラメータ名
タイプ
必須
説明
X-TC-Action
String
はい
操作のAPI名。値はAPIドキュメントの入力パラメータの共通パラメータActionの説明を参照してください。例えばCVMのインスタンスリスト検索APIは、値がDescribeInstancesです。
X-TC-Region
String
-
リージョンパラメータは、操作対象となるデータのリージョンを識別するために使用されます。APIが受け入れる地域の値については、APIドキュメントの入力パラメータの共通パラメータRegionの説明を参照してください。注意:一部のAPIではこのパラメータの受け渡しが不要であり、APIドキュメントに特別な記載があります。その場合、パラメータを渡しても有効になりません。
X-TC-Timestamp
Integer
はい
現在のUNIXタイムスタンプは、APIリクエストを開始した時間を記録できます。例:1529223702。注意:サーバー時間と5分以上の差がある場合、署名の期限切れエラーが発生します。
X-TC-Version
String
はい
操作するAPIのバージョン。値はAPIドキュメントの入力パラメータの共通パラメータVersionの説明を参照してください。例えばCVMのバージョン2017-03-12です。
Authorization
String
はい
HTTP標準認証ヘッダーフィールド。例:TC3-HMAC-SHA256 Credential=AKIDEXAMPLE/Date/service/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea8******************************************a96525168
ここで:
TC3-HMAC-SHA256:署名方式であり、現在はこの値に固定されています。
Credential:署名の認証情報。AKIDEXAMPLEはSecretIdです。
DateはUTC標準時の日付であり、その値は共通パラメータX-TC-Timestampを変換したUTC標準時の日付と一致する必要があります。
serviceは製品名であり、通常はドメインのプレフィックスです。例えば、ドメイン cvm.tencentcloudapi.com は製品名が cvm であることを意味します。本製品の値は cvm です。
SignedHeaders:署名計算に参加するヘッダー情報であり、content-type と host は必須ヘッダーです。
Signature:署名ダイジェスト。計算プロセスの詳細は下記を参照してください。
X-TC-Token
String
いいえ
一時的な証明書で使用されるTokenは、一時的なシークレットキーと組み合わせて使用する必要があります。一時的なシークレットシークレットキーとTokenは、CAMサービスでAPIを呼び出して取得する必要があります。長期シークレットキーにはTokenは不要です。

リージョン一覧

各製品がサポートするリージョンは異なりますので、詳細は各製品のドキュメントにあるリージョンリストを参照してください。 例えば、CVMのリージョンリストを参考にすることができます。

C++ APIの呼び出し方法

TencentCloud APIは各リクエストに対して認証を行います。ユーザーはセキュリティ認証情報を使用し、特定の手順を経てリクエストに署名(Signature)を実行する必要があります。各リクエストには、共通リクエストパラメータでこの署名結果を指定し、指定された方式と形式で送信する必要があります。
注意:
現在、C++ は API 3.0 署名 V1バージョンをまだサポートしていません。
ユーザーのSecretIdとSecretKeyがそれぞれ次の通りであると仮定します:AKIDz8krbsJ5**********mLPx3EXAMPLEGu5t9xGAR***********EXAMPLE。ユーザーが広州リージョンのCVMで「未命名」という名前のホストステータスを確認したい場合、データを1件のみ返します。リクエストは次のようになります:
curl -X POST https://cvm.tencentcloudapi.com \\
-H "Authorization: TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5**********mLPx3EXAMPLE/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:セキュリティ認証情報を申請する

このドキュメントで使用されるセキュリティ認証情報はシークレットキーです。シークレットキーはSecretIdとSecretKeyを含みます。各ユーザーは最大で2つのキーペアを所有できます。
SecretId:API呼び出し元の身分を識別するために使用され、ユーザー名に簡単に例えることができます。
SecretKey:API呼び出し元の身分を認証するために使用され、パスワードに簡単に例えることができます。
注意:
ユーザーはセキュリティ認証情報を厳重に保管し、漏洩を防止する必要があります。さもなければ、財産の安全が危険にさらされます。万が一漏洩した場合は、直ちにそのセキュリティ認証情報を無効にしてください。
APIキー管理ページに移動すると、取得できます。下図の通りです:



ステップ2:API 3.0 V3バージョン署名を取得する

署名方法 v3 (TC3-HMAC-SHA256) は、以前の署名方法 v1 を機能的にカバーしており、より安全で、より大きなリクエストをサポートし、json形式をサポートし、パフォーマンスが向上しています。この署名方法を使用して署名を計算することを推奨します。下図の通りです:
説明:
初めて使用する場合は、API Explorerの「署名文字列生成」機能を使用し、署名バージョンに「API 3.0 署名 v3」を選択することが推奨されます。これにより署名プロセスを生成して検証できるほか、直接的にSDKコードを生成することも可能です。Tencent Cloud API対応の7種類の主要プログラミング言語向けSDKの使用を推奨します。これらは署名とリクエストプロセスをカプセル化し、すべてオープンソース化されており、PythonJavaPHPGoNodeJS.NETC++をサポートしています。



TencentCloud APIはGETおよびPOSTリクエストをサポートします。GET方法の場合、Content-Type: application/x-www-form-urlencodedプロトコル形式のみサポートします。POST方法の場合、現在Content-Type: application/jsonおよびContent-Type: multipart/form-dataの2種類のプロトコル形式をサポートしており、json形式はほとんどのAPIでサポートされますが、multipart形式は特定のAPIのみでサポートされます。この場合、当該APIはjson形式で呼び出すことができません。具体的な業務APIのドキュメント説明を参照してください。両者の結果に差異はありませんが、GETリクエストは32KB以内のリクエストパケットのみサポートするため、POSTリクエストの使用を推奨します。
以下はインスタンスリストの表示APIを例として、署名の計算プロセスをステップごとに説明します。このAPIを選択した理由は:
1. CVMはデフォルトで有効化されています。このAPIはよく使用されます。
2. このAPIは読み取り専用であり、既存リソースの状態を変更しません。
3. APIはカバーするパラメータの種類が比較的完全であり、データ構造を含む配列の使用方法をデモンストレーションできます。

1. 正規リクエスト文字列を連結する

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の2つのヘッダーを含める必要があります。また、カスタムヘッダーを追加して署名に参加させることで、リクエストの一意性と安全性を高めることができます。 連結ルール:ヘッダーのkeyとvalueはすべて小文字に変換し、先頭と末尾のスペースを削除した後、key:value\\n の形式で連結します。複数のヘッダーがある場合は、ヘッダーのkey(小文字)のASCIIコードの昇順で連結します。 この例での計算結果はcontent-type:application/json; charset=utf-8\\nhost:cvm.tencentcloudapi.com\\nです。 注意:content-typeは実際に送信するものと一致している必要があります。一部のプログラミング言語のネットワークライブラリは、指定されていない場合でも自動的にcharset値を追加することがあります。署名時と送信時でcontent-typeが一致しない場合、サーバーは署名検証失敗を返します。
SignedHeaders
署名に参加するヘッダー情報であり、今回のリクエストでどのヘッダーが署名に参加したかを説明します。CanonicalHeadersに含まれるヘッダー内容と一対一対応します。content-typeとhostは必須ヘッダーです。 連結ルール:ヘッダーのkeyはすべて小文字に変換します。複数のヘッダーkey(小文字)はASCII昇順で連結し、セミコロン(;)で区切ります。この例では、content-type;hostとなります。
HashedRequestPayload
リクエスト本文(Requestpayload、すなわちbodyです。この例では{"Limit": 1, "Filters": [{"Values": ["\\u672a\\u547d\\u540d"], "Name": "instance-name"}]})のハッシュ値です。計算の擬似コードは Lowercase(HexEncode(Hash.SHA256(RequestPayload))) であり、HTTPリクエスト本文に対してSHA256ハッシュを適用し、16進数エンコードした後、エンコード文字列を小文字に変換します。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です。
注意:
DateはタイムスタンプX-TC-Timestampから算出する必要があり、タイムゾーンはUTC+0でなければなりません。システムのローカルタイムゾーン情報(例:UTC+8)を含めると、日中や夜間の呼び出しは成功する可能性がありますが、深夜の呼び出しは必ず失敗します。タイムスタンプが1551113065の場合、UTC+8タイムゾーンでは2019-02-26 00:44:25となりますが、算出されるDateはUTC+0の日付であるため2019-02-25となり、2019-02-26ではありません。
Timestampは現在のシステム時間である必要があり、システム時間と標準時間が同期していることを確保する必要があります。5分以上の差がある場合は必ず失敗します。長期間にわたって標準時間と同期しない場合、一定期間経過後にリクエストが必ず失敗し、署名の期限切れエラーが返される可能性があります。
以上のルールに基づき、サンプルで得られる署名対象文字列は以下の通りです:
TC3-HMAC-SHA256
1551113065
2019-02-25/cvm/tc3_request
5ffe6a04c0664d6b969fab9a13bdab201d63ee709638e2749d62a09ca18d7031

3. 署名を計算する(擬似コード)

実際に以下の例を参照してください: 1)派生署名キーを計算します。擬似コードは以下の通りです:
#include <tencentcloud/core/Sign.h>
#include <tencentcloud/core/utils/Utils.h>


using namespace TencentCloud;
using namespace std;

string Sign::Tc3Sign(const string &credDate, const string &serviceName, const string &signStr)
{
string kKey = "TC3"+this->m_secretKey;
string kDate = Utils::HmacSha256(kKey, credDate);
string kService = Utils::HmacSha256(kDate, serviceName);
string kSigning = Utils::HmacSha256(kService, "tc3_request");
return Utils::HexEncode(Utils::HmacSha256(kSigning, signStr));
}
派生されたシークレットキー SecretDateSecretService および SecretSigning はバイナリデータであり、非印字文字を含む可能性があるため、ここでは中間結果を表示しません。
注意:
プログラミング言語によって、HMACライブラリ関数のパラメータ順序が異なる場合があります。ここの擬似コードではシークレットキーパラメータが後ろに配置されていますので、実際のプログラミング言語に準拠してください。通常、標準ライブラリ関数はバイナリ形式の計算値(本サンプルで使用)と、後述の署名結果計算で使用する表示用に適した16進数形式の計算値を提供します。
フィールド名称
説明
m_secretKey
元のSecretKey、すなわちGu5t9xGAR***********EXAMPLEです。
credDate
すなわちCredentialのDateフィールドの情報です。この例の値は2019-02-25です。
serviceName
すなわちCredentialのServiceフィールドの情報です。この例の値はcvmです。
signStr
署名対象文字列
2)署名の計算:
このサンプルの計算結果は 72e494ea8******************************************a96525168 です。

4. Authorizationの連結

以下の形式でAuthorizationを連結します:
Authorization =
Algorithm + ' ' +
'Credential=' + SecretId + '/' + CredentialScope + ', ' +
'SignedHeaders=' + SignedHeaders + ', ' +
'Signature=' + Signature
フィールド名称
説明
Algorithm
署名方法はTC3-HMAC-SHA256に固定されています。
SecretId
キーペアのSecretId、すなわちAKIDz8krbsJ5**********mLPx3EXAMPLE
CredentialScope
上記参照、クレデンシャルスコープです。この例の計算結果は2019-02-25/cvm/tc3_requestです。
SignedHeaders
上記参照、署名に参加するヘッダー情報です。この例の値はcontent-type;hostです。
Signature
シグネチャ値。この例の計算結果は72e494ea8******************************************a96525168です。
以上のルールに基づき、サンプルで得られる値は以下の通りです:
TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5**********mLPx3EXAMPLE/2019-02-25/cvm/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea8******************************************a96525168
最終的な完全な呼び出し情報は以下の通りです:
POST https://cvm.tencentcloudapi.com/
Authorization: TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5**********mLPx3EXAMPLE/2019-02-25/cvm/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea8******************************************a96525168
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. API 3.0 署名 V3 サンプル

#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <stdio.h>
#include <time.h>
#include <openssl/sha.h>
#include <openssl/hmac.h>

using namespace std;

string get_data(int64_t &timestamp)
{
string utcDate;
char buff[20] = {0};
// time_t timenow;
struct tm sttime;
sttime = *gmtime(&timestamp);
strftime(buff, sizeof(buff), "%Y-%m-%d", &sttime);
utcDate = string(buff);
return utcDate;
}
string int2str(int64_t n)
{
std::stringstream ss;
ss << n;
return ss.str();
}
string sha256Hex(const string &str)
{
char buf[3];
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, str.c_str(), str.size());
SHA256_Final(hash, &sha256);
std::string NewString = "";
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
{
snprintf(buf, sizeof(buf), "%02x", hash[i]);
NewString = NewString + buf;
}
return NewString;
}
string HmacSha256(const string &key, const string &input)
{
unsigned char hash[32];

HMAC_CTX *h;
#if OPENSSL_VERSION_NUMBER < 0x10100000L
HMAC_CTX hmac;
HMAC_CTX_init(&hmac);
h = &hmac;
#else
h = HMAC_CTX_new();
#endif

HMAC_Init_ex(h, &key[0], key.length(), EVP_sha256(), NULL);
HMAC_Update(h, ( unsigned char* )&input[0], input.length());
unsigned int len = 32;
HMAC_Final(h, hash, &len);

#if OPENSSL_VERSION_NUMBER < 0x10100000L
HMAC_CTX_cleanup(h);
#else
HMAC_CTX_free(h);
#endif

std::stringstream ss;
ss << std::setfill('0');
for (int i = 0; i < len; i++)
{
ss << hash[i];
}

return (ss.str());
}
string HexEncode(const string &input)
{
static const char* const lut = "0123456789abcdef";
size_t len = input.length();

string output;
output.reserve(2 * len);
for (size_t i = 0; i < len; ++i)
{
const unsigned char c = input[i];
output.push_back(lut[c >> 4]);
output.push_back(lut[c & 15]);
}
return output;
}

int main()
{
// シークレットキーパラメータ
string SECRET_ID = "AKIDz8krbsJ5**********mLPx3EXAMPLE";
string SECRET_KEY = "Gu5t9xGAR***********EXAMPLE";

string service = "cvm";
string host = "cvm.tencentcloudapi.com";
string region = "ap-guangzhou";
string action = "DescribeInstances";
string version = "2017-03-12";
int64_t timestamp = 1551113065;
string date = get_data(timestamp);

// ************* ステップ 1:正規リクエスト文字列の連結 *************
string httpRequestMethod = "POST";
string canonicalUri = "/";
string canonicalQueryString = "";
string canonicalHeaders = "content-type:application/json; charset=utf-8\\nhost:" + 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;
cout << canonicalRequest << endl;
cout << "-----------------------" << endl;

// ************* ステップ 2:署名対象文字列を連結する *************
string algorithm = "TC3-HMAC-SHA256";
string RequestTimestamp = int2str(timestamp);
string credentialScope = date + "/" + service + "/" + "tc3_request";
string hashedCanonicalRequest = sha256Hex(canonicalRequest);
string stringToSign = algorithm + "\\n" + RequestTimestamp + "\\n" + credentialScope + "\\n" + hashedCanonicalRequest;
cout << stringToSign << endl;
cout << "-----------------------" << endl;

// ************* ステップ 3:署名を計算する ***************
string kKey = "TC3" + SECRET_KEY;
string kDate = HmacSha256(kKey, date);
string kService = HmacSha256(kDate, service);
string kSigning = HmacSha256(kService, "tc3_request");
string signature = HexEncode(HmacSha256(kSigning, stringToSign));
cout << signature << endl;
cout << "-----------------------" << endl;

// ************* ステップ 4:Authorizationを連結する *************
string authorization = algorithm + " " + "Credential=" + SECRET_ID + "/" + credentialScope + ", "
+ "SignedHeaders=" + signedHeaders + ", " + "Signature=" + signature;
cout << authorization << endl;
cout << "------------------------" << endl;

string headers = "curl -X POST https://" + host + "\\n"
+ " -H \\"Authorization: " + authorization + "\\n"
+ " -H \\"Content-Type: application/json; charset=utf-8\\"" + "\\n"
+ " -H \\"Host: " + host + "\\n"
+ " -H \\"X-TC-Action: " + action + "\\n"
+ " -H \\"X-TC-Timestamp: " + RequestTimestamp + "\\n"
+ " -H \\"X-TC-Version: " + version + "\\n"
+ " -H \\"X-TC-Region: " + region + "\\n"
+ " -d '" + payload;
cout << headers << endl;
return 0;
};

API 2.0 署名

この署名は現在メンテナンスされていません。パフォーマンスがより優れたAPI 3.0 署名の使用が推奨されます。使用する場合は、直接的にAPI Explorer署名文字列生成 > API 2.0署名バージョンを選択で操作してください。

署名失敗

以下のシグネチャ失敗のエラーコードが存在します。実際の状況に応じて処理してください。
エラーコード
エラー説明
AuthFailure.SignatureExpire
シグネチャの期限切れです。Timestampとサーバーがリクエストを受信した時間との差は5分を超えてはなりません。
AuthFailure.SecretIdNotFound
シークレットキーが存在しません。コンソールでシークレットキーが無効化されていないか、文字を少なくコピーしたか、あるいは多くコピーしたかを確認してください。
AuthFailure.SignatureFailure
シグネチャエラーです。シグネチャの計算エラー、またはシグネチャと実際に送信した内容が一致しない可能性があります。シークレットキー SecretKey のエラーによるものである可能性もあります。
AuthFailure.TokenFailure
一時証明書Tokenエラーです。
AuthFailure.InvalidSecretId
シークレットキーが無効です(TencentCloud APIシークレットキータイプではありません)。

レスポンス

正確的レスポンス

CVMのAPIでインスタンスステータスリスト(DescribeInstancesStatus)2017-03-12バージョンを確認する例として、呼び出しが成功すると、返される可能性のある結果は次のとおりです:
{
"Response": {
"TotalCount": 0,
"InstanceStatusSet": [],
"RequestId": "b5b41468-520d-4192-b42f-595cc34b6c1c"
}
}
Responseおよびその内部のRequestIdは固定のフィールドであり、リクエストが成功したかどうかに関わらず、APIが処理した限り、必ず返されます。
RequestIdはAPIリクエストの唯一の識別子として使用されます。APIに異常が発生した場合は、該当 ID を添えて連絡してください。
固定フィールド以外は、すべて具体的なAPIで定義されたフィールドです。異なるAPIが返すフィールドについては、APIドキュメントの定義を参照してください。この例のTotalCountInstanceStatusSetはいずれもDescribeInstancesStatus APIで定義されたフィールドです。リクエストを呼び出したユーザーが現在CVMインスタンスを保有していないため、この状況ではTotalCountの戻り値は0となり、InstanceStatusSetリストは空です。

エラーレスポンス

呼び出しが失敗した場合、戻り値の例は以下のようになります:
{
"Response": {
"Error": {
"Code": "AuthFailure.SignatureFailure",
"Message": "The provided credentials could not be validated. Please check your signature is correct."
},
"RequestId": "ed93f3cb-f35e-473f-b9f3-0d451b8b79c6"
}
}
Errorが出現するということは、そのリクエストの呼び出しが失敗したことを表します。Errorフィールドは、その内部のCodeおよびMessageフィールドとともに、呼び出しが失敗した場合には必ず返されます。
Codeは具体的なエラーコードを示し、リクエストがエラーになった場合、まずこのコードを使用して共通エラーコードリストおよび該当APIスのエラーコードリストで原因と解決策を確認できます。
Messageはこのエラーが発生した具体的な原因を表示しますが、業務の発展や体験の最適化に伴い、このテキストは頻繁に変更または更新される可能性があります。ユーザーはこの戻り値に依存すべきではありません。
RequestIdはAPIリクエストの唯一の識別子として使用されます。APIに異常が発生した場合は、該当 ID を添えて連絡してください。

共通エラーコード

戻り結果にErrorフィールドが存在する場合、APIの呼び出しが失敗したことを示します。Error内のCodeフィールドはエラーコードを表し、すべての業務で発生する可能性のあるエラーコードは共通エラーコードです。以下の表に共通エラーコードをリストアップします。
エラーコード
エラー説明
AuthFailure.InvalidSecretId
キーが無効です(TencentCloud APIキータイプではありません)。
AuthFailure.MFAFailure
MFAエラーです。
AuthFailure.SecretIdNotFound
シークレットキーが存在しません。
AuthFailure.SignatureExpire
シグネチャの期限切れです。
AuthFailure.SignatureFailure
シグネチャエラーです。
AuthFailure.TokenFailure
tokenエラーです。
AuthFailure.UnauthorizedOperation
リクエストはCAM認可が取得されていません。
DryRunOperation
DryRunオペレーションは、リクエストが成功することを意味しますが、余分にDryRunパラメータが渡されただけです。
FailedOperation
操作が失敗しました。
InternalError
内部エラーです。
InvalidAction
APIが存在しません。
InvalidParameter
パラメータエラーです。
InvalidParameterValue
パラメータ値エラーです。
LimitExceeded
クォータ制限を超過しました。
MissingParameter
パラメータ不足エラーです。
NoSuchVersion
APIバージョンが存在しません。
RequestLimitExceeded
リクエスト回数がレート制限を超過しました。
ResourceInUse
リソースが使用中です。
ResourceInsufficient
リソース不足です。
ResourceNotFound
リソースが存在しません。
ResourceUnavailable
リソースは利用不可です。
UnauthorizedOperation
操作は認可されていません。
UnknownParameter
未知パラメータエラーです。
UnsupportedOperation
操作はサポートされていません。
UnsupportedProtocol
HTTPSリクエスト方法が正しくありません。GETとPOSTリクエストのみサポートしています。
UnsupportedRegion
APIは指定されたリージョンをサポートしていません。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック