View a markdown version of this page

Amazon SNS を使用した大規模なメッセージの発行 - Amazon Simple Notification Service

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

Amazon SNS を使用した大規模なメッセージの発行

Amazon SNS は、MaximumMessageSizeトピック属性を設定するときに最大 1 MiB (1,048,576 バイト) のメッセージペイロードをサポートします。デフォルトでは、トピックは最大 256 KiB のメッセージを受け入れます。256 KiB を超えるMaximumMessageSize設定のトピックは、Amazon Data Firehose、Amazon SQS、 AWS Lambda サブスクリプションをサポートし、トピックごとに最大 100 個のサブスクリプションをサポートします。

大規模なメッセージの発行の仕組み

MaximumMessageSize トピック属性は、1,024~1,048,576 バイトの任意の整数値に設定できます。デフォルトでは、既存のトピックと新しく作成されたトピックの は MaximumMessageSize 262,144 バイト (256 KiB) です。

メッセージを発行すると、Amazon SNS は、トピックの設定済み に対してメッセージ本文とメッセージ属性の合計サイズを検証しますMaximumMessageSize。合計サイズが制限を超えると、Amazon SNS は発行時にInvalidParameterエラーを返します。

サポートされている設定

を 256 KiB MaximumMessageSizeを超えると、Amazon SNS は次の設定をサポートします。

サブスクリプションの制限

このトピックでは、最大 100 件のサブスクリプションがサポートされています。追加のサブスクリプションを作成しようとすると、Amazon SNS はInvalidParameterエラーを返します。

サポートされているエンドポイントタイプ

256 KiB MaximumMessageSizeを超えるトピックでは、次のエンドポイントタイプがサポートされています。

  • Amazon Data Firehose

  • Amazon SQS

  • AWS Lambda

MaximumMessageSize が 256 KiB 以下のトピックは、HTTP/HTTPS、SMS、E メール、E メールJSON、モバイルプッシュ (アプリケーション) エンドポイントもサポートしています。

既存のトピックで MaximumMessageSize を設定する

トピックの はMaximumMessageSizeいつでも増減できます。値を変更すると、Amazon SNS は更新された制限に対して新しい発行リクエストを検証します。

を 256 KiB MaximumMessageSize以上に設定するには、トピックの合計サブスクリプション数が 100 以下である必要があります。これらはすべてサポートされているエンドポイントタイプ (Amazon Data Firehose、Amazon SQS、または) である必要があります AWS Lambda。トピックにサポートされていないエンドポイントタイプまたは 100 を超えるサブスクリプションがある場合、Amazon SNS はInvalidParameterエラーを返します。

大きなメッセージ用にトピックを設定する

AWS マネジメントコンソールの使用

より大きなメッセージを発行するようにトピックを設定するには
  1. https://console.aws.amazon.com/sns/home で Amazon SNS コンソールを開きます。

  2. 左のナビゲーションペインで、[トピック] を選択します。

  3. トピックを選択し、編集を選択します。

  4. 最大メッセージサイズで、必要な制限 (最大 1,024 KiB) を設定します。

  5. [Save changes] (変更の保存) をクリックします。

CLI AWS の使用

新しいトピックを作成するMaximumMessageSizeときに を設定します。

aws sns create-topic \ --name my-large-message-topic \ --attributes MaximumMessageSize=1048576

をトピック名my-large-message-topicに置き換え、 を目的の最大メッセージサイズ1048576をバイト単位で置き換えます。

既存のトピックMaximumMessageSizeで を設定します。

aws sns set-topic-attributes \ --topic-arn arn:aws:sns:us-east-1:123456789012:my-topic \ --attribute-name MaximumMessageSize \ --attribute-value 1048576

をトピックの ARN arn:aws:sns:us-east-1:123456789012:my-topicに置き換え、 を目的の最大メッセージサイズ1048576をバイト単位で置き換えます。

トピックの現在の を確認しますMaximumMessageSize。属性が明示的に設定されていない場合、レスポンスには表示されず、トピックはデフォルトの 262,144 バイト (256 KiB) を使用します。

aws sns get-topic-attributes \ --topic-arn arn:aws:sns:us-east-1:123456789012:my-topic

ラージメッセージの Amazon SNS API リファレンス

大規模なメッセージサポートでは、既存の Amazon SNS API を使用します。 APIs 新しい API オペレーションは必要ありません。

API 変更
CreateTopic Attributes パラメータMaximumMessageSizeで を受け入れます。有効な範囲: 1,024~1,048,576 バイト。
SetTopicAttributes 属性名MaximumMessageSizeとして を受け入れます。
GetTopicAttributes 属性MaximumMessageSizeが明示的に設定されている場合は、 を返します。返されない場合、トピックはデフォルトの 262,144 バイト (256 KiB) を使用します。
Publish メッセージ本文とメッセージ属性の合計サイズをトピックの に対して検証しますMaximumMessageSize。
PublishBatch トピックの に対して、バッチ内のすべてのメッセージ (各メッセージの本文と属性) の合計サイズを検証しますMaximumMessageSize。

エンドポイントの互換性

次のリストは、Amazon SNS がサポートされている各エンドポイントタイプに大規模なメッセージを配信する方法を示しています。

  • Amazon Data Firehose – Amazon Data Firehose は、ストリーミングデータをデータストアと分析サービスにロードします。最大 1,000 KiB (1,024,000 バイト) のレコードをサポートします。配信されるメッセージはこの制限を下回っている必要があります。制限には、メッセージ ID やタイムスタンプなどの Amazon SNS 配信メタデータが含まれます。制限を超えるメッセージは配信に失敗します。トピックの MaximumMessageSizeは、1,024 KiB (1,048,576 バイト) まで設定できます。このため、Firehose サブスクリプションのトピックMaximumMessageSizeには を低く設定することをお勧めします。現在のレコードサイズ制限については、「Amazon Data Firehose クォータ」を参照してください。

  • Amazon SQS – Amazon SNS は、サポートされているAmazon SQSの最大サイズまで、サブスクライブされた Amazon SQS キューにメッセージを配信できます。キュー自体MaximumMessageSizeは、Amazon SNS からのメッセージには適用されません。Amazon SNS トピックの MaximumMessageSizeは、これらのメッセージの有効なサイズ制限です。

  • AWS Lambda – Amazon SNS は AWS Lambda 、関数を非同期的に呼び出します。 は、最大 1 MiB の非同期呼び出しペイロード AWS Lambda をサポートします。 AWS Lambda サブスクリプションに追加の設定は必要ありません。

ベストプラクティス

デッドレターキューを設定する

失敗したメッセージ配信を処理するために、すべてのサブスクリプションでデッドレターキュー (DLQ) を設定することをお勧めします。DLQ は、Amazon SNS がサブスクライブされたエンドポイントに正常に配信できないメッセージをキャプチャし、それらを検査して再処理できるようにします。詳細については、「Amazon SNS デッドレターキュー」を参照してください。

CloudWatch メトリクスとアラームによるモニタリング

CloudWatch メトリクスを使用してメッセージ配信をモニタリングし、失敗した配信にアラームを設定します。NumberOfNotificationsFailed メトリクスは、Amazon SNS がサブスクライブしているエンドポイントに配信できないメッセージを追跡します。このメトリクスに CloudWatch アラームを作成して、配信障害が発生したときにアラートを受信します。詳細については、「CloudWatch を使用した Amazon SNS のモニタリング」を参照してください。

Amazon S3 で 1 MiB を超えるメッセージを発行する

1 MiB を超えるメッセージを発行するには、Java 用 Amazon SNS 拡張クライアントライブラリまたは Python 用 Amazon SNS 拡張クライアントライブラリを使用してペイロードを Amazon S3 に保存し、Amazon SNS を介してリファレンスを発行します。これらのライブラリは最大 2 GB のメッセージをサポートし、標準トピックと FIFO トピックの両方と互換性があります。このアプローチを選択するMaximumMessageSize前に を増やす手順については、「」を参照してください大きなメッセージ用にトピックを設定する。