

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SQS のメッセージメタデータ
<a name="sqs-message-metadata"></a>

メッセージ属性を使用して、アプリケーション用の Amazon SQS メッセージにカスタムメタデータを追加します。メッセージシステム属性を使用して AWS のサービス、 などの他の と統合するためのメタデータを保存します AWS X-Ray。

## Amazon SQS メッセージ属性
<a name="sqs-message-attributes"></a>

Amazon SQS では、構造化メタデータ (タイムスタンプ、地理空間データ、署名、識別子など) を*メッセージ属性*を使用してメッセージに含めることができます。各メッセージには最大10個の属性を指定できます。メッセージ属性はオプションであり、メッセージ本文とは別個のものです (ただし、メッセージ本文とともに送信されます)。コンシューマーはメッセージ属性を使用して、最初にメッセージ本文を処理することなく、特定の方法でメッセージを処理できます。Amazon SQSコンソールを使用して属性とメッセージを送信する方法については、「[Amazon SQS を使用した属性を含むメッセージの送信](sqs-using-send-message-with-attributes.md)」を参照してください。

**注記**  
メッセージ属性を*メッセージシステム属性*と混同しないでください。メッセージ属性を使用してアプリケーションの Amazon SQS メッセージにカスタムメタデータをアタッチできますが、[メッセージシステム属性](#sqs-message-system-attributes)を使用して、 などの他の AWS サービスのメタデータを保存できます AWS X-Ray。

**Topics**
+ [メッセージ属性コンポーネント](#message-attribute-components)
+ [メッセージ属性のデータ型](#message-attribute-data-types)
+ [メッセージ属性のMD5メッセージダイジェストの計算](#sqs-attributes-md5-message-digest-calculation)

### メッセージ属性コンポーネント
<a name="message-attribute-components"></a>

**重要**  
メッセージ属性のすべてのコンポーネントは、1 MiB のメッセージサイズ制限に含まれます。  
`Name`、`Type`、`Value`、およびメッセージ本文を空または Nullにすることはできません。

各メッセージ属性は、次のコンポーネントで構成されています。
+ **名前**-メッセージ属性名には`A`-`Z`、 `a`-`z`、 `0`-`9`、下線 (`_`)、ハイフン (`-`)、ピリオド(`.`)を使用できます。以下の制限が適用されます。
  + 最大256文字です
  + `AWS.`または`Amazon.`(大文字小文字が異なるものを含む) でスタートすることはできません
  + 大文字と小文字を区別します
  + メッセージのすべての属性名で一意である必要があります
  + 先頭と末尾をピリオドにすることはできません
  + シーケンスにピリオドを含めることはできません
+ **タイプ**-メッセージ属性のデータタイプ サポートされるタイプには `String`、`Number`、`Binary` などがあります。任意のデータ型のカスタム情報を追加することもできます。データタイプには、メッセージ本文と同じ制限があります (詳細については、 `[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)`の「*Amazon Simpleキューサービス API リファレンス*」を参照してください)。また、以下の制限も適用されます。
  + 最大256文字です
  + 大文字と小文字を区別します
+ **値**-メッセージ属性値。`String`データ型の場合、属性値の値にはメッセージ本文と同じ制限があります。

### メッセージ属性のデータ型
<a name="message-attribute-data-types"></a>

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

Amazon SQS では、`String`、`Number`、`Binary` の各論理データタイプと、オプションの`.custom-data-type`形式のカスタムデータタイプラベルをサポートしています。
+ **文字列**-`String`属性はすべての有効なXML文字を使用してUnicodeテキストを保存できます。
+ **数値**-`Number`属性には、正または負の数値が保存できます。数値は最大38桁の精度で、10^-128から10^\$1126までの間とします。
**注記**  
Amazon SQSでは先頭および末尾の0は削除されます。
+ **バイナリ**-バイナリ属性には、圧縮データ、暗号化データ、イメージなど、すべてのバイナリデータが保存できます。
+ **カスタム**-カスタムデータ型を作成するには、任意のデータ型にカスタム型ラベルを追加します。例:
  + `Number.byte`、`Number.short`、`Number.int`、および `Number.float` は、数値型の区別ができます。
  + `Binary.gif` および `Binary.png` は、ファイルタイプの区別ができます。
**注記**  
Amazon SQSが、追加されたデータを解釈、検証、または使用することはありません。  
カスタム型ラベルには、メッセージ本文と同じ制限があります。

### メッセージ属性のMD5メッセージダイジェストの計算
<a name="sqs-attributes-md5-message-digest-calculation"></a>

を使用する場合は AWS SDK for Java、このセクションをスキップできます。SDK for Javaの `MessageMD5ChecksumHandler` クラスでは、Amazon SQS メッセージ属性の MD5 メッセージダイジェストがサポートされています。

クエリ API または Amazon SQS メッセージ属性の MD5 メッセージダイジェストをサポートしていないいずれかの AWS SDKs を使用する場合は、次のガイドラインを使用して MD5 メッセージダイジェスト計算を実行する必要があります。

**注記**  
MD5メッセージダイジェストの計算には、常にカスタムデータタイプサフィックスを含めてください。

#### 概要:
<a name="attributes-md5-message-digest-calculation-overview"></a>

MD5メッセージダイジェスト計算アルゴリズムの概要を以下に示します。

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

1. 各属性 (`Name`、`Type`、`Value`) の個々の部分をバッファにエンコードします。

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

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

![\[単一のメッセージ属性の MD5 メッセージダイジェストのエンコード。\]](http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/sqs-msg-attrib-md5.png)


#### 単一のAmazon SQSメッセージ属性をエンコードするには
<a name="attributes-md5-message-digest-calculation-encode-single-attribute"></a>

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

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

1. 値 (1バイト) の転送型 (`String`または`Binary`) をエンコードします。
**注記**  
論理データ型 `String`および`Number`では、`String`転送型が使用されます。  
論理データ型 `Binary`では、`Binary`転送型が使用されます。

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

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

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

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

   1. `Binary`転送型の場合、属性値をエンコードします:値の長さ(4バイト) \$1 rawバイト。

## Amazon SQSメッセージシステム属性
<a name="sqs-message-system-attributes"></a>

[メッセージ属性](#sqs-message-attributes)を使用してアプリケーションの *Amazon SQS メッセージにカスタムメタデータをアタッチできますが、*メッセージシステム属性 AWS を使用して、 AWS X-Rayなどの他の サービスのメタデータを保存できます。詳細については、*Amazon Simple キューサービス API リファレンス*「`[SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)`API アクション`MessageSystemAttribute`のリクエストパラメーター`[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)`、API アクション`AWSTraceHeader`の属性`[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)`、および`[MessageSystemAttributeValue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_MessageSystemAttributeValue.html)`のデータタイプ。」を参照してください。

メッセージシステム属性は、メッセージ属性とまったく同じ構造ですが、次の例外があります。
+ 現在、サポートされているメッセージシステム属性は`AWSTraceHeader`のみです。そのタイプは `String`で、値は正しくフォーマットされた AWS X-Ray トレースヘッダー文字列である必要があります。
+ メッセージシステム属性のサイズは、メッセージの合計サイズに対してはカウントされません。