Amazon SQS のメッセージメタデータ
メッセージ属性を使用して、アプリケーション用の Amazon SQS メッセージにカスタムメタデータを追加します。メッセージシステム属性を使用して、AWS X-Ray などの他の AWS のサービス との統合のためにメタデータを保管します。
Amazon SQS メッセージ属性
Amazon SQS では、構造化メタデータ (タイムスタンプ、地理空間データ、署名、識別子など) をメッセージ属性を使用してメッセージに含めることができます。各メッセージには最大10個の属性を指定できます。メッセージ属性はオプションであり、メッセージ本文とは別個のものです (ただし、メッセージ本文とともに送信されます)。コンシューマーはメッセージ属性を使用して、最初にメッセージ本文を処理することなく、特定の方法でメッセージを処理できます。Amazon SQSコンソールを使用して属性とメッセージを送信する方法については、「Amazon SQS を使用した属性を含むメッセージの送信」を参照してください。
注記
メッセージ属性とメッセージシステム属性を混同しないでください。メッセージ属性を使用するとアプリケーション用のAmazon SQSメッセージにカスタムメタデータをアタッチできるのに対して、メッセージシステム属性を使用すると、AWSなどの他のAWS X-Rayサービスのメタデータを保存できます。
メッセージ属性コンポーネント
重要
メッセージ属性のすべてのコンポーネントは、1 MiB のメッセージサイズ制限に含まれます。
Name、Type、Value、およびメッセージ本文を空または Nullにすることはできません。
各メッセージ属性は、次のコンポーネントで構成されています。
-
名前-メッセージ属性名には
A-Z、a-z、0-9、下線 (_)、ハイフン (-)、ピリオド(.)を使用できます。以下の制限が適用されます。-
最大256文字です
-
AWS.またはAmazon.(大文字小文字が異なるものを含む) でスタートすることはできません -
大文字と小文字を区別します
-
メッセージのすべての属性名で一意である必要があります
-
先頭と末尾をピリオドにすることはできません
-
シーケンスにピリオドを含めることはできません
-
-
タイプ-メッセージ属性のデータタイプ サポートされるタイプには
String、Number、Binaryなどがあります。任意のデータ型のカスタム情報を追加することもできます。データタイプには、メッセージ本文と同じ制限があります (詳細については、SendMessageの「Amazon Simpleキューサービス API リファレンス」を参照してください)。また、以下の制限も適用されます。-
最大256文字です
-
大文字と小文字を区別します
-
-
値-メッセージ属性値。
Stringデータ型の場合、属性値の値にはメッセージ本文と同じ制限があります。
メッセージ属性のデータ型
メッセージ属性のデータ型により、対応するメッセージ属性値を処理する方法が Amazon SQS に指示されます。たとえば、タイプが Numberの場合、 Amazon SQSは数値を検証します。
Amazon SQS では、String、Number、Binary の各論理データタイプと、オプションの形式のカスタムデータタイプラベルをサポートしています。.custom-data-type
-
文字列-
String属性はすべての有効なXML文字を使用してUnicodeテキストを保存できます。 -
数値-
Number属性には、正または負の数値が保存できます。数値は最大38桁の精度で、10^-128から10^+126までの間とします。注記
Amazon SQSでは先頭および末尾の0は削除されます。
-
バイナリ-バイナリ属性には、圧縮データ、暗号化データ、イメージなど、すべてのバイナリデータが保存できます。
-
カスタム-カスタムデータ型を作成するには、任意のデータ型にカスタム型ラベルを追加します。例:
-
Number.byte、Number.short、Number.int、およびNumber.floatは、数値型の区別ができます。 -
Binary.gifおよびBinary.pngは、ファイルタイプの区別ができます。
注記
Amazon SQSが、追加されたデータを解釈、検証、または使用することはありません。
カスタム型ラベルには、メッセージ本文と同じ制限があります。
-
メッセージ属性のMD5メッセージダイジェストの計算
AWS SDK for Javaを使用している場合は、このセクションをスキップできます。SDK for Javaの MessageMD5ChecksumHandler クラスでは、Amazon SQS メッセージ属性の MD5 メッセージダイジェストがサポートされています。
APIクエリ、または Amazon SQS メッセージ属性のMD5メッセージダイジェストをサポートしないいずれかのAWSSDK を使用している場合は、次のガイドラインを使用して、MD5メッセージダイジェストの計算を実行する必要があります。
注記
MD5メッセージダイジェストの計算には、常にカスタムデータタイプサフィックスを含めてください。
概要
MD5メッセージダイジェスト計算アルゴリズムの概要を以下に示します。
-
すべてのメッセージ属性を名前で昇順にソートします。
-
各属性 (
Name、Type、Value) の個々の部分をバッファにエンコードします。 -
バッファ全体のメッセージダイジェストを計算します。
次の図は、1つのメッセージ属性のMD5メッセージダイジェストをエンコードする方法を示しています。
単一のAmazon SQSメッセージ属性をエンコードするには
-
名前をエンコードします: 名前の長さ (4バイト) およびUTF-8バイト。
-
データ型をエンコードします:データ型の長さ (4バイト) および UTF-8バイト。
-
値 (1バイト) の転送型 (
StringまたはBinary) をエンコードします。注記
論理データ型
StringおよびNumberでは、String転送型が使用されます。論理データ型
Binaryでは、Binary転送型が使用されます。-
String転送型の場合、1をエンコードします。 -
Binary転送型の場合、2をエンコードします。
-
-
属性値をエンコードします。
-
String転送型の場合、属性値をエンコードします:値の長さ(4バイト) + UTF-8バイト。 -
Binary転送型の場合、属性値をエンコードします:値の長さ(4バイト) + rawバイト。
-
Amazon SQSメッセージシステム属性
メッセージ属性を使用してアプリケーションの Amazon SQS メッセージにカスタムメタデータをアタッチできますが、メッセージシステム属性AWSを使用して、 AWS X-Ray などの他の サービスのメタデータを保存できます。詳細については、Amazon Simple キューサービス API リファレンス「SendMessageBatchAPI アクションMessageSystemAttributeのリクエストパラメーターSendMessage、API アクションAWSTraceHeaderの属性ReceiveMessage、およびMessageSystemAttributeValueのデータタイプ。」を参照してください。
メッセージシステム属性は、メッセージ属性とまったく同じ構造ですが、次の例外があります。
-
現在、サポートされているメッセージシステム属性は
AWSTraceHeaderのみです。そのデータ型はStringであり、その値は正しくフォーマットされた AWS X-Rayトレースヘッダー文字列である必要があります。 -
メッセージシステム属性のサイズは、メッセージの合計サイズに対してはカウントされません。