Global Accelerator API リクエストを送信するには、HTTP GET リクエストを Global Accelerator エンドポイントに送信する必要があります。 呼び出す API に対応するリクエストパラメーターを追加する必要があります。 API の呼び出し後、システムが応答を返します。 リクエストとレスポンスは UTF-8 でエンコードされます。
リクエスト構文
Global Accelerator API は RPC プロトコルを使用します。 HTTP GET リクエストを送信することにより、Global Accelerator API を呼び出すことができます。
http://Endpoint/?Action=xx&Parameters
- Endpoint:Alibaba Cloud CDN API のエンドポイントは cdn.aliyuncs.com です。
- Action:実行中の操作の名前を設定します。 たとえば、既存の Global Accelerator インスタンスに関する情報を照会するには、Action パラメーターを DescribeAccelerator のように設定する必要があります。
- Version :Global Accelerator API のバージョンを設定します。 この値は 2019-11-20 に設定します。
- Parameters:API のリクエストパラメーターを設定します。 複数のパラメーターを指定する場合は、アンパサンド (&) で区切ります。
リクエストパラメーターは、共通パラメーターと API 固有のパラメーターで構成されます。 共通パラメーターは、すべての Global Accelerator API の呼び出しで使用されます。 詳細については、「共通パラメーター」をご参照ください。
https://ga.aliyuncs.com/?Action=DescribeAccelerator
&Format=xml
&Version=2019-11-20
&Signature=xxxx%xxxx%3D
&SignatureMethod=HMAC-SHA1
&SignatureNonce=15215528852396
&SignatureVersion=1.0
&AccessKeyId=key-test
&TimeStamp=2012-06-01T12:00:00Z
...
リクエストの署名
セキュリティを確保するには、すべての API リクエストに署名する必要があります。 Alibaba Cloud はリクエストの署名を使用して、API の呼び出し元を確認します。
https://Endpoint/?SignatureVersion=1.0&SignatureMethod=HMAC-SHA1&Signature=xxxx%xxxx%3D&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf
Global Accelerator は、アクセスキーのペアを使用した対称暗号化を実装して、リクエストの送信元を検証します。 アクセスキーのペアは、Alibaba Cloud アカウントと RAM ユーザーに発行される資格情報であり、ログインユーザー名とパスワードに似ています。 アクセスキーのペアは、AccessKeyID と AccessKey secret で構成されます。 AccessKey IDはユーザーの ID を検証するために使用され、AccessKey secret は署名文字列を暗号化して検証するために使用されます。 AccessKey Secret は、機密情報として取り扱う必要があります。
https://endpoint/?SignatureVersion=1.0&SignatureMethod=HMAC-SHA1&Signature=xxxx%xxxx%3D&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf
testid
で、AccessKey secret が testsecret
の場合、元のリクエスト URL は次のとおりです。
http://ga.aliyuncs.com/?Action=DescribeAccelerator
&TimeStamp=2016-02-23T12:46:24Z
&Format=XML
&AccessKeyId=testid
&SignatureMethod=HMAC-SHA1
&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf
&Version=2019-11-20
&SignatureVersion=1.0
- 署名する文字列を作成してエンコードします。
GET&%2F&AccessKeyId%3Dtestid%26Action%3DDescribeAccelerator%26Format%3DXML%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf%26SignatureVersion%3D1.0%26TimeStamp%3D2016-02-23T12%253A46%253A24Z%26Version%3D2014-05-26
- リクエストパラメーター ( 署名を除く) を整理して、 アルファベット順に正規化されたクエリ文字列を作成します。
GETメソッドを使用してリクエストを送信すると、リクエストパラメータが URI の一部として送信されます。 リクエストパラメーターは疑問符 (?) の後に続き、アンパサンド (&) で区切られます。
- 正規化されたクエリ文字列を UTF-8でエンコードします。 下表に、モニタリンググループを示します。
文字 エンコーディングルール 大文字 (A-Z)、小文字 (a-z)、数字 (0-9)、および次の特殊文字:ハイフン (-)、アンダースコア (_)、ピリオド (.)、およびチルダ (~) エンコードされません。 他の文字 %XY
形式でエンコードされます。XY
は文字の ASCII コードの 16 進表記です。 たとえば、二重引用符 (“) は%22
とエンコードされます。拡張 UTF-8 文字 %XY%ZA ...
形式でエンコードされます。スペース %20
とエンコードされます。 スペースをプラス記号 (+) としてエンコードしないでください。このエンコード方式は、
application/x-www-form-urlencoded
MIME エンコードアルゴリズム (Java 標準ライブラリーで提供されるjava.net.URLEncoder
クラスの実装など) と類似していますが、異なる方式です。エンコードした文字列内のプラス記号 (+) を
%20
に、アスタリスク (*) を%2A
に直接置き換え、%7E
をチルダ (~) に戻せば、上記のエンコード規則に準拠してこのエンコード方式を使用することができます。percentEncode
メソッドを使用して、このアルゴリズムを実装できます。private static final String ENCODING = "UTF-8"; private static String percentEncode(String value) throws UnsupportedEncodingException { return value ! = null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null; }
- エンコードされたパラメーター名と値を等号 (=) で接続します。
- 次に、等号で接続されたパラメーター名と値のペアをアルファベット順にソートし、アンパサンド (&) で接続して正規化クエリ文字列を生成します。
- リクエストパラメーター ( 署名を除く) を整理して、 アルファベット順に正規化されたクエリ文字列を作成します。
- 署名する文字列の HMAC 値を計算します。
AccessKey Secretにアンパサンド (&) を追加し、新しい文字列をキーとして使用し、HMAC値を計算します。 この例では、キーを
testsecret&
とします。CT9X0VtwR86fNWSnsc6v8YGOjuE=
- 署名文字列を Signature パラメーターとしてリクエストに追加します。
http://ga.aliyuncs.com/?Action=DescribeAccelerator &TimeStamp=2016-02-23T12:46:24Z &Format=XML &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2019-11-20 &SignatureVersion=1.0 &Signature=CT9X0VtwR86fNWSnsc6v****juE%3D