Amazon SQS のメッセージメタデータ - Amazon Simple Queue Service

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 のメッセージサイズ制限に含まれます。

NameTypeValue、およびメッセージ本文を空または Nullにすることはできません。

各メッセージ属性は、次のコンポーネントで構成されています。

  • 名前-メッセージ属性名にはA-Za-z0-9、下線 (_)、ハイフン (-)、ピリオド(.)を使用できます。以下の制限が適用されます。

    • 最大256文字です

    • AWS.またはAmazon.(大文字小文字が異なるものを含む) でスタートすることはできません

    • 大文字と小文字を区別します

    • メッセージのすべての属性名で一意である必要があります

    • 先頭と末尾をピリオドにすることはできません

    • シーケンスにピリオドを含めることはできません

  • タイプ-メッセージ属性のデータタイプ サポートされるタイプには StringNumberBinary などがあります。任意のデータ型のカスタム情報を追加することもできます。データタイプには、メッセージ本文と同じ制限があります (詳細については、 SendMessageの「Amazon Simpleキューサービス API リファレンス」を参照してください)。また、以下の制限も適用されます。

    • 最大256文字です

    • 大文字と小文字を区別します

  • -メッセージ属性値。Stringデータ型の場合、属性値の値にはメッセージ本文と同じ制限があります。

メッセージ属性のデータ型

メッセージ属性のデータ型により、対応するメッセージ属性値を処理する方法が Amazon SQS に指示されます。たとえば、タイプが Numberの場合、 Amazon SQSは数値を検証します。

Amazon SQS では、StringNumberBinary の各論理データタイプと、オプションの.custom-data-type形式のカスタムデータタイプラベルをサポートしています。

  • 文字列-String属性はすべての有効なXML文字を使用してUnicodeテキストを保存できます。

  • 数値-Number属性には、正または負の数値が保存できます。数値は最大38桁の精度で、10^-128から10^+126までの間とします。

    注記

    Amazon SQSでは先頭および末尾の0は削除されます。

  • バイナリ-バイナリ属性には、圧縮データ、暗号化データ、イメージなど、すべてのバイナリデータが保存できます。

  • カスタム-カスタムデータ型を作成するには、任意のデータ型にカスタム型ラベルを追加します。例:

    • Number.byteNumber.shortNumber.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メッセージダイジェスト計算アルゴリズムの概要を以下に示します。

  1. すべてのメッセージ属性を名前で昇順にソートします。

  2. 各属性 (NameTypeValue) の個々の部分をバッファにエンコードします。

  3. バッファ全体のメッセージダイジェストを計算します。

次の図は、1つのメッセージ属性のMD5メッセージダイジェストをエンコードする方法を示しています。

単一のメッセージ属性の MD5 メッセージダイジェストのエンコード。

単一のAmazon SQSメッセージ属性をエンコードするには

  1. 名前をエンコードします: 名前の長さ (4バイト) およびUTF-8バイト。

  2. データ型をエンコードします:データ型の長さ (4バイト) および UTF-8バイト。

  3. 値 (1バイト) の転送型 (StringまたはBinary) をエンコードします。

    注記

    論理データ型 StringおよびNumberでは、String転送型が使用されます。

    論理データ型 Binaryでは、Binary転送型が使用されます。

    1. String転送型の場合、1をエンコードします。

    2. Binary転送型の場合、2をエンコードします。

  4. 属性値をエンコードします。

    1. String転送型の場合、属性値をエンコードします:値の長さ(4バイト) + UTF-8バイト。

    2. 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トレースヘッダー文字列である必要があります。

  • メッセージシステム属性のサイズは、メッセージの合計サイズに対してはカウントされません。