すべてのプロダクト
Search
ドキュメントセンター

Simple Message Queue (formerly MNS):リクエストプロトコル

最終更新日:May 08, 2026

このドキュメントでは、Simple Message Queue (SMQ, formerly MNS) に対する HTTP API 呼び出しのリクエスト構造、共通パラメーター、応答、およびリクエスト署名方法について説明します。

リクエスト構造

エンドポイント

Simple Message Queue (SMQ, formerly MNS) は複数のリージョンで利用可能です。各リージョンにはパブリックエンドポイントと内部エンドポイントが用意されています。詳細については、「リージョンとエンドポイント」をご参照ください。

リクエストメソッド

PUTPOSTGETDELETE などのメソッドを使用して、HTTP 経由で Simple Message Queue (SMQ, formerly MNS) にリクエストを送信できます。

リクエストには、正しいパラメーター、ヘッダー、本文を含める必要があります。リクエストおよび応答はどちらも UTF-8 でエンコードされます。

共通パラメーター

共通リクエストヘッダー

パラメーター

必須

説明

Authorization

はい

認証文字列です。詳細については、「リクエスト署名方法」をご参照ください。

Content-Length

はい

HTTP リクエストボディの長さです。

Content-Type

はい

リクエストコンテンツの MIME タイプです。現在、テキスト形式および XML 形式のみサポートされています。

Content-MD5

いいえ

HTTP リクエストボディの MD5 ハッシュです。詳細については、「The Content-MD5 Header Field」をご参照ください。

説明

Content-MD5 ヘッダーはオプションです。ほとんどの API オペレーション(例:SendMessageReceiveMessage)では、このヘッダーは必要ありません。Content-MD5 ヘッダーを設定しない場合は、署名対象文字列を作成する際に CONTENT-MD5 フィールドに空文字列を使用してください。

Date

はい

リクエスト作成時刻です。時刻は GMT 形式である必要があります。リクエスト時刻と SMQ サーバー時刻の差が 15 分を超える場合、そのリクエストは無効とみなされます。

Host

HTTP/1.1 の場合は必須です。HTTP/1.0 の場合は任意です。

リクエストエンドポイントです。形式は $AccountId.mns.cn-hangzhou.aliyuncs.com です。アカウント ID は Alibaba Cloud ウェブサイトから取得してください。ご利用のリージョンに対応する SMQ エンドポイントは、API ドキュメントで確認してください。

x-mns-version

はい

使用する SMQ API のバージョンです。現在のバージョンは 2015-06-06 です。

x-mns-date

いいえ

Date ヘッダーの代替です。クライアントまたはブラウザ環境により標準の Date ヘッダーを設定できない場合に、このヘッダーを使用してください。

共通レスポンスヘッダー

パラメーター

説明

Content-Length

HTTP レスポンスボディの長さです。

Connection

HTTP 接続のステータスです。

Date

応答が生成された時刻(GMT 形式)です。

Server

リクエストを処理した SMQ サーバーの名前です。

x-mns-request-id

リクエストの一意な ID です。

x-mns-version

SMQ API のバージョンです。現在のバージョンは 2015-06-06 です。

応答

API 呼び出しは標準化された形式でデータを返します。HTTP ステータスコードが 2xx 範囲の場合は成功を示し、4xx または 5xx 範囲の場合は失敗を示します。成功時の応答は XML 形式です。

XML 応答には成功情報および具体的なビジネスデータが含まれます。以下の例は基本的な構造を示しています。

    <?xml version="1.0" encoding="utf-8"?> 
    <!--結果のルートノード--> 
    <RootNode xmlns="http://mns.aliyuncs.com/doc/v1/">
    <!--返された子ノード-->
    </RootNode>

API 呼び出しが失敗した場合、結果データは返されません。代わりに、サービスは HTTP 4xx または 5xx ステータスコードを返します。レスポンスボディには、具体的なエラーコードおよびメッセージが含まれます。また、グローバルに一意なリクエスト ID (RequestId) およびリクエストを処理したサーバーのホスト ID (HostId) も含まれます。

エラーの詳細情報については、「エラーコード」をご参照ください。

リクエスト署名方法

概要

Simple Message Queue (SMQ, formerly MNS) サービスはすべてのリクエストを認証します。SMQ に送信するすべてのリクエストには、ヘッダーに署名を含める必要があります。SMQ SDK は署名プロセスを自動的に完了します。手動での署名プロセスを回避するために、SDK を使用することを推奨します。

署名プロセスは以下のステップで構成されます。

ステップ 1:署名対象文字列の作成

以下の擬似コードを使用して、署名対象文字列を作成します。

StringToSign = HttpMethod + "\n" 
         + CONTENT-MD5 + "\n"     
         + CONTENT-TYPE + "\n" 
         + DATE + "\n" 
         + CanonicalizedMNSHeaders
         + CanonicalizedResource;

パラメーター

説明

HttpMethod

大文字の HTTP リクエストメソッドです。例:PUTGETPOSTDELETE

Content-Md5

リクエストボディの MD5 ハッシュです。これはオプションです。リクエストに Content-MD5 ヘッダーが含まれていない場合は、ここに空文字列を使用します。

CONTENT-TYPE

リクエストボディのコンテンツタイプです。リクエストに Content-Type ヘッダーが含まれていない場合は、ここに空文字列を使用します。

DATE

リクエストの日時です。

  • 形式は次のとおりです:Thu, 07 Mar 2012 18:49:58 GMTx-mns-date を使用して DATE を置き換える場合、DATE は空にできず、x-mns-date の値に設定する必要があります。

  • このフィールドは空にできません。GMT 形式のみサポートされています。

  • リクエスト時刻と Simple Message Queue (SMQ, formerly MNS) サーバー時刻の差が 15 分を超える場合、サービス はそのリクエストを無効とみなし、400 エラーコードを返します。詳細については、「エラーコード」をご参照ください。

CanonicalizedMNSHeaders

x-mns- プレフィックスで始まるすべての HTTP ヘッダーを連結したものです。これらのヘッダーは以下のように処理する必要があります。

  • ヘッダーキーを小文字に変換します。

  • キーでアルファベット順にソートします。

  • 以下の擬似コードに示すようにヘッダーを連結します。

    // 元のリクエストヘッダー
    Map<String, String> httpHeaders = request.getHeaders();
    // キーをソートして小文字に変換
    sortHeadersKeyAndToLowerCase(httpHeaders);
    // 連結
    Set<String> keySet = httpHeaders.keySet();
    for (String key : keySet) {
        if (key.startsWith("x-mns-")) {
            CanonicalizedMNSHeaders.append(key).append(":")
                .append(httpHeaders.get(key)).append("\n");
        }
    }

CanonicalizedResource

HTTP リクエストされたリソースの URI は、サブスクリプション構成で指定された HTTP エンドポイントアドレスのうち、ドメイン名およびポートを除いた部分です。たとえば、構成されたエンドポイントアドレスが http://123.123.XX.XX:8080/api/test?code=200 の場合、URI は /api/test?code=200 です。エンドポイントアドレスが http://www.aliyun.com/mns/help の場合、URI は /mns/help です。

重要

システムにゲートウェイやその他のプロキシが含まれている場合、検証ポイントでの URI はサブスクリプション構成のものと異なる可能性があります。その場合は、サブスクリプション構成の URI を使用する必要があります。

ステップ 2:署名の計算

Signature = Base64( HMAC-SHA1( ${AccessSecret}, UTF-8-Encoding-Of(${StringToSign})) ) 

各パラメーターの説明は以下のとおりです。

パラメーター

説明

Base64

Base64 エンコーディング方式です。

HMAC-SHA1

署名アルゴリズムです。SMQ は RFC 2104 で定義されている HMAC-SHA1 方式を使用します。

AccessKey Secret

ご利用の AccessKey Secret です。これは署名で使用される AccessKey ID に対応します。

UTF-8-Encoding-Of

UTF-8 エンコード形式です。

StringToSign

ステップ 1:署名対象文字列の作成 で作成された署名対象文字列です。

ステップ 3:リクエストへの署名の追加

addHeader("Authorization","MNS " +  ${AccessKeyId}+ ":" + ${Signature})

キーは定数文字列 Authorization です。値は、AccessKeyId および Signature 変数を MNS ${accessKeyId}:${Signature} の形式で連結した文字列です。ここで、SignatureSimple Message Queue (SMQ, formerly MNS) によってカスタムビルドされた署名であり、ステップ 2:署名の計算 (Signature) で生成された値です。

署名の例

以下のサンプルリクエストをご確認ください。

PUT /queues/$queueName?metaOverride=true HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 08 Mar 2012 12:00:00 GMT
Authorization: MNS 15B4D3461F177624****:xQE0diMbL****f3YB+FIEXAMPLE=

<?xml version="1.0" encoding="UTF-8"  ?>
<Queue xmlns="http://mns.aliyuncs.com/doc/v1/">
<VisibilityTimeout >60</VisibilityTimeout>
<MaximumMessageSize>1024</MaximumMessageSize>
<MessageRetentionPeriod>120</MessageRetentionPeriod>
<DelaySeconds>30</DelaySeconds>
</Queue>       

以下はサンプル応答です。

例 1

指定された AccessKey ID が存在しない、または非アクティブな場合、サービスは 403 Forbidden エラーを返します。

Content-Type: text/xml
Content-Length: 314
Date: Wed, 18Mar 2012 08:04:06 GMT
x-mns-request-id: 512B2A634403E52B1956****

<?xml version="1.0" encoding="utf-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>AccessIDAuthError</Code>
<Message>
    AccessID authentication fail, please check your AccessID and retry.
</Message>
<RequestId>512B2A634403E52B1956****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error>       

例 2

Date ヘッダーが不足している、または形式が無効な場合、サービスは 403 Forbidden エラーを返します。

Content-Type: text/xml
Content-Length: 274
Date: Wed, 18Mar 2012 08:04:06 GMT
x-mns-request-id: 512B2A634403E52B1956****

<?xml version="1.0" encoding="UTF-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>InvalidArgument</Code>
<Message>Date Header is invalid or missing.</Message>
<RequestId>7E1A5CF258F535884403****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error>         

例 3

リクエストは、タイムスタンプから 15 分以内に Simple Message Queue (SMQ, formerly MNS) サーバーに到達する必要があります。そうでない場合、サービスは 408 Request Timeout エラーを返します。

Content-Type: text/xml
Content-Length: 283
Date: Wed, 11 May 2011 09:01:51 GMT
x-mns-request-id: 512B2A634403E52B1956****

<?xml version="1.0"  encoding="UTF-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>TimeExpired</Code>
<Message>
        The http request you sent is expired.
</Message>
<RequestId>512B2A634403E52B1956****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error>