CDN API インターフェイスは、HTTP GET リクエストを CDN API サーバーへ送信することによって呼び出すことができます。 このリクエストは、インターフェイスの指示に沿ってリクエストに関連リクエストパラメーターを追加することによって実行できます。 リクエストの処理ステータスにもとづいて結果が返されます。

リクエストの構成

サービスアドレス

CDN API サービスのアクセスアドレスは、cdn.aliyuncs.com です。

通信プロトコル

本システムは、HTTP チャネル または HTTPS チャネルでリクエスト通信をサポートします。 リクエストのセキュリティを確保するため、HTTPS チャネルを介してリクエストを送信することを推奨します。

リクエスト方法

本システムは、 HTTP GET リクエストの送信をサポートします。 この方法では、リクエスト URL にリクエストパラメーターを含める必要があります。

リクエストパラメーター

各リクエストに対して、実行する操作、すなわち、アクションパラメーター (例: OpenCdnService ) を指定する必要があります。各操作において、共通リクエストパラメーターおよび指定された操作の特定のリクエストパラメーターを含める必要があります。

文字エンコーディング

リクエストおよびその結果には、UTF-8 文字セットエンコーディングが使用されます。

共通パラメーター

共通リクエストパラメーター

共通リクエストパラメーターは、すべてのインターフェイスで必ず使用されるリクエストパラメーターを指定します。
名前 データ型 必須 説明
Format String No 返される値の型。 JSON、 XML がサポートされています。 既定値は XML です。
Version String Yes API のバージョン。日付形式は YYYY-MMDD です。 現在のバージョン番号は 2014-11- 11です。
AccessKeyId String Yes 各種サービスへのアクセス時に使用される、Alibaba Cloud がユーザーに発行する秘密鍵の ID。
Signature String Yes 署名結果の文字列。 署名計算方法の詳細については、署名メカニズムの説明をご参照ください。
SignatureMethod String Yes 署名方式。現在 HMACSHA1 に対応。
Timestamp String Yes リクエストのタイムスタンプ。 日付形式は ISO 8601 に準拠し、UTC 時間を使用しています。 形式:YYYY-MM-DDThh:mm:ssZ. 例: 例:2014-11-11T12:00:00Z (北京時間 11/11/2014 20:00:00 同等)
SignatureVersion String Yes 署名アルゴリズムのバージョン。 現在の バージョンは1.0です。
SignatureNonce String Yes 固有の乱数。反射攻撃を防ぎます。 各リクエストにおいて異なる乱数を使用する必要があります。
リクエスト例:
https://cdn.aliyuncs.com/?Format=xml&Version=2014-11-11&Signature=Pc5WB8gokVn0xfeu%2FZV%2BiNM1dgI%3D&SignatureMethod=HMAC-SHA1&SignatureNonce=15215528852396&SignatureVersion=1.0&AccessKeyId=key-test&Timestamp=2012-06-01T12:00:00Z

共通リターンパラメーター

ユーザーが呼び出しリクエストをインターフェイスに送信すると、結果にかかわらず毎回システムからユーザーへ固有の識別コード (RequestId) が返されます。

返される XML 結果の例:
<? xml version="1.0" encoding="UTF-8"?  > 
<!—Result Root Node-->
 <Interface Name+Response>
    <!—Return Request Tag-->
    <RequestId>4C467B38-3910-447D-87BC-AC049166F216</RequestId>
    <!—Return Result Data-->
</Interface Name+Response>
返される XML 結果の例:

{
"RequestId": "4C467B38-3910-447D-87BC-AC049166F216",
/* Return result data */
}

リターンデータ

API サービスの呼び出し後に返されるデータは統一形式です。 返された HTTP ステータスコードが 2xx 形式の場合、呼び出しが成功したことを示します。 返された HTTP ステータスコードが 4xx または 5xx の場合、呼び出しが失敗したことを示します。

呼び出しが成功した場合、リターンデータの主な形式は XML と JSON の形式です。 リクエストの送信時に、リターンデータの形式を外部システムからパラメーターで指定することができます。 既定形式は XML です。

本ドキュメントでは、返される結果の例をユーザーが見やすい形で表示しています。 実際のリターンデータでは改行やインデントなどの調整はされません。

成功例

返される XML 結果の例は以下の通りです。(返される XML 結果には、リクエストの結果を示すメッセージおよび特定のサービスデータが含まれます。)
<? xml version="1.0" encoding="UTF-8"?  > 
<!—Result root node-->
<API name+Response>
    <!—Return request tag-->
    <RequestId>4C467B38-3910-447D-87BC-AC049166F216</RequestId>
    <!—Return Result Data-->
 </Interface name+Response>
JSON の例:
{
    "RequestId": "4C467B38-3910-447D-87BC-AC049166F216",
    /* Return result data */
}

エラー結果

インターフェイスの呼び出し時にエラーが発生した場合、結果データは返されません。 呼び出し元は、appendix の <Error Code Table> の表を参照してエラーの原因を特定できます。

呼び出し中にエラーが発生した場合、HTTP リクエストから 4xx または 5xx の HTTP ステータスコードが返されます。 返されるメッセージの本文に特定のエラーコードとエラーメッセージが含まれています。 また、グローバルにおいて固有のリクエストID (RequestId) および今回のリクエストのためにアクセスしたサイトの ID (HostId) も含まれます。 エラーの原因を特定できない場合は、Alibaba Cloud カスタマーサービスにご連絡ください。スムーズに問題解決ができるよう、 (HostId) と (RequestId) をご提供ください。

XML の例:
<? xml version="1.0" encoding="UTF-8"?  >
<Error>
<RequestId>8906582E-6722-409A-A6C4-0E7863B733A5</RequestId>
   <HostId>cdn.aliyuncs.com</HostId>
   <Code> UnsupportedOperation </Code>
   <Message>The specified action is not supported.</Message>
</Error>
JSON の例:
{
    "RequestId": "8906582E-6722-409A-A6C4-0E7863B733A5",
    "HostId": "cdn.aliyuncs.com",
    "Code": "UnsupportedOperation",
    "Message": "The specified action is not supported."
}

署名メカニズム

概要

CDN サービスは、1 回のアクセスリクエストにつき毎回 ID 認証を行います。 したがって、リクエスト送信時に HTTP、 HTTPS のどちらが使用されるかにかかわらず、リクエストは署名情報を含む必要があります。 Access Key ID および Access Key Secret を使用することで、CDN が対称暗号化を行い、リクエスト送信者を認証します。 Access Key ID および Access Key Secret は、 Alibaba Cloud から訪問者に対して公式発行されます (Alibaba Cloud の公式 Web サイトで申請・管理可能) 。
Access Key ID は訪問者の ID を示します。Access Key Secret は、署名文字列の暗号化、およびサーバー上の署名文字列の検証に使用される秘密鍵です。 秘密鍵は厳密に機密保持し、Alibaba Cloud とユーザー以外に開示しないでください。
ユーザーがサーバーにアクセスすると、次の方法でリクエスト署名が行われます。
  1. 正規化クエリ文字列は、リクエストパラメーターを使用して生成されます。
    1. リクエストパラメーターは、パラメーター名のアルファベット順でソートされています (本ドキュメントに記述されている特定のリクエストインターフェイスの "共通リクエストパラメーター" およびユーザー定義パラメーターが含まれますが、"共通リクエストパラメーター" に記述されている署名パラメーターは含まれません)。
      リクエストが GET 方式で送信された場合、当該パラメーターはリクエスト URI のパラメーター部分になります。 (例: URI の「?」以下の部分にあり、 「&」で接続されています。)
    2. 各リクエストパラメーターの名前および値はエンコードされています。 名前および値は、 UTF-8 文字セットで URL エンコードされている必要があります。 URL のエンコーディングルールは以下のとおりです。
      • A-Z, a-z, 0-9, “-“, “_”, “.”, “~” はエンコードされません。
      • 他の文字は “%XY” 形式でエンコードされます。この XY は文字の ASCII コードを 16 進表記することを意味します。 たとえば、英語の二重引用符 ('') は %22 としてエンコードされます。
      • 拡張 UTF-8 文字は “%XY%ZA…" 形式でエンコードされます。
      • 英語のスペース ( ) は プラス記号 (+) ではなく、%20 としてエンコードされます。
        基本的に、URL エンコードをサポートするライブラリ (例:Java の ja-JPva.net.URLEncoder) はすべて "application/x-www-form-urlen-UScoded" MIMEタイプ のルールに沿ってエンコードされます。 このエンコード方法を使用した場合、上記のエンコードルールを順守するために、エンコードした文字列内のプラス記号 (+) を "%20"、アスタリスク (*) を "%2A" に置き換え、"%7E" を波形符号 (~) に変えます。
    3. エンコードされたパラメーター名および値を英語の等号 (=) で接続します。
    4. 次に、アルファベット順に等号で接続されたパラメーター名および値のペアをソートし、記号の「&」で接続して正規化クエリ文字列を生成します。
  2. 次のルールに従い、前のステップで生成した正規化クエリ文字列を使用し、署名計算用の文字列を生成します。
    StringToSign=
    HTTPMethod + “&” +
    percentEncode(“/”) + ”&” +
    percentEncode(CanonicalizedQueryString)

    ここでの HTTPMethod は、リクエスト送信時に使用される HTTP method です (例:GET ) 。

    percen-UStEncode (”/”) は、1.b. に記述されている URL エンコードルールに沿って取得した文字 "/" のエンコードされた値 ("%2F") です。

    percentEncode(CanonicalizedQueryString) は、ステップ 1 で生成された正規化クエリ文字列がエンコードされた文字列です。1.b に記述されている URL エンコードルールにもとづいて作成されます。

  3. RFC2104 の定義にもとづいて、上記の署名文字列を使用して署名の HMAC 値を計算します。
    署名の計算時の Key はユーザーが持つ Access Key Secret で、文末に "&" 文字 (ASCII: 38) が追加されます。 SHA1 ハッシュアルゴリズムが使用されます。
  4. Base64 エンコードルールにもとづき、上記の HMAC 値を文字列にエンコードします。 この処理によって署名値が生成されます。
  5. 生成された署名値を Signature パラメーターとしてリクエストパラメーターに追加しします。 以上でリクエスト署名プロセスは完了です。
    取得した署名値を最終的なリクエストパラメーター値として CDN サーバーに送信後、他のパラメーターと同様、 RFC 3986 のルールに沿って URL エンコードをする必要があります。
    例えば、DescribeLiveService の場合、 署名前のリクエスト URL は次の通りです。
    http://cdn.aliyuncs.com/?SignatureVersion=1.0&Format=JSON&Timestamp=2015-08-06T02:19:46Z&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&Version=2014-11-11&Action=DescribeCdnService&SignatureNonce=9b7a44b0-3be1-11e5-8c73-08002700c460
    したがって、 StringToSign は以下のようになります。
    GET&%2F&AccessKeyId%3Dtestid&Action%3DDescribeCdnService&Format%3DJSON&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3D9b7a44b0-3be1-11e5-8c73-08002700c460&SignatureVersion%3D1.0&Timestamp%3D2015-08-06T02%253A19%253A46Z&Version%3D2014-11-11
    Access Key Id が testid の場合、 Access Key Secret は testsecret 、 HMAC の計算に使用される Key は testsecret&になります。計算後の署名の値は 次のようになります。
    KkkQOf0ymKf4yVZLggy6kYiwgFs=
    署名されたリクエスト URL は次のようになります (Signature パラメーターが追加されています)。
    http://cdn.aliyuncs.com/?SignatureVersion=1.0&Format=JSON&Timestamp=2015-08-06T02%3A19%3A46Z&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&Version=2014-11-11&Signature=KkkQOf0ymKf4yVZLggy6kYiwgFs%3D&Action=DescribeCdnService&SignatureNonce=9b7a44b0-3be1-11e5-8c73-08002700c460

コード例

添付:Signature Mechanism_python_sdk: ダウンロードをクリック

Signature Mechanism_java_sdk: ダウンロードをクリック