cvm.tencentcloudapi.com)をサポートしており、指定リージョンドメインアクセス(例:広州地域のドメインはcvm.ap-guangzhou.tencentcloudapi.com)もサポートしています。各リージョンのパラメータについては、共通パラメータのリージョンリストを参照してください。詳細は各製品の「リクエスト構造」ドキュメントで当該リージョンのサポート状況を確認してください。パラメータ名 | タイプ | 必須 | 説明 |
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は不要です。 |
パラメータ名 | タイプ | 必須 | 説明 |
Action | String | はい | 操作のAPI名。値はAPIドキュメントの入力パラメータの共通パラメータActionの説明を参照してください。例えばCVMのインスタンスリスト検索APIは、値がDescribeInstancesです。 |
Region | String | - | リージョンパラメータは、操作対象となるデータのリージョンを識別するために使用されます。APIが受け入れるリージョンの値については、APIドキュメントの入力パラメータの共通パラメータRegionの説明を参照してください。注意:一部のAPIではこのパラメータの受け渡しが不要であり、APIドキュメントに特別な記載があります。その場合、パラメータを渡しても有効になりません。 |
Timestamp | Integer | はい | 現在のUNIXタイムスタンプは、APIリクエストを開始した時間を記録できます。例:1529223702。現在の時間と差が大きすぎる場合、署名の期限切れエラーが発生します。 |
Nonce | Integer | はい | ランダムな正の整数であり、Timestampと組み合わせてリプレイ攻撃を防止するために使用されます。 |
SecretId | String | はい | TencentCloud APIキーで申請されたIDを識別するSecretIdであり、一つのSecretIdは唯一のSecretKeyに対応します。SecretKeyはリクエストの署名Signatureを生成するために使用されます。 |
Signature | String | はい | リクエスト署名は、今回のリクエストの正当性を検証するために使用され、ユーザーは実際の入力パラメータに基づいて計算する必要があります。具体的な計算方法については、下記の「署名方法の紹介」を参照してください。 |
Version | String | はい | 操作するAPIのバージョン。値はAPIドキュメントの入力パラメータの共通パラメータVersionの説明を参照してください。例えばCVMのバージョン2017-03-12です。 |
SignatureMethod | String | いいえ | 署名方式は、現在HmacSHA256とHmacSHA1をサポートしています。このパラメータをHmacSHA256に指定した場合のみ、HmacSHA256アルゴリズムを使用して署名を検証します。その他の場合はすべてHmacSHA1を使用して署名を検証します。 |
Token | String | いいえ | 一時的な証明書で使用されるTokenは、一時的なシークレットキーと組み合わせて使用する必要があります。一時的なシークレットキーとTokenは、CAMサービスでAPIを呼び出して取得する必要があります。長期シークレットキーにはTokenは不要です。 |
AKIDz8krbsJ5**********mLPx3EXAMPL と Gu5t9xGAR***********EXAMPLE。ユーザーが広州リージョンのCVMで「未命名」という名前のホストステータスを確認したい場合、データを1件のみ返します。リクエストは次のようになります: curl -X POST https://cvm.tencentcloudapi.com \\-H "Authorization: TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5**********mLPx3EXAMPL/2019-02-25/cvm/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea8******************************************a96525168" \\-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"}]}'


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-8host:cvm.tencentcloudapi.comcontent-type;host35e9c5b0e3ae67532d3c9f17ead6c90222632e5b1ff7f6e89887f1398934f064
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 です。 |
TC3-HMAC-SHA25615511130652019-02-25/cvm/tc3_request5ffe6a04c0664d6b969fab9a13bdab201d63ee709638e2749d62a09ca18d7031
SecretKey = "Gu5t9xGAR***********EXAMPLE"byte[] secretDate = hmac256(("TC3" + SecretKey).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);
SecretDate、SecretService および SecretSigning はバイナリデータであり、非印字文字を含む可能性があるため、ここでは中間結果を表示しません。フィールド名称 | 説明 |
SecretKey | 元のSecretKey、すなわち Gu5t9xGAR***********EXAMPLEです。 |
date | すなわちCredentialのDateフィールドの情報です。このサンプルの値は 2019-02-25です。 |
service | すなわち Credential の Service フィールドの情報です。このサンプルの値は cvm です。 |
72e494ea8******************************************a96525168 です。String Authorization =Algorithm + ' ' +'Credential=' + SecretId + '/' + CredentialScope + ', ' +'SignedHeaders=' + SignedHeaders + ', ' +'Signature=' + Signature
フィールド名称 | 説明 |
Algorithm | 署名方法は TC3-HMAC-SHA256に固定されています。 |
SecretId | キーペアのSecretId、すなわち AKIDz8krbsJ5**********mLPx3EXAMPLです。 |
CredentialScope | 上記参照、クレデンシャルスコープです。このサンプルの計算結果は 2019-02-25/cvm/tc3_request です。 |
SignedHeaders | 上記参照、署名に参加するヘッダー情報です。この例の値は content-type;hostです。 |
Signature | シグネチャ値。この例の計算結果は 72e494ea8******************************************a96525168です。 |
TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5**********mLPx3EXAMPL/2019-02-25/cvm/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea8******************************************a96525168
POST https://cvm.tencentcloudapi.com/Authorization: TC3-HMAC-SHA256 Credential=AKIDz8krbsJ5**********mLPx3EXAMPL/2019-02-25/cvm/tc3_request, SignedHeaders=content-type;host, Signature=72e494ea8******************************************a96525168Content-Type: application/json; charset=utf-8Host: cvm.tencentcloudapi.comX-TC-Action: DescribeInstancesX-TC-Version: 2017-03-12X-TC-Timestamp: 1551113065X-TC-Region: ap-guangzhou{"Limit": 1, "Filters": [{"Values": ["\\u672a\\u547d\\u540d"], "Name": "instance-name"}]}
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 = "AKIDz8krbsJ5**********mLPx3EXAMPL";private final static String SECRET_KEY = "Gu5t9xGAR***********EXAMPLE";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());}}
パラメータ名 | 中国語 | パラメータ値 |
Action | メソッド名 | DescribeInstances |
SecretId | シークレットキーID | AKIDz8krbsJ5**********mLPx3EXAMPL |
Timestamp | 現在のタイムスタンプ | 1465185768 |
Nonce | ランダムな正の整数 | 11886 |
Region | インスタンスのリージョン | ap-guangzhou |
InstanceIds.0 | 照会対象インスタンスID | ins-09dx96dg |
Offset | オフセット | 0 |
Limit | 最大許容出力 | 20 |
Version | APIバージョン番号 | 2017-03-12 |
{'Action' : 'DescribeInstances','InstanceIds.0' : 'ins-09dx96dg','Limit' : 20,'Nonce' : 11886,'Offset' : 0,'Region' : 'ap-guangzhou','SecretId' : 'AKIDz8krbsJ5**********mLPx3EXAMPL','Timestamp' : 1465185768,'Version': '2017-03-12',}
Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKIDz8krbsJ5**********mLPx3EXAMPL&Timestamp=1465185768&Version=2017-03-12
cvm.tencentcloudapi.com です。実際のリクエストドメインは、APIが属するモジュールによって異なります。詳細は各APIの説明を参照してください。/に固定されています。リクエストメソッド + リクエストホスト + リクエストパス + ? + リクエスト文字列です。GETcvm.tencentcloudapi.com/?Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKIDz8krbsJ5**********mLPx3EXAMPL&Timestamp=1465185768&Version=2017-03-12
import javax.crypto.Mac;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;/**** [Hmac-SHA1 署名アルゴリズム]* @String encryptText [暗号化文字ソース文字列]* @String encryptKey [暗号化シークレットキー]* @return [シグネチャ値]*/public class HmacSHA1 {private static final String MAC_NAME = "HmacSHA1";public static final String ENCODING = "UTF-8";//署名方法public static String HmacSHA1Encrypt(String s,String secret_key ) throws Exception{byte[] data = encryptKey.getBytes( ENCODING );SecretKey secretKey = new SecretKeySpec( data, MAC_NAME );Mac mac = Mac.getInstance( MAC_NAME );mac.init( secretKey );byte[] text = encryptText.getBytes( ENCODING );byte[] digest = mac.doFinal( text );return new String(Base64.encodeBase64(digest));}}String secret_key = "Gu5t9xGAR***********EXAMPLE";String s = "GETcvm.tencentcloudapi.com/?Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKIDz8krbsJ5**********mLPx3EXAMPL&Timestamp=1465185768&Version=2017-03-12";//最終署名文字列String Signature = new HmacSHA1();System.out.println(Signature)
# 実際の呼び出し、成功した場合、消費型APIであれば課金が発生する可能性があります(ここではPython言語を例としてgetリクエストを送信します)resp = requests.get("https://" + endpoint, params=data)print(resp.url)
最終的に得られるリクエスト文字列はhttps://cvm.tencentcloudapi.com/?Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKIDz8krbsJ5**********mLPx3EXAMPL&Signature=EliP9YW3pW28FpsEdkXt%2F%2BWcGeI%3D&Timestamp=1465185768&Version=2017-03-12
フィールド名称 | 説明 |
endpoint | サービスアドレス、 例: cvm.tencentcloudapi.com |
data | API 3.0 署名 V1のサンプルAPIパラメータ。注意 ここでは計算された署名をキー値ペアの形式でdataに追加する必要があります。 |
Eli*****************cGeI= 、最終的に得られた署名文字列のリクエストパラメータ(Signature)は:EliP***********************eI%3dとなり、これは最終的なリクエストURLを生成するために使用されます。%XY 形式で漢字などの特殊文字をパーセントエンコーディングします。ここで「X」と「Y」は16進文字(0-9および大文字のA-F)です。小文字を使用するとエラーが発生します。import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.Random;import java.util.TreeMap;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import javax.xml.bind.DatatypeConverter;public class TencentCloudAPIDemo {private final static String CHARSET = "UTF-8";public static String sign(String s, String key, String method) throws Exception {Mac mac = Mac.getInstance(method);SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(CHARSET), mac.getAlgorithm());mac.init(secretKeySpec);byte[] hash = mac.doFinal(s.getBytes(CHARSET));return DatatypeConverter.printBase64Binary(hash);}public static String getStringToSign(TreeMap<String, Object> params) {StringBuilder s2s = new StringBuilder("GETcvm.tencentcloudapi.com/?");// 署名時にはパラメータの辞書順(ASCIIコード昇順)ソートが必要であり、ここではTreeMapを使用して順序を保証します。for (String k : params.keySet()) {s2s.append(k).append("=").append(params.get(k).toString()).append("&");}return s2s.toString().substring(0, s2s.length() - 1);}public static String getUrl(TreeMap<String, Object> params) throws UnsupportedEncodingException {StringBuilder url = new StringBuilder("https://cvm.tencentcloudapi.com/?");// 実際のリクエストurlでは、パラメータの順序に要求はありません。for (String k : params.keySet()) {// リクエスト文字列に対してurlencodeを行う必要があります。keyはすべて英字であるため、ここではそのvalueのみをurlencodeします。url.append(k).append("=").append(URLEncoder.encode(params.get(k).toString(), CHARSET)).append("&");}return url.toString().substring(0, url.length() - 1);}public static void main(String[] args) throws Exception {TreeMap<String, Object> params = new TreeMap<String, Object>(); // TreeMapは自動的にソートできます// 実際の呼び出し時には乱数を使用する必要があります。例えば:params.put("Nonce", new Random().nextInt(java.lang.Integer.MAX_VALUE));params.put("Nonce", 11886); // 共通パラメータ// 実際の呼び出し時にはシステムの現在時刻を使用する必要があります。例えば: params.put("Timestamp", System.currentTimeMillis() / 1000);params.put("Timestamp", 1465185768); // 共通パラメータparams.put("SecretId", "AKIDz8krbsJ5**********mLPx3EXAMPL"); // 共通パラメータparams.put("Action", "DescribeInstances"); // 共通パラメータparams.put("Version", "2017-03-12"); // 共通パラメータparams.put("Region", "ap-guangzhou"); // 共通パラメータparams.put("Limit", 20); // 業務パラメータparams.put("Offset", 0); // 業務パラメータparams.put("InstanceIds.0", "ins-09dx96dg"); // 業務パラメータparams.put("Signature", sign(getStringToSign(params), "Gu5t9xGAR***********EXAMPLE", "HmacSHA1")); // 共通パラメータSystem.out.println(getUrl(params));}}
エラーコード | エラー説明 |
AuthFailure.SignatureExpire | シグネチャの期限切れです。Timestampとサーバーがリクエストを受信した時間との差は5分を超えてはなりません。 |
AuthFailure.SecretIdNotFound | シークレットキーが存在しません。コンソールでシークレットキーが無効化されていないか、文字を少なくコピーしたか、あるいは多くコピーしたかを確認してください。 |
AuthFailure.SignatureFailure | シグネチャエラーです。シグネチャの計算エラー、またはシグネチャと実際に送信した内容が一致しない可能性があります。シークレットキー SecretKey のエラーによるものである可能性もあります。 |
AuthFailure.TokenFailure | 一時証明書Tokenエラーです。 |
AuthFailure.InvalidSecretId | シークレットキーが無効です(TencentCloud APIキータイプではありません)。 |
{"Response": {"TotalCount": 0,"InstanceStatusSet": [],"RequestId": "b5b41468-520d-4192-b42f-595cc34b6c1c"}}
Responseおよびその内部のRequestIdは固定のフィールドであり、リクエストが成功したかどうかに関わらず、APIが処理した限り、必ず返されます。RequestIdはAPIリクエストの唯一の識別子として使用されます。APIに異常が発生した場合は、該当 ID を添えて連絡してください。TotalCountとInstanceStatusSetはいずれもDescribeInstancesStatusAPIで定義されたフィールドです。リクエストを呼び出したユーザーが現在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 を添えて連絡してください。エラーコード | エラー説明 |
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は指定されたリージョンをサポートしていません。 |
フィードバック