

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

# Amazon SNS メッセージ属性
メッセージ属性

Amazon SNS では、メッセージに関する構造化メタデータ項目 (タイムスタンプ、地理空間データ、署名、識別子など) を指定できるメッセージ属性の配信をサポートしています。SQS サブスクリプションの場合、[raw メッセージの配信](sns-large-payload-raw-message-delivery.md)を有効にすると、最大 10 個のメッセージ属性を送信できます。10 個を超えるメッセージ属性を送信するには、Raw メッセージの配信を無効にする必要があります。raw メッセージ配信が有効になっている Amazon SQS サブスクリプション宛てのメッセージ属性が 10 個を超えるメッセージは、クライアント側のエラーとして破棄されます。

メッセージ属性はオプションであり、メッセージ本文とは別個のものですが、同時に送信されます。受信者は、この情報を使用して、メッセージ本文を最初に処理する必要なしでメッセージを処理する方法を決定できます。

 AWS マネジメントコンソール または を使用して属性を含むメッセージを送信する方法については AWS SDK for Java、[を使用して Amazon SNS トピックにメッセージを発行するには AWS マネジメントコンソール](sns-publishing.md#sns-publishing-messages)「」チュートリアルを参照してください。

**注記**  
メッセージ属性は、メッセージ構造が JSON ではなく String である場合にのみ送信されます。

また、モバイルエンドポイント用のプッシュ通知メッセージを構築するためにメッセージ属性を使用することもできます。このシナリオでは、メッセージ属性はプッシュ通知メッセージの構築のみに使用されます。属性は、Amazon SQS エンドポイントにメッセージ属性とともにメッセージを送信する場合とは異なり、エンドポイントには配信されません。

メッセージ属性を使用して、サブスクリプションフィルターポリシーでメッセージをフィルター処理可能にすることもできます。フィルターポリシーは、トピックのサブスクリプションに適用もできます。フィルターポリシーの範囲を `MessageAttributes` (デフォルト) に設定して、フィルターポリシーを適用すると、サブスクリプションは、ポリシーが受け入れる属性を持つメッセージのみを受信します。詳細については、「[Amazon SNS メッセージフィルター処理](sns-message-filtering.md)」を参照してください。

**注記**  
メッセージ属性をフィルタリングに使用する場合、値は有効な JSON 文字列でなければなりません。これにより、メッセージ属性フィルタリングが有効になっているサブスクリプションにメッセージが確実に配信されます。

## メッセージ属性の項目および検証


各メッセージ属性は、次の項目で構成されています。
+ **名前** - メッセージ属性名には、A-Z、a-z、0-9、下線 (\$1)、ハイフン (-)、ピリオド (.) を使用できます。名前の先頭と末尾をピリオドにすることはできず、ピリオドを連続して使用することはできません。名前では大文字と小文字が区別され、メッセージのすべての属性名間で一意にする必要があります。名前の長さは最大 256 文字です。名前の先頭を「`AWS.`」や「`Amazon.`」(または、大文字と小文字が異なるあらゆる変化形) にすることはできません。これらのプレフィックスは Amazon Web Services で使用するために取り置かれています。
+ **型** - サポートされるメッセージ属性のデータ型は、`String`、`String.Array`、`Number`、`Binary`です。データ型のコンテンツには、メッセージ本文と同じ制限があります。詳細については「[メッセージ属性のデータ型と検証](#SNSMessageAttributes.DataTypes)」セクションを参照してください。
+ **値** - ユーザー指定のメッセージ属性値。文字列データ型の場合、値属性はメッセージ本文と同じコンテンツの制限に従う必要があります。ただし、メッセージ属性をフィルタリングに使用する場合、Amazon SNS サブスクリプションフィルターポリシーとの互換性を確保するために、値は有効な JSON 文字列であることが必要です。詳細については、『*Amazon Simple Notification Service API リファレンス*』の「[公開](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)アクション」を参照してください。

名前、型、値を空または Null にすることはできません。さらに、メッセージ本文を空または Null にすることもできません。メッセージ属性のすべての部分 (名前、型、値を含む) は、メッセージサイズの制限に含められます。制限は 256 KB です。

## メッセージ属性のデータ型と検証
データ型

メッセージ属性のデータ型は、メッセージ属性が Amazon SNS によって処理される方法を特定します。例えば、型が数値の場合、Amazon SNS はその属性が数値であることを検証します。

Amazon SNS は、記載されている場合を除き、すべてのエンドポイントについて、次の論理データ型をサポートしています。
+ **文字列** - 文字列は、UTF-8 バイナリエンコードされた Unicode です。コードの値のリストについては、[http://en.wikipedia.org/wiki/ASCII\$1ASCII\$1printable\$1characters](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters) を参照してください。
**注記**  
サロゲート値は、メッセージ属性ではサポートされていません。例えば、サロゲート値を使用して絵文字を表すと、次のエラーが発生します: `Invalid attribute value was passed in for message attribute`。
+ **String.Array** - 複数の値を含むことができる文字列として書式設定される配列。この値は、文字列、数値、またはキーワード (`true`、`false`、`null`) とすることができます。数値型またはブール型の String.Array は引用符を必要としません。複数の String.Array 値はカンマで区切られます。

  このデータ型は AWS Lambda サブスクリプションではサポートされていません。このデータ型を Lambda エンドポイントに指定すると、`String` データ型を、Amazon SNS が Lambda に配信する JSON ペイロードに格納します。
+ **数値** - 数値は正または負の整数か、浮動小数点数です。数値には、整数、浮動小数点数、倍精度浮動小数点数が通常サポートするほとんどの値を包含できる十分な範囲と精度があります。数値は -109～109 までの値とすることができ、小数点以下 5 桁の精度を持ちます。先頭と末尾の 0 は切り捨てられます。

  このデータ型は AWS Lambda サブスクリプションではサポートされていません。このデータ型を Lambda エンドポイントに指定すると、`String` データ型を、Amazon SNS が Lambda に配信する JSON ペイロードに格納します。
+ **Binary** - Binary 型の属性には、圧縮データ、暗号化データ、イメージなど、任意のバイナリデータが保存されます。

## モバイルプッシュ通知の予約済みメッセージ属性


次の表は、プッシュ通知メッセージを構築するために使用できるモバイルプッシュ通知サービスの予約済みメッセージ属性の一覧です。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-message-attributes.html)

1 メッセージ属性が要件を満たさない場合、Apple は Amazon SNS 通知を拒否します。詳細については、Apple Developer ウェブサイトの「[APNs への通知リクエストの送信](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns)」を参照してください。