Amazon Simple Notification Service - 開発者ガイド

Amazon Simple
Notification Service
開発者ガイド
API Version 2010-03-31
Amazon Simple Notification Service 開発者ガイド
Amazon Simple Notification Service 開発者ガイド
Amazon Simple Notification Service: 開発者ガイド
Copyright © 2017 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any
manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other
trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to,
or sponsored by Amazon.
Amazon Simple Notification Service 開発者ガイド
Table of Contents
Amazon SNS とは ........................................................................................................................ 1
Amazon Simple Notification Service を初めてお使いになる方向けの情報 ....................................... 2
「使用開始」セクションを読み終えたら ................................................................................... 2
Amazon SNS へのアクセス .................................................................................................... 2
一般的なシナリオ .................................................................................................................. 3
ファンアウト ................................................................................................................ 3
アプリケーションおよびシステムアラート ........................................................................ 4
プッシュ E メールとテキストメッセージ .......................................................................... 4
モバイルプッシュ通知 ................................................................................................... 4
はじめに ...................................................................................................................................... 5
開始する前に ........................................................................................................................ 5
トピックの作成 ..................................................................................................................... 6
トピックへのサブスクライブ .................................................................................................. 6
トピックへの発行 .................................................................................................................. 7
プロトコルごとに異なるメッセージを作成する .................................................................. 8
クリーンアップ ..................................................................................................................... 9
SDK for Java の使用 ........................................................................................................... 10
アクセスの管理 ........................................................................................................................... 12
概要 .................................................................................................................................. 12
アクセスコントロールを使用する場合 ............................................................................ 13
主要なコンセプト ........................................................................................................ 13
アーキテクチャーの概要 ............................................................................................... 16
アクセスポリシー言語 の使用 ....................................................................................... 19
評価論理 .................................................................................................................... 21
Amazon SNS アクセスコントロールのケース例 .............................................................. 26
Amazon SNS ポリシーの特別な情報 ...................................................................................... 30
Amazon SNS ポリシー制限 .......................................................................................... 30
Amazon SNS ポリシーの有効なアクション ..................................................................... 30
Amazon SNS のキー ................................................................................................... 30
Controlling User Access to Your AWS Account ........................................................................ 31
IAM ポリシーと Amazon SNS ポリシーの連携 ................................................................ 31
Amazon SNS の ARN .................................................................................................. 34
Amazon SNS のアクション .......................................................................................... 35
Amazon SNS のキー ................................................................................................... 35
Amazon SNS のポリシー例 .......................................................................................... 36
一時的なセキュリティ認証情報の使用 ............................................................................ 38
Amazon SNS モバイルプッシュ .................................................................................................... 39
概要 .................................................................................................................................. 39
前提条件 ............................................................................................................................ 40
モバイルプッシュを使用するために必要な手順の概要 ............................................................... 41
ステップ 1: 認証情報をモバイルプラットフォームにリクエストする ................................... 41
ステップ 2: トークンをモバイルプラットフォームにリクエストする ................................... 41
ステップ 3: プラットフォームアプリケーションオブジェクトを作成する ............................. 42
ステップ 4: プラットフォームエンドポイントオブジェクトを作成する ................................ 42
ステップ 5: メッセージをモバイルエンドポイントに発行する ............................................ 42
ADM の使用開始 ................................................................................................................. 43
ADM の前提条件 ......................................................................................................... 43
ステップ 1: ADM サービスを有効にして Kindle Fire アプリを作成する ................................ 43
ステップ 2: クライアント ID およびクライアントシークレットを取得する ........................... 44
ステップ 3: API キーを取得する .................................................................................... 44
ステップ 4: 登録 ID を取得する ..................................................................................... 45
ステップ 5: Amazon SNS および ADM を使用してメッセージを Kindle Fire に送信する ......... 46
APNS の使用開始 ................................................................................................................ 47
APNS の前提条件 ........................................................................................................ 48
ステップ 1: iOS アプリを作成する ................................................................................. 48
API Version 2010-03-31
iv
Amazon Simple Notification Service 開発者ガイド
ステップ 2: APNS SSL 証明書を取得する ....................................................................... 48
ステップ 3: アプリケーションプライベートキーを取得する ............................................... 49
ステップ 4: 証明書とアプリケーションプライベートキーを検証する ................................... 49
ステップ 5: デバイス トークンを取得する ...................................................................... 50
次のステップ .............................................................................................................. 50
iOS アプリにメッセージを送信します ............................................................................ 51
VoIP アプリにメッセージを送信します ........................................................................... 53
Mac OS X アプリにメッセージを送信します ................................................................... 53
Baidu の使用開始 ................................................................................................................ 54
Baidu の前提条件 ........................................................................................................ 54
ステップ 1: Baidu アカウントを作成します ..................................................................... 54
ステップ 2: Baidu 開発者として登録する ........................................................................ 56
ステップ 3: Baidu クラウドプッシュプロジェクトを作成する ............................................ 59
ステップ 4: Android デモアプリケーションをダウンロードし、インストールする .................. 62
ステップ 5: ユーザー ID およびチャネル ID を取得する .................................................... 66
ステップ 6: Amazon SNS および Baidu を使用してモバイルエンドポイントにプッシュ通知
メッセージ送信する ..................................................................................................... 66
GCM の使用開始 ................................................................................................................. 71
GCM の前提条件 ......................................................................................................... 71
ステップ 1: Google API プロジェクトを作成し、GCM サービスを有効にする ....................... 71
ステップ 2: サーバー API キーを取得する ....................................................................... 72
ステップ 3: GCM から登録 ID を取得する ...................................................................... 72
ステップ 4: GCM を使ってモバイルエンドポイントにメッセージを送信する ........................ 73
MPNS の使用開始 ............................................................................................................... 75
MPNS の前提条件 ....................................................................................................... 76
ステップ 1: プッシュ通知メッセージを受信するように Windows Phone アプリをセット
アップする ................................................................................................................. 76
ステップ 2: MPNS からプッシュ通知 URI を取得する ...................................................... 76
ステップ 3: Windows 開発者アカウントを作成する .......................................................... 76
ステップ 4: TLS 証明書をアップロードする .................................................................... 77
ステップ 5: Amazon SNS および MPNS を使って Windows Phone アプリにプッシュ通知
メッセージを送信する .................................................................................................. 77
WNS の使用開始 ................................................................................................................. 79
WNS の前提条件 ......................................................................................................... 79
ステップ 1: プッシュ通知メッセージを受信するようにアプリをセットアップする ................. 80
ステップ 2: WNS からプッシュ通知 URI を取得する ........................................................ 80
ステップ 3: WNS からパッケージセキュリティ識別子を取得する ....................................... 80
ステップ 4: WNS からシークレットキーを取得する ......................................................... 80
ステップ 5: Amazon SNS および WNS を使用してアプリにプッシュ通知メッセージを送信
する .......................................................................................................................... 80
Amazon SNS モバイルプッシュの使用 ................................................................................... 81
モバイルアプリの AWS への登録 .................................................................................. 82
デバイストークンまたは登録 ID の追加 .......................................................................... 84
プラットフォームエンドポイントの作成とデバイストークンの管理 .................................... 87
モバイルデバイスへのメッセージの直接的な送信 ............................................................. 92
トピックに受信登録したモバイルデバイスへのメッセージの送信 ....................................... 92
カスタムプラットフォーム固有のペイロードのモバイルデバイスへの送信 ........................... 93
メッセージの配信ステータスのアプリケーション属性 ............................................................... 95
AWS マネジメントコンソール でメッセージの配信ステータスの属性を設定する .................. 95
Amazon SNS メッセージの配信ステータスの CloudWatch ログの例 ................................... 96
AWS SDK でメッセージの配信ステータスの属性を設定する .............................................. 97
プラットフォームのレスポンスコード ............................................................................ 97
アプリケーションイベント通知 ............................................................................................. 98
使用可能なアプリケーションイベント ............................................................................ 98
アプリケーションイベント通知を送信する ...................................................................... 99
Amazon SNS TTL ............................................................................................................. 100
プッシュ通知サービスの TTL メッセージ属性 ................................................................ 100
TTL を決定するための優先順位 ................................................................................... 101
API Version 2010-03-31
v
Amazon Simple Notification Service 開発者ガイド
AWS マネジメントコンソール による TTL の指定 .......................................................... 101
AWS SDK による TTL の指定 ..................................................................................... 102
Amazon SNS モバイルプッシュ API .................................................................................... 102
API エラー ....................................................................................................................... 103
Amazon SQS キューへのメッセージの送信 ................................................................................... 111
ステップ 1. キューとトピックの ARN を取得する .................................................................. 112
ステップ 2. Amazon SQS キューにメッセージを送信する許可を Amazon SNS トピックに付与す
る .................................................................................................................................... 113
ステップ 3. キューを Amazon SNS トピックにサブスクライブする .......................................... 114
ステップ 4. 適切なトピックおよびキューアクションに対するアクセス許可を与える .................... 114
IAM ユーザーまたはグループにポリシーを追加する ........................................................ 115
トピックまたはキューにポリシーを追加する ................................................................. 115
ステップ 5. テスト ............................................................................................................ 116
別のアカウントのキューへのメッセージの送信 ...................................................................... 117
キューの所有者がサブスクリプションを作成する ........................................................... 118
キューを所有していないユーザーがサブスクリプションを作成する ................................... 119
AWS CloudFormation テンプレートを使用して Amazon SQS キューにメッセージを送信するト
ピックを作成する .............................................................................................................. 120
AWS CloudFormation テンプレートを使用して AWS アカウント内のトピックとキューを
セットアップする ...................................................................................................... 121
SMS メッセージの送信 .............................................................................................................. 126
プリファレンスの設定 ........................................................................................................ 126
プリファレンスの設定 (コンソール) .............................................................................. 127
プリファレンスの設定 (AWS SDK) .............................................................................. 128
メッセージの送信 .............................................................................................................. 129
メッセージの送信 (コンソール) .................................................................................... 129
メッセージの送信 (AWS SDK) ..................................................................................... 130
複数の電話番号にメッセージを送信する ............................................................................... 132
トピックへのメッセージの送信 (コンソール) ................................................................. 132
トピックへのメッセージの送信 (AWS SDK) .................................................................. 133
SMS のアクティビティのモニタリング ................................................................................. 136
配信統計の表示 ......................................................................................................... 136
CloudWatch のメトリクスとログを表示 ........................................................................ 136
使用状況レポートの表示 ............................................................................................. 139
サブスクリプションの管理 .................................................................................................. 141
SMS メッセージの受信のオプトアウト ......................................................................... 141
電話番号とサブスクリプション (コンソール) の管理 ....................................................... 141
電話番号およびサブスクリプション (AWS SDK) の管理 .................................................. 142
サポートされているリージョンおよび国 ............................................................................... 144
HTTP/HTTPS エンドポイントへのメッセージの送信 ....................................................................... 152
ステップ 1: エンドポイントで Amazon SNS メッセージを処理する準備が完了していることを確
認する ............................................................................................................................. 153
ステップ 2: Amazon SNS トピックに HTTP/HTTPS エンドポイントを受信登録する .................... 156
ステップ 3: 受信登録を確認する .......................................................................................... 157
ステップ 4: 受信登録の配信再試行ポリシーを設定する(オプション) ...................................... 157
ステップ 5: トピックに発行するアクセス許可をユーザーに付与する(オプション) .................... 157
ステップ 6: HTTP/HTTPS エンドポイントにメッセージを送信する ........................................... 159
HTTP/HTTPS エンドポイントに対する Amazon SNS 配信再試行ポリシーの設定 ........................ 159
トピックおよび受信登録への配信ポリシーの適用 ........................................................... 161
最大受信レートの設定 ................................................................................................ 162
即時の再試行段階 ...................................................................................................... 163
バックオフ前段階 ...................................................................................................... 163
バックオフ段階 ......................................................................................................... 164
バックオフ後段階 ...................................................................................................... 164
HTTPS エンドポイントの証明機関 ....................................................................................... 165
メッセージ署名の確認 ........................................................................................................ 178
エンドポイント Java Servlet のコード例 ............................................................................... 180
Lambda 関数の呼び出し ............................................................................................................. 184
API Version 2010-03-31
vi
Amazon Simple Notification Service 開発者ガイド
前提条件 .......................................................................................................................... 184
AWS マネジメントコンソール を使用した Amazon SNS と Lambda エンドポイントの設定 .......... 184
メッセージの配信ステータスの Amazon SNS トピック属性を使用する .............................................. 186
AWS マネジメントコンソール でメッセージの配信ステータスの属性を設定する ......................... 187
AWS SDK を使用した、Amazon SNS エンドポイントにサブスクライブしたトピックのメッセー
ジ配信ステータス属性の設定 ............................................................................................... 187
トピック属性 ............................................................................................................ 187
トピック属性を設定する Java の例 .............................................................................. 188
メッセージ属性 ......................................................................................................................... 190
メッセージ属性の項目および検証 ......................................................................................... 190
データ型 .......................................................................................................................... 191
予約済みメッセージ属性 ..................................................................................................... 191
AWS SDK でのメッセージ属性の使用 .................................................................................. 192
CloudWatch による Amazon SNS のモニタリング .......................................................................... 193
Amazon SNS の CloudWatch メトリクスへのアクセス ............................................................ 193
Amazon SNS メトリクスの CloudWatch アラームの設定 ........................................................ 194
Amazon SNS メトリクス ................................................................................................... 195
Amazon Simple Notification Service メトリクスのディメンション ............................................. 196
CloudTrail を使用した Amazon SNS API 呼び出しのログ記録 .......................................................... 197
CloudTrail 内の Amazon SNS 情報 ...................................................................................... 197
Amazon SNS ログファイルエントリの概要 ........................................................................... 198
付録: メッセージおよび JSON の形式 .......................................................................................... 201
HTTP/HTTPS ヘッダー ...................................................................................................... 201
HTTP/HTTPS 受信登録の確認の JSON 形式 .......................................................................... 202
HTTP/HTTPS 通知の JSON 形式 ......................................................................................... 204
HTTP/HTTPS 受信登録の解除の JSON 形式 .......................................................................... 205
SetSubscriptionAttributes 配信ポリシーの JSON 形式 ............................................................. 206
SetTopicAttributes 配信ポリシーの JSON 形式 ....................................................................... 207
付録: ラージペイロードおよび raw メッセージ配信 ........................................................................ 209
AWS マネジメントコンソール での raw メッセージ配信の有効化 ............................................. 209
ドキュメント履歴 ...................................................................................................................... 211
API Version 2010-03-31
vii
Amazon Simple Notification Service 開発者ガイド
Amazon Simple Notification Service
とは
Amazon Simple Notification Service(Amazon SNS)は、サブスクライブしているエンドポイン
トまたはクライアントへのメッセージの配信または送信を調整し、管理するウェブサービスで
す。Amazon SNS には、発行者とサブスクライバーという 2 種類のクライアントが存在し、それぞれ
生産者と消費者とも呼ばれます。発行者は、論理アクセスポイントおよび通信チャネルであるトピッ
クにメッセージを作成して送信することで、受信者と非同期的に通信します。トピックに登録されて
いるサブスクライバー(ウェブサーバー、メールアドレス、Amazon SQS キュー、AWS Lambda 関
数など)は、サポートされているプロトコル(Amazon SQS、HTTP/S、E メール、SMS、Lambda な
ど)の 1 つを使用して、メッセージや通知を消費または受信します。
Amazon SNS を使用するときは、所有者としてトピックを作成し、そのトピックと通信できる発行者
とサブスクライバーを決定するポリシーを定義することで、アクセスを制御します。発行者は、自分
が作成したトピック、または発行を許可されたトピックにメッセージを送信します。各メッセージに
固有の宛先アドレスを含める代わりに、発行者はトピックにメッセージを送信します。Amazon SNS
では、トピックをそのトピックにサブスクライブしているサブスクライバーリストと照合し、メッ
セージを各サブスクライバーに送信します。各トピックには、発行者がメッセージを投稿したり、サ
ブスクライバーが通知に登録する Amazon SNS エンドポイントを識別するための一意の名前がありま
す。サブスクライバーは、サブスクライブしているトピックに対して発行されたすべてのメッセージ
を受信します。また、同じトピックのサブスクライバーはすべて同じメッセージを受信します。
API Version 2010-03-31
1
Amazon Simple Notification Service 開発者ガイド
Amazon Simple Notification Service
を初めてお使いになる方向けの情報
トピック
• Amazon Simple Notification Service を初めてお使いになる方向けの情報 (p. 2)
• 「使用開始」セクションを読み終えたら (p. 2)
• Amazon SNS へのアクセス (p. 2)
• 一般的な Amazon SNS シナリオ (p. 3)
Amazon Simple Notification Service を初めてお使
いになる方向けの情報
Amazon SNS を初めて使用する方には、次のセクションを初めに読むことをお勧めします。
• Amazon SNS とは – このセクションの後半には、Amazon SNS の概要と、「Amazon Simple
Notification Service の使用開始 (p. 5)」で使用している例の詳細な手順について説明する動画
と、一般的なユースケースのシナリオが含まれます。
• 使用開始 – 「Amazon Simple Notification Service の使用開始 (p. 5)」セクションでは、トピッ
クの作成から、トピックへのサブスクライブ、メッセージの発行、サブスクライブの解除、最終的
にトピックの削除まで、順を追って説明します。
「使用開始」セクションを読み終えたら
「使用開始」セクションを読み終えたら、Amazon SNS のオペレーションについてさらに詳しく学習
することをお勧めします。以下のセクションでは、Amazon SNS の操作方法に関する詳細情報を提供
します。
• Amazon SNS トピックへのアクセスの管理 (p. 12)
トピックに許可されるエンドポイント、トピックに発行できるユーザーと条件を詳細に制御できま
す。このセクションでは、アクセスコントロールポリシーを使用してアクセスを制御する方法を示
します。
• CloudWatch による Amazon SNS のモニタリング (p. 193)
Amazon SNS と CloudWatch は統合されているため、個々のアクティブな Amazon SNS トピック
に関して、メトリクスを収集、表示、分析できます。
• Amazon SQS キューへの Amazon SNS メッセージの送信 (p. 111)
Amazon SNS を使用して、1 つ以上の Amazon SQS キューにメッセージを送信できます。
• Amazon SNS の SMS メッセージを送信 (p. 126)
Amazon Simple Notification Service(Amazon SNS)を使用して、SMS 通知を SMS 対応の携帯電
話やスマートフォンに送信できます。
• HTTP/HTTPS エンドポイントへの Amazon SNS メッセージの送信 (p. 152)
Amazon SNS を使用して、1 つ以上の HTTP または HTTPS エンドポイントに通知メッセージを送
信できます。
Amazon SNS へのアクセス
AWSアカウントがある場合、次のいずれかの方法で Amazon SNS にアクセスできます。
API Version 2010-03-31
2
Amazon Simple Notification Service 開発者ガイド
一般的なシナリオ
AWS マネジメントコンソール
AWS マネジメントコンソール が提供するウェブインターフェイスでコンピューティング
やストレージなどのクラウドリソースを管理できます。AWS マネジメントコンソール 内の
サービス別に独自のコンソールがあります。Amazon SNS コンソールを開くには、https://
console.aws.amazon.com/ にログインしてコンソールのホームページから [SNS] を選択する
か、SNS コンソールのダイレクト URL (https://console.aws.amazon.com/sns/) を使用します。コ
ンソールでの一般的な SNS タスクの実施に役立つチュートリアルについては、「Amazon Simple
Notification Service の使用開始 (p. 5)」を参照してください。
AWS Command Line Interface (CLI)
さまざまな AWS 製品用のコマンドを提供し、Windows、Mac、および Linux でサポートされ
ています。開始するには、AWS Command Line Interface ユーザーガイド を参照してくださ
い。Amazon SNS のコマンドの詳細については、AWS Command Line Interface Reference の
「sns」を参照してください。
AWS Tools for Windows PowerShell
PowerShell 環境でスクリプティングを行うユーザーに対して、さまざまな AWS 製品用のコマン
ドを提供します。開始するには、「AWS Tools for Windows PowerShell ユーザーガイド」を参照
してください。Amazon SNS の cmdlets の詳細については、AWS Tools for Windows PowerShell
Reference の「Amazon Simple Notification Service」を参照してください。
AWS SDK
AWS には、さまざまなプログラミング言語およびプラットフォーム
(Java、Python、Ruby、.NET、iOS、Android など) のライブラリとサンプルコードで構成された
SDK (ソフトウェア開発キット) が用意されています。SDK は、Amazon SNS および AWS への
プログラムによるアクセスを作成するのに便利です。例えば、SDK は要求への暗号を使用した署
名、エラーの管理、要求の自動的な再試行などのタスクを処理します。AWS SDK のダウンロー
ドやインストールなどの詳細については、「Tools for Amazon Web Services」ページを参照して
ください。
Amazon SNSクエリ API
サービスに HTTPS リクエストを直接発行できる Amazon SNS のクエリ API を使用し
て、Amazon SNS と AWS にプログラムからアクセスできます。詳細については、Amazon
Simple Notification Service API Reference を参照してください。
一般的な Amazon SNS シナリオ
ファンアウト
「ファンアウト」シナリオでは、Amazon SNS メッセージがトピックに送信され、その後レプリケー
トされて、複数の Amazon SQS キュー、HTTP エンドポイント、E メールアドレスにプッシュされ
ます。これで並列非同期処理が可能になります。たとえば、ある製品が注文されるたびにトピックに
Amazon SNS メッセージを送信するアプリケーションを開発できます。そうすると、そのトピックに
サブスクライブされている Amazon SQS キューは、新しい注文に関する同一の通知を受け取ります。
キューの 1 つにアタッチされた Amazon EC2 サーバーインスタンスは、注文の処理や受理を扱ことが
でき、一方で、他のサーバーインスタンスは、受信したすべての注文を分析するためにデータウェア
ハウスにアタッチできます。
「ファンアウト」のもう 1 つの使用方法は、本番環境に送信されるデータを、開発環境を使用して
レプリケートすることです。前の例から発展させて、新しい受注用に同じトピックに別のキューを
API Version 2010-03-31
3
Amazon Simple Notification Service 開発者ガイド
アプリケーションおよびシステムアラート
サブスクライブすることもできます。次に、この新しいキューを開発環境にアタッチすることで、本
稼働環境から受け取ったデータを使用してアプリケーションの改善とテストを継続することができま
す。Amazon SQS キューへの Amazon SNS メッセージの送信に関する詳細については、「Amazon
SQS キューへの Amazon SNS メッセージの送信 (p. 111)」を参照してください。HTTP/S エンドポ
イントへの Amazon SNS メッセージの送信に関する詳細については、「HTTP/HTTPS エンドポイン
トへの Amazon SNS メッセージの送信 (p. 152)」を参照してください。
アプリケーションおよびシステムアラート
アプリケーションおよびシステムアラートは、事前定義されたしきい値によってトリガーされる通
知で、指定したユーザーに SMS や E メールで送信されます。たとえば、多くの AWS サービスが
Amazon SNS を使用するため、AWS Auto Scaling グループに対する特定の変更などのイベントが発
生した場合、ただちに通知を受信することができます。
プッシュ E メールとテキストメッセージ
プッシュ E メールとテキストメッセージは、E メール/SMS で個人またはグループにメッセージを転
送するための 2 つの方法です。たとえば、Amazon SNS を使用して、的を絞ったニュースの見出しを
E メールまたは SMS でサブスクライバーにプッシュすることもできます。E メールまたは SMS のテ
キストを受け取ると、関心がある読者は、ウェブサイトにアクセスするか、アプリケーションを起動
して、より多くの情報を得ることができます。Amazon SNS を使用して SMS 通知を送信する方法に
関する詳細は、「Amazon SNS の SMS メッセージを送信 (p. 126)」を参照してください。
モバイルプッシュ通知
モバイルプッシュ通知を使用すると、モバイルアプリケーションに直接メッセージを送信できます。
たとえば、Amazon SNS を使用して、更新が利用可能であることを示す通知をアプリケーションに送
信できます。通知メッセージには、更新をダウンロードおよびインストールするためのリンクを含め
ることができます。Amazon SNS を使用してモバイルエンドポイントに直接通知メッセージを送信す
る方法に関する詳細は、「Amazon SNS モバイルプッシュ通知 (p. 39)」を参照してください。
API Version 2010-03-31
4
Amazon Simple Notification Service 開発者ガイド
開始する前に
Amazon Simple Notification Service
の使用開始
このセクションでは、Amazon SNS のコンセプトを理解し、トピックの作成およびトピックへの発行
に利用可能なツールとインターフェイスを迅速にセットアップして、使用するための情報を提供しま
す。プッシュ通知メッセージを開始するには、「Amazon SNS モバイルプッシュ通知 (p. 39)」を
参照してください。
トピック
• 開始する前に (p. 5)
• トピックの作成 (p. 6)
• トピックへのサブスクライブ (p. 6)
• トピックへの発行 (p. 7)
• クリーンアップ (p. 9)
• Amazon SNS での AWS SDK for Java の使用 (p. 10)
開始する前に
Amazon SNS を使用するには、AWS アカウントが必要です。まだ使用していない場合は、以下の手
順を使用します。
AWS アカウントにサインアップするには
1.
https://aws.amazon.com/ を開き、[AWS アカウントの作成] を選択します。
2.
オンラインの手順に従います。
サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入
力することが求められます。
Amazon SNS の使用を開始するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
API Version 2010-03-31
5
Amazon Simple Notification Service 開発者ガイド
トピックの作成
2.
[Get Started] ボタンをクリックします。
SNS ホームページに移動します。
トピックの作成
Amazon SNS にサインアップすると、トピックを作成できます。トピックとは、メッセージを送信
し、通知を受信する通信チャネルです。発行者と受信者が相互に意思疎通するためのアクセスポイン
トを提供します。このセクションでは、MyTopic という名前のトピックを作成します。
トピックを作成するには
1.
Amazon SNS コンソールで、[Create topic] をクリックします。
[Create topic] ダイアログボックスが表示されます。
2.
[Topic name] ボックスにトピック名を入力します。
3.
[Create topic] をクリックします。
新しいトピックが [Topics] ページに表示されます。
4.
新しいトピックを選択し、トピックの ARN をクリックします。
[Topic Details] ページが表示されます。
5.
次のタスクで使うため、トピックの [ARN] をコピーします。
arn:aws:sns:us-west-2:111122223333:MyTopic
トピックへのサブスクライブ
トピックに対して発行されたメッセージを受信するには、そのトピックへのエンドポイントを受信す
る必要があります。エンドポイントは、Amazon SNS から通知メッセージを受信できるモバイルアプ
リ、ウェブサーバー、E メールアドレス、または Amazon SQS キューです。任意のトピックにエンド
API Version 2010-03-31
6
Amazon Simple Notification Service 開発者ガイド
トピックへの発行
ポイントをサブスクライブし、サブスクリプションが確認されると、エンドポイントはそのトピック
に発行されたすべてのメッセージを受信するようになります。
このセクションでは、前のセクションで作成したトピックにエンドポイントをサブスクライブしま
す。E メールアカウントにトピックメッセージが送信されるように、サブスクリプションを設定しま
す。
トピックにサブスクライブするには
1.
https://console.aws.amazon.com/sns/にある Amazon SNS コンソールを開きます。
2.
[Create subscription] をクリックします。
[Create Subscription] ダイアログボックスが表示されます。
3.
[Topic ARN] フィールドで、前のタスクで作成したトピック ARN(例: arn:aws:sns:uswest-2:111122223333:MyTopic)をペーストします。
4.
[Protocol] ドロップダウンボックスで [Email] を選択します。
5.
[Endpoint] ボックスに、通知を受信するために使用できる E メールアドレスを入力します。
Important
Entourage ユーザーの場合: Entourage は確認用 URL を削除してしまいます。別の E
メールアプリケーションで利用できる E メールアドレスを入力します。
6.
[Create subscription] をクリックします。
7.
メールアプリケーションに移動して AWS Notification から届いたメッセージを開き、リンクをク
リックしてサブスクライブを確認します。
ウェブブラウザに Amazon SNS の確認画面が表示されます。
トピックへの発行
発行者がメッセージをトピックに送信します。新しいメッセージが発行されると、Amazon SNS は
そのメッセージをトピックにサブスクライブされているすべてのエンドポイントに配信しようとしま
す。このセクションでは、前のタスクで定義した E メールアドレスにメッセージを発行します。
トピックに発行するには
1.
https://console.aws.amazon.com/sns/にある Amazon SNS コンソールを開きます。
API Version 2010-03-31
7
Amazon Simple Notification Service 開発者ガイド
プロトコルごとに異なるメッセージを作成する
左のナビゲーションペインで、[Topics] をクリックし、発行先のトピックを選択します。
2.
[Publish to topic] ボタンをクリックします。
[Publish a Message] ページが表示されます。
3.
4.
5.
[Subject] ボックスにメッセージの件名を入力します。
[Message] ボックスに短いメッセージを入力します。
[Publish Message] をクリックします。
確認のダイアログボックスが表示されます。
これで、E メールアプリケーションを使用して、AWS 通知からのメッセージを開き、メッセージを読
めるようになりました。
プロトコルごとに異なるメッセージを作成する
メッセージフォーマットサポートを使用して、送信するメッセージをプロトコルごとにカスタマイズ
することができます。たとえば、E メールと SMS サブスクライバーに送る通知を、各クライアント
タイプに合わせて設計できます。SMS ユーザーは短いメッセージを受信できますが、E メールユー
ザーは、より長い、詳細なメッセージを受信できます。
メッセージをフォーマットしてトピックに発行するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
3.
左のナビゲーションペインで、[Topics] をクリックし、トピックを選択します。
[Publish to topic] ボタンをクリックします。
4.
5.
[Publish a message] ページが表示されます。
[JSON Message Generator] ボタンをクリックします。
[Message] ボックスに短いメッセージを入力します。
6.
7.
この例では、[Target Platforms] で [email] および [sms] を選択します。
[Generate JSON] ボタンをクリックします。
各クライアントタイプに合わせて、メッセージテキストを変更できるようになりました。
API Version 2010-03-31
8
Amazon Simple Notification Service 開発者ガイド
クリーンアップ
SMS メッセージには、最大で 160 個の ASCII (または 70 個の Unicode) 文字を含めることができ
ます。 メッセージがこの長さを超える場合、Amazon SNS はそれを複数のメッセージとして送信
し、それぞれが文字数の制限以内に収められます。 メッセージは単語の途中ではなく、全単語の
境界で切り離されます。
E メールメッセージのサイズは最大 256 KB まで可能です。
以下の例では、デフォルト、E メール、SMS プロトコル用にメッセージを指定します。
{
"default": "Message body text here.",
"email": "Message body text here.",
"sms": "Message body text here."
}
8.
[Publish message] をクリックします。
確認のダイアログボックスが表示されます。
クリーンアップ
トピックを作成し、そこにサブスクライブして、そのトピックにメッセージを発行しました。今度
は、トピックからサブスクライブを解除してからトピックを削除して、環境をクリーンアップしま
す。
トピックからサブスクライブを解除するには
1.
https://console.aws.amazon.com/sns/にある Amazon SNS コンソールを開きます。
左のナビゲーションペインで、[Subscriptions] をクリックします。
[Subscriptions] ページが開きます。
2.
サブスクリプションリストのサブスクリプションを選択します。 複数のサブスクリプションを作
成した場合を除き、このページのリストにはこれだけが表示されます。
3.
[Other actions] ドロップダウンリストをクリックし、[Delete subscription(s)] をクリックします。
[Delete ] 確認ダイアログボックスが表示されます。
4.
[Delete] をクリックします。
サブスクリプションは、まだ確認されていない保留中のサブスクリプションでない限り、削除されま
す。 保留中のサブスクリプションは削除できませんが、3 日間保留中のままの場合、Amazon SNS は
それを自動的に削除します。
トピックを削除するには
https://console.aws.amazon.com/sns/にある Amazon SNS コンソールを開きます。
1.
左のナビゲーションペインで、[Topics] をクリックし、削除するトピックを選択します。
2.
[Actions] ドロップダウンリストをクリックして、[Delete topics] を選択します。
[Delete ] 確認ダイアログボックスが表示されます。
3.
[Delete] をクリックします。
トピックを削除すると、そのトピックのサブスクリプションもすべて削除されます。
API Version 2010-03-31
9
Amazon Simple Notification Service 開発者ガイド
SDK for Java の使用
Amazon SNS での AWS SDK for Java の使用
SDK for Java には AmazonSNSClient というクラスがあります。このクラスを使用して Amazon SNS
とやり取りすることができます。AWS SDK for Java のダウンロードの詳細については、「AWS SDK
for Java」を参照してください。
AmazonSNSClient クラスには、基礎となる Amazon SNS クエリ API のアクションに対応するメ
ソッドが定義されています(これらのアクションについては、『Amazon SNS API リファレンス』を
参照してください)。メソッドを呼び出す場合、対応するリクエストオブジェクトと応答オブジェク
トを作成する必要があります。リクエストオブジェクトには、実際のリクエストで渡す必要がある情
報が含まれます。応答オブジェクトには、リクエストに対する応答で Amazon SNS から返される情報
が含まれます。
たとえば、AmazonSNSClient クラスには、通知を発行できるトピックを作成する createTopic メ
ソッドが用意されています。このメソッドは、基礎となる CreateTopic API アクションに対応しま
す。CreateTopicRequest オブジェクトを作成して、createTopic メソッドで情報を渡します。
以下の import ステートメントが、用意されている Java サンプルで使用されています。
import
import
import
import
import
import
import
import
import
import
com.amazonaws.services.sns.AmazonSNSClient;
com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider;
com.amazonaws.regions.Region;
com.amazonaws.regions.Regions;
com.amazonaws.services.sns.model.CreateTopicRequest;
com.amazonaws.services.sns.model.CreateTopicResult;
com.amazonaws.services.sns.model.SubscribeRequest;
com.amazonaws.services.sns.model.PublishRequest;
com.amazonaws.services.sns.model.PublishResult;
com.amazonaws.services.sns.model.DeleteTopicRequest;
以下の例は、新しい Amazon SNS クライアントを作成する方法、使用する Amazon SNS エンドポイ
ントを設定する方法、および新しいトピックを作成する方法を示しています。
Note
以下の例の一部では、getCachedResponseMetadata メソッドを使用して、以前に実行され
た正常な Amazon SNS リクエストのリクエスト ID をプログラムで取得する方法を示してい
ます。通常、この作業は問題のデバッグに使用され、Amazon Web Services からサポートを
リクエストするときに便利です。
トピックの作成
//create a new SNS client and set endpoint
AmazonSNSClient snsClient = new AmazonSNSClient(new
ClasspathPropertiesFileCredentialsProvider());
snsClient.setRegion(Region.getRegion(Regions.US_EAST_1));
//create a new SNS topic
CreateTopicRequest createTopicRequest = new CreateTopicRequest("MyNewTopic");
CreateTopicResult createTopicResult =
snsClient.createTopic(createTopicRequest);
//print TopicArn
System.out.println(createTopicResult);
//get request id for CreateTopicRequest from SNS metadata
System.out.println("CreateTopicRequest - " +
snsClient.getCachedResponseMetadata(createTopicRequest));
API Version 2010-03-31
10
Amazon Simple Notification Service 開発者ガイド
SDK for Java の使用
この例を実行すると、Eclipse などの IDE のコンソール出力ウィンドウに次のように表示されます。
{TopicArn: arn:aws:sns:us-east-1:123456789012:MyNewTopic}
CreateTopicRequest - {AWS_REQUEST_ID=93f7fc90-f131-5ca3-ab18-b741fef918b5}
TopicArn には、追加の操作で使用する文字列変数が割り当てられます。
String topicArn = "arn:aws:sns:us-east-1:123456789012:MyNewTopic";
次の例は、トピックに受信登録する方法、トピックに発行する方法、およびトピックを削除する方法
を示しています。
トピックへの受信登録
//subscribe to an SNS topic
SubscribeRequest subRequest = new SubscribeRequest(topicArn, "email",
"[email protected]");
snsClient.subscribe(subRequest);
//get request id for SubscribeRequest from SNS metadata
System.out.println("SubscribeRequest - " +
snsClient.getCachedResponseMetadata(subRequest));
System.out.println("Check your email and confirm subscription.");
この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。
SubscribeRequest - {AWS_REQUEST_ID=9b7ff59a-f917-533a-a6bd-be4bf6df0acf}
Check your email and confirm subscription.
トピックへの発行
//publish to an SNS topic
String msg = "My text published to SNS topic with email endpoint";
PublishRequest publishRequest = new PublishRequest(topicArn, msg);
PublishResult publishResult = snsClient.publish(publishRequest);
//print MessageId of message published to SNS topic
System.out.println("MessageId - " + publishResult.getMessageId());
この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。
MessageId - 9b888f80-15f7-5c30-81a2-c4511a3f5229
トピックの削除
//delete an SNS topic
DeleteTopicRequest deleteTopicRequest = new DeleteTopicRequest(topicArn);
snsClient.deleteTopic(deleteTopicRequest);
//get request id for DeleteTopicRequest from SNS metadata
System.out.println("DeleteTopicRequest - " +
snsClient.getCachedResponseMetadata(deleteTopicRequest));
この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。
DeleteTopicRequest - {AWS_REQUEST_ID=067a4980-4e93-5bfc-b88c-0251415bc852}
API Version 2010-03-31
11
Amazon Simple Notification Service 開発者ガイド
概要
Amazon SNS トピックへのアクセ
スの管理
トピック
• 概要 (p. 12)
• Amazon SNS ポリシーの特別な情報 (p. 30)
• Controlling User Access to Your AWS Account (p. 31)
Amazon SNS は、E メール以外のプロトコルもサポートします。HTTP、HTTPS、および Amazon
SQS キューを使用できます。トピックに許可されるエンドポイント、トピックに発行できるユーザー
と条件を詳細に制御できます。この付録では、アクセスコントロールポリシーを使用して制御する方
法を示します。
このセクションでは主に、理解する必要がある基本概念、ポリシーを記述する方法、アマゾン ウェブ
サービス(AWS)がポリシーを評価し、リクエスタにリソースへのアクセスを許可するかどうかを決
定するために使用するロジックについて説明します。このセクションに示す情報の大部分は、特定の
サービスに限ったものではありませんが、知っておく必要がある Amazon SNS 固有の詳細情報もあり
ます。詳細については、「Amazon SNS ポリシーの特別な情報 (p. 30)」を参照してください。
概要
トピック
• アクセスコントロールを使用する場合 (p. 13)
• 主要なコンセプト (p. 13)
• アーキテクチャーの概要 (p. 16)
• アクセスポリシー言語 の使用 (p. 19)
• 評価論理 (p. 21)
• Amazon SNS アクセスコントロールのケース例 (p. 26)
このセクションでは、アクセスポリシー言語 を使用してポリシーを書くにあたって理解しておくべき
基本的なコンセプトを説明します。また アクセスポリシー言語 と連携したアクセスコントロール法の
一般的なプロセスやポリシーの評価方法も合わせて説明します。
API Version 2010-03-31
12
Amazon Simple Notification Service 開発者ガイド
アクセスコントロールを使用する場合
アクセスコントロールを使用する場合
リソースへのアクセス許可やアクセス拒否の方法に高い柔軟性があります。ただし、一般的なユース
ケースは、次に示すように非常にシンプルなものとなっています。
• 他の AWS アカウントに対して、特定のトピックアクションタイプ(パブリッシュなど)を許可し
ます。詳細については、「AWS アカウントに対するトピックへのアクセス許可 (p. 26)」を参照
してください。
• HTTPS プロトコルに対してのみ、トピックのサブスクリプションを制限します。詳細については、
「HTTPS へのサブスクリプション制限 (p. 27)」を参照してください。
• Amazon SQS キューへのメッセージのパブリッシュを Amazon SNS に許可します。詳細について
は、「Amazon SQS キューへのパブリッシュ (p. 27)」を参照してください。
主要なコンセプト
以下のセクションでは、アクセスポリシー言語 を使用するにあたって理解しておくべきコンセプトを
説明します。基本的なものから順に分かりやすく説明していきます。
アクセス許可
アクセス権限とは、特定のリソースへのある種のアクセスに対し、許可または拒否をするというコ
ンセプトです。アクセス許可は、基本的に「A は、条件 D に該当する C を対象とするアクション B
の実行を許可または禁止されている」という形態をとります。例えば、ジェーン(A)は、トピッ
ク(C)に対するパブリッシュ(B)を許可されている。ただし、ジェーンが、HTTP プロトコルを
使用する場合に限る(D)、という具合です。ジェーンがトピック A をパブリッシュした時点で、
ジェーンにアクセス権限があるかどうか、またそのリクエストが定められているアクセス権限の条件
を満たしているかどうかが、サービスによってチェックされます。
ステートメント
ステートメントとは、アクセスポリシー言語 で使用するアクセス権限を定義する書式です。1 つのス
テートメントで 1 つのアクセス権限を定義します。このステートメントの集まり(コンテナドキュメ
ント)のことを、ポリシー(次のコンセプト参照)といいます。
ポリシー
ポリシーとは、1 つ以上のステートメントのコンテナの役目を果たすドキュメント(アクセスポリ
シー言語 に記述)です。例えば、1 つのポリシーには「ジェーンは E メールプロトコルの使用をサブ
スクライブすることができる」というステートメントと、「ボブはトピック A をパブリッシュするこ
とができない」というステートメント、計 2 つのステートメントを含むことができます。以下に示す
図に相当するシナリオでは、「ジェーンは E メールプロトコルの使用をサブスクライブすることがで
きる」というステートメントと、「ボブはトピック A をパブリッシュすることができない」というス
テートメント、計 2 つのポリシーを含むことができます。
API Version 2010-03-31
13
Amazon Simple Notification Service 開発者ガイド
主要なコンセプト
発行者
発行者とは、リソース用のアクセス権限についてのポリシーを記述する人物です。発行者は当然のこ
ととして、リソースの所有者になります。AWS のサービスでは、リソースを所有していない AWS の
ユーザーに対し、ポリシー作成の許可を与えていません。たとえば、ジョンが自ら所有するリソース
へのアクセス許可を定義するポリシーを作成して提出した場合、AWS ではジョンが本人であることが
認証されます。
プリンシパル
プリンシパルとは、ポリシーのアクセス権限を適用される個人またはグループを指します。「A は、
条件 D に該当する C を対象とするアクション B の実行を許可または禁止されている」というポリ
シーにおいては、A がプリンシパルに相当します。ポリシーにおいて「誰でも」プリンシパルに設定
することができます(たとえば、ワイルドカードと特定することによりすべての人々が設定可能であ
ることなど)。たとえば、リクエスタの実際のアイデンティティをベースにアクセス制限をかけたく
なければ、リクエスタの IP アドレスのような、他のアイデンティティの特性をもとにして行うことが
できます。
アクション
アクションとは、プリンシパルに対し、実行が許可されているアクティビティです。「A は、条
件 D に該当する C を対象とするアクション B の実行を許可または禁止されている」というポリ
シーにおいては、文字通り B がアクションに相当します。通常、アクションとは、リクエストに埋
め込まれて AWS に渡されるオペレーションのことです。たとえば、ジェーンが Amazon SNS に
Action=Subscribe としてリクエストを送信する。1 つのポリシーに 1 つまたは複数のアクションを
指定することができます。
リソース
リソースとは、プリンシパルがアクセスを要求するオブジェクトのことです。「A は、条件 D に該
当する C を対象とするアクション B の実行を許可または禁止されている」というポリシーにおいて
は、C がリソースに相当します。
API Version 2010-03-31
14
Amazon Simple Notification Service 開発者ガイド
主要なコンセプト
条件とキー
条件とは、アクセス権限についての制限や詳細のことです。「A は、条件 D に該当する C を対象とす
るアクション B の実行を許可または禁止されている」というポリシーにおいては、文字通り D が条件
に相当します。ポリシーの中でも、記述が最も詳細かつ複雑になるのが、この条件部分です。よく使
用される条件の設定項目は以下のとおりです。
• 日時(特定の日付以前に到着したリクエストのみ処理するなど)
• IP アドレス(特定の CIDR 範囲内の IP アドレスからのリクエストのみ処理するなど)
キーは、アクセス制限に使用される基本項目です。たとえば、リクエストの日時がこれに相当しま
す。
制限は、条件とキーの両方を使用して定義します。具体例を挙げて説明します。2010 年 5 月 30 日以
前のアクセスを制限するには、DateLessThan 条件を使用します。キーは aws:CurrentTime を使
用し、値を 2010-05-30T00:00:00Z に設定します。使用する条件やキーは AWS により定義されて
います。AWS サービス自体(Amazon SQS や Amazon SNS など)によりサービス固有のキーが定義
されている場合もあります。詳細については、「Amazon SNS ポリシーの特別な情報 (p. 30)」を
参照してください。
リクエスタ
リクエスタとは、AWS サービスにリクエストを送信する人物、または特定のリソースへのアクセスを
要求する人物です。リクエスタが AWS に送信するリクエストの内容は、基本的には次のようなもの
です。「条件 D に該当する C に対してアクション B を実行することを許可してください」
評価
評価とは、AWS サービスが受信したリクエストを拒否または許可するかを、該当するポリシーに基づ
いて判断するプロセスのことです。評価論理の詳細については、評価論理 (p. 21)を参照してくださ
い。
Effect
エフェクトとは、評価時にポリシーのステートメントによって返される結果のことです。この値はポ
リシーのステートメントに特定します。使用可能な値は deny と allow です。
たとえば、南極大陸からのすべてのリクエストを拒否するステートメントを記述した場合、リクエス
トの送信元 IP アドレスが南極大陸に割り当てられているものであれば、エフェクトの値は deny とな
ります。また前述の代案として、南極大陸からではないすべてのリクエストを許可するというステー
トメントも考えられます。この場合、リクエストの送信元が南極大陸でなければ、エフェクトの値は
allow となります。2 つのステートメントは同じことを行うように見えますが、アクセスポリシー言語
の論理上では異なるものです。詳細については、「評価論理 (p. 21)」を参照してください。
エフェクトに特定できる値は allow と deny の 2 つだけですが、ポリシーの評価結果には、デフォル
トで拒否、許可および明示的な拒否の 3 種類があります。詳細については、以下のコンセプトおよ
び評価論理 (p. 21)を参照してください。
デフォルトで拒否
デフォルトで拒否とは、ポリシーに許可または明示的な拒否が指定されていない場合に、デフォルト
で適用される拒否のことです。
許可
許可とは、ステートメントに effect=allow が指定されていて、許可条件がすべて満たされている場合
に返される結果です。たとえば、2010 年 4 月 30 日午後 1 時までに受信されたリクエストが許可され
API Version 2010-03-31
15
Amazon Simple Notification Service 開発者ガイド
アーキテクチャーの概要
ます。許可は、すべてのデフォルトで拒否に優先して適用されますが、明示的な拒否が 1 つでもあれ
ば適用されません。
明示的な拒否
明示的な拒否とは、ステートメントに effect=deny が指定されていて、拒否条件がすべて満たされて
いる場合に返される結果です。たとえば、送信元が南極大陸であるすべてのリクエストが拒否されま
す。その他のポリシーによって許可されている場合においても、南極から来たリクエストに対しては
常に拒否します。
アーキテクチャーの概要
以下の図と表に、リソースのアクセスコントロールに関与する主要コンポーネントとそのインタラク
ティブな関わり合いを表します。
API Version 2010-03-31
16
Amazon Simple Notification Service 開発者ガイド
アーキテクチャーの概要
1
リソース所有者。
2
リソース(AWS サービス内に含まれる Amazon SQS キューなど)。
API Version 2010-03-31
17
Amazon Simple Notification Service 開発者ガイド
アーキテクチャーの概要
3
ポリシー。
通常、1 つのリソースに 1 つのポリシーを適用しますが、複数のポリシーを適用することも可
能です。AWS サービスには、ポリシーのアップロードや管理に使用できる API が用意されて
います。
4
リクエスタ、および AWS サービスに対するリクエスト。
5
アクセスポリシー言語 評価コード。
AWS サービス内のコードセットです。受信したリクエストと該当するポリシーを照合して、
リクエスタにリソースへのアクセスを許可するかどうかを判定します。このサービスによる
判定の詳細については、評価論理 (p. 21)を参照してください。
API Version 2010-03-31
18
Amazon Simple Notification Service 開発者ガイド
アクセスポリシー言語 の使用
アクセスポリシー言語 の使用
以下の図と表は、アクセスコントロールと アクセスポリシー言語 の連携方法の通常プロセスを表して
います。
アクセスコントロールと アクセスポリシー言語 を使用したプロセス
1
リソース用ポリシーを記述します。
たとえば、Amazon SNS トピックのアクセス権限を指定するポリシーを記述します。
2
AWS にポリシーをアップロードします。
AWS サービスでは、ポリシーのアップロードに使用できる API を提供しています。たとえ
ば、特定の Amazon SNS トピック用のポリシーをアップロードするために Amazon SNS
SetTopicAttributes アクションを使用します。
3
ある人物から、リソースの使用許可を求めるリクエストが送信されます。
たとえば、ユーザーがトピックの 1 つを利用するために Amazon SNS へリクエストを送信し
ます。
4
どのポリシーがリクエストに適用可能であるか、AWS サービスによって決定されます。
例えば、 Amazon SNS は、すべての利用可能な Amazon SNS ポリシーを調べ、どのポリ
シーが適用可能であるかを決定します(リソースの内容、リクエスタがどのユーザーである
かなどを基準とする)。
5
AWS サービスがポリシーを評価します。
例えば、Amazon SNS は、ポリシーを評価し、トピックの使用許可をリクエスタに付与する
かどうかを決定します。決定論理の詳細については、評価論理 (p. 21)を参照してくださ
い。
API Version 2010-03-31
19
Amazon Simple Notification Service 開発者ガイド
アクセスポリシー言語 の使用
6
AWS サービスにおいては、リクエスタを拒否するか、またはプロセスを継続するかのどちら
かが行われます。
たとえば、ポリシーの評価結果に基づいて、サービスによって「アクセス拒否」エラーがリ
クエスタに返されるか、リクエストのプロセスを継続するかのどちらかが行われます。
関連トピック
• アーキテクチャーの概要 (p. 16)
API Version 2010-03-31
20
Amazon Simple Notification Service 開発者ガイド
評価論理
評価論理
評価時の目標は、特定のリクエストを許可するか拒否するかを判断することです。評価論理は、以下
の複数の基本ルールに従っています。
• デフォルトでは、リソースの使用許可を求めるリクエストについては、リクエスタが自分自身であ
る場合を除いて、拒否を適用する
• 許可はすべてのデフォルトで拒否に優先する
• 明示的な拒否はすべての許可に優先する
• ポリシー評価の順序は重要ではない
以下のフローチャートと考察では、決定方法についての詳細説明を紹介します。
API Version 2010-03-31
21
Amazon Simple Notification Service 開発者ガイド
評価論理
API Version 2010-03-31
22
Amazon Simple Notification Service 開発者ガイド
評価論理
1
決定はデフォルトで拒否から始まります。
2
次に、エンフォースメントコードは、リクエストに適用可能なポリシーすべてを、リソー
ス、プリンシパル、アクション、および条件に基づいて評価します。
エンフォースメントコードによるポリシー評価の順序は重要ではありません。
3
前述のすべてのポリシーにおいて、リクエストに適応する明示的な拒否のインストラクショ
ンがエンフォースメントコードによって検索されます。
仮に 1 つでも見つかった場合、エンフォースメントコードは拒否の決定を返し、プロセスを
終了します(これは明示的な拒否となります。詳細については、明示的な拒否 (p. 16)を参照
してください)。
4
明示的な拒否が見つからなかった場合、リクエストに適応する許可のインストラクションが
エンフォースメントコードによって検索されます。
仮に 1 つでも見つかった場合、エンフォースメントコードは許可の決定を返し、プロセスは
完了します(サービスはリクエストのプロセスを継続します)。
5
許可が見つからなかった場合、最終決定は「拒否」となります(明示的な拒否または許可が見
つからない場合、デフォルトで拒否としてみなされるためです。詳細については、デフォル
トで拒否 (p. 15)を参照してください)。
明示的な拒否とデフォルトで拒否の相互作用
ポリシーがリクエストに直接適用されない場合の結果は、[デフォルトで拒否] となります。例えば、
ユーザーが Amazon SNS の使用をリクエストするが、トピックのポリシーではユーザーの AWS アカ
ウントを全く参照しない場合、そのポリシーの適用結果は [デフォルトで拒否] となります。
ステートメントの条件が満たされていない場合においても、ポリシーの結果としてデフォルトで拒否
となります。ステートメントのすべての条件が満たされている場合、ポリシーのエフェクトエレメン
トの値に基づいて、ポリシーの結果は許可または明示的な拒否のどちらかとなります。条件が満たさ
れていない際にポリシーが行為を特定していない場合、デフォルトの結果としてデフォルトで拒否と
なります。
たとえば、南極大陸から来るリクエストを防ぐとします。その場合、南極大陸から来ていないリクエ
ストにのみ許可を与えるポリシー(ポリシー A1 とする)を記述します。以下の図はポリシーについ
て解説しています。
API Version 2010-03-31
23
Amazon Simple Notification Service 開発者ガイド
評価論理
リクエストがアメリカから送られてきた場合、条件を満たしています(リクエストが南極大陸からの
ものでないため)。従って、そのリクエストは許可されます。リクエストが南極大陸から送られてき
た場合、条件を満たしていないため、ポリシーの結果としてデフォルトで拒否となります。
以下の図のとおり、ポリシー(ポリシー A2 とする)を書き換えることにより、結果を明示的な拒否
に変えることができます。南極大陸から送られてきた場合、ポリシーによってリクエストが明示的に
拒否されます。
リクエストが南極大陸から送られてきた場合、条件を満たしているため、ポリシーの結果として明示
的な拒否となります。
デフォルトで拒否は、許可によって優先されますが、明示的な拒否は優先されないため、デフォルト
で拒否と明示的な拒否との差異は重要となります。たとえば、リクエストが 2010 年 6 月 1 日に届い
た場合、そのリクエストは許可されるという別のポリシーがあるとします。このポリシーが、南極大
陸からのアクセスを制限しているポリシーと併用されている場合、全体の結果にどのような影響を及
ぼすでしょうか?日付ベースのポリシー(ポリシー B とする)が前述のポリシー A1 および A2 と併用
されている場合、全体の結果が比較されます。シナリオ 1 は、ポリシー A1 とポリシー B が併用され
ている場合、シナリオ 2 は、ポリシー A2 とポリシー B が併用されている場合です。以下の図と考察
は、2010 年 6 月 1 日に南極大陸からリクエストが来た場合についての結果を示しています。
API Version 2010-03-31
24
Amazon Simple Notification Service 開発者ガイド
評価論理
API Version 2010-03-31
25
Amazon Simple Notification Service 開発者ガイド
Amazon SNS アクセスコントロールのケース例
このセクションの最初に説明したとおり、シナリオ 1 においては、ポリシー A1 はデフォルトで拒
否を返します。2010 年 6 月 1 日に到着したリクエストは、当然のことながら許可されるため、ポリ
シー B は許可を返します。ポリシー B による許可は、ポリシー A1 のデフォルトで拒否に優先するた
め、結果としてリクエストは許可されます。
このセクションの最初に説明したとおり、シナリオ 2 においては、ポリシー B2 は明示的な拒否を返
します。再度、ポリシー B は許可を返します。ポリシー A2 による明示的な拒否は、ポリシー B の許
可に優先するため、結果としてリクエストは拒否されます。
Amazon SNS アクセスコントロールのケース例
トピック
• AWS アカウントに対するトピックへのアクセス許可 (p. 26)
• HTTPS へのサブスクリプション制限 (p. 27)
• Amazon SQS キューへのパブリッシュ (p. 27)
• AWS リソースに対するトピックへのパブリッシュ許可 (p. 28)
• Amazon S3 バケットに対するトピックへのパブリッシュ許可 (p. 29)
このセクションでは、アクセスコントロールの一般的なユースケース例をいくつか紹介します。
AWS アカウントに対するトピックへのアクセス許可
Amazon SNS システムにトピックがあるとします。最も簡単なケースとして、特定のトピックアク
ション(パブリッシュなど)へのアクセスを 1 つ以上の AWS アカウントに許可するとします。
これは、 Amazon SNS API アクション AddPermission を使用することによって行うことができま
す。これには、トピック、AWS アカウント ID リスト、アクションリスト、ラベルが必要ですが、
トピックのアクセスコントロールポリシー内に新規ステートメントが自動的に作成されます。この場
合、 Amazon SNS により新規ポリシーステートメントが自動的に作成されます。手動でポリシーを
記述する必要はありません。ラベルと共に RemovePermission を呼び出すことによって、後日ポリ
シーステートメントを削除することができます。
たとえば、トピック arn:aws:sns:us-east-1:444455556666:MyTopic を対象に AddPermission を
呼び出す場合(AWS アカウント ID1111-2222-3333、Publish アクション、ラベル give-1234publish を使用)、Amazon SNS が以下のアクセスコントロールポリシーステートメントを作成
し、挿入します。
{
"Version":"2012-10-17",
"Id":"AWSAccountTopicAccess",
"Statement" :[
{
"Sid":"give-1234-publish",
"Effect":"Allow",
"Principal" :{
"AWS":"111122223333"
},
"Action":["sns:Publish"],
"Resource":"arn:aws:sns:us-east-1:444455556666:MyTopic"
}
]
}
一度このステートメントが追加されてしまえば、AWS アカウント 1111-2222-3333 のユーザーはト
ピックへのメッセージをパブリッシュすることができます。
API Version 2010-03-31
26
Amazon Simple Notification Service 開発者ガイド
Amazon SNS アクセスコントロールのケース例
HTTPS へのサブスクリプション制限
このユースケースでは、セキュリティのため HTTPS によってのみトピックに対するサブスクリプ
ションリクエストを与えます。
Amazon SNS AddPermission アクションでは、トピックへのアクセスを許可できるだけです。プ
ロトコル制限を指定するには、独自のポリシーを記述する必要があります。つまり、独自のポリシー
を記述し、Policy アクションを使用してトピックの SetTopicAttributes 属性をその新しいポリ
シーに設定します。
以下の全ポリシーの用例は、AWS アカウント ID 1111-2222-3333 にトピックからの通知サブスクリ
プション能力を与えるものです。
{
"Version":"2012-10-17",
"Id":"SomePolicyId",
"Statement" :[
{
"Sid":"Statement1",
"Effect":"Allow",
"Principal" :{
"AWS":"111122223333"
},
"Action":["sns:Subscribe"],
"Resource": "arn:aws:sns:us-east-1:444455556666:MyTopic",
"Condition" :{
"StringEquals" :{
"sns:Protocol":"https"
}
}
}
]
}
Amazon SQS キューへのパブリッシュ
このユースケースでは、トピックから Amazon SQS キューへのメッセージをパブリッシュするものと
します。 Amazon SNS のように、Amazon SQS も Amazon のアクセスコントロールポリシー言語を
使用します。 Amazon SNS からのメッセージ送信許可するには、キューにおいてポリシーを設定する
ために Amazon SQS アクション SetQueueAttributes を使用することが必要となります。
Amazon SQS AddPermission アクションでは、条件付きポリシーステートメントを作成できませ
ん。これを作成するには、独自のポリシーを記述する必要があります。
以下の用例は、Amazon SQS ポリシー(キューへのアクセスコントロール)を示したもので、
Amazon SNS ポリシー(トピックへのアクセスコントロール)を示したものではありませんので、ご
注意ください。アクションとは Amazon SQS アクションのことで、リソースとはキューの Amazon
Resource Name(ARN)のことです。アクションと共にキューの属性を QueueArn 取得することによ
り、GetQueueAttributes キューの ARN を決定する事ができます。
{
"Version":"2012-10-17",
"Id":"MyQueuePolicy",
"Statement" :[
{
"Sid":"Allow-SNS-SendMessage",
API Version 2010-03-31
27
Amazon Simple Notification Service 開発者ガイド
Amazon SNS アクセスコントロールのケース例
"Effect":"Allow",
"Principal" :"*",
"Action":["sqs:SendMessage"],
"Resource": "arn:aws:sqs:us-east-1:444455556666:MyQueue",
"Condition" :{
"ArnEquals" :{
"aws:SourceArn":"arn:aws:sns:us-east-1:444455556666:MyTopic"
}
}
}
]
}
このポリシーには、aws:SourceArn キューへ送信されたメッセージのソースに基づいたキュー
へのアクセス制限のための条件が使用されます。組織の所有するトピックの 1 つから送信され
たメッセージであった場合、 Amazon SNS に対し、キューからのメッセージ送信を許可するた
めに、このタイプのポリシーを使用することができます。この場合、ARN は arn:aws:sns:useast-1:444455556666:MyTopic であるトピックの 1 つを特定します。
前述のポリシーを例として、Amazon SQS ポリシーを記述したり、特定のキューに追加することがで
きます。 Amazon SNS、およびその他の AWS 製品へのアクセスを許可しています。新規作成された
すべてのトピックに対し、 Amazon SNS からデフォルトポリシーが与えられます。デフォルトポリ
シーによって、その他のすべての AWS 製品に対し、トピックへのアクセスが与えられます。このデ
フォルトポリシーは、お客様所有の AWS リソースに代わり aws:SourceArn AWS 製品が、トピック
のみへのアクセスするものであることを保証するための条件です。
AWS リソースに対するトピックへのパブリッシュ許可
この場合、他の AWS アカウントのリソース(Amazon S3 バケット、Amazon EC2 インスタン
ス、Amazon SQS キューなど)がお客様のトピックへのパブリッシュができるように、トピックのポ
リシーを設定します。この用例は、お客様が自身でポリシーの記述をするものと仮定され、お客様の
新規ポリシーへの SetTopicAttributes トピックの属性を設定するためのアクション Policy とし
て使用されます。
以下のステートメント例では、前述のポリシーのトピック所有者は 1111-2222-3333、また AWS リ
ソース所有者は 4444-5555-6666 となっています。この例では、AWS アカウント ID4444-5555-6666
には、アカウントによって所有されている、いかなる AWS リソースからでも、マイトピックへのパ
ブリッシュを行うことのできる能力が与えられています。
{
"Version":"2012-10-17",
"Id":"MyAWSPolicy",
"Statement" :[
{
"Sid":"My-statement-id",
"Effect":"Allow",
"Principal" :"*",
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-1:111122223333:My-Topic",
"Condition":{
"StringEquals":{
"AWS:SourceAccount":"444455556666"
}
}
}
]
}
API Version 2010-03-31
28
Amazon Simple Notification Service 開発者ガイド
Amazon SNS アクセスコントロールのケース例
Amazon S3 バケットに対するトピックへのパブリッシュ許可
この場合、他の AWS アカウントの Amazon S3 バケットがお客様のトピックへのパブリッシュがで
きるよう、トピックのポリシーを設定します。Amazon S3 からの通知の発行の詳細については、「バ
ケットイベントの通知の設定」を参照してください。
この用例は、お客様が自身でポリシーの記述をするものと仮定され、お客様の新規ポリシーへの
SetTopicAttributes トピックの属性を設定するためのアクション Policy として使用されます。
以下のステートメント例では、ArnLike リクエストの(AWS:SourceARN)を作成するリソースの
ARN が、Amazon S3 ARN であることを確認するための条件が使用されています。Amazon S3 バ
ケットのセット、または特定のバケットにおいてもアクセス権限を制限するための同様の条件を使
用する事ができます。この例では、トピック所有者は 1111-2222-3333、また Amazon S3 所有者は
4444-5555-6666 となっています。例によって明示されているように、4444-5555-6666 によって所有
されている、いかなる Amazon S3 バケットに対してもマイトピックへのパブリッシュが許可されま
す。
{
"Version":"2012-10-17",
"Id":"MyAWSPolicy",
"Statement" :[
{
"Sid":"My-statement-id",
"Effect":"Allow",
"Principal" :"*",
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-1:111122223333:My-Topic",
"Condition":{
"StringEquals":{ "AWS:SourceAccount":"444455556666" } ,
"ArnLike": {"AWS:SourceArn": "arn:aws:s3:*:*:*" }
}
}
]
}
API Version 2010-03-31
29
Amazon Simple Notification Service 開発者ガイド
Amazon SNS ポリシーの特別な情報
Amazon SNS ポリシーの特別な情報
次のリストは、アクセス制御の Amazon SNS 実装に固有の情報を示しています。
• 各ポリシーは、1 つのトピックだけを対象とする必要があります (ポリシーを作成する際は、異なる
トピックを対象とするステートメントを含めないでください)。
• 各ポリシーには固有のポリシー (Id)が必要です。
• ポリシーを構成する各ステートメントには固有のステートメント (sid)が必要です。
Amazon SNS ポリシー制限
次の表は、ポリシーの最大限度の情報を示しています。
名前
最大限度
Bytes
30 KB
ステートメント
100
プリンシパル
1~200 (0 は無効)
リソース
1 (0 は無効。値はポリシーのトピックの ARN と一致す
る必要があります)
Amazon SNS ポリシーの有効なアクション
Amazon SNS は、次の表に示すアクションをサポートします。
アクション
説明
sns:AddPermission
トピックポリシーへのアクセス許可の追加を許可します。
sns:DeleteTopic
トピックを削除する許可を与えます。
sns:GetTopicAttributes
すべてのトピック属性を受け取る許可を与えます。
sns:ListSubscriptionsByTopic
特定のトピックへのサブスクリプションをすべて取得することを
許可します。
sns:Publish
トピックやエンドポイントに発行することを許可します。詳細に
ついては、『Amazon Simple Notification Service API Reference』
の「Publish」を参照してください。
sns:RemovePermission
トピックポリシーのアクセス許可を削除する許可を与えます。
sns:SetTopicAttributes
トピックの属性を設定する許可を与えます。
sns:Subscribe
トピックにサブスクライブすることを許可します。
Amazon SNS のキー
Amazon SNS では以下のサービス固有のキーを使用します。これらは、Subscribe リクエストへの
アクセスを制限するポリシーに使用できます。
API Version 2010-03-31
30
Amazon Simple Notification Service 開発者ガイド
Controlling User Access to Your AWS Account
• sns:Endpoint - Subscribe リクエストからの URL、E メールアドレス、または ARN、あるいは以
前に確認された受信登録。文字列条件とともに使用(「Amazon SNS のポリシー例 (p. 36)」を
参照)して、特定のエンドポイント(*@example.com など)へのアクセスを制限します。
• sns:Protocol - Subscribe リクエストまたは以前に確認された受信登録からの protocol 値。文字
列条件とともに使用(「Amazon SNS のポリシー例 (p. 36)」を参照)して、特定の配信プロト
コル(https など)への発行を制限します。
Important
sns:Endpoint によるアクセスの制御にポリシーを使用するときは、将来、DNS の問題がエン
ドポイントの名前解決に影響する可能性があるため、注意が必用です。
Controlling User Access to Your AWS Account
トピック
• IAM ポリシーと Amazon SNS ポリシーの連携 (p. 31)
• Amazon SNS の ARN (p. 34)
• Amazon SNS のアクション (p. 35)
• Amazon SNS のキー (p. 35)
• Amazon SNS のポリシー例 (p. 36)
• 一時的なセキュリティ認証情報の使用 (p. 38)
Amazon Simple Notification Service は AWS Identity and Access Management(IAM)と統合されてい
るため、AWS アカウントのユーザーが Amazon SNS リソースで実行できる Amazon SNS アクショ
ンを指定することができます。ポリシーで特定のトピックを指定できます。たとえば、Publish アク
ションを AWS のアカウントの特定のトピックで使用するアクセス許可を組織の特定のユーザーに付
与する IAM ポリシーを作成するときに、変数を使用できます。詳細については、『 Using IAM』ガイ
ドの Policy Variables に関するセクションを参照してください。
Important
IAM で Amazon SNS を使用しても、Amazon SNS の使用方法は変わりません。Amazon SNS
アクションに変更はなく、ユーザーおよびアクセスコントロールに関連する新しい Amazon
SNS アクションはありません。
Amazon SNS アクションおよびリソースに対応するポリシーの例については、Amazon SNS のポリ
シー例 (p. 36) を参照してください。
IAM ポリシーと Amazon SNS ポリシーの連携
IAM ポリシーを使用して、Amazon SNS アクションおよびトピックへのユーザーのアクセスを制限し
ます。IAM ポリシーでは、他の AWS アカウントではなく、自分の AWS アカウント内のユーザーに
のみに対してアクセスを制限できます。
Amazon SNS ポリシーは特定のトピックに使用して、そのトピックを操作できるユーザー(メッセー
ジを発行できるユーザー、受信登録できるユーザーなど)を制限します。Amazon SNS ポリシーで
は、他の AWS アカウント、または自分の AWS アカウント内のユーザーにアクセス許可を付与でき
ます。
ユーザーに Amazon SNS トピックのアクセス許可を付与するには、IAM ポリシー、Amazon SNS ポ
リシー、またはその両方を使用できます。ほとんどの場合、どちらでも同じ結果が得られます。た
API Version 2010-03-31
31
Amazon Simple Notification Service 開発者ガイド
IAM ポリシーと Amazon SNS ポリシーの連携
とえば、以下の図は、同じ働きを持つ IAM ポリシーと Amazon SNS ポリシーを示しています。IAM
ポリシーでは、AWS アカウントの topic_xyz というトピックに対して Amazon SNS の Subscribe
アクションを許可します。IAM ポリシーは、ユーザー Bob と Susan にアタッチされています(つま
り、Bob と Susan はポリシーに記述されているアクセス許可を持っています)。同様に、Amazon
SNS ポリシーでも topic_xyz の Subscribe にアクセスする許可を Bob と Susan に付与します。
Note
先の例では、条件のない単純なポリシーを示しました。どちらのポリシーでも特定の条件を
指定して、同じ結果を得ることができます。
AWS IAM ポリシーと Amazon SNS ポリシーには、Amazon SNS ポリシーシステムでは他の AWS ア
カウントにアクセス許可を付与できますが、IAM ポリシーではできないという違いが 1 つあります。
両方のシステムを同時に使用してどのようにアクセス許可を管理するかは、ニーズに応じて決めてく
ださい。以下の例では、2 つのポリシーシステムがどのように連携するかを示しています。
API Version 2010-03-31
32
Amazon Simple Notification Service 開発者ガイド
IAM ポリシーと Amazon SNS ポリシーの連携
Example 1
この例では、IAM ポリシーおよび Amazon SNS ポリシーの両方が Bob に適用されます。IAM ポリ
シーは、いずれの AWS アカウントのトピックに対しても Bob に Subscribe のアクセス許可を付与
しますが、Amazon SNS ポリシーは特定のトピック(topic_xyz)Publish を使用するアクセス許可
を Bob に付与します。以下の図に、そのコンセプトを示します。
Bob が AWS アカウントの任意のトピックを受信登録するリクエストを送信した場合、そのアクショ
ンは IAM ポリシーで許可されます。Bob が topic_xyz にメッセージを発行するリクエストを送信する
と、そのアクションは Amazon SNS ポリシーで許可されます。
API Version 2010-03-31
33
Amazon Simple Notification Service 開発者ガイド
Amazon SNS の ARN
Example 2
この例は、例 1 で示した、Bob に 2 つのポリシーが適用されている状態に基づいています。Bob は、
必要のない topic_xyz にメッセージを発行しているため、トピックに発行する機能を完全に削除する
とします。最も簡単な方法は、すべてのトピックに対する Bob の Publish アクションを拒否するよ
うな IAM ポリシーを追加することです。この 3 番目のポリシーは、topic_xyz に発行するアクセス許
可を Bob に与えた元の Amazon SNS ポリシーより優先されます。明示的な拒否は、常に許可よりも
優先されるためです(ポリシー評価のロジックの詳細については、「評価論理 (p. 21)」を参照)。以
下の図に、そのコンセプトを示します。
Amazon SNS アクションおよびリソースに対応するポリシーの例については、Amazon SNS のポリ
シー例 (p. 36) を参照してください。Amazon SNS ポリシーの記述の詳細については、Amazon
SNS の技術文書を参照してください。
Amazon SNS の ARN
Amazon SNS では、トピックはポリシーで指定できる唯一のリソースタイプです。トピックの
Amazon リソースネーム(ARN)形式を以下に示します。
arn:aws:sns:region:account_ID:topic_name
ARN の詳細については、IAM ユーザーガイド の ARN を参照してください。
API Version 2010-03-31
34
Amazon Simple Notification Service 開発者ガイド
Amazon SNS のアクション
Example
以下に、AWS アカウントの 123456789012 に属する us-east-1 リージョンの my_topic いうトピック
の ARN を示します。
arn:aws:sns:us-east-1:123456789012:my_topic
Example
Amazon SNS によりサポートされる各リージョンに my_topic という名前のトピックがある場合、次
の ARN を使用してトピックを指定できます。
arn:aws:sns:*:123456789012:my_topic
トピック名には、ワイルドカード * および?を使用できます。たとえば、以下では、bob_ をプレ
フィックスとして付けて Bob によって作成されたすべてのトピックを参照します。
arn:aws:sns:*:123456789012:bob_*
利便性を高めるため、トピックを作成すると、Amazon SNS は応答でトピックの ARN を返します。
Amazon SNS のアクション
IAM ポリシーでは、Amazon SNS で提供されている任意のアクションを指定できます。ただ
し、ConfirmSubscription および Unsubscribe アクションでは認証を必要としません。つまり、
ポリシーでこれらのアクションを指定しても、IAM はこれらのアクションへのユーザーのアクセスを
制限しません。
ポリシーで指定する各アクションには、小文字の文字列 sns: をプレフィックスとして付ける必要が
あります。たとえば、すべての Amazon SNS アクションを指定するには、sns:* を使用します。ア
クションのリストについては、「Amazon Simple Notification Service API Reference」を参照してくだ
さい。
Amazon SNS のキー
Amazon SNS は、以下の AWS 全体のポリシーキーに加えて、いくつかのサービス固有のキーを実装
しています。
各 AWS サービスでサポートされるコンテキストキーと AWS 全体のポリシーキーのリストについて
は、『IAM ユーザーガイド』の「AWS サービスアクションと条件コンテキストキー」と「条件に利用
可能なキー」を参照してください。
Amazon SNS のキー
Amazon SNS では以下のサービス固有のキーを使用します。Subscribe リクエストへのアクセスを
制限するポリシーで、これらのキーを使用します。
• sns:Endpoint - Subscribe リクエストからの URL、E メールアドレス、または ARN、あるいは以
前に確認された受信登録。文字列条件とともに使用(「Amazon SNS のポリシー例 (p. 36)」を
参照)して特定のエンドポイント(*@yourcompany.com など)へのアクセスを制限します。
• sns:Protocol - Subscribe リクエストまたは以前に確認された受信登録からの protocol 値。文字
列条件とともに使用(「Amazon SNS のポリシー例 (p. 36)」を参照)して、特定の配信プロト
コル(https など)への発行を制限します。
API Version 2010-03-31
35
Amazon Simple Notification Service 開発者ガイド
Amazon SNS のポリシー例
Amazon SNS のポリシー例
このセクションでは、Amazon SNS へのユーザーアクセスをコントロールするための簡単なポリシー
をいくつか紹介します。
Note
将来的には、Amazon SNS に新しいアクションが追加される可能性があります。これらは、
以下のポリシーのいずれかに論理的に含まれ、ポリシーに記載された目的に基づいている必
要があります。
Example 1: グループでトピックの作成と管理を許可する
この例では、CreateTopic、ListTopics、SetTopicAttributes、および DeleteTopic へのア
クセスを許可するポリシーを作成します。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":
["sns:CreateTopic","sns:ListTopics","sns:SetTopicAttributes","sns:DeleteTopic"],
"Resource":"*"
}
]
}
Example 2: IT グループが特定のトピックにメッセージを発行することを許可する
この例では、IT のグループを作成し、対象の特定のトピックで Publish へのアクセスを許可するポ
リシーを割り当てます。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":"sns:Publish",
"Resource":"arn:aws:sns:*:123456789012:topic_xyz"
}
]
}
API Version 2010-03-31
36
Amazon Simple Notification Service 開発者ガイド
Amazon SNS のポリシー例
Example 3: AWS アカウントのユーザーが、トピックを受信登録できるようにする
この例では、sns:Protocol および sns:Endpoint ポリシーキーの文字列一致条件を使って
Subscribe アクションにアクセスを許可するポリシーを作成します。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":["sns:Subscribe"],
"Resource":"*",
"Condition":{
"StringLike": {
"SNS:Endpoint":"*@yourcompany.com"
},
"StringEquals":{
"sns:Protocol":"email"
}
}
}
]
}
Example 4: パートナーが特定のトピックにメッセージを発行することを許可する
Amazon SNS ポリシーまたは IAM ポリシーを使用して、パートナーが特定のトピックに発行するこ
とを許可できます。パートナーに AWS アカウントがある場合は、Amazon SNS ポリシーを使用した
方が簡単になる可能性があります。ただし、AWS のセキュリティ認証情報を所有するパートナー会社
のユーザーは、トピックにメッセージを発行できます。この例では、特定のユーザー(またはアプリ
ケーション)へのアクセスを制限するとします。このためには、パートナーを社内のユーザーのよう
に扱い、Amazon SNS ポリシーではなく IAM ポリシーを使用する必要があります。
この例では、パートナー企業を表す WidgetCo というグループを作成し、パートナー企業でアクセス
許可が必要な特定の人(またはアプリケーション)に対してユーザーを作成し、そのユーザーをグ
ループに入れます。
次に、Publish グループに、WidgetPartnerTopic という名前の特定のトピックへのアクセスを許可す
るポリシーをアタッチします。
また、WidgetCo グループがトピックに対して他の操作を実行できないようにするた
め、WidgetPartnerTopic 以外のトピックで Publish 以外の Amazon SNS アクションへのアクセス許
可を拒否するステートメントを追加します。これは、システム内の他の場所に、Amazon SNS への幅
広いアクセスをユーザーに許可する広範なポリシーが存在する場合にのみ必要です。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":"sns:Publish",
"Resource":"arn:aws:sns:*:123456789012:WidgetPartnerTopic"
},
{
"Effect":"Deny",
"NotAction":"sns:Publish",
"NotResource":"arn:aws:sns:*:123456789012:WidgetPartnerTopic"
}
]
}
API Version 2010-03-31
37
Amazon Simple Notification Service 開発者ガイド
一時的なセキュリティ認証情報の使用
一時的なセキュリティ認証情報の使用
IAM では、IAM ユーザーが独自のセキュリティ認証情報を使用して作成されるのに加えて、AWS
サービスおよびリソースへのアクセスを許可するユーザーに一時的なセキュリティ認証情報を付
与することもできます。AWS アカウントを持つユーザー(つまり、IAM ユーザー)を管理できま
す。AWS アカウントを持たないシステムのユーザー(つまり、統合ユーザー)を管理することもでき
ます。さらに「ユーザー」を、AWS リソースにアクセスするために作成するアプリケーションにする
こともできます。
Amazon SNS に対するリクエストを作成するときに、これらの一時的なセキュリティ認証情報を使用
できます。API ライブラリによって、これらの認証情報を使用して必要な署名値が計算されて、リク
エストが認証されます。期限の切れた認証情報を使用してリクエストを送信すると、Amazon SNS に
よってリクエストが拒否されます。
一時的なセキュリティ証明書の IAM サポートの詳細については、Using IAM の Granting Temporary
Access to Your AWS Resources を参照してください。
Example 一時的なセキュリティ認証情報を使用した Amazon SNS リクエストの認証
以下の例は、一時的なセキュリティ認証情報を取得して Amazon SNS リクエストを認証する方法を示
しています。
http://sns.us-east-1.amazonaws.com/
?Name=My-Topic
&Action=CreateTopic
&Signature=gfzIF53exFVdpSNb8AiwN3Lv%2FNYXh6S%2Br3yySK70oX4%3D
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2010-03-31T12%3A00%3A00.000Z
&SecurityToken=SecurityTokenValue
&AWSAccessKeyId=Access Key ID provided by AWS Security Token Service
API Version 2010-03-31
38
Amazon Simple Notification Service 開発者ガイド
概要
Amazon SNS モバイルプッシュ通
知
Amazon SNS によって、モバイルデバイスのアプリケーションにプッシュ通知メッセージを直接送信
できます。モバイルエンドポイントに送信されたプッシュ通知メッセージは、メッセージアラート、
バッジ更新、または音声アラートとしてモバイルアプリケーションに表示できます。
概要
以下のサポートされているプッシュ通知サービスのいずれかを使用して、モバイルデバイスとデスク
トップの両方にプッシュ通知メッセージを送信します。
• Amazon Device Messaging(ADM)
• iOS および Mac OS X 用の Apple Push Notification Service (APNS)
• Baidu Cloud Push(Baidu)
• Android 用 Google クラウドメッセージング(GCM)
• Windows Phone 用 Microsoft プッシュ通知サービス(MPNS)
• Windows プッシュ通知サービス(WNS)
次の図は、モバイルエンドポイントに直接プッシュ通知メッセージを送信するために Amazon SNS を
使用する方法の概要を示しています。
APNS や GCM などのプッシュ通知サービスは、各アプリケーションと、サービスを使用するために
登録されている関連モバイルデバイスとの接続を維持します。アプリケーションおよびモバイルデバ
イスの登録時に、プッシュ通知サービスはデバイストークンを返します。Amazon SNS はデバイス
トークンを使用して、モバイルエンドポイントを作成します。ここに直接プッシュ通知メッセージを
API Version 2010-03-31
39
Amazon Simple Notification Service 開発者ガイド
前提条件
送信できます。Amazon SNS が他のプッシュ通知サービスと通信できるようにするには、プッシュ
通知サービス認証情報を Amazon SNS に送信して、代理で使用できるようにします。詳細について
は、Amazon SNS モバイルプッシュを使用するために必要な手順の概要 (p. 41)を参照してくださ
い。
直接プッシュ通知メッセージを送信するだけでなく、Amazon SNS を使用して、トピックにサブ
スクライブされているモバイルエンドポイントにメッセージを送信することもできます。このコン
セプトは、「Amazon Simple Notification Service とは (p. 1)」に説明されているように、Amazon
SQS、HTTP/S、E メール、SMS などその他のエンドポイントタイプをトピックにサブスクライブす
るのと同じです。違いは、Amazon SNS はサブスクライブされたモバイルエンドポイントがトピック
に送信されたプッシュ通知メッセージを受信するためにプッシュ通知サービスを通じて通信を行うこ
とです。次の図は、モバイルエンドポイントを Amazon SNS トピックへのサブスクライバーとして示
しています。モバイルエンドポイントは、他のエンドポイントとは異なり、プッシュ通知サービスを
使用して通信します。
前提条件
Amazon SNS モバイルプッシュ通知の使用を開始するには、以下が必要です。
• サポートされているプッシュ通知サービスにいずれかに接続するための認証情報セット:
ADM、APNS、Baidu、GCM、MPNS、または WNS。
• モバイルアプリケーションやデバイスのデバイストークンまたは登録 ID。
• モバイルエンドポイントにプッシュ通知メッセージを送信するように設定された Amazon SNS。
• 登録済みで、サポートされているいずれかのプッシュ通知サービスを使用するように設定されたモ
バイルアプリケーション。
アプリケーションをプッシュ通知サービスに登録するには、いくつかのステップが必要で
す。Amazon SNS は、モバイルエンドポイントに直接プッシュ通知メッセージを送信するために、
ユーザーがプッシュ通知サービスに対して指定する情報の一部を必要とします。一般的に、プッシュ
通知サービスに接続するための必須認証情報、プッシュ通知サービスから受け取ったデバイストーク
ンまたは登録 ID(モバイルデバイスおよびモバイルアプリケーションを表すもの)、およびプッシュ通
知サービスに登録されているモバイルアプリケーションが必要です。
認証情報の正確な形式はモバイルプラットフォームごとに異なりますが、どの場合も、これらの認証
情報はプラットフォームに接続するときに送信する必要があります。モバイルアプリケーションごと
に 1 つの認証情報セットが発行され、そのアプリケーションのどのインスタンスにメッセージを送信
する際もその認証情報セットを使用する必要があります。
API Version 2010-03-31
40
Amazon Simple Notification Service 開発者ガイド
モバイルプッシュを使用するために必要な手順の概要
具体的な名前は、どのプッシュ通知サービスが使用されるかによって異なります。たとえば、プッ
シュ通知サービスとして APNS を使用する場合は、デバイストークンが必要になります。一方、GCM
を使用する場合は、デバイストークンに相当するものが登録 ID と呼ばれます。デバイストークンまた
は登録 IDは、モバイルデバイスのオペレーティングシステムによってアプリケーションに送信される
文字列です。特定のモバイルデバイスで実行されるモバイルアプリのインスタンスを一意に識別する
ため、このアプリケーション/デバイスペアの一意識別子と考えることができます。
Amazon SNS は、認証情報 (および他のいくつかの設定) をプラットフォームアプリケーションリソー
スとして保存します。デバイストークン (ここでもいくつかの追加設定を使用) は、プラットフォー
ムエンドポイントと呼ばれるオブジェクトとして表現されます。各プラットフォームエンドポイント
は、1 つの特定のプラットフォームアプリケーションに属し、対応するプラットフォームアプリケー
ションに保存された認証情報を使用してすべてのプラットフォームアプリケーションと通信できま
す。
以降のセクションでは、サポートされているプッシュ通知サービスごとの前提条件が示されていま
す。前提条件の情報を取得した後は、AWS マネジメントコンソール または Amazon SNS モバイル
プッシュ API を使用して、プッシュ通知メッセージを送信できます。詳細については、「Amazon
SNS モバイルプッシュを使用するために必要な手順の概要 (p. 41)」を参照してください。
Amazon SNS モバイルプッシュを使用するために
必要な手順の概要
このセクションでは、Amazon SNS モバイルプッシュを使用するために必要な手順の概要を示しま
す。まず、サポートするモバイルプラットフォームについて、必要な認証情報とデバイストークンの
取得などの前提条件を満たす必要があります。詳細については、「前提条件 (p. 40)」を参照して
ください。その後、Amazon SNS でモバイルプラットフォームから取得した情報を使用して、モバ
イルデバイスにメッセージを送信します。このセクションは、「Amazon SNS モバイルプッシュの使
用 (p. 81)」で説明されている Amazon SNS モバイルプッシュの使用にかかわる手順をよりすばや
く理解するために役立ちます。
ステップ 1: 認証情報をモバイルプラットフォーム
にリクエストする
Amazon SNS モバイルプッシュを使用するには、まず、必要な認証情報をモバイルプラットフォーム
にリクエストする必要があります。詳細については、このガイドの後方にある各プラットフォームの
「使用開始」セクションを参照してください。
ステップ 2: トークンをモバイルプラットフォーム
にリクエストする
次に、返された認証情報を使用して、モバイルアプリおよびデバイス用のトークンをモバイルプラッ
トフォームにリクエストします。受け取ったトークンはモバイルアプリおよびデバイスの識別に使用
API Version 2010-03-31
41
Amazon Simple Notification Service 開発者ガイド
ステップ 3: プラットフォームアプリ
ケーションオブジェクトを作成する
されます。詳細については、このガイドの後方にある各プラットフォームの「使用開始」セクション
を参照してください。
ステップ 3: プラットフォームアプリケーションオ
ブジェクトを作成する
続いて、認証情報とトークンを使用して、プラットフォームアプリケーションオブジェクト
(PlatformApplicationArn)を Amazon SNS に作成します。詳細については、「プラットフォームエ
ンドポイントの作成とデバイストークンの管理 (p. 87)」を参照してください。
ステップ 4: プラットフォームエンドポイントオブ
ジェクトを作成する
その後、PlatformApplicationArn を使用して、プラットフォームエンドポイントオブジェクト
(EndpointArn)を Amazon SNS に作成します。詳細については、「プラットフォームエンドポイン
トの作成とデバイストークンの管理 (p. 87)」を参照してください。
ステップ 5: メッセージをモバイルエンドポイント
に発行する
最後に、EndpointArn を使用して、メッセージをモバイルデバイス上のアプリに発行します。詳細に
ついては、『Amazon Simple Notification Service API Reference』の「モバイルデバイスへのメッセー
ジの直接的な送信 (p. 92)」と「Publish API」を参照してください。
API Version 2010-03-31
42
Amazon Simple Notification Service 開発者ガイド
ADM の使用開始
Amazon Device Messaging の使用開始
Amazon Device Messaging(ADM)は、Kindle Fire アプリにプッシュ通知メッセージを送信できるよ
うにするサービスです。このセクションでは、ADM の前提条件を取得し、Amazon SNS および ADM
を使用してプッシュ通知メッセージを送信する方法について説明します。
トピック
• ADM の前提条件 (p. 43)
• ステップ 1: ADM サービスを有効にして Kindle Fire アプリを作成する (p. 43)
• ステップ 2: クライアント ID およびクライアントシークレットを取得する (p. 44)
• ステップ 3: API キーを取得する (p. 44)
• ステップ 4: 登録 ID を取得する (p. 45)
• ステップ 5: Amazon SNS および ADM を使用してプッシュ通知メッセージを Kindle Fire に送信す
る (p. 46)
ADM の前提条件
Amazon SNS および ADM を使用して Kindle Fire アプリにプッシュ通知を送信するには、以下が必要
です。
• ADM サービスを有効にした Kindle Fire アプリ
• クライアント ID とクライアントシークレット
• API キー
• 登録 ID
すでにこれらの前提条件を満たしている場合は、Amazon SNS コンソールまたは Amazon SNS API
を使用して Kindle Fire アプリにプッシュ通知メッセージを送信できます。Amazon SNS コンソールの
使用方法の詳細については、「Amazon SNS モバイルプッシュの使用 (p. 81)」を参照してくださ
い。Amazon SNS API の使用方法の詳細については、「ステップ 5: Amazon SNS および ADM を使用
してプッシュ通知メッセージを Kindle Fire に送信する (p. 46)」を参照してください。
ステップ 1: ADM サービスを有効にして Kindle Fire
アプリを作成する
Kindle Fire アプリにプッシュ通知メッセージを送信するには、Amazon 開発者アカウントを持ってい
て、開発環境をセットアップし、ADM を有効にして Kindle Fire アプリを作成し、アプリを ADMに登
録している必要があります。詳細については、「アプリを ADM と統合する」を参照してください。
Kindle Fire アプリを作成するには
1.
アカウントの作成の次の手順に従って Amazon 開発者アカウントを作成します。
API Version 2010-03-31
43
Amazon Simple Notification Service 開発者ガイド
ステップ 2: クライアント ID および
クライアントシークレットを取得する
2.
Kindle Fire タブレット用のモバイルアプリを開発するための開発環境をセットアップします。詳
細については、「開発環境のセットアップ」を参照してください。
3.
Kindle Fire アプリを作成します。詳細については、「初めての Kindle Fire アプリの作成」を参照
してください。
Note
すでに Kindle Fire アプリを ADM に登録していない場合は、手始めに AWS に用意されて
いるサンプル Kindle Fire アプリをテンプレートとして使用することもできます。詳細に
ついては、「ステップ 4: 登録 ID を取得する (p. 45)」を参照してください。
4.
Amazon App Distribution Portal で、[Apps and Services] をクリックし、Kindle Fire アプリの名前
をクリックしてから、[Device Messaging] をクリックします。
5.
アプリで ADM が有効になっていることを確認します。アプリが Amazon App Distribution Portal
に表示されていない場合は、アプリを追加し、ADM を有効にします。
ステップ 2: クライアント ID およびクライアント
シークレットを取得する
ADM はクライアント ID およびクライアントシークレットを使ってサーバーの識別情報を検証しま
す。詳細については、「ADM 認証情報の取得」を参照してください。
クライアント ID およびシークレットキーを取得するには
1.
Amazon App Distribution Portal で、[Apps and Services] をクリックし、Kindle Fire アプリの名前
をクリックしてから、[Security Profile] をクリックします。アプリに関連付けられたセキュリティ
プロファイルが表示されます。表示されない場合は、[Security Profiles] をクリックして新しいセ
キュリティプロファイルを作成します。
2.
[View Security Profile] をクリックします。クライアント ID およびクライアントシークレットを書
き留めます。
ステップ 3: API キーを取得する
ADM は API キーを使ってアプリの識別情報を検証します。
API Version 2010-03-31
44
Amazon Simple Notification Service 開発者ガイド
ステップ 4: 登録 ID を取得する
Note
[API key] は、ADM をプレリリースで使用するか、アプリをテストするために必要です。ただ
し、自分の代わりに Amazon にアプリへの署名を許可する場合、アプリのリリースバージョ
ンまたは本稼働バージョンには必要ありません。
API キーを取得するには
•
「OAuth 認証情報および API キーの取得」の手順に従って API キーを取得します。
ステップ 4: 登録 ID を取得する
以下の手順は、AWS に用意されているサンプルの Kindle Fire アプリを使って ADM から登録 ID を取
得する方法を示しています。このサンプルの Kindle Fire アプリを例として使用して、Amazon SNS
プッシュ通知の使用を開始できます。サンプルアプリでは、開発環境に ADM JAR ファイル amazondevice-messaging-1.0.1.jar を含めている必要があります。詳細については、「ADM のセット
アップ」を参照してください。
ADM からのアプリの登録 ID の取得
1.
snsmobilepush.zip ファイルをダウンロードして解凍します。
2.
IDE に KindleMobilePushApp フォルダーをインポートします。Eclipse で、[File] をクリック
し、[Import] をクリックして、[Android] フォルダーを展開します。次に、[Existing Android Code
Into Workspace] をクリックし、[Next] をクリックして、KindleMobilePushApp フォルダーを
参照し、[OK] をクリックしてから、[Finish] をクリックします。
サンプルの Kindle Fire アプリが IDE にインポートされたら、Kindle Fire アプリの API キーを
strings.xml に追加する必要があります。このファイルはサンプルの Kindle Fire アプリに含ま
れています。
3.
strings.xml ファイルに API キーを追加します。IDE で、ファイルは [res] のサブフォルダーで
ある [values] フォルダーに含まれています。以下に文字列を追加します。
<string name="api_key"></string>
4.
アプリを実行して、Android ログ記録システムに出力された登録 ID を確認します。Android ADT
プラグインと共に Eclipse を使用している場合、[LogCat] 表示ウィンドウに登録 ID が表示されま
す。たとえば、登録 ID を含む出力は次のようになります。
amzn1.adm-registration.v2.Example...1cwWJUvgkcPPYcaXCpPWmG3BqnwiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw
これで、モバイルエンドポイントにプッシュ通知メッセージを送信するために必要な情報(クライ
アント ID、クライアントシークレット、API キー、および登録 ID)を ADM から取得しました。ま
た、Amazon SNS コンソールや Amazon SNS API を使用して、デバイスの Kindle Fire アプリにプッ
シュ通知メッセージを送信できるようになりました。Amazon SNS コンソールを使用するには、
「Amazon SNS モバイルプッシュの使用 (p. 81)」を参照してください。Amazon SNS API を使用
するには、「ステップ 5: Amazon SNS および ADM を使用してプッシュ通知メッセージを Kindle Fire
に送信する (p. 46)」を参照してください。
API Version 2010-03-31
45
Amazon Simple Notification Service 開発者ガイド
ステップ 5: Amazon SNS および ADM を使
用してメッセージを Kindle Fire に送信する
ステップ 5: Amazon SNS および ADM を使用して
プッシュ通知メッセージを Kindle Fire に送信する
このセクションでは、Amazon SNS と ADM を使用して Kindle Fire アプリにプッシュ通知メッ
セージを送信するための前提条件情報の使用方法について説明します。AWS のサンプルファ
イル SNSMobilePush.java に、収集された前提条件情報を追加します。サンプルファイルは
snsmobilepush.zip ファイルに含まれています。
Note
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java を
インストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としてい
ます。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細につい
ては、「セキュリティ認証情報の取得方法」(AWS General Reference)を参照してくださ
い。
サンプルを Eclipse に追加するには
1.
Eclipse で新しい Java プロジェクトを作成します([File] | [New] | [Java Project])。
2.
新しく作成した Java プロジェクトの最上位ディレクトリに SNSSamples フォルダーをインポー
トします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、
[General] を展開します。次に、[File System]、[Next] をクリックし、SNSSamples フォルダーを
参照し、[OK] をクリックしてから、[Finish] をクリックします。
3.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダー
で、AwsCredentials.properties ファイルを開き、AWS の認証情報を追加します。
ビルドパスに AWS SDK for Java を追加するには
1.
Java Project フォルダーを右クリックし、[Build Path] をクリックしてから、[Configure Build
Path...] をクリックします。
2.
[Libraries] タブをクリックし、[Add Library...] をクリックします。
3.
[AWS SDK for Java] をクリックし、[Next] をクリックしてから、[Finish] をクリックします。
前提条件情報を SNSMobilePush.java に追加するには
1.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダーの
SNSMobilePush.java を Eclipse で開きます。
2.
sample.demoKindleAppNotification(); のコメントを解除します。これは次のように表示
されます。
SNSMobilePush sample = new SNSMobilePush(sns);
// TODO: Uncomment the services you wish to use.
// sample.demoAndroidAppNotification();
sample.demoKindleAppNotification();
// sample.demoAppleAppNotification();
// sample.demoAppleSandboxAppNotification();
// sample.demoBaiduAppNotification();
// sample.demoWNSAppNotification();
// sample.demoMPNSAppNotification();
API Version 2010-03-31
46
Amazon Simple Notification Service 開発者ガイド
APNS の使用開始
3.
demoKindleAppNotification メソッドを探し、登録 ID 文字列の値として、ADM から受信し
た登録 ID を入力します。たとえば、次のようになります。
String registrationId = = "amzn1.admregistration.v2.Example...1cwWJUvgkcPPYcaXCpPWmG3BqnwiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw";
4.
アプリのクライアント ID を入力します。たとえば、次のようになります。
String clientId = "amzn1.application-oa2client.EXAMPLE7423654b79fc9f062fEXAMPLE";
5.
アプリのクライアントシークレットを入力します。たとえば、次のようになります。
String clientSecret =
"EXAMPLE01658e75ceb7bf9f71939647b1aa105c1c8eaccabaf7d41f68EXAMPLE";
6.
アプリの名前を入力します。アプリ名は大文字および小文字の ASCII 文字、数字、アンダースコ
ア、ハイフン、およびピリオドのみで構成され、1~256 文字の長さである必要があります。たと
えば、次のようになります。
String applicationName = "admpushapp";
7.
Java アプリケーションを実行します。IDE の出力ウィンドウに次のような出力が表示されます。
===========================================
Getting Started with Amazon SNS
===========================================
{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/ADM/
mypushappname}
{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/ADM/
mypushappname/97e9ced9-f136-3893-9d60-775467eafebb}
{"ADM": "{ \"data\": { \"message\": \"ENTER YOUR MESSAGE\" } }"}
Published. MessageId=b35fb4bz-b503-4e37-83d4-feu4218d6da6
Kindle Fire デバイスで、プッシュ通知メッセージが Kindle Fire アプリ内に表示されます。
Apple Push Notification Service の使用開始
Apple Push Notification Service(APNS)は、iOS および OS X アプリケーションにプッシュ通知
メッセージを送信できるようにするサービスです。このセクションでは、APNS の前提条件を取得
し、Amazon SNS および APNS を使用してプッシュ通知メッセージを送信する方法について説明しま
す。
トピック
• APNS の前提条件 (p. 48)
• ステップ 1: iOS アプリを作成する (p. 48)
• ステップ 2: APNS SSL 証明書を取得する (p. 48)
• ステップ 3: アプリケーションプライベートキーを取得する (p. 49)
• ステップ 4: 証明書とアプリケーションプライベートキーを検証する (p. 49)
• ステップ 5: デバイス トークンを取得する (p. 50)
API Version 2010-03-31
47
Amazon Simple Notification Service 開発者ガイド
APNS の前提条件
• 次のステップ (p. 50)
• Amazon SNS および APNS を使用して iOS アプリにプッシュ通知メッセージを送信す
る (p. 51)
• Amazon SNS および APNS を使用して VoIP iOS アプリにプッシュ通知メッセージを送信す
る (p. 53)
• Amazon SNS および APNS を使用して Mac OS X アプリにプッシュ通知メッセージを送信す
る (p. 53)
APNS の前提条件
Amazon SNS および APNS を使用してモバイルデバイスにプッシュ通知を送信するには、以下を取得
する必用があります。
• APNS に登録された iOS アプリ
• APNS SSL 証明書
• アプリケーションプライベートキー
• デバイストークン
すでにこれらの前提条件を満たしている場合は、Amazon SNS コンソールまたは Amazon SNS API
を使用して iOS アプリにプッシュ通知メッセージを送信できます。Amazon SNS コンソールの使
用方法の詳細については、「Amazon SNS モバイルプッシュの使用 (p. 81)」を参照してくださ
い。Amazon SNS API の使用方法の詳細については、「Amazon SNS および APNS を使用して iOS
アプリにプッシュ通知メッセージを送信する (p. 51)」を参照してください。
ステップ 1: iOS アプリを作成する
iOS アプリへのプッシュ通知メッセージの送信を開始するには、Apple 開発者アカウントを持ち、App
ID(アプリケーション ID)の作成、iOS デバイスの登録、および iOS プロビジョニングプロファイ
ルの作成を完了している必用があります。詳細については、iOS Developer Library の「Local and
Remote Notification Programming Guide」を参照してください。
Note
iOS アプリを APNS に登録していない場合は、手始めに AWS が提供するサンプル iOS アプ
リをテンプレートとして使用することもできます。詳細については、「ステップ 5: デバイス
トークンを取得する (p. 50)」を参照してください。
ステップ 2: APNS SSL 証明書を取得する
Amazon SNS には、Amazon SNS API の使用時にアプリの .pem 形式の APNS SSL 証明書が必要で
す。.p12 形式の証明書は Amazon SNS コンソールでアップロードできます。Amazon SNS によっ
てその証明書は .pem に変換され、コンソールに表示されます。Mac コンピュータ上の Keychain
Access アプリケーションを使用して APNS SSL 証明書をエクスポートします。SSL 証明書の詳
細については、Apple の『Local and Push Notification Programming Guide』の「Provisioning and
Development」を参照してください。
APNS SSL 証明書をダウンロードするには
1.
Apple の Developer ウェブサイトで、[Member Center]、[Certificates, Identifiers and Profiles]、
[Certificates] の順にクリックします。
2.
iOS APNS 開発用に作成した証明書を選択し、[Download] をクリックして、ファイル(拡張子
は .cer)を保存します。
API Version 2010-03-31
48
Amazon Simple Notification Service 開発者ガイド
ステップ 3: アプリケーション
プライベートキーを取得する
APNS SSL 証明書を .cer 形式から .pem 形式に変換するには
以下の手順では、openssl ユーティリティを使用します。
•
コマンドプロンプトで、次のコマンドを入力します。myapnsappcert.cer を Apple の
Developer ウェブサイトからダウンロードした証明書の名前に置き換えます。
openssl x509 -in myapnsappcert.cer -inform DER -out myapnsappcert.pem
新しく作成した .pem ファイルは、モバイルプッシュ通知メッセージを送信するように Amazon
SNS を設定するために使用します。
ステップ 3: アプリケーションプライベートキーを
取得する
Amazon SNS には、.pem 形式のアプリケーションプライベートキーが必要です。Mac コンピュータ
上の Keychain Access アプリケーションを使用して、アプリケーションプライベートキーをエクス
ポートします。
アプリケーションプライベートキーを取得するには
SSL 証明書に関連付けられたプライベートキーは、Mac コンピュータ上の Keychain Access アプリ
ケーションからエクスポートできます。これは、Apple の Developer ウェブサイトからダウンロード
した .cer ファイルが Keychain Access にインポートされていることを前提としています。そのために
は、.cer ファイルを Keychain Access にコピーするか、.cer ファイルをダブルクリックします。
1.
[Keychain Access] を開き、[Keys] を選択して、自分のアプリケーションプライベートキーを強調
表示します。
2.
[File]、[Export Items...] の順にクリックし、[Save As:] フィールドに名前を入力します。
3.
デフォルトのファイル形式 .p12 をそのまま使用して、[Save] をクリックします。
.p12 ファイルは .pem ファイル形式に変換されます。
アプリケーションプライベートキーを .p12 形式から .pem 形式に変換するには
•
コマンドプロンプトで、次のコマンドを入力します。myapnsappprivatekey.p12 を Keychain
Access からエクスポートしたプライベートキーの名前に置き換えます。
openssl pkcs12 -in myapnsappprivatekey.p12 -out myapnsappprivatekey.pem nodes -clcerts
新しく作成した .pem ファイルは、モバイルプッシュ通知メッセージを送信するように Amazon
SNS を設定するために使用します。
ステップ 4: 証明書とアプリケーションプライベー
トキーを検証する
.pem 証明書とプライベートキーファイルは、APNS に接続するために使用することで検証できます。
API Version 2010-03-31
49
Amazon Simple Notification Service 開発者ガイド
ステップ 5: デバイス トークンを取得する
APNS に接続することで証明書とプライベートキーを検証するには
•
コマンドプロンプトで、次のコマンドを入力します。myapnsappcert.pem と
myapnsappprivatekey.pem をそれぞれ証明書とプライベートキーの名前に置き換えます。
openssl s_client -connect gateway.sandbox.push.apple.com:2195 cert myapnsappcert.pem -key myapnsappprivatekey.pem
ステップ 5: デバイス トークンを取得する
プッシュ通知メッセージを受信するためにアプリケーションを APNS に登録すると、デバイストーク
ン(64 バイトの 16 進値)が生成されます。以下の手順は、AWS によって提供されるサンプル iOS
アプリを使用して APNS からデバイストークンを取得する方法について説明しています。Amazon
SNS プッシュ通知の使用を開始するときは、このサンプル iOS アプリが役立ちます。詳細につ
いては、Apple の『Local and Push Notification Programming Guide』の「Registering for Remote
Notifications」を参照してください。
アプリ用の APNS からデバイストークンを取得するには
1.
snsmobilepush.zip ファイルをダウンロードして解凍します。
2.
AppleMobilePushApp フォルダーに移動し、iOS 7 and earlier フォルダーまたは iOS 8
フォルダーを開きます。
3.
Xcode で、AmazonMobilePush.xcodeproj プロジェクトを開きます。
4.
Xcode でアプリを実行します。出力ウィンドウに、以下のようなデバイストークンが表示されま
す。
Device Token = <examp1e 29z6j5c4 df46f809 505189c4 c83fjcgf 7f6257e9
8542d2jt 3395kj73>
Note
Amazon SNS に送信するときは、デバイストークンにスペースを含めないでください。
次のステップ
この時点で、プッシュ通知メッセージをモバイルエンドポイントに送信するために必要な情報(SSL
証明書、アプリケーションプライベートキー、デバイストークン)を APNS から入手している必要が
あります。これで、Amazon SNS コンソールまたは Amazon SNS API を使用して、デバイスの iOS
アプリに通知を送信できます。
• Amazon SNS コンソールを使用してデバイスの iOS アプリに通知を送信するには、「Amazon SNS
モバイルプッシュの使用 (p. 81)」を参照してください。
• Amazon SNS API を使用するには、「Amazon SNS および APNS を使用して iOS アプリにプッ
シュ通知メッセージを送信する (p. 51)」を参照してください。
• Amazon SNS および APNS を使用してプッシュ通知メッセージを VoIP アプリに送信するには、
「Amazon SNS および APNS を使用して VoIP iOS アプリにプッシュ通知メッセージを送信す
る (p. 53)」を参照してください。
• Amazon SNS および APNS を使用して Mac OS X アプリにプッシュ通知メッセージを送信するに
は、「Amazon SNS および APNS を使用して Mac OS X アプリにプッシュ通知メッセージを送信
する (p. 53)」を参照してください。
API Version 2010-03-31
50
Amazon Simple Notification Service 開発者ガイド
iOS アプリにメッセージを送信します
Amazon SNS および APNS を使用して iOS アプリ
にプッシュ通知メッセージを送信する
このセクションでは、Amazon SNS と APNS を使用して iOS アプリにプッシュ通知メッセージ
を送信するための Amazon SNS API の前提条件情報の使用方法について説明します。AWS の
サンプルファイル SNSMobilePush.java に前提条件情報を追加します。サンプルファイルは
snsmobilepush.zip ファイルに含まれています。
Amazon SNS コンソールを使用することもできます。Amazon SNS コンソールの使用方法の詳細につ
いては、「Amazon SNS モバイルプッシュの使用 (p. 81)」を参照してください。
Note
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java を
インストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としてい
ます。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細につい
ては、「セキュリティ認証情報の取得方法」(AWS General Reference)を参照してくださ
い。
サンプルを Eclipse に追加するには
1.
Eclipse で新しい Java プロジェクトを作成します([File] | [New] | [Java Project])。
2.
新しく作成した Java プロジェクトの最上位ディレクトリに SNSSamples フォルダーをインポー
トします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、
[General] を展開します。次に、[File System]、[Next] をクリックし、SNSSamples フォルダーを
参照し、[OK] をクリックしてから、[Finish] をクリックします。
3.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダー
で、AwsCredentials.properties ファイルを開き、AWS の認証情報を追加します。
ビルドパスに AWS SDK for Java を追加するには
1.
Java Project フォルダーを右クリックし、[Build Path] をクリックしてから、[Configure Build
Path...] をクリックします。
2.
[Libraries] タブをクリックし、[Add Library...] をクリックします。
3.
[AWS SDK for Java] をクリックし、[Next] をクリックしてから、[Finish] をクリックします。
前提条件情報を SNSMobilePush.java に追加するには
1.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダーの
SNSMobilePush.java を Eclipse で開きます。
2.
使用している APNS によって、sample.demoAppleAppNotification(); または
sample.demoAppleSandboxAppNotification(); のいずれかのコメントを解除します。たと
えば、demoAppleSandboxAppNotification を使用している場合は、次のようになります。
SNSMobilePush sample = new SNSMobilePush(sns);
// TODO: Uncomment the services you wish to use.
// sample.demoAndroidAppNotification();
// sample.demoKindleAppNotification();
// sample.demoAppleAppNotification();
sample.demoAppleSandboxAppNotification();
// sample.demoBaiduAppNotification();
// sample.demoWNSAppNotification();
API Version 2010-03-31
51
Amazon Simple Notification Service 開発者ガイド
iOS アプリにメッセージを送信します
// sample.demoMPNSAppNotification();
3.
demoAppleSandboxAppNotification メソッドを探し、デバイストークン文字列の値とし
て、APNS から受け取ったデバイストークンを入力します。たとえば、次のようになります。
String deviceToken =
"examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73";
4.
アプリケーション用の APNS SSL 証明書を入力します。証明書の各行の先頭には、\n を追加す
る必要があります。たとえば、次のようになります。
String certificate = "-----BEGIN CERTIFICATE----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lB
\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9
+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=\n-----END CERTIFICATE-----";
5.
アプリケーション用のプライベートキーを入力します。証明書の各行の先頭には、\n を追加する
必要があります。たとえば、次のようになります。
String privateKey = "-----BEGIN RSA PR1VATE KEY----\nMJICiTCHAfICCQD9m7oRw0uXOjANBgkqhkiG7w0BAQUFADCBiDELMAkGA1UEBhMC
\nWVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGx2MQ8wDQYDVQQKEwZBbWF6\nVVMxCzAJBgNVBAgTAldB
FYai3z96EXAMPLE=\n-----END RSA PR1VATE KEY-----";
6.
アプリの名前を入力します。アプリ名は大文字および小文字の ASCII 文字、数字、アンダースコ
ア、ハイフン、およびピリオドのみで構成され、1~256 文字の長さである必要があります。たと
えば、次のようになります。
String applicationName = "mypushappname";
7.
Java アプリケーションを実行します。IDE の出力ウィンドウに次のような出力が表示されます。
===========================================
Getting Started with Amazon SNS
===========================================
{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/
APNS_SANDBOX/mypushappname}
{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/APNS_SANDBOX/
pushapp/97e9ced9-f136-3893-9d60-775467eafebb}
{"default":"This is the default Message","APNS_SANDBOX":"{ \"aps\" :
{ \"alert\" : \"You have got email.\", \"badge\" : 9,\"sound\" :\"default
\"}}"}
Published. MessageId=d65fb4bb-b903-5e37-83d4-feb4818d6da3
iOS デバイスで、メッセージ通知を確認します。
API Version 2010-03-31
52
Amazon Simple Notification Service 開発者ガイド
VoIP アプリにメッセージを送信します
Amazon SNS および APNS を使用して VoIP iOS ア
プリにプッシュ通知メッセージを送信する
Amazon SNS および APNS を使用して VoIP アプリにプッシュ通知メッセージを送信するには、最初
に「APNS の前提条件 (p. 48)」の前提条件を満たす必要があります。
Note
iOS アプリを APNS に登録していない場合は、手始めに AWS が提供するサンプルファイル
snsmobilepush.zip をダウンロードしてテンプレートとして使用することもできます。詳細に
ついては、「ステップ 5: デバイス トークンを取得する (p. 50)」を参照してください。
モバイルアプリを AWS に登録するには
1.
https://console.aws.amazon.com/sns/ に移動し、[Create platform application] をクリックしま
す。
2.
[Application name] ボックスにアプリを表す名前を入力します。
アプリ名は大文字および小文字の ASCII 文字、数字、アンダースコア、ハイフン、およびピリオ
ドのみで構成され、1~256 文字の長さである必要があります。
3.
[Push Notification Platform] フィールドで、[Apple Development] または [Apple Production] を選択
します。
4.
[Push Certification Type] フィールドで、[VoIP Push Certificate] を選択します。
5.
Mac コンピュータの Keychain Access から .p12 ファイル形式でエクスポートされた、パスワー
ドで暗号化された証明書とプライベートキーを選択します。
6.
パスワードを入力し、[Create Platform Application] をクリックします。
Amazon SNS および APNS を使用して Mac OS X
アプリにプッシュ通知メッセージを送信する
Amazon SNS および APNS を使用して Mac OS X アプリにプッシュ通知メッセージを送信するに
は、最初に「APNS の前提条件 (p. 48)」の前提条件を満たす必要があります。
Note
APNS に登録された Mac OS X アプリがまだない場合は、PushyMac のようなサンプルアプ
リケーションをダウンロードして使用できます。これは Apple の Developer ウェブサイトか
ら入手できます。
モバイルアプリを AWS に登録するには
1.
https://console.aws.amazon.com/sns/ に移動し、[Create platform application] をクリックしま
す。
2.
[Application name] ボックスにアプリを表す名前を入力します。
アプリ名は大文字および小文字の ASCII 文字、数字、アンダースコア、ハイフン、およびピリオ
ドのみで構成され、1~256 文字の長さである必要があります。
3.
[Push Notification Platform] フィールドで、[Apple Development] または [Apple Production] を選択
します。
4.
[Push Certification Type] フィールドで、[MacOS Push Certificate] を選択します。
API Version 2010-03-31
53
Amazon Simple Notification Service 開発者ガイド
Baidu の使用開始
5.
Mac コンピュータの Keychain Access から .p12 ファイル形式でエクスポートされた、パスワー
ドで暗号化された証明書とプライベートキーを選択します。
6.
パスワードを入力し、[Create Platform Application] をクリックします。
Baidu Cloud Push の使用開始
Baidu Cloud Push は中国のクラウドサービスです。Baidu を使用すると、モバイルデバイスにプッ
シュ通知メッセージを送信できます。このセクションでは、Baidu の前提条件を満たし、Amazon
SNS と Baidu を使用してプッシュ通知メッセージを送信する方法について説明します。
トピック
• Baidu の前提条件 (p. 54)
• ステップ 1: Baidu アカウントを作成します (p. 54)
• ステップ 2: Baidu 開発者として登録する (p. 56)
• ステップ 3: Baidu クラウドプッシュプロジェクトを作成する (p. 59)
• ステップ 4: Baidu から Android デモアプリケーションをダウンロードし、インストールす
る (p. 62)
• ステップ 5: Baidu からユーザー ID およびチャネル ID を取得する (p. 66)
• ステップ 6: Amazon SNS および Baidu を使用してモバイルエンドポイントにプッシュ通知メッ
セージ送信する (p. 66)
Baidu の前提条件
Amazon SNS と Baidu を使用してモバイルデバイスにプッシュ通知メッセージを送信するには、以下
のものが必要です。
• Baidu アカウント
• Baidu 開発者としての登録
• Baidu クラウドプッシュプロジェクト
• Baidu クラウドプッシュプロジェクトからの API キーおよびシークレットキー
• Baidu ユーザー ID およびチャネル ID
• Android デモアプリケーション
既にこれらの前提条件を満たしている場合は、Amazon SNS API を使用してモバイルエンドポイント
にプッシュ通知メッセージを送信できます。Amazon SNS API の使用方法の詳細については、「ス
テップ 6: Amazon SNS および Baidu を使用してモバイルエンドポイントにプッシュ通知メッセージ
送信する (p. 66)」を参照してください。
ステップ 1: Baidu アカウントを作成します
Baidu を使用するには、まず、アカウントを作成する必要があります。
Important
Baidu アカウントを作成するには検証ステップがあり、中国語簡体字を入力する必要がありま
す。このタスクを実行するための最も簡単な方法は、中国語を読める人に手伝ってもらうこ
とです。もう 1 つの方法は、Baidu アカウントを作成するために Amazon Mechanical Turk を
使用することです。Baidu 用のアカウントとパスワードを作成できたら、ログインして、中国
語簡体字を入力せずに済むパスワードに変更することができます。Mechanical Turk の詳細に
ついては、『Amazon Mechanical Turk Requester User Interface』を参照してください。
API Version 2010-03-31
54
Amazon Simple Notification Service 開発者ガイド
ステップ 1: Baidu アカウントを作成します
Baidu アカウントを作成するには
1.
Baidu ポータルの右上隅で、[注册(Registration)] をクリックします。
2.
E メールアドレス、パスワード、および認証コードを入力し、[注册(Registration)] をクリック
します。
その後、入力した E メールアドレスにアクティベーション E メールが送信されたことを知らせる
次のようなページが表示されるはずです。
3.
E メールアカウントにログインし、Baidu から受信したアクティベーション E メールを開いて、
提供されているリンクをクリックします。
API Version 2010-03-31
55
Amazon Simple Notification Service 開発者ガイド
ステップ 2: Baidu 開発者として登録する
4.
Baidu からのアクティベーション E メールで提供されているリンクをクリックした後で、認証
コード(中国語簡体字)を入力する必要があります。
Baidu アカウントを作成したら、開発者として登録できます。
ステップ 2: Baidu 開発者として登録する
Baidu プッシュ通知サービスを使用するには、Baidu 開発者として登録する必要があります。
Baidu 開発者として登録するには
1.
Baidu ポータルで [更多(More)] をクリックします。
2.
[百度开放云平台(Baidu's Open Cloud Platform)] をクリックします。
API Version 2010-03-31
56
Amazon Simple Notification Service 開発者ガイド
ステップ 2: Baidu 開発者として登録する
3.
次のページの右上隅近くで、[开发者服务(Developer Services)] をクリックします。
4.
[马上开始(Start Now)] をクリックします。
5.
認証テキストメッセージを受け取るために、名前、説明、および携帯電話番号を入力し、[发送验
证码(Send Verification Code)] をクリックします。
API Version 2010-03-31
57
Amazon Simple Notification Service 開発者ガイド
ステップ 2: Baidu 開発者として登録する
その後、次のような認証番号付きのテキストメッセージを受け取るはずです。
6.
認証番号を入力して開発者登録を完了し、ページの下部の [提交(Submit)] をクリックします。
登録が正常に終了すると、以下のようなメッセージが表示されます。
API Version 2010-03-31
58
Amazon Simple Notification Service 開発者ガイド
ステップ 3: Baidu クラウドプッ
シュプロジェクトを作成する
Baidu 開発者としての登録が済んだら、Baidu クラウドプッシュプロジェクトを作成する次のス
テップに進むことができます。ここでは、まだログインしていることを前提としています。ログ
インしていない場合は、次のログイン手順を使用できます。
Baidu にログインするには
1.
Baidu ポータルの右上隅で [登录(Login)] をクリックします。
2.
Baidu ユーザー名(E メールアドレス)とパスワードを入力し、[登录(Login)] をクリックしま
す。
ステップ 3: Baidu クラウドプッシュプロジェクトを
作成する
Baidu クラウドプッシュプロジェクトを作成すると、アプリケーション ID、API キー、およびシーク
レットキーが送られてきます。
API Version 2010-03-31
59
Amazon Simple Notification Service 開発者ガイド
ステップ 3: Baidu クラウドプッ
シュプロジェクトを作成する
Baidu クラウドプッシュプロジェクトを作成するには
1.
Baidu ポータルで [更多(More)] をクリックします。
2.
[百度开放云平台(Baidu's Open Cloud Platform)] をクリックします。
3.
次のページの右上隅近くで、[开发者服务(Developer Services)] をクリックします。
4.
[云推送(Cloud Push)] をクリックします。
5.
[管理控制台(Management Console)] をクリックします。
API Version 2010-03-31
60
Amazon Simple Notification Service 開発者ガイド
ステップ 3: Baidu クラウドプッ
シュプロジェクトを作成する
6.
[管理控制台(Management Console)] をクリックし、Android プロジェクト用の情報を入力しま
す。
7.
[创建工程(Create Project)] をクリックします。
8.
アプリケーションの名前を入力し、[创建(Create)] をクリックします。
API Version 2010-03-31
61
Amazon Simple Notification Service 開発者ガイド
ステップ 4: Android デモアプリケーショ
ンをダウンロードし、インストールする
9.
プロジェクトが正常に完了すると、自分のアプリケーション ID、API キー、およびシークレット
キーが含まれている、次のようなページが表示されます。後で必要になるため、API キーおよび
シークレットキーをメモしておいてください。
ステップ 4: Baidu から Android デモアプリケーショ
ンをダウンロードし、インストールする
Baidu は、モバイルデバイスにダウンロードしてインストールできる Android デモアプリケーション
を生成します。
Baidu から Android デモアプリケーションをダウンロードしてインストールするには
1.
アプリケーション ID、API キー、およびシークレットキーが表示されているページから始めて、
[云推送(Cloud Push)] をクリックします。
API Version 2010-03-31
62
Amazon Simple Notification Service 開発者ガイド
ステップ 4: Android デモアプリケーショ
ンをダウンロードし、インストールする
2.
[推送设置(Push Settings)] をクリックします。
3.
逆ドメイン名表記を使用して、パッケージ名を [应用包名(App Package Name)] ボックスに入
力します。
4.
[保存设置(Save Settings)] をクリックします。
API Version 2010-03-31
63
Amazon Simple Notification Service 開発者ガイド
ステップ 4: Android デモアプリケーショ
ンをダウンロードし、インストールする
その後、[保存成功!(Successfully saved!)] というメッセージが表示されるはずです。
5.
次に、[快速示例(Quick Example)] をクリックします。
次のようなページが表示されます。
API Version 2010-03-31
64
Amazon Simple Notification Service 開発者ガイド
ステップ 4: Android デモアプリケーショ
ンをダウンロードし、インストールする
6.
テストする Android モバイルデバイスで、QR Droid のようなコードスキャナーを使用して QR
コードアイコンをスキャンし、Baidu によって提供されるデモアプリケーションへのリンクを取
得します。
Note
[下载Android示例(Download Android Sample)] をクリックしてデモアプリケーション
をダウンロードすることもできます。
Baidu プッシュデモアプリケーションは、ダウンロードされた PushDemo.zip パッケー
ジに含まれています。Baidu とともに使用する独自のアプリケーションを作成するための
例として、デモアプリケーションを利用できます。また、Baidu のプッシュサービス jar
ファイル(pushservice-4.0.0.jar)は、PushDemo.zip パッケージに含まれていま
す。新しいアプリケーションを作成するには、Baidu の jar ファイルを使用する必要があ
ります。
7.
スキャンコードのスキャン後に受け取るリンクをクリックします。これによって、Baidu から提
供されたデモアプリケーションがモバイルデバイスにダウンロードされます。
8.
ダウンロードが完了したら、デモアプリケーションをモバイルデバイスにインストールします。
次のように、[Push Demo] アプリケーションがインストールされたことが示されます。
API Version 2010-03-31
65
Amazon Simple Notification Service 開発者ガイド
ステップ 5: ユーザー ID およびチャネル ID を取得する
ステップ 5: Baidu からユーザー ID およびチャネル
ID を取得する
Baidu は、Baidu を使用してプッシュ通知メッセージを送信するために必要なユーザー ID およびチャ
ネル ID を生成します。
Baidu からユーザー ID およびチャネル ID を取得するには
1.
[Push Demo] を開き、右下の [无账号绑定(Bind Without Baidu Account)] をクリックします。
[userId] および [channelId] が含まれている、次のような画面が表示されます。
2.
次のステップで使用するため、[userId] および [channelId] をメモしておきます。
Note
userID および channelId を取得するために使用される Java コードの例については、Baidu
の Push Demo アプリケーションで MyPushMessageReceiver.java ファイル内の onBind
メソッドを参照してください。詳細については、『Android 統合ガイド』を参照してくださ
い。このガイドを英語に翻訳するには、URL の http://developer.baidu.com/wiki/index.php?
title=docs/cplat/push/guide を Bing Translator に貼り付けて、[Translate] をクリックします。
ステップ 6: Amazon SNS および Baidu を使用して
モバイルエンドポイントにプッシュ通知メッセージ
送信する
このセクションでは、モバイルエンドポイントにプッシュ通知メッセージを送信する方法について説
明します。AWS のサンプルファイル SNSMobilePush.java に、収集された前提条件情報を追加し
ます。サンプルファイルは snsmobilepush.zip ファイルに含まれています。SNSMobilePush.java
ファイルには、モバイルエンドポイントを作成し、メッセージを構成するためにメッセージ属性を使
用する方法についての例が含まれています。モバイルエンドポイントの作成と、Baidu でのメッセー
ジ属性の使用の方法に関するその他の情報と例については、「Baidu 用の Amazon SNS エンドポイン
トの作成 (p. 68)」と「メッセージを構築するためのメッセージ属性の使用 (p. 69)」を参照して
ください。
Note
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java を
インストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としてい
ます。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細につい
API Version 2010-03-31
66
Amazon Simple Notification Service 開発者ガイド
ステップ 6: Amazon SNS および Baidu を使用してモバ
イルエンドポイントにプッシュ通知メッセージ送信する
ては、「セキュリティ認証情報の取得方法」(AWS General Reference)を参照してくださ
い。
サンプルを Eclipse に追加するには
1.
Eclipse で新しい Java プロジェクトを作成します([File] | [New] | [Java Project])。
2.
新しく作成した Java プロジェクトの最上位ディレクトリに SNSSamples フォルダーをインポー
トします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、
[General] を展開します。次に、[File System]、[Next] をクリックし、SNSSamples フォルダーを
参照し、[OK] をクリックしてから、[Finish] をクリックします。
3.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダー
で、AwsCredentials.properties ファイルを開き、AWS の認証情報を追加します。
ビルドパスに AWS SDK for Java を追加するには
1.
Java Project フォルダーを右クリックし、[Build Path] をクリックしてから、[Configure Build
Path...] をクリックします。
2.
[Libraries] タブをクリックし、[Add Library...] をクリックします。
3.
[AWS SDK for Java] をクリックし、[Next] をクリックしてから、[Finish] をクリックします。
前提条件情報を SNSMobilePush.java に追加するには
1.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダーの
SNSMobilePush.java を Eclipse で開き、sample.demoBaiduAppNotification(); のコメ
ントを解除します。これは次のように表示されます。
SNSMobilePush sample = new SNSMobilePush(sns);
// TODO: Uncomment the services you wish to use.
//sample.demoAndroidAppNotification();
//sample.demoKindleAppNotification();
//sample.demoAppleAppNotification();
//sample.demoAppleSandboxAppNotification();
sample.demoBaiduAppNotification();
//sample.demoWNSAppNotification();
//sample.demoMPNSAppNotification();
2.
demoBaiduAppNotification メソッドを探し、userId および channelId 文字列の値とし
て、Baidu から受け取ったユーザー ID およびチャネル ID を入力します。たとえば、次のように
なります。
String userId = "EXAMPLEkLMchcX0v3xOxWVhG6TfdBp...KT2TGkvnKyTvLuSpzK_qsHgxVB_UpmcUa7Gl6g3EXAMPLE";
String channelId = "EXAMPLE<channelId>EXAMPLE";
3.
アプリケーションのシークレットキーを入力します。たとえば、次のようになります。
String secretKey = "EXAMPLE<secretkey>EXAMPLE";
4.
アプリケーションの API キーを入力します。たとえば、次のようになります。
String apiKey = "EXAMPLExV2lcV2zEKTLNYs625zfk2jh4EXAMPLE";
API Version 2010-03-31
67
Amazon Simple Notification Service 開発者ガイド
ステップ 6: Amazon SNS および Baidu を使用してモバ
イルエンドポイントにプッシュ通知メッセージ送信する
5.
アプリケーションの名前を入力します。アプリケーション名は大文字および小文字の ASCII 文
字、数字、アンダースコア、ハイフン、およびピリオドのみで構成され、1~256 文字の長さであ
る必要があります。たとえば、次のようになります。
String applicationName = "baidupushapp";
6.
アプリケーションを実行します。IDE の出力ウィンドウに次のような出力が表示されます。
===========================================
Getting Started with Amazon SNS
===========================================
{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/BAIDU/
TestApp}
{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/BAIDU/
TestApp/8f3fdf0d-520b-38d1-8ed2-3301a477eef3}
{Message Body: {"BAIDU":"{\"title\":\"New Notification Received from SNS
\",\"description\":\"Hello World!\"}"}}
{Message Attributes: ("AWS.SNS.MOBILE.BAIDU.MessageKey": "defaultchannel-msg-key"),("AWS.SNS.MOBILE.BAIDU.DeployStatus": "1"),
("AWS.SNS.MOBILE.BAIDU.MessageType": "0")}
Published!
{MessageId=56a3a3e6-4b4b-59b4-8d1d-eff592c0ffa1}
Android デバイスで、次のようなプッシュ通知メッセージが Android アプリ内に表示されます。
Baidu 用の Amazon SNS エンドポイントの作成
このセクションでは、Baidu で使用する Amazon SNS エンドポイントを作成する方法についての追
加の情報と例を提供します。Amazon SNS エンドポイントは、アプリケーションやモバイルデバイス
を表すために、Baidu から受け取った userId と channelId の組み合わせを使用して作成します。その
後、エンドポイントは、Baidu プッシュ通知サービスを使用してモバイルデバイスのアプリケーショ
ンに通知メッセージを発行するために、Amazon SNS によって使用されます。
次の Java の例は、Baidu アプリケーションおよびモバイルデバイス用の Amazon SNS エンドポイン
トを作成する方法を示しています。
Map<String ,String> attributes = new HashMap<String ,String>();
// Insert your UserId. This is a mandatory field.
attributes.put("UserId", "9999999999");
API Version 2010-03-31
68
Amazon Simple Notification Service 開発者ガイド
ステップ 6: Amazon SNS および Baidu を使用してモバ
イルエンドポイントにプッシュ通知メッセージ送信する
// Insert your ChannelId. This is a mandatory field.
attributes.put("ChannelId", "1234567890");
CreatePlatformEndpointRequest createPlatformEndpointRequest = new
CreatePlatformEndpointRequest();
// Baidu endpoints are identified by a combination of the userId and
channelId which must be supplied as endpoint attributes,
// without which a valid endpoint cannot be successfully created.
createPlatformEndpointRequest.setAttributes(attributes);
// Insert your ChannelId. This is a mandatory field.
createPlatformEndpoint.setPlatformToken("1234567890");
// Insert your Customer User Data. This is an optional field.
createPlatformEndpoint.setCustomUserData("Test Endpoint");
// Insert your Platform Application Arn. This is a mandatory field.
createPlatformEndpoint.setPlatformApplicationArn("arn:aws:sns:uswest-2:123456789012:app/BAIDU/TestApp");
String endpointArn =
snsClient.createPlatformEndpoint(createPlatformEndpointRequest);
Baidu とともに使用するエンドポイントを作成するために Amazon SNS API を使用するときは、以下
の考慮事項に注意してください。
• CreateEndpointRequest では、プラットフォームトークンフィールドに channelId を含める必要が
あります。
• 属性マップでエンドポイント属性の "Token" を指定する場合、このフィールドは channelId もカプ
セル化する必要があります。
• channelId は、"ChannelId" という名前のエンドポイント属性としても指定する必要があります。
• 成功するようにリクエストを構成するには、"ChannelId" エンドポイント属性とプラットフォーム
トークンフィールドおよび "Token" エンドポイント属性の値が同一でなければなりません。
• userId を "UserId" という名前のエンドポイント属性として指定する必要があります。
• 正常な応答を得るには、リクエストの属性に有効な UserId と ChannelId 値を含める必要がありま
す。また、CreatePlatformEndpointRequest の一部である、setPlatformToken(String)を使用して
入力された ChannelId パラメータは、属性マップで指定されている ChannelId と同じでなければな
りません。
メッセージを構築するためのメッセージ属性の使用
このセクションでは、メッセージ属性を使用してメッセージを構築し、モバイルエンドポイントに
プッシュ通知メッセージを送信するための追加の情報と例を提供します。
次の Java の例は、モバイルエンドポイントにプッシュ通知メッセージを送信する方法と、メッセー
ジを構築するためにオプションのメッセージ属性を使用する方法を示しています。属性が設定されな
い場合、デフォルト値はその場で自動設定されます。
Note
プッシュ通知メッセージは、256 バイトを超えることはできません。これが Baidu で許可さ
れている最大サイズです。
Map<String, MessageAttributeValue> messageAttributes = new HashMap<String,
MessageAttributeValue>();
API Version 2010-03-31
69
Amazon Simple Notification Service 開発者ガイド
ステップ 6: Amazon SNS および Baidu を使用してモバ
イルエンドポイントにプッシュ通知メッセージ送信する
// Insert your desired value of Deploy Status here. 1 = DEV, 2 = PROD
messageAttributes.put("AWS.SNS.MOBILE.BAIDU.DeployStatus", new
MessageAttributeValue().withDataType("String").withStringValue("1"));
// Insert your desired value of Message Type here. 0 = IN-APP MESSAGE, 1 =
ALERT NOTIFICATION
messageAttributes.put("AWS.SNS.MOBILE.BAIDU.MessageType", new
MessageAttributeValue().withDataType("String").withStringValue("1"));
// Insert your desired value of Message Key
messageAttributes.put("AWS.SNS.MOBILE.BAIDU.MessageKey", new
MessageAttributeValue().withDataType("String").withStringValue("testmessage"));
PublishRequest publishRequest = new PublishRequest();
publishRequest.setMessageAttributes(messageAttributes);
String message = "{\"title\":\"Test_Title\",\"description\":
\"Test_Description\"}";
publishRequest.setMessage(message);
publishRequest.setTargetArn("arn:aws:sns:us-west-2:999999999999:endpoint/
BAIDU/TestApp/309fc7d3-bc53-3b63-ac42-e359260ac740");
PublishResult publishResult = snsClient.publish(publishRequest);
メッセージを構築するためにオプションのメッセージ属性を使用するときは、以下の考慮事項に注意
してください。
• AWS.SNS.MOBILE.BAIDU.DeployStatus
使用できる値(デフォルト = 1):
1 – 開発環境で送信されるものとして通知をタグ付けします
2 – 本稼働環境で送信されるものとして通知をタグ付けします
• AWS.SNS.MOBILE.BAIDU.MessageType
使用できる値(デフォルト = 1):
0 – アプリケーション内メッセージを生成します
1 – アラート通知を生成します。アラート通知は次の形式に制限されます。
{"title":"<TITLE>","description":"<DESCRIPTION>"}
<TITLE> および <DESCRIPTION> は、アラート通知に付けるタイトルと説明です。メッセージの
JSON 形式が正しくない場合、リクエストは失敗します。
• AWS.SNS.MOBILE.BAIDU.MessageKey
メッセージにアタッチできる短いメッセージ識別子
API Version 2010-03-31
70
Amazon Simple Notification Service 開発者ガイド
GCM の使用開始
Android 用 Google クラウドメッセージング の使
用開始
Android 用 Google クラウドメッセージング(GCM)は、Android アプリにプッシュ通知メッセージを
送信できるようにするサービスです。このセクションでは、GCM の前提条件を取得し、プッシュ通知
メッセージをモバイルエンドポイントに送信する方法について説明します。
トピック
• GCM の前提条件 (p. 71)
• ステップ 1: Google API プロジェクトを作成し、GCM サービスを有効にする (p. 71)
• ステップ 2: サーバー API キーを取得する (p. 72)
• ステップ 3: GCM から登録 ID を取得する (p. 72)
• ステップ 4: GCM を使用してモバイルエンドポイントにプッシュ通知メッセージ送信す
る (p. 73)
GCM の前提条件
Android アプリにプッシュ通知メッセージを送信するには、以下が必要です。
• GCM に登録された Android アプリ
• 登録 ID
• サーバー API キー(送信者の認証トークン)
すでにこれらの前提条件がある場合は、Amazon SNS コンソールを使ってモバイルエンドポイントに
プッシュ通知メッセージを送信するか、Amazon SNS API を使用できます。Amazon SNS コンソール
の使用方法の詳細については、「Amazon SNS モバイルプッシュの使用 (p. 81)」を参照してくだ
さい。Amazon SNS API の使用方法の詳細については、「ステップ 4: GCM を使用してモバイルエン
ドポイントにプッシュ通知メッセージ送信する (p. 73)」を参照してください。
ステップ 1: Google API プロジェクトを作成
し、GCM サービスを有効にする
Android アプリにプッシュ通知メッセージを送信するには、Google API プロジェクトがあり、GCM
サービスを有効にしている必要があります。
Google API プロジェクトを作成し、GCM サービスを有効にするには
1.
まだ Google API プロジェクトがない場合は、Android 開発者用ドキュメントで「Google API プ
ロジェクトの作成」を参照してください。
Note
2.
3.
Android アプリを GCM に登録していない場合は、手始めに AWS が提供するサンプル
Android アプリをテンプレートとして使用することもできます。詳細については、「ス
テップ 3: GCM から登録 ID を取得する (p. 72)」を参照してください。
Google API コンソールのウェブサイトで、Google API プロジェクトがあることを確認します。
[Services] をクリックし、Android 用 Google クラウドメッセージング がオンであることを確認し
ます。
API Version 2010-03-31
71
Amazon Simple Notification Service 開発者ガイド
ステップ 2: サーバー API キーを取得する
ステップ 2: サーバー API キーを取得する
Amazon SNS は、ユーザーに代わって GCM と通信するため、サーバー API キーを使用します。この
キーは後の手順で使用して、プッシュ通知をモバイルエンドポイントに送信します。
サーバー API キーを取得するには
1.
Google APIs Console ウェブサイトで、[API Access] をクリックし、[Key for server apps (with IP
locking)] ラベルが付いたサーバー API キーを書き留めます。
2.
まだサーバー API キーを作成していない場合は、[Create new Server key] をクリックします。
このキーはこのセクションの後で使用して、プッシュ通知をモバイルエンドポイントに送信しま
す。
ステップ 3: GCM から登録 ID を取得する
プッシュ通知メッセージを受信するために GCM にアプリを登録すると、登録 ID が生成されま
す。Amazon SNS はこの値を使用して、モバイルプッシュ通知の送信先アプリと関連付けられたデバ
イスを判断します。
以下の手順は、AWS に用意されているサンプルの Android アプリを使って GCM から登録 ID を取
得する方法を示しています。Amazon SNS プッシュ通知の使用を開始するときは、このサンプル
Android アプリが役立ちます。このサンプルアプリでは、Android SDK、Google Play Services SDK、
および Android Support Library パッケージが必要です。これらの SDK の詳細については、「Android
SDK の取得」および「Google Play Services SDK のセットアップ」を参照してください。Android
Support Library パッケージの詳細については、「サポートライブラリのセットアップ」を参照してく
ださい。
Note
用意されているサンプル Android アプリは、Android バージョン 2.3 以降を実行している物理
デバイス、および Google API 17 以降を実行している仮想デバイスと互換性があります。
アプリ用に GCM から登録 ID を取得するには
1.
snsmobilepush.zip ファイルをダウンロードして解凍します。
2.
IDE に AndroidMobilePushApp フォルダーをインポートします。Eclipse で、[File] をクリック
し、[Import] をクリックして、[Android] フォルダーを展開します。次に、[Existing Android Code
Into Workspace] をクリックし、[Next] をクリックして、AndroidMobilePushApp フォルダーを
参照し、[OK] をクリックしてから、[Finish] をクリックします。
サンプル Android アプリを IDE にインポートしたら、Google API プロジェクトのプロジェクト番
号を strings.xml に追加する必要があります。このファイルはサンプルの Android アプリに含
まれています。
3.
Google API プロジェクトのプロジェクト番号を strings.xml ファイルに追加します。IDE で、
ファイルは [values] フォルダーに含まれています。これは [res] のサブフォルダーです。文字列は
以下のようになります。
<string name="project_number">012345678912</string>
4.
google-play-services.jar、android-support-v4.jar、および android.jar を
Java Build Path に追加します。エクスポートの場合は google-play-services.jar および
android-support-v4.jar を選択しますが、android.jar は選択しないでください。
API Version 2010-03-31
72
Amazon Simple Notification Service 開発者ガイド
ステップ 4: GCM を使ってモバイルエ
ンドポイントにメッセージを送信する
5.
アプリを実行して、Android ログ記録システムに出力された登録 ID を確認します。Android ADT
プラグインと共に Eclipse を使用している場合、[LogCat] 表示ウィンドウに登録 ID が表示されま
す。たとえば、登録 ID を含む出力は以下のようになります。
06-05 11:50:43.587: V/Registration(14146): Registered,
registrationId: = Examplei7fFachkJ1xjlqT64RaBkcGHochmf1VQAr9kIBJtKjp7fedYPzEwT_Pq3Tu0lroqro1cwWJUvgkcPPYcaXCpPWmG3BqnwiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw, error =
null, unregistered = null
インストールされているアプリが Android デバイスに表示されます。
登録 ID、サーバー API キー、および GCM に登録された Android アプリが用意されました。これ
で、Amazon SNS コンソールまたは Amazon SNS API を使用して、デバイスの Android アプリに通
知を送信できます。Amazon SNS コンソールを使用するには、「Amazon SNS モバイルプッシュの使
用 (p. 81)」を参照してください。Amazon SNS API を使用するには、「ステップ 4: GCM を使用
してモバイルエンドポイントにプッシュ通知メッセージ送信する (p. 73)」を参照してください。
ステップ 4: GCM を使用してモバイルエンドポイン
トにプッシュ通知メッセージ送信する
このセクションでは、モバイルエンドポイントにプッシュ通知メッセージを送信する方法について説
明します。AWS のサンプルファイル SNSMobilePush.java に、収集された前提条件情報を追加し
ます。サンプルファイルは snsmobilepush.zip ファイルに含まれています。
API Version 2010-03-31
73
Amazon Simple Notification Service 開発者ガイド
ステップ 4: GCM を使ってモバイルエ
ンドポイントにメッセージを送信する
Note
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java を
インストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としてい
ます。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細につい
ては、「セキュリティ認証情報の取得方法」(AWS General Reference)を参照してくださ
い。
サンプルを Eclipse に追加するには
1.
Eclipse で新しい Java プロジェクトを作成します([File] | [New] | [Java Project])。
2.
新しく作成した Java プロジェクトの最上位ディレクトリに SNSSamples フォルダーをインポー
トします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、
[General] を展開します。次に、[File System]、[Next] をクリックし、SNSSamples フォルダーを
参照し、[OK] をクリックしてから、[Finish] をクリックします。
3.
SNSSamples/src/com/amazonaws/sns/samples/mobilepush フォルダー
で、AwsCredentials.properties ファイルを開き、AWS の認証情報を追加します。
ビルドパスに AWS SDK for Java を追加するには
1.
Java Project フォルダーを右クリックし、[Build Path] をクリックしてから、[Configure Build
Path...] をクリックします。
2.
[Libraries] タブをクリックし、[Add Library...] をクリックします。
3.
[AWS SDK for Java] をクリックし、[Next] をクリックしてから、[Finish] をクリックします。
前提条件情報を SNSMobilePush.java に追加するには
1.
SNSSamples/src/com/amazonaws/sns/samples/mobilepush フォルダーの
SNSMobilePush.java を Eclipse で開き、sample.demoAndroidAppNotification(); のコ
メントを解除します。これは次のように表示されます。
SNSMobilePush sample = new SNSMobilePush(sns);
// TODO: Uncomment the services you wish to use.
sample.demoAndroidAppNotification();
// sample.demoKindleAppNotification();
// sample.demoAppleAppNotification();
// sample.demoAppleSandboxAppNotification();
// sample.demoBaiduAppNotification();
// sample.demoWNSAppNotification();
// sample.demoMPNSAppNotification();
2.
demoAndroidAppNotification メソッドを探し、登録 ID 文字列の値として、GCM から受信
した登録 ID を入力します。たとえば、次のようになります。
String registrationId = = "EXAMPLEkLMchcX0v3xOxWVhG6TfdBp...KT2TGkvnKyTvLuSpzK_qsHgxVB_UpmcUa7Gl6g3EXAMPLE";
3.
アプリケーションの API キーを入力します。たとえば、次のようになります。
String serverAPIKey = "EXAMPLExV2lcV2zEKTLNYs625zfk2jh4EXAMPLE";
API Version 2010-03-31
74
Amazon Simple Notification Service 開発者ガイド
MPNS の使用開始
4.
アプリケーションの名前を入力します。アプリケーション名は大文字および小文字の ASCII 文
字、数字、アンダースコア、ハイフン、およびピリオドのみで構成され、1~256 文字の長さであ
る必要があります。たとえば、次のようになります。
String applicationName = "gcmpushapp";
5.
アプリケーションを実行します。IDE の出力ウィンドウに次のような出力が表示されます。
===========================================
Getting Started with Amazon SNS
===========================================
{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/GCM/
gcmpushapp}
{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/GCM/
gcmpushapp/5e3e9847-3183-3f18-a7e8-671c3a57d4b3}
{"default":"This is the default message","GCM":"{\"delay_while_idle
\":true,\"collapse_key\":\"Welcome\",\"data\":{\"message\":\"Visit Amazon!
\",\"url\":\"http://www.amazon.com/\"},\"time_to_live\":125,\"dry_run
\":false}"}
Published. MessageId=1ca8d7d1-c261-5bfc-8689-9db269c4e46c
Android デバイスで、次のようなプッシュ通知メッセージが Android アプリ内に表示されます。
MPNS の使用開始
Windows Phone 用 Microsoft プッシュ通知サービス(MPNS)は、Windows Phone 7 以降と
Windows Phone 8.0 のアプリにプッシュ通知メッセージを送信できるようにするサービスです。こ
のセクションでは、MPNS の前提条件を取得し、Amazon SNS および MPNS を使用してプッシュ通
知メッセージを送信する方法について説明します。MPNS では、認証されていないプッシュ通知メッ
セージと認証されたプッシュ通知メッセージの両方を送信できます。MPNS でのセキュリティの強化
とスロットリング制限の回避のためには、認証されたプッシュ通知メッセージを送信する必要があり
ます。
トピック
• MPNS の前提条件 (p. 76)
• ステップ 1: プッシュ通知メッセージを受信するように Windows Phone アプリをセットアップす
る (p. 76)
• ステップ 2: MPNS からプッシュ通知 URI を取得する (p. 76)
API Version 2010-03-31
75
Amazon Simple Notification Service 開発者ガイド
MPNS の前提条件
• ステップ 3: Windows 開発者アカウントを作成する (p. 76)
• ステップ 4: TLS 証明書をアップロードする (p. 77)
• ステップ 5: Amazon SNS および MPNS を使って Windows Phone アプリにプッシュ通知メッ
セージを送信する (p. 77)
MPNS の前提条件
Amazon SNS および MPNS を使用して Windows Phone アプリに認証されていないプッシュ通知メッ
セージを送信するには、以下が必要です。
• MPNS を使用するように設定されている Windows Phone アプリ
• MPNS からのプッシュ通知 URI
Amazon SNS および MPNS を使用して Windows Phone アプリに認証されたプッシュ通知メッセージ
を送信するには、以下も必要です。
• MPNS からの HTTPS プッシュ通知 URI
• Windows アプリ開発者としての登録
• Transport Layer Security(TLS)証明書
すでにこれらの前提条件を満たしている場合は、Amazon SNS コンソールまたは Amazon SNS API
を使用して Windows Phone アプリにプッシュ通知メッセージを送信できます。Amazon SNS コン
ソールの使用方法の詳細については、「Amazon SNS モバイルプッシュの使用 (p. 81)」を参照
してください。Amazon SNS API の使用方法の詳細については、「ステップ 5: Amazon SNS および
MPNS を使って Windows Phone アプリにプッシュ通知メッセージを送信する (p. 77)」を参照して
ください。
ステップ 1: プッシュ通知メッセージを受信するよ
うに Windows Phone アプリをセットアップする
Windows Phone アプリにプッシュ通知メッセージを送信するには、MPNS サービスに対してタイプ
を有効にする必要があります。詳細については、「Windows Phone 8 のプッシュ通知を受信するため
のアプリのセットアップ」を参照してください。
ステップ 2: MPNS からプッシュ通知 URI を取得す
る
Amazon SNS でモバイルエンドポイントを作成するには、MPNS から 通知 URI をプッシュする必要
があります。MPNS から HTTP または HTTPS のプッシュ通知 URI を取得できます。MPNS でのセ
キュリティの強化とスロットリング制限の回避のためには、認証されたメッセージを送信するための
HTTPS プッシュ通知 URI を取得する必要があります。HTTPS プッシュ通知 URI を取得する方法の詳
細については、「Windows Phone 8 のプッシュ通知を送信するための認証されたウェブサービスの設
定」を参照してください。
ステップ 3: Windows 開発者アカウントを作成する
MPNS 使用して認証されたメッセージを送信するには、Windows 開発者アカウントを作成する必要が
あります。Windows 開発者アカウントの作成方法の詳細については、「開発者アカウントの作成」を
参照してください。
API Version 2010-03-31
76
Amazon Simple Notification Service 開発者ガイド
ステップ 4: TLS 証明書をアップロードする
ステップ 4: TLS 証明書をアップロードする
MPNS を使用して認証されたメッセージを送信するには、Windows Phone のいずれかの信頼された
証明機関(CA)から取得した TLS 証明書を Windows 開発者アカウントにアップロードする必要が
あります。また、完全な TLS 証明書チェーンおよび関連するプライベートキーを Amazon SNS に送
信する必要もあります。これらの情報は、Amazon SNS がお客様用に MPNS への安全な接続を確立
するために利用します。Amazon SNS には、.pem 形式の TLS 証明書とプライベートキーが必要で
す。証明書の変換とエクスポートには、openssl などさまざまなユーティリティを使用できます。詳
細については、「Windows Phone 8 のプッシュ通知を送信するための認証されたウェブサービスの設
定」と「Windows Phone OS 7.1 の SSL ルート証明書」を参照してください。openssl の詳細につい
ては、http://www.openssl.org/ を参照してください。
ステップ 5: Amazon SNS および MPNS を使って
Windows Phone アプリにプッシュ通知メッセージ
を送信する
このセクションでは、Amazon SNS と MPNS を使用して Windows Phone アプリにプッシュ通知メッ
セージを送信するための Amazon SNS API の前提条件情報の使用方法について説明します。AWS の
サンプルファイル SNSMobilePush.java に、収集された前提条件情報を追加します。サンプルファ
イルは snsmobilepush.zip ファイルに含まれています。
Amazon SNS コンソールを使用することもできます。ただし、トースト通知を送信するに
は、Amazon SNS API を使用する必要があります。Amazon SNS コンソールの使用方法の詳細につい
ては、「Amazon SNS モバイルプッシュの使用 (p. 81)」を参照してください。
Note
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java を
インストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としてい
ます。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細につい
ては、「セキュリティ認証情報の取得方法」(AWS General Reference)を参照してくださ
い。
サンプルを Eclipse に追加するには
1.
Eclipse で新しい Java プロジェクトを作成します([File] | [New] | [Java Project])。
2.
新しく作成した Java プロジェクトの最上位ディレクトリに SNSSamples フォルダーをインポー
トします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、
[General] を展開します。次に、[File System]、[Next] をクリックし、SNSSamples フォルダーを
参照し、[OK] をクリックしてから、[Finish] をクリックします。
3.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダー
で、AwsCredentials.properties ファイルを開き、AWS の認証情報を追加します。
ビルドパスに AWS SDK for Java を追加するには
1.
Java Project フォルダーを右クリックし、[Build Path] をクリックしてから、[Configure Build
Path...] をクリックします。
2.
[Libraries] タブをクリックし、[Add Library...] をクリックします。
3.
[AWS SDK for Java] をクリックし、[Next] をクリックしてから、[Finish] をクリックします。
API Version 2010-03-31
77
Amazon Simple Notification Service 開発者ガイド
ステップ 5: Amazon SNS および MPNS
を使って Windows Phone アプリに
プッシュ通知メッセージを送信する
前提条件情報を SNSMobilePush.java に追加するには
1.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダーの
SNSMobilePush.java を Eclipse で開き、sample.demoMPNSAppNotification(); のコメン
トを解除します。これは次のように表示されます。
SNSMobilePush sample = new SNSMobilePush(sns);
// TODO: Uncomment the services you wish to use.
//sample.demoAndroidAppNotification();
//sample.demoKindleAppNotification();
//sample.demoAppleAppNotification();
//sample.demoAppleSandboxAppNotification();
//sample.demoBaiduAppNotification();
//sample.demoWNSAppNotification();
sample.demoMPNSAppNotification();
2.
demoMPNSAppNotification メソッドを探し、notificationChannelURI 文字列の値に、MPNS か
ら受信した通知 URI を入力します。
3.
アプリケーションの名前を入力します。アプリケーション名は大文字および小文字の ASCII 文
字、数字、アンダースコア、ハイフン、およびピリオドのみで構成され、1~256 文字の長さであ
る必要があります。たとえば、次のようになります。
String applicationName = "mpnspushapp";
4.
.pem ファイル形式の MPNS TLS 証明書を入力します。ルート CA 証明書で始まり、発行された
証明書で終わる、完全な証明書チェーンを含める必要があります。証明書の各行の先頭には、\n
を追加する必要があります。たとえば、次のようになります。
String certificateChain = "-----BEGIN CERTIFICATE----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lB
\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9
+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=\n-----END CERTIFICATE-----";
5.
.pem ファイル形式の MPNS TLS 証明書のプライベートキーを入力します。証明書の各行の先頭
には、\n を追加する必要があります。たとえば、次のようになります。
String privateKey = "-----BEGIN RSA PR1VATE KEY----\nMJICiTCHAfICCQD9m7oRw0uXOjANBgkqhkiG7w0BAQUFADCBiDELMAkGA1UEBhMC
\nWVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGx2MQ8wDQYDVQQKEwZBbWF6\nVVMxCzAJBgNVBAgTAldB
FYai3z96EXAMPLE=\n-----END RSA PR1VATE KEY-----";
6.
アプリケーションを実行します。IDE の出力ウィンドウに次のような出力が表示されます。
===========================================
API Version 2010-03-31
78
Amazon Simple Notification Service 開発者ガイド
WNS の使用開始
Getting Started with Amazon SNS
===========================================
{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/MPNS/
TestApp}
{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/MPNS/
TestApp/557597f8-be4a-3035-8c6d-bb7fa8b20fef}
{Message Body: {"MPNS":"<?xml version=\"1.0\" encoding=\"utf-8\"?
><wp:Notification xmlns:wp=\"WPNotification\"><wp:Tile><wp:Count>23</
wp:Count><wp:Title>This is a tile notification</wp:Title></wp:Tile></
wp:Notification>"}}
{Message Attributes: ("AWS.SNS.MOBILE.MPNS.Type": "token"),
("AWS.SNS.MOBILE.MPNS.NotificationClass": "realtime")}
Published!
{MessageId=ce9855bf-395f-5a1a-a4b9-19ace305780d}
Windows Phone で、プッシュ通知メッセージがアプリ内に表示されます。
WNS の使用開始
Windows プッシュ通知サービス(WNS)は、プッシュ通知メッセージと更新を Windows 8(およ
びそれ以降)と Windows Phone 8.1(およびそれ以降)のアプリに送信できるようにするサービス
です。このセクションでは、WNS の前提条件を取得し、Amazon SNS および WNS を使用してプッ
シュ通知メッセージを送信する方法について説明します。
トピック
• WNS の前提条件 (p. 79)
• ステップ 1: プッシュ通知メッセージを受信するようにアプリをセットアップする (p. 80)
• ステップ 2: WNS からプッシュ通知 URI を取得する (p. 80)
• ステップ 3: WNS からパッケージセキュリティ識別子を取得する (p. 80)
• ステップ 4: WNS からシークレットキーを取得する (p. 80)
• ステップ 5: Amazon SNS および WNS を使用してアプリにプッシュ通知メッセージを送信す
る (p. 80)
WNS の前提条件
Amazon SNS および WNSWindows を使って Windows デバイスにプッシュ通知メッセージを送信す
るには、以下が必要です。
• WNS を使用するように設定された Windows 8(およびそれ以降)または Windows Phone 8.1 アプ
リ
• WNS からのプッシュ通知 URI
• パッケージのセキュリティ識別子
• シークレットキー
すでにこれらの前提条件を満たしている場合は、Amazon SNS コンソールまたは Amazon SNS API
を使用してアプリにプッシュ通知メッセージを送信できます。Amazon SNS コンソールの使用方法の
詳細については、「Amazon SNS モバイルプッシュの使用 (p. 81)」を参照してください。Amazon
SNS API の使用方法の詳細については、「ステップ 5: Amazon SNS および WNS を使用してアプリ
にプッシュ通知メッセージを送信する (p. 80)」を参照してください。
API Version 2010-03-31
79
Amazon Simple Notification Service 開発者ガイド
ステップ 1: プッシュ通知メッセージを受
信するようにアプリをセットアップする
ステップ 1: プッシュ通知メッセージを受信するよ
うにアプリをセットアップする
アプリにプッシュ通知メッセージを送信するには、WNS サービスに対してアプリを有効にする必要が
あります。詳細については、「Windows プッシュ通知サービス」を参照してください。
ステップ 2: WNS からプッシュ通知 URI を取得する
Amazon SNS でモバイルエンドポイントを作成するには、WNS からのプッシュ通知 URI が必要で
す。詳細については、「Windows プッシュ通知サービス」を参照してください。
ステップ 3: WNS からパッケージセキュリティ識別
子を取得する
Amazon SNS でモバイルエンドポイントを作成するには、WNS からのパッケージセキュリティ識別
子が必要です。詳細については、「Windows プッシュ通知サービス」を参照してください。
ステップ 4: WNS からシークレットキーを取得する
Amazon SNS でモバイルエンドポイントを作成するには、WNS からのシークレットキーが必要で
す。詳細については、「Windows プッシュ通知サービス」を参照してください。
ステップ 5: Amazon SNS および WNS を使用して
アプリにプッシュ通知メッセージを送信する
このセクションでは、Amazon SNS と WNS を使用してアプリにプッシュ通知メッセージ
を送信するための前提条件情報の使用方法について説明します。AWS のサンプルファイル
SNSMobilePush.java に、収集された前提条件情報を追加します。サンプルファイルは
snsmobilepush.zip ファイルに含まれています。
Note
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java を
インストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としてい
ます。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細につい
ては、「セキュリティ認証情報の取得方法」(AWS General Reference)を参照してくださ
い。
サンプルを Eclipse に追加するには
1.
Eclipse で新しい Java プロジェクトを作成します([File] | [New] | [Java Project])。
2.
新しく作成した Java プロジェクトの最上位ディレクトリに SNSSamples フォルダーをインポー
トします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、
[General] を展開します。次に、[File System]、[Next] をクリックし、SNSSamples フォルダーを
参照し、[OK] をクリックしてから、[Finish] をクリックします。
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダー
で、AwsCredentials.properties ファイルを開き、AWS の認証情報を追加します。
3.
ビルドパスに AWS SDK for Java を追加するには
1.
Java Project フォルダーを右クリックし、[Build Path] をクリックしてから、[Configure Build
Path...] をクリックします。
API Version 2010-03-31
80
Amazon Simple Notification Service 開発者ガイド
Amazon SNS モバイルプッシュの使用
2.
[Libraries] タブをクリックし、[Add Library...] をクリックします。
3.
[AWS SDK for Java] をクリックし、[Next] をクリックしてから、[Finish] をクリックします。
前提条件情報を SNSMobilePush.java に追加するには
1.
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダーの
SNSMobilePush.java を Eclipse で開き、sample.demoWNSAppNotification(); のコメン
トを解除します。これは次のように表示されます。
SNSMobilePush sample = new SNSMobilePush(sns);
// TODO: Uncomment the services you wish to use.
//sample.demoAndroidAppNotification();
//sample.demoKindleAppNotification();
//sample.demoAppleAppNotification();
//sample.demoAppleSandboxAppNotification();
//sample.demoBaiduAppNotification();
sample.demoWNSAppNotification();
//sample.demoMPNSAppNotification();
2.
demoWNSAppNotification メソッドを見つけ、プッシュ通知の URI、パッケージセキュリティ
識別子、およびシークレットキーの文字列値を入力します。
3.
アプリケーションの名前を入力します。アプリケーション名は大文字および小文字の ASCII 文
字、数字、アンダースコア、ハイフン、およびピリオドのみで構成され、1~256 文字の長さであ
る必要があります。たとえば、次のようになります。
String applicationName = "wnspushapp";
4.
アプリケーションを実行します。IDE の出力ウィンドウに次のような出力が表示されます。
===========================================
Getting Started with Amazon SNS
===========================================
{PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/WNS/
TestApp}
{EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/WNS/
TestApp/17cc2f2a-dfa8-3450-90c6-e1f88d820f3d}
{Message Body: {"WNS":"<badge version=\"1\" value=\"23\"/>"}}
{Message Attributes: ("AWS.SNS.MOBILE.WNS.Type": "wns/badge"),
("AWS.SNS.MOBILE.WNS.CachePolicy": "cache")}
Published!
{MessageId=d4899281-927e-5f68-9fd0-de9248be6d47}
Windows デバイスで、プッシュ通知メッセージがアプリ内に表示されます。
Amazon SNS モバイルプッシュの使用
このセクションでは、「前提条件 (p. 40)」で説明されている情報を使って AWS マネジメントコン
ソール を使用し、モバイルアプリの AWS への登録、デバイストークン(登録 ID とも呼ばれる)の
API Version 2010-03-31
81
Amazon Simple Notification Service 開発者ガイド
モバイルアプリの AWS への登録
追加、モバイルデバイスへの直接的なメッセージの送信、および Amazon SNS トピックに受信登録し
ているモバイルデバイスへのメッセージの送信を行う方法について説明します。
トピック
• モバイルアプリの AWS への登録 (p. 82)
• デバイストークンまたは登録 ID の追加 (p. 84)
• プラットフォームエンドポイントの作成とデバイストークンの管理 (p. 87)
• モバイルデバイスへのメッセージの直接的な送信 (p. 92)
• トピックに受信登録したモバイルデバイスへのメッセージの送信 (p. 92)
• メッセージでのカスタムプラットフォーム固有のペイロードのモバイルデバイスへの送
信 (p. 93)
モバイルアプリの AWS への登録
Amazon SNS がモバイルエンドポイントに通知メッセージを送信するためには、直接か、トピックへ
の受信登録かにかかわらず、最初にアプリを AWS に登録する必要があります。AWS にモバイルアプ
リを登録するには、アプリを表す名前を入力し、サポートされるプラットフォームを選択して、通知
サービスプラットフォームの認証情報を指定します。アプリが AWS に登録されたら、次の手順はア
プリやモバイルデバイス用のエンドポイントの作成です。このエンドポイントは、アプリとデバイス
に通知メッセージを送信するために Amazon SNS によって使用されます。
モバイルアプリを AWS に登録するには
1.
https://console.aws.amazon.com/sns/v2/home に移動し、[Create platform application] をクリック
します。
2.
[Application name] ボックスにアプリを表す名前を入力します。
アプリ名は大文字および小文字の ASCII 文字、数字、アンダースコア、ハイフン、およびピリオ
ドのみで構成され、1~256 文字の長さである必要があります。
3.
[Push notification platform] ボックスで、アプリが登録されているプラットフォームを選択し、適
切な認証情報を入力します。
Note
いずれかの APNS プラットフォームを使用している場合は、[Choose file] を選択し
て .p12 ファイル(Keychain Access からエクスポートされる)を Amazon SNS にアップ
ロードできます。
以下の情報を取得する方法の詳細な手順については、「Amazon Device Messaging の使用開
始 (p. 43)」、「Apple Push Notification Service の使用開始 (p. 47)」、「Baidu Cloud Push
の使用開始 (p. 54)」、「Android 用 Google クラウドメッセージング の使用開始 (p. 71),
MPNS の使用開始 (p. 75)」、または「 WNS の使用開始 (p. 79)」を参照してください。
プラットフォーム
認証情報
ADM
[Client ID] – Amazon Mobile App Distribution
Portal にアクセスし、[Apps and Services] を
クリックし、Kindle Fire アプリの名前をク
リックしてから、[Security Profile] をクリック
します。
[Client Secret] – Amazon Mobile App
Distribution Portal にアクセスし、[Apps and
Services] をクリックし、Kindle Fire アプリの
API Version 2010-03-31
82
Amazon Simple Notification Service 開発者ガイド
モバイルアプリの AWS への登録
プラットフォーム
認証情報
名前をクリックしてから、[Security Profile] を
クリックします。
APNS
[Certificate] – Mac コンピュータの Keychain
Access から .p12 ファイル形式でエクスポー
トされた、パスワードで暗号化された証明書
とプライベートキーを選択します。
[Certificate Password] – パスワードを入力しま
す。
APNS_SANDBOX
[Certificate] – 上記の APNS のものと同じで
す。
[Certificate Password] – 上記の APNS のもの
と同じです。
APNS_VOIP
[Certificate] – 上記の APNS のものと同じで
す。
[Certificate Password] – 上記の APNS のもの
と同じです。
APNS_VOIP_SANDBOX
[Certificate] – 上記の APNS のものと同じで
す。
[Certificate Password] – 上記の APNS のもの
と同じです。
MACOS
[Certificate] – 上記の APNS のものと同じで
す。
[Certificate Password] – 上記の APNS のもの
と同じです。
MACOS_SANDBOX
[Certificate] – 上記の APNS のものと同じで
す。
[Certificate Password] – 上記の APNS のもの
と同じです。
Baidu
[API Key] – 「ステップ 3: Baidu クラウドプッ
シュプロジェクトを作成する (p. 59)」の説
明に従って、Baidu クラウドプッシュプロジェ
クトの作成後に受け取った API キーを入力し
ます。
[Client Secret] – 「ステップ 3: Baidu クラウド
プッシュプロジェクトを作成する (p. 59)」
の説明に従って、Baidu クラウドプッシュプロ
ジェクトの作成後に受け取ったシークレット
キーを入力します。
API Version 2010-03-31
83
Amazon Simple Notification Service 開発者ガイド
デバイストークンまたは登録 ID の追加
プラットフォーム
認証情報
GCM
[API Key] – Google APIs Console ウェブサイ
トにアクセスし、[API Access] をクリックし
て、[Key for server apps (with IP locking)] ラベ
ルがあるサーバー API キーを書き留めます。
まだサーバー API キーを作成していない場合
は、[Create new Server key...] をクリックしま
す。
MPNS
[Certificate] – 「ステップ 4: TLS 証明書を
アップロードする (p. 77)」の説明に従っ
て、Windows 開発者アカウントの TLS 証明書
を入力します。
[Private Key] – 「ステップ 4: TLS 証明書を
アップロードする (p. 77)」の説明に従っ
て、TLS 証明書のプライベートキーを入力し
ます。
WNS
[Client Secret] – Windows プッシュ通知サー
ビス(WNS)による認証方法」の説明に従っ
て、クライアントシークレットを入力しま
す。
[Package Security Identifier (SID)] – Windows
プッシュ通知サービス(WNS)による認証方
法」の説明に従って、SID を入力します。
4.
この情報を入力したら、[Add New App] をクリックします。
アプリが Amazon SNS に登録されます。これにより、選択されたプラットフォーム用のプラット
フォームアプリケーションオブジェクトが作成され、対応する PlatformApplicationArn が返され
ます。
デバイストークンまたは登録 ID の追加
Apple Push Notification Service(APNS)や Android 用 Google クラウドメッセージング(GCM)
などの通知サービスに初めてアプリやモバイルデバイスを登録すると、通知サービスからデバイス
トークンまたは登録 ID が通知サービスから返されます。デバイストークンまたは登録 ID を Amazon
SNS に追加すると、それらは PlatformApplicationArn API とともに、アプリやデバイスの
エンドポイントを作成するために使用されます。Amazon SNS がエンドポイントを作成するとき
に、EndpointArn が返されます。EndpointArn は、通知メッセージの送信先のアプリやモバイルデ
バイスを Amazon SNS が知るための方法です。
以下の方法を使用して、デバイストークンと登録 ID を Amazon SNS に追加できます。
• AWS マネジメントコンソール を使って手動で AWS に単一のトークンを追加する
• AWS マネジメントコンソール を使って CSV ファイルから AWS に既存のトークンを移行する
• CreatePlatformEndpoint API を使って複数のトークンをアップロードする
• 将来アプリをインストールするデバイスからトークンを登録する
API Version 2010-03-31
84
Amazon Simple Notification Service 開発者ガイド
デバイストークンまたは登録 ID の追加
手動でデバイストークンまたは登録 ID を追加するには
1.
https://console.aws.amazon.com/sns/v2/home に移動して、[Apps] をクリックし、アプリをク
リックしてから、[Add Endpoints] をクリックします。
2.
[Endpoint Token] ボックスで、通知サービスに応じてトークン ID または登録 ID を入力します。
たとえば、ADM や GCM では、登録 ID を入力します。
3.
(オプション)[User Data] に、エンドポイントに関連付ける任意の情報を入力します。Amazon
SNS はこのデータを使用しません。データは UTF-8 形式で、2 KB 未満でなければなりません。
4.
最後に、[Add Endpoints] をクリックします。
これでエンドポイントを作成したので、直接モバイルデバイスにメッセージを送信するか、ト
ピックに受信登録しているモバイルデバイスにメッセージを送信することができます。
既存のトークンを CSV ファイルから AWS に移行するには
CSV ファイルに含まれている既存のトークンを移行できます。CSV ファイルは 2 MB より大きくする
ことはできません。複数のトークンを移行するときは、CreatePlatformEndpoint API を使用する
ことをお勧めします。CSV ファイルの各トークンの後には改行が必要です。たとえば、CSV ファイ
ルは次のようになります。
amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN-KMTlmMWxwRkxMaDNST2luZz01,"User data with spaces requires quotes"
amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN-KMTlmMWxwRkxMaDNST2luZz04,"Data,with,commas,requires,quotes"
amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN-KMTlmMWxwRkxMaDNST2luZz02,"Quoted data requires ""escaped"" quotes"
amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN-KMTlmMWxwRkxMaDNST2luZz03,"{""key"": ""json is allowed"",
""value"":""endpoint"", ""number"": 1}"
amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN-KMTlmMWxwRkxMaDNST2luZz05,SimpleDataNoQuotes
amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN-KMTlmMWxwRkxMaDNST2luZz06,"The following line has no user data"
amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz07
APBTKzPGlCyT6E6oOfpdwLpcRNxQp5vCPFiFeru9oZylc22HvZSwQTDgmmw9WdNlXMerUPxmpX0w1,"Different
token style"
1.
https://console.aws.amazon.com/sns/v2/home に移動して、[Apps] をクリックし、アプリをク
リックしてから、[Add Endpoints] をクリックします。
2.
[Migrate existing tokens over to AWS] をクリックし、[Choose File] をクリックし、CSV ファイル
を選択してから、[Add Endpoints] をクリックします。
CreatePlatformEndpoint を使用して複数のトークンをアップロードするには
以下の手順は、AWS に用意されているサンプルの Java アプリ(bulkupload パッケージ)を使用し
て複数のトークン(デバイストークンまたは登録 ID)を Amazon SNS にアップロードする方法を示
しています。既存のトークンのアップロードを開始するには、このサンプルアプリを使用できます。
Note
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java を
インストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としてい
ます。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細につい
API Version 2010-03-31
85
Amazon Simple Notification Service 開発者ガイド
デバイストークンまたは登録 ID の追加
ては、「セキュリティ認証情報の取得方法」(AWS General Reference)を参照してくださ
い。
1.
snsmobilepush.zip ファイルをダウンロードして解凍します。
2.
Eclipse で新しい Java プロジェクトを作成します。
3.
新しく作成したされた Java プロジェクトの最上位ディレクトリに SNSSamples フォルダー
をインポートします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をク
リックして、[General] を展開します。次に、[File System] をクリックし、[Next] をクリックし
て、SNSSamples フォルダーを参照し、[OK] をクリックしてから、[Finish] をクリックします。
4.
OpenCSV library のコピーをダウンロードし、bulkupload パッケージのビルドパスに追加しま
す。
5.
bulkupload パッケージに含まれている BulkUpload.properties ファイルを開きます。
6.
BulkUpload.properties に以下を追加します。
• エンドポイントを追加する ApplicationArn。
• トークンを含む CSV ファイルの場所の絶対パス。
• Amazon SNS が正しく解析するトークンと、解析に失敗するトークンのログ記録のために作成
される CSV ファイルの名前(goodTokens.csv、badTokens.csv など)。
• (オプション)トークンを含む CSV ファイルで区切り記号と引用符を指定する文字。
• (オプション)エンドポイントを同時に作成するために使用するスレッドの数。デフォルトは
1 スレッドです。
完了した BulkUpload.properties は次のようになります。
applicationarn:arn:aws:sns:us-west-2:111122223333:app/GCM/gcmpushapp
csvfilename:C:\\mytokendirectory\\mytokens.csv
goodfilename:C:\\mylogfiles\\goodtokens.csv
badfilename:C:\\mylogfiles\\badtokens.csv
delimiterchar:'
quotechar:"
numofthreads:5
7.
BatchCreatePlatformEndpointSample.java アプリケーションを実行してトークンを Amazon SNS
にアップロードします。
この例では、正常に Amazon SNS にアップロードされたトークン用に作成されたエンドポイント
は goodTokens.csv に記録され、正しい形式でないトークンは badTokens.csv に記録されま
す。さらに、次のような内容を含む STD OUT ログが Eclipse のコンソールに書き込まれます。
<1>[SUCCESS] The endpoint was created with Arn arn:aws:sns:uswest-2:111122223333:app/GCM/gcmpushapp/165j2214-051z-3176b586-138o3d420071
<2>[ERROR: MALFORMED CSV FILE] Null token found in /mytokendirectory/
mytokens.csv
将来アプリをインストールするデバイスからトークンを登録するには
次の 2 つのオプションのうちの 1 つを使用できます。
API Version 2010-03-31
86
Amazon Simple Notification Service 開発者ガイド
プラットフォームエンドポイント
の作成とデバイストークンの管理
• Use the Amazon Cognito service: モバイルアプリでは、Amazon SNS プラットフォームアプリ
ケーションと関連付けられた認証情報を作成するために、認証情報が必要です。一定期間後に有
効期限が切れる一時認証情報を使用することをお勧めします。ほとんどのシナリオでは、Amazon
Cognito を使用して一時的なセキュリティ認証情報を作成することをお勧めします。詳細につ
いては、「ID プロバイダーを使用してモバイルアプリ向けに一時的なセキュリティ認証情報を
作成する」を参照してください。アプリが Amazon SNS に登録したときに通知を受信する場合
は、新しいエンドポイント ARN を提供する Amazon SNS イベントを受信するように登録できま
す。ListEndpointByPlatformApplication API を使用して、Amazon SNS に登録されたエン
ドポイントの詳細な一覧を取得することもできます。
• [Use a proxy server]: 各インストールで呼び出し、登録するためにモバイルアプリ用にアプリケー
ションのインフラストラクチャがすでにセットアップされている場合は、引き続きこのセット
アップを使用できます。サーバーはプロキシとして動作し、保存したいユーザーデータととも
に、Amazon SNS モバイルプッシュ通知にデバイストークンを渡します。そのためには、プロキシ
サーバーは AWS の認証情報を使用して Amazon SNS に接続し、CreatePlatformEndpoint API
呼び出しを使用してトークン情報をアップロードします。新しく作成された Amazon リソースネー
ム(ARN)が返され、サーバーは Amazon SNS にそれ以降に発行の呼び出しを行うためにこれを
保存できます。
プラットフォームエンドポイントの作成とデバイス
トークンの管理
プッシュ通知サービスへのアプリケーションおよびモバイルデバイスの登録時に、プッシュ通知サー
ビスはデバイストークンを返します。Amazon SNS はデバイストークンを使用して、モバイルエン
ドポイントを作成します。ここに直接プッシュ通知メッセージを送信できます。詳細については、
「前提条件 (p. 40)」および「Amazon SNS モバイルプッシュを使用するために必要な手順の概
要 (p. 41)」を参照してください。
このセクションでは、プラットフォームエンドポイントを作成してデバイストークンを管理するため
の推奨される方法について説明します。
トピック
• プラットフォームエンドポイントの作成 (p. 87)
• 擬似コード (p. 88)
• Java の例 (p. 89)
• トラブルシューティング (p. 91)
プラットフォームエンドポイントの作成
Amazon SNS を使用してアプリケーションにプッシュ通知を送信するには、まずプラットフォーム
エンドポイントの作成アクションを呼び出すことで、そのアプリケーションのデバイストークンを
Amazon SNS に登録する必要があります。このアクションは、パラメーターとしてプラットフォーム
アプリケーションの Amazon リソースネーム (ARN) およびデバイストークンを使用し、作成されたプ
ラットフォームエンドポイントの ARN を返します。
プラットフォームエンドポイントの作成アクションは、次の処理を行います。
• プラットフォームエンドポイントが既に存在する場合、再度作成しないでください。呼び出し元に
既存のプラットフォームエンドポイントの ARN を返します。
• デバイストークンが同じだが設定が異なるプラットフォームエンドポイントが既に存在する場合、
再度作成しないでください。呼び出し元に例外をスローします。
• プラットフォームエンドポイントが存在しない場合は、作成します。呼び出し元に新しく作成した
プラットフォームエンドポイントの ARN を返します。
API Version 2010-03-31
87
Amazon Simple Notification Service 開発者ガイド
プラットフォームエンドポイント
の作成とデバイストークンの管理
このアプローチでは、作業エンドポイントが常に提供されるとは限らないため、アプリケーションが
起動するたびにプラットフォームエンドポイントの作成アクションを呼び出さないでください。これ
は、たとえばアプリケーションがアンインストールされて同じデバイスに再インストールされ、その
アプリケーションのエンドポイントが既に存在しているが無効な場合などに発生する可能性がありま
す。登録プロセスに成功すると、以下のことが達成されます。
1. このアプリケーションデバイスの組み合わせにプラットフォームエンドポイントが存在することを
確認します。
2. プラットフォームエンドポイントのデバイストークンが最新の有効なデバイストークンであること
を確認します。
3. プラットフォームエンドポイントが有効であり、使用できる状態にあることを確認します。
擬似コード
次の擬似コードは、さまざまな開始条件において有効な最新の作業プラットフォームエンドポイント
を作成するための推奨される方法について説明します。このアプローチは、アプリケーションが初め
て登録されるかどうか、このアプリケーションのプラットフォームエンドポイントが既に存在するか
どうか、プラットフォームエンドポイントが有効かどうか、適切なデバイストークンがあるかどうか
などに関係なく機能します。重複するプラットフォームエンドポイントが作成されたり、既に最新の
プラットフォームエンドポイントが有効になっている場合に既存のプラットフォームエンドポイント
が変更されたりしないため、連続して複数回呼び出しても安全です。
retrieve the latest device token from the mobile operating system
if (the platform endpoint ARN is not stored)
# this is a first-time registration
call create platform endpoint
store the returned platform endpoint ARN
endif
call get endpoint attributes on the platform endpoint ARN
if (while getting the attributes a not-found exception is thrown)
# the platform endpoint was deleted
call create platform endpoint with the latest device token
store the returned platform endpoint ARN
else
if (the device token in the endpoint does not match the latest one) or
(get endpoint attributes shows the endpoint as disabled)
call set endpoint attributes to set the latest device token and then
enable the platform endpoint
endif
endif
このアプローチは、アプリケーションが自身を登録または再登録するときいつでも使用できます。ま
た、デバイストークンの変更について Amazon SNS に通知するときも使用できます。この場合、最新
のデバイストークン値を持つアクションを呼び出すだけです。このアプローチについて注意が必要な
点は次のとおりです。
• プラットフォームエンドポイントの作成アクションの呼び出しが考えられる 2 つのケースがありま
す。アプリケーションが自身のプラットフォームエンドポイント ARN を認識していない、ごく最
初の時点で呼び出される可能性があります。これは初回登録時に発生します。さらに、最初のエン
ドポイント属性の取得アクションが not-found 例外で失敗した場合にも呼び出されます。これは、
アプリケーションがエンドポイント ARN を認識しているが、削除された場合に発生する可能性が
あります。
• エンドポイント属性の取得アクションは、プラットフォームエンドポイントが作成されたばかりの
場合でもプラットフォームエンドポイントの状態を確認するために呼び出されます。これは、プ
API Version 2010-03-31
88
Amazon Simple Notification Service 開発者ガイド
プラットフォームエンドポイント
の作成とデバイストークンの管理
ラットフォームエンドポイントが既に存在するが無効になっている場合に発生します。この場合、
プラットフォームエンドポイントの作成アクションが成功しますが、プラットフォームエンドポイ
ントは有効にならないため、成功を返す前にプラットフォームエンドポイントの状態をもう一度確
認する必要があります。
Java の例
前の擬似コードの Java での実装例を示します。
class RegistrationExample {
AmazonSNSClient client = new AmazonSNSClient(); //provide credentials here
private void registerWithSNS() {
String endpointArn = retrieveEndpointArn();
String token = "Retrieved from the mobile operating system";
boolean updateNeeded = false;
boolean createNeeded = (null == endpointArn);
if (createNeeded) {
// No platform endpoint ARN is stored; need to call createEndpoint.
endpointArn = createEndpoint();
createNeeded = false;
}
System.out.println("Retrieving platform endpoint data...");
// Look up the platform endpoint and make sure the data in it is current,
even if
// it was just created.
try {
GetEndpointAttributesRequest geaReq =
new GetEndpointAttributesRequest()
.withEndpointArn(endpointArn);
GetEndpointAttributesResult geaRes =
client.getEndpointAttributes(geaReq);
updateNeeded = !geaRes.getAttributes().get("Token").equals(token)
|| !geaRes.getAttributes().get("Enabled").equalsIgnoreCase("true");
} catch (NotFoundException nfe) {
// We had a stored ARN, but the platform endpoint associated with it
// disappeared. Recreate it.
createNeeded = true;
}
if (createNeeded) {
createEndpoint();
}
System.out.println("updateNeeded = " + updateNeeded
if (updateNeeded) {
// The platform endpoint is out of sync with the current data;
// update the token and enable it.
System.out.println("Updating platform endpoint " + endpointArn);
API Version 2010-03-31
89
Amazon Simple Notification Service 開発者ガイド
プラットフォームエンドポイント
の作成とデバイストークンの管理
Map attribs = new HashMap();
attribs.put("Token", token);
attribs.put("Enabled", "true");
SetEndpointAttributesRequest saeReq =
new SetEndpointAttributesRequest()
.withEndpointArn(endpointArn)
.withAttributes(attribs);
client.setEndpointAttributes(saeReq);
}
}
/**
* @return never null
* */
private String createEndpoint() {
String endpointArn = null;
try {
System.out.println("Creating platform endpoint with token " + token);
CreatePlatformEndpointRequest cpeReq =
new CreatePlatformEndpointRequest()
.withPlatformApplicationArn(applicationArn)
.withToken(token);
CreatePlatformEndpointResult cpeRes = client
.createPlatformEndpoint(cpeReq);
endpointArn = cpeRes.getEndpointArn();
} catch (InvalidParameterException ipe) {
String message = ipe.getErrorMessage();
System.out.println("Exception message: " + message);
Pattern p = Pattern
.compile(".*Endpoint (arn:aws:sns[^ ]+) already exists " +
"with the same token.*");
Matcher m = p.matcher(message);
if (m.matches()) {
// The platform endpoint already exists for this token, but with
// additional custom data that
// createEndpoint doesn't want to overwrite. Just use the
// existing platform endpoint.
endpointArn = m.group(1);
} else {
// Rethrow the exception, the input is actually bad.
throw ipe;
}
}
storeEndpointArn(endpointArn);
return endpointArn;
}
/**
* @return the ARN the app was registered under previously, or null if no
*
platform endpoint ARN is stored.
*/
private String retrieveEndpointArn() {
// Retrieve the platform endpoint ARN from permanent storage,
// or return null if null is stored.
return arnStorage;
}
/**
API Version 2010-03-31
90
Amazon Simple Notification Service 開発者ガイド
プラットフォームエンドポイント
の作成とデバイストークンの管理
* Stores the platform endpoint ARN in permanent storage for lookup next
time.
* */
private void storeEndpointArn(String endpointArn) {
// Write the platform endpoint ARN to permanent storage.
arnStorage = endpointArn;
}
}
この実装で興味深いのは、InvalidParameterException が createEndpoint メソッドでどのよ
うに処理されるかという点です。Amazon SNS は、既存のプラットフォームエンドポイントに同じデ
バイストークンと null 以外の CustomUserData フィールドがあるとき、プラットフォームエンドポ
イントの作成リクエストを拒否します。代わりの方法では、CustomUserData が上書きされる (した
がって、失われる) ためです。前のコードの createEndpoint メソッドは、Amazon SNS によって
スローされた InvalidParameterException をキャプチャし、この特定の理由でスローされたかど
うかを確認します。その理由でスローされた場合、例外から既存のプラットフォームエンドポイント
の ARN が抽出されます。適切なデバイストークンを持つプラットフォームエンドポイントが存在す
るため、この処理は成功します。
詳細については、「Amazon SNS モバイルプッシュ API の使用 (p. 102)」を参照してください。
トラブルシューティング
古いデバイストークンを使用してプラットフォームエンドポイントの作成を繰
り返し呼び出す
特に GCM エンドポイントの場合、アプリケーションが発行した最初のデバイストークンを保存して
から、アプリケーションが起動するたびにそのデバイストークンを使用してプラットフォームエンド
ポイントの作成を呼び出すのが最適に思えるかもしれません。これは、アプリケーションがデバイス
トークンの状態を管理する必要がなくなり、Amazon SNS がサービストークンを最新の値に自動的
に更新するため、適切に思える場合があります。しかし、この解決策には多くの深刻な問題がありま
す。
• Amazon SNS は、期限切れのデバイストークンを新しいデバイストークンに更新するために GCM
からのフィードバックを必要とします。GCM は、しばらくの間古いデバイストークンの情報を保持
しますが、無期限ではありません。GCM が古いデバイストークンと新しいデバイストークンの関連
性の認識を失うと、Amazon SNS はプラットフォームエンドポイントに保存されたデバイストーク
ンを適切な値に更新することができなくなります。代わりに、プラットフォームエンドポイントが
無効になるだけです。
• プラットフォームアプリケーションには、同じデバイストークンに対応する複数のプラットフォー
ムエンドポイントが含められます。
• Amazon SNS では、同じデバイストークンを使用して作成できるプラットフォームエンドポイント
の数に制限が適用されます。最終的に、新しいエンドポイントの作成は無効なパラメーターの例外
によって失敗し、"This endpoint is already registered with a different token" というエラーメッセー
ジが表示されます。
無効なデバイストークンに関連付けられたプラットフォームエンドポイントを
再度有効にする
モバイルプラットフォーム (APNS や GCM など) が、発行リクエストで使用されたデバイストークン
が無効であったことを Amazon SNS に通知すると、Amazon SNS はそのデバイストークンに関連付
けられたプラットフォームエンドポイントを無効にします。その場合、Amazon SNS はそのデバイス
トークンに対するそれ以降の発行を拒否します。プラットフォームエンドポイントを再度に有効にし
て発行を継続すれば最適と考える可能性がありますが、ほとんどの場合これはうまくいきません。発
行されるメッセージは配信されず、プラットフォームエンドポイントはその後まもなく無効になりま
す。
API Version 2010-03-31
91
Amazon Simple Notification Service 開発者ガイド
モバイルデバイスへのメッセージの直接的な送信
これは、プラットフォームエンドポイントに関連付けられたデバイストークンが間違いなく無効であ
るためです。プラットフォームエンドポイントは、インストールされているどのアプリケーションに
も応答しないため、配信が成功することはありません。次回発行されると、モバイルプラットフォー
ムはデバイストークンが無効であることを Amazon SNS にもう一度通知し、Amazon SNS はプラッ
トフォームエンドポイントをもう一度無効にします。
無効なプラットフォームエンドポイントを再度有効にするには、有効なデバイストークンに関連付け
た後 (エンドポイント属性の設定アクションを呼び出して)、有効にする必要があります。その場合の
み、そのプラットフォームエンドポイントへの配信は成功します。デバイストークンを更新しないで
プラットフォームエンドポイントを有効にできるのは、そのエンドポイントに関連付けられたデバイ
ストークンが無効であったが、再度有効となった場合のみです。これは、たとえばアプリケーション
がアンインストールされて同じモバイルデバイスに再インストールされ、同じデバイストークンを受
け取った場合などに発生します。上に示したアプローチではこれが行われます。関連付けられたデバ
イストークンが使用可能な最新のものであると確認してから、プラットフォームエンドポイントを再
度有効にすることのみ確実に行ってください。
モバイルデバイスへのメッセージの直接的な送信
以下の手順を実行すると、アプリおよびモバイルデバイスを表すエンドポイントに Amazon SNS プッ
シュ通知メッセージを直接送信することができます。
直接的なメッセージを送信するには
1.
https://console.aws.amazon.com/sns/v2/home に移動します。
2.
左側の [Navigation] ペインで [Apps] をクリックし、メッセージを送信するアプリをクリックしま
す。
3.
[Application Details] 画面で [Endpoint Actions] を選択し、[Publish] をクリックします。
4.
[Publish] ダイアログボックスで、モバイルデバイスのアプリに表示するメッセージを入力し、
[Publish] をクリックします。
次に、通知メッセージが Amazon SNS からプラットフォーム通知サービスに送信され、プラット
フォーム通知サービスがメッセージをアプリに送信します。
トピックに受信登録したモバイルデバイスへのメッ
セージの送信
Amazon SNS を使用して、トピックに受信登録したモバイルエンドポイントにメッセージを送信す
ることもできます。このコンセプトは、「Amazon Simple Notification Service とは (p. 1)」に説明さ
れているように、Amazon SQS、HTTP/S、E メール、SMS などその他のエンドポイントタイプをト
ピックにサブスクライブするのと同じです。その違いは、Amazon SNS は受信登録したモバイルエ
ンドポイントがトピックに送信された通知を受信するために通知サービスを通じて通信を行うことで
す。
トピックに受信登録したエンドポイントに送信するには
1.
「トピックへのサブスクライブ (p. 6)」に説明されている手順に従います。[Protocol] ドロッ
プダウンメニューの [Application] を選択し、[Endpoint] ボックスにモバイルエンドポイントの
Amazon リソースネーム(ARN)を入力するだけです。
2.
「トピックへの発行 (p. 7)」に説明されているように、トピックへのメッセージの発行手順に従い
ます。その後、トピックに受信登録しているすべてのモバイルエンドポイントにメッセージが送
信されます。
API Version 2010-03-31
92
Amazon Simple Notification Service 開発者ガイド
カスタムプラットフォーム固有のペ
イロードのモバイルデバイスへの送信
メッセージでのカスタムプラットフォーム固有のペ
イロードのモバイルデバイスへの送信
Amazon SNS コンソールまたは API を使用して、メッセージのカスタムプラットフォーム固有のペイ
ロードをモバイルデバイスに送信します。次のセクションでは、サポートされる通知サービスごとに
カスタムプラットフォーム固有のペイロードを作成および送信するために、Amazon SNS コンソール
を使用する方法について説明します。Amazon SNS API の使用の詳細については、「Amazon SNS モ
バイルプッシュ API の使用 (p. 102)」および AWS のサンプルファイル SNSMobilePush.java を
参照してください。このサンプルファイルは snsmobilepush.zip ファイルに含まれています。
JSON 形式のメッセージデータ
Amazon SNS コンソールを使用してメッセージでプラットフォーム固有のペイロードを送信する場
合、データはキーと値のペア文字列で、引用符をエスケープした JSON 形式でフォーマットされて
いる必要があります。次の例は、読みやすくするために書式とスペースが含まれていますが、メッ
セージ本文内にキーと値のペアがある GCM プラットフォーム用のサンプルのカスタムメッセージ
で、JSON 形式です。
{
"GCM":"{
"data":{
"message":"Check out these awesome deals!",
"url":"www.amazon.com"
}
}"
}
コンソールを使用してメッセージを送信する際には、次の例に示すように引用符をエスケープ(\")す
る必要があります。
{
"GCM":"{
\"data\":{
\"message\":\"Check out these awesome deals!\",
\"url\":\"www.amazon.com\"
}
}"
}
Amazon SNS コンソールに入力するときは、サンプルは次のようになります。
{
"GCM":"{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":
\"www.amazon.com\"}}"
}
API Version 2010-03-31
93
Amazon Simple Notification Service 開発者ガイド
カスタムプラットフォーム固有のペ
イロードのモバイルデバイスへの送信
プラットフォーム固有のキーと値のペア
カスタムデータをキーと値のペアとして送信することに加えて、JSON ペイロード内でプラット
フォーム固有のキーと値のペアを送信することもできます。たとえば、data GCMパラメータに含ま
れるカスタムデータのキーと値のペアの後に time_to_live および collapse_key GCM パラメー
タを含める場合、エスケープした引用符がない JSON ペイロードは次のようになります。
{
"GCM":"{
"data":{
"message":"Check out these awesome deals!",
"url":"www.amazon.com"
},
"time_to_live": 3600,
"collapse_key": "deals"
}"
}
Amazon SNS コンソールへの入力時に、この例は次のようになります。
{
"GCM":"{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":
\"www.amazon.com\"},\"time_to_live\": 3600,\"collapse_key\":\"deals\"}"
}
Amazon SNS でサポートされている各プッシュ通知サービスでサポートされているキーと値のペアの
リストについては、以下のリンクを参照してください。
• APNS – Apple Push Notification Service
• GCM – HTTP 接続サーバーの参照先
• ADM – メッセージの送信
複数プラットフォーム上のアプリへのメッセージ
GCM や APNS など、複数プラットフォーム向けのデバイスにインストールされたアプリにメッセー
ジを送信するには、Amazon SNS のトピックにモバイルエンドポイントを受信登録してから、トピッ
クにメッセージを発行します。以下の例は、APNS、GCM、および ADM で受信登録したモバイルエ
ンドポイントに送信するメッセージを示しています。
{
"default": "This is the default message which must be present when publishing
a message to a topic. The default message will only be used if a message is
not present for
one of the notification platforms.",
"APNS": "{\"aps\":{\"alert\": \"Check out these awesome deals!\",\"url\":
\"www.amazon.com\"} }",
"GCM":"{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":
\"www.amazon.com\"}}",
"ADM": "{ \"data\": { \"message\": \"Check out these awesome deals!\",\"url
\":\"www.amazon.com\" }}"
API Version 2010-03-31
94
Amazon Simple Notification Service 開発者ガイド
メッセージの配信ステータスのアプリケーション属性
}
メッセージの配信ステータスの Amazon SNS ア
プリケーション属性を使用する
Amazon Simple Notification Service (Amazon SNS) では、プッシュ通知メッセージの配信ステータス
の記録がサポートされています。アプリケーション属性を設定した後、Amazon SNS からモバイルエ
ンドポイントに送信されたメッセージのログエントリが CloudWatch Logs に送信されます。メッセー
ジの配信ステータスを記録することは、以下のように運用をよりよく把握するために役立ちます。
• プッシュ通知メッセージが Amazon SNS からプッシュ通知サービスに配信されたかどうかがわかり
ます。
• プッシュ通知サービスから Amazon SNS に送信されたレスポンスを特定します。
• メッセージのドウェル時間(発行のタイムスタンプからプッシュ通知サービスへの配信直前までの
時間)を決定します。
メッセージの配信ステータスのアプリケーション属性を設定するには、AWS マネジメントコンソー
ル、AWS Software Development Kit (SDK)、またはクエリ API を使用できます。
トピック
• AWS マネジメントコンソール でメッセージの配信ステータスの属性を設定する (p. 95)
• Amazon SNS メッセージの配信ステータスの CloudWatch ログの例 (p. 96)
• AWS SDK でメッセージの配信ステータスの属性を設定する (p. 97)
• プラットフォームのレスポンスコード (p. 97)
AWS マネジメントコンソール でメッセージの配信
ステータスの属性を設定する
AWS マネジメントコンソール でメッセージの配信ステータスの属性を設定できます。
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
左の [Navigation] ペインで、[Apps] をクリックし、CloudWatch Logs を受信するエンドポイント
を含むアプリケーションをクリックします。
3.
[Application Actions] をクリックして、[Delivery Status] をクリックします。
4.
[Delivery Status] ダイアログボックスで、[Create IAM Roles] をクリックします。
IAM コンソールにリダイレクトされます。
5.
[Allow] をクリックして、お客様に代わって CloudWatch Logs を使用できるように Amazon SNS
に書き込みのアクセスを付与します。
6.
ここで、[Delivery Status] ダイアログボックスに戻り、[Percentage of Success to Sample
(0-100)] フィールドに、CloudWatch Logs を受信するために送信される成功したメッセージの割
合を数字で入力します。
Note
メッセージの配信ステータスのアプリケーション属性を設定した後は、メッセージの配
信に失敗すると、必ず CloudWatch Logs が生成されます。
API Version 2010-03-31
95
Amazon Simple Notification Service 開発者ガイド
Amazon SNS メッセージの配信ス
テータスの CloudWatch ログの例
7.
最後に、[Save Configuration] をクリックします。これで、メッセージの配信ステータスを含
む CloudWatch Logs を参照して解析できます。CloudWatch の使用方法の詳細については、
「CloudWatch のドキュメント」を参照してください。
Amazon SNS メッセージの配信ステータスの
CloudWatch ログの例
アプリケーションエンドポイントのメッセージの配信ステータスの属性を設定した後は、CloudWatch
Logs が生成されます。以下は、JSON 形式のログの例です。
SUCCESS
{
"status": "SUCCESS",
"notification": {
"timestamp": "2015-01-26 23:07:39.54",
"messageId": "9655abe4-6ed6-5734-89f7-e6a6a42de02a"
},
"delivery": {
"statusCode": 200,
"dwellTimeMs": 65,
"token": "Examplei7fFachkJ1xjlqT64RaBkcGHochmf1VQAr9kIBJtKjp7fedYPzEwT_Pq3Tu0lroqro1cwWJUvgkcPPYcaXCpPWmG3BqnwiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw",
"attempts": 1,
"providerResponse": "{\"multicast_id\":5138139752481671853,\"success
\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":
\"0:1422313659698010%d6ba8edff9fd7ecd\"}]}",
"destination": "arn:aws:sns:us-east-1:111122223333:endpoint/GCM/
GCMPushApp/c23e42de-3699-3639-84dd-65f84474629d"
}
}
FAILURE
{
"status": "FAILURE",
"notification": {
"timestamp": "2015-01-26 23:29:35.678",
"messageId": "c3ad79b0-8996-550a-8bfa-24f05989898f"
},
"delivery": {
"statusCode": 8,
"dwellTimeMs": 1451,
"token":
"examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73",
"attempts": 1,
"providerResponse": "NotificationErrorResponse(command=8,
status=InvalidToken, id=1, cause=null)",
"destination": "arn:aws:sns:us-east-1:111122223333:endpoint/
APNS_SANDBOX/APNSPushApp/986cb8a1-4f6b-34b1-9a1b-d9e9cb553944"
}
}
API Version 2010-03-31
96
Amazon Simple Notification Service 開発者ガイド
AWS SDK でメッセージの配
信ステータスの属性を設定する
プッシュ通知サービスのレスポンスコードの一覧は、「プラットフォームのレスポンスコー
ド (p. 97)」を参照してください。
AWS SDK でメッセージの配信ステータスの属性を
設定する
AWS SDK には、Amazon SNS でメッセージの配信ステータスの属性を使用するための API がいくつ
かの言語で用意されています。
次の Java の例は、SetPlatformApplicationAttributes API を使用して、プッシュ通知
メッセージの配信ステータスのアプリケーション属性を設定する方法を示しています。メッセー
ジの配信ステータスには、SuccessFeedbackRoleArn、FailureFeedbackRoleArn、および
SuccessFeedbackSampleRate の属性を使用できます。SuccessFeedbackRoleArn 属性と
FailureFeedbackRoleArn 属性は、お客様に代わって CloudWatch Logs を使用できるように
Amazon SNS に書き込みのアクセスを付与するために使用します。SuccessFeedbackSampleRate
属性は、成功した配信メッセージのサンプルレートの割合(0-100)を指定するためのもので
す。FailureFeedbackRoleArn 属性を設定した後は、メッセージの配信に失敗すると、必ず
CloudWatch Logs が生成されます。
SetPlatformApplicationAttributesRequest
setPlatformApplicationAttributesRequest = new
SetPlatformApplicationAttributesRequest();
Map<String, String> attributes = new HashMap<>();
attributes.put("SuccessFeedbackRoleArn", "arn:aws:iam::111122223333:role/
SNS_CWlogs");
attributes.put("FailureFeedbackRoleArn", "arn:aws:iam::111122223333:role/
SNS_CWlogs");
attributes.put("SuccessFeedbackSampleRate", "5");
setPlatformApplicationAttributesRequest.withAttributes(attributes);
setPlatformApplicationAttributesRequest.setPlatformApplicationArn("arn:aws:sns:uswest-2:111122223333:app/GCM/GCMPushApp");
sns.setPlatformApplicationAttributes(setPlatformApplicationAttributesRequest);
SDK for Java の詳細については、「AWS SDK for Java の使用開始」を参照してください。
プラットフォームのレスポンスコード
以下は、プッシュ通知サービスのレスポンスコードへのリンクの一覧です。
プッシュ通知サービス
レスポンスコード
Amazon Device Messaging(ADM)
「Amazon Device Messaging を使用してメッ
セージを送信する」の「レスポンスの形式」を
参照してください。
Apple Push Notification Service(APNS)
iOS Developer Library の「Codes in errorresponse packet」を参照してください。
Android 用 Google クラウドメッセージング
(GCM)
GCM Connection Server Reference の
「Downstream message error response codes」
を参照してください。
Windows Phone 用 Microsoft プッシュ通知サー
ビス(MPNS)
「プッシュ通知サービスのレスポンスコード」
を参照してください。
API Version 2010-03-31
97
Amazon Simple Notification Service 開発者ガイド
アプリケーションイベント通知
プッシュ通知サービス
レスポンスコード
Windows プッシュ通知サービス(WNS)
「プッシュ通知サービスのリクエストとレスポ
ンスヘッダー」の「レスポンスコード」を参照
してください。
アプリケーションイベント通知
Amazon SNS は、特定のアプリケーションイベントが発生する際のトリガー通知をサポートします。
その場合、そのイベントでプログラムによるいくつかのアクションを実行することができます。アプ
リケーションには、Apple Push Notification Service (APNS)、Android 用 Google クラウドメッセージ
ング (GCM)、Windows プッシュ通知サービス (WNS) などのプッシュ通知サービスのサポートが含ま
れている必要があります。アプリケーションイベント通知は、Amazon SNS コンソール、AWS CLI、
または AWS SDK を使用して設定します。
トピック
• 使用可能なアプリケーションイベント (p. 98)
• アプリケーションイベント通知を送信する (p. 99)
使用可能なアプリケーションイベント
アプリケーションイベント通知は、配信エラーとともに個々のプラットフォームエンドポイントがい
つ作成、削除、および更新されたを追跡します。各アプリケーションイベントの属性名は次のとおり
です。
Attribute Nameは
説明
EventEndpointCreated
通知は、アプリケーションに新しいプラットフォームエンドポイントが
追加された場合にトリガーされます。
EventEndpointDeleted
通知は、アプリケーションに関連付けられたプラットフォームエンドポ
イントが削除された場合にトリガーされます。
EventEndpointUpdated
通知は、アプリケーションに関連付けられたプラットフォームエンドポ
イントの属性が変更された場合にトリガーされます。
EventDeliveryFailure
通知は、アプリケーションに関連付けられたプラットフォームエンドポ
イントへの配信に永続的な障害が発生した場合にトリガーされます。
Note
プラットフォームアプリケーション側で配信エラーを追跡する
には、アプリケーションのメッセージ配信ステータスイベント
にサブスクライブします。詳細については、「メッセージの配
信ステータスの Amazon SNS アプリケーション属性を使用す
る」を参照してください。
前述の属性はそれぞれ、アプリケーションに関連付けることができます。その場合、アプリケーショ
ンがこれらのイベント通知を受け取ることができます。
API Version 2010-03-31
98
Amazon Simple Notification Service 開発者ガイド
アプリケーションイベント通知を送信する
アプリケーションイベント通知を送信する
アプリケーションイベント通知を送信するには、各タイプのイベントの通知を受信できるよう、ト
ピックを指定します。 Amazon SNS が通知を送信する場合、トピックは、プログラムによるアクショ
ンを取るエンドポイントにそれらをルーティングすることができます。
Important
大容量アプリケーションは多数のアプリケーションイベント通知 (たとえば、数万回) を作成
するので、E メールアドレス、電話番号、モバイルアプリケーションなど、人間が使用するた
めのエンドポイントに負荷をかけます。 アプリケーションイベント通知をトピックに送信す
る場合は、以下のガイドラインを検討してください。
• 通知を受信する各トピックは、HTTP または HTTPS エンドポイント、Amazon SQS
キュー、AWS Lambda 関数などのプログラム的なエンドポイントのサブスクリプションの
みが含まれます。
• 通知によってトリガーされる処理量を減らすために、各トピックのサブスクリプションを
小数 (たとえば、5 以下) に制限します。
Amazon SNS コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用し
て、アプリケーションイベント通知を送信できます。
AWS マネジメントコンソール
1.
2.
3.
通知のステータスを確認するか、通知の確認メールを再送信するには
サービスのナビゲーションペインで、[Applications] を選択します。
イベント通知を送信するアプリケーションの名前を選択します。
4.
5.
[Actions]、[Configure events] を選択します。
イベント通知を送信するイベントごとに、通知を受け取る Amazon SNS トピックの ARN の型を
入力します。
[Save configuration] を選択します。イベント通知が設定されます。
6.
AWS CLI
set-platform-application-attributes コマンドを実行します。
次の例では、4 つのアプリケーションすべてに対して同じ Amazon SNS トピックを設定します。
aws sns set-platform-application-attributes
--platform-application-arn arn:aws:sns:us-east-1:12345EXAMPLE:app/GCM/
MyGCMPlatformApplication
--attributes EventEndpointCreated="arn:aws:sns:useast-1:12345EXAMPLE:MyGCMPlatformApplicationEvents",
EventEndpointDeleted="arn:aws:sns:useast-1:12345EXAMPLE:MyGCMPlatformApplicationEvents",
EventEndpointUpdated="arn:aws:sns:useast-1:12345EXAMPLE:MyGCMPlatformApplicationEvents",
EventDeliveryFailure="arn:aws:sns:useast-1:12345EXAMPLE:MyGCMPlatformApplicationEvents"
AWS SDK
ターゲットのプログラミング言語またはプラットフォームに応じて、次のいずれかの API を呼び出し
ます。
API Version 2010-03-31
99
Amazon Simple Notification Service 開発者ガイド
Amazon SNS TTL
プログラミング言語また
はプラットフォーム
API リファレンスリンク
Android
setPlatformApplicationAttributes
iOS
AWSSNSSetPlatformApplicationAttributesInput
Java
setPlatformApplicationAttributes
JavaScript
setPlatformApplicationAttributes
.NET
SetPlatformApplicationAttributes
PHP
SetPlatformApplicationAttributes
Python (boto)
set_platform_application_attributes
Ruby
set_platform_application_attributes
Unity
SetPlatformApplicationAttributesAsync
Windows PowerShell
Set-SNSPlatformApplicationAttributes
モバイルプッシュ通知サービスの Amazon SNS
有効期限(TTL)メッセージ属性の使用
Amazon Simple Notification Service(Amazon SNS)では、モバイルプッシュ通知サービスの有効期
限(TTL)メッセージ属性の設定がサポートされています。この属性は、モバイルプッシュ通知サー
ビス(Amazon Device Messaging(ADM)、Android 用 Google クラウドメッセージング(GCM)な
ど)の Amazon SNS メッセージ本文内に TTL を設定する既存の機能に追加されたものです。
TTL メッセージ属性は、メッセージの有効期限メタデータを指定するために使用します。この属性を
使用して、Apple Push Notification Service(APNS)や GCM などのプッシュ通知サービスによってエ
ンドポイントにメッセージが配信される時間を指定できます。何らかの理由(モバイルデバイスがオ
フになっているなど)で、指定した TTL 内にメッセージが配信されなかった場合、そのメッセージは
破棄され、以降その配信は試みられません。メッセージ属性に TTL を指定するには、AWS マネジメ
ントコンソール、AWS Software Development Kit(SDK)、またはクエリ API を使用します。
トピック
• プッシュ通知サービスの TTL メッセージ属性 (p. 100)
• TTL を決定するための優先順位 (p. 101)
• AWS マネジメントコンソール による TTL の指定 (p. 101)
• AWS SDK による TTL の指定 (p. 102)
プッシュ通知サービスの TTL メッセージ属性
以下に示しているのは、AWS SDK またはクエリ API の使用時に設定できるプッシュ通知サービスの
TTL メッセージ属性の一覧です。
プッシュ通知サービス
TTL メッセージ属性
Amazon Device Messaging(ADM)
AWS.SNS.MOBILE.ADM.TTL
Apple Push Notification Service(APNS)
AWS.SNS.MOBILE.APNS.TTL
API Version 2010-03-31
100
Amazon Simple Notification Service 開発者ガイド
TTL を決定するための優先順位
プッシュ通知サービス
TTL メッセージ属性
Apple Push Notification Service
Sandbox(APNS_SANDBOX)
AWS.SNS.MOBILE.APNS_SANDBOX.TTL
Baidu Cloud Push(Baidu)
AWS.SNS.MOBILE.BAIDU.TTL
Android 用 Google クラウドメッセージング
(GCM)
AWS.SNS.MOBILE.GCM.TTL
Windows プッシュ通知サービス(WNS)
AWS.SNS.MOBILE.WNS.TTL
各プッシュ通知サービスはそれぞれ個別に TTL を処理します。Amazon SNS では、すべてのプッ
シュ通知サービスにまたがって TTL の要約ビューが表示されるため、TTL の指定がより簡単になりま
す。AWS マネジメントコンソール を使用して TTL(秒単位)を指定するとき、TTL 値を一度入力す
るだけで、Amazon SNS はメッセージの発行時に、選択されたプッシュ通知サービスごとに TTL を計
算します。
TTL は発行時間を基準にします。特定のプッシュ通知サービスにプッシュ通知メッセージを発行する
前に、Amazon SNS はプッシュ通知のドウェル時間(発行のタイムスタンプからプッシュ通知サービ
スへの発行直前までの時間)を計算し、残りの TTL をそのプッシュ通知サービスに渡します。TTL が
ドウェル時間よりも短い場合、Amazon SNS はプッシュ通知メッセージの発行を試みません。
プッシュ通知メッセージの TTL を指定する場合、TTL 値は正の整数でなければなりません。ただ
し、APNS や GCM などのプッシュ通知サービスに対して 0 の値に特定の意味がある場合は除きま
す。TTL 値を 0 に設定した場合、プッシュ通知サービスに対して 0 に特定の意味がないと、Amazon
SNS はメッセージを破棄します。APNS を使用する場合に TTL パラメーターを 0 に設定する詳細
については、「バイナリプロバイダー API」ドキュメントの「Table A-3 Item identifiers for remote
notifications」を参照してください。 GCM の使用時に 0 に設定する TTL パラメーターの詳細について
は、「メッセージの有効期間」を参照してください。
TTL を決定するための優先順位
Amazon SNS がプッシュ通知メッセージの TTL を決定するための優先順位は以下の順序に基づきま
す。最も小さい番号が最も高い優先順位を表しています。
1. メッセージ属性の TTL
2. メッセージ本文の TTL
3. プッシュ通知サービスのデフォルト TTL(サービスごとに異なる)
4. Amazon SNS のデフォルト TTL(4 週間)
同じメッセージに対して(メッセージ属性とメッセージ本文で)異なる TTL 値を設定した場
合、Amazon SNS はメッセージ属性の TTL に一致するようにメッセージ本文の TTL を変更します。
AWS マネジメントコンソール による TTL の指定
AWS マネジメントコンソール を使用して TTL を指定できます。
1.
2.
3.
4.
通知のステータスを確認するか、通知の確認メールを再送信するには
左の [Navigation] ペインで、[Apps] をクリックし、メッセージを発行するときの TTL の設定対象
になるエンドポイントを含むアプリをクリックします。
メッセージを発行するエンドポイントを選択し、[Endpoint Actions] をクリックして、[Publish] を
クリックします。
[Publish] ダイアログボックスで、[Time to Live (TTL)] に秒数を入力し、[Publish Message] をク
リックします。
API Version 2010-03-31
101
Amazon Simple Notification Service 開発者ガイド
AWS SDK による TTL の指定
AWS SDK による TTL の指定
AWS SDK には、Amazon SNS で TTL を使用するための API がいくつかの言語で用意されています。
SDK for Java の詳細については、「AWS SDK for Java の使用開始」を参照してください。
以下の Java の例で示しているのは、TTL メッセージ属性を設定し、Baidu Cloud Push に登録された
エンドポイントにメッセージを発行する方法です。
Map<String, MessageAttributeValue> messageAttributes = new HashMap<String,
MessageAttributeValue>();
// Insert your desired value (in seconds) of TTL here. For example, a TTL of
1 day would be 86,400 seconds.
messageAttributes.put("AWS.SNS.MOBILE.BAIDU.TTL", new
MessageAttributeValue().withDataType("String").withStringValue("86400"));
PublishRequest publishRequest = new PublishRequest();
publishRequest.setMessageAttributes(messageAttributes);
String message = "{\"title\":\"Test_Title\",\"description\":
\"Test_Description\"}";
publishRequest.setMessage(message);
publishRequest.setMessageStructure("json");
publishRequest.setTargetArn("arn:aws:sns:us-east-1:999999999999:endpoint/
BAIDU/TestApp/318fc7b3-bc53-3d63-ac42-e359468ac730");
PublishResult publishResult = snsClient.publish(publishRequest);
Amazon SNS でのメッセージ属性の使用の詳細については、「Amazon SNS メッセージ属性の使
用 (p. 190)」を参照してください。
Amazon SNS モバイルプッシュ API の使用
Amazon SNS モバイルプッシュ API を使用するには、まず、プッシュ通知サービス(Apple Push
Notification Service(APNS)、Android 用 Google クラウドメッセージング(GCM)など)の前提条
件を満たす必要があります。前提条件の詳細については、「前提条件 (p. 40)」を参照してくださ
い。
API を使用してモバイルアプリケーションおよびデバイスにプッシュ通知メッセージを送信する
には、まず、CreatePlatformApplication アクションを使用する必要があります。このアク
ションは、PlatformApplicationArn 属性を返します。この PlatformApplicationArn 属
性は、CreatePlatformEndpoint によって使用され、EndpointArn 属性が返されます。この
EndpointArn 属性と Publish アクションを使用して、モバイルアプリやデバイスに通知メッセージ
を送信することができます。また、EndpointArn 属性と Subscribe アクションを使って、トピック
へのサブスクリプションを行うこともできます。詳細については、「Amazon SNS モバイルプッシュ
を使用するために必要な手順の概要 (p. 41)」を参照してください。
Amazon SNS モバイルプッシュ API は次のとおりです。
CreatePlatformApplication
デバイスやモバイルアプリケーションを登録できる、サポートされているプッシュ通知サービス
(APNS、GCM など)のいずれかのプラットフォームアプリケーションオブジェクトを作成しま
す。PlatformApplicationArn 属性を返します。この属性は、CreatePlatformEndpoint ア
クションで使用されます。
CreatePlatformEndpoint
サポートされているプッシュ通知サービスのいずれかでデバイスおよびモバイル
アプリケーションのエンドポイントを作成します。CreatePlatformEndpoint
API Version 2010-03-31
102
Amazon Simple Notification Service 開発者ガイド
API エラー
は、CreatePlatformApplication アクションから返される PlatformApplicationArn 属性
を使用します。CreatePlatformEndpoint を使用したときに返される EndpointArn 属性は、
モバイルアプリケーションとデバイスに通知メッセージを送信するために Publish アクションで
使用されます。
CreateTopic
メッセージが発行されるトピックを作成します。
DeleteEndpoint
サポートされているプッシュ通知サービスのいずれかでデバイスおよびモバイルアプリケーショ
ンのエンドポイントを削除します。
DeletePlatformApplication
プラットフォームアプリケーションオブジェクトを削除します。
DeleteTopic
トピックとすべてのサブスクリプションを削除します。
GetEndpointAttributes
デバイスおよびモバイルアプリケーションのエンドポイント属性を取得します。
GetPlatformApplicationAttributes
プラットフォームアプリケーションオブジェクトの属性を取得します。
ListEndpointsByPlatformApplication
サポートされているプッシュ通知サービスでのデバイスおよびモバイルアプリケーションのエン
ドポイントとエンドポイント属性を一覧表示します。
ListPlatformApplications
サポートされているプッシュ通知サービス用のプラットフォームアプリケーションオブジェクト
を一覧表示します。
Publish
トピックのサブスクライブされたエンドポイントすべてに通知メッセージを送信します。
SetEndpointAttributes
デバイスおよびモバイルアプリケーションのエンドポイントの属性を設定します。
SetPlatformApplicationAttributes
プラットフォームアプリケーションオブジェクトの属性を設定します。
Subscribe
エンドポイントに確認メッセージを送信して、エンドポイントのサブスクライブに備えます。 実
際にサブスクリプションを作成するには、エンドポイントの所有者は確認メッセージからトーク
ンと共に ConfirmSubscription アクションを呼び出す必要があります。
Unsubscribe
サブスクリプションを削除します。
Amazon SNS モバイルプッシュの API エラー
Amazon SNS API から返されるモバイルプッシュに関するエラーを、次の表に示します。モバイ
ルプッシュ用 Amazon SNS API の詳細については、「Amazon SNS モバイルプッシュ API の使
用 (p. 102)」を参照してください。
エラー
説明
HTTPS ステータス
コード
このエラーを返すアク
ション
Application Name is
null string
必須のアプリケーショ
ン名が null に設定され
ています。
400
CreatePlatformApplication
Platform Name is null
string
必須のプラットフォー
ム名が null に設定され
ています。
400
CreatePlatformApplication
API Version 2010-03-31
103
Amazon Simple Notification Service 開発者ガイド
API エラー
エラー
説明
HTTPS ステータス
コード
このエラーを返すアク
ション
Platform Name is
invalid
プラットフォーム名に
無効な値または範囲外
の値が入力されまし
た。
400
CreatePlatformApplication
APNS — Principal is
not a valid certificate
APNS プリンシパル
400
(SSL 証明書)に無
効な証明書が指定され
ました。詳細について
は、『Amazon Simple
Notification Service
API Reference』の
「CreatePlatformApplication」
を参照してください。
CreatePlatformApplication
APNS — Principal is
a valid cert but not in
a .pem format
APNS プリンシパ
ル(SSL 証明書)
に、.pem 形式ではな
い有効な証明書が指定
されました。
400
CreatePlatformApplication
APNS — Prinicipal is
an expired certificate
APNS プリンシパル
(SSL 証明書)に失効
した証明書が指定され
ました。
400
CreatePlatformApplication
APNS — Principal is
not an Apple issued
certificate
APNS プリンシパル
(SSL 証明書)に
Apple によって発行さ
れたものではない証明
書が指定されました。
400
CreatePlatformApplication
APNS — Principal is
not provided
APNS プリンシパル
(SSL 証明書)が指定
されませんでした。
400
CreatePlatformApplication
APNS — Credential is
not provided
APNS 認証情報(プ
400
ライベートキー)
が指定されませんで
した。詳細について
は、『Amazon Simple
Notification Service
API Reference』の
「CreatePlatformApplication」
を参照してください。
CreatePlatformApplication
APNS — Credential
are not in a valid .pem
format
APNS 認証情報(プラ
イベートキー)が有効
な .pem 形式ではあり
ません。
CreatePlatformApplication
400
API Version 2010-03-31
104
Amazon Simple Notification Service 開発者ガイド
API エラー
エラー
説明
HTTPS ステータス
コード
GCM — serverAPIKey
is not provided
GCM 認証情報(API
400
キー)が指定さ
れませんでした。
詳細については、
『Amazon Simple
Notification Service
API Reference』の
「CreatePlatformApplication」
を参照してください。
CreatePlatformApplication
GCM — serverAPIKey
is empty
GCM 認証情報(API
キー)が空です。
400
CreatePlatformApplication
GCM — serverAPIKey
is a null string
GCM 認証情報(API
キー)が null です。
400
CreatePlatformApplication
GCM — serverAPIKey
is invalid
GCM 認証情報(API
キー)が無効です。
400
CreatePlatformApplication
ADM — clientsecret is
not provided
必須のクライアント
シークレットが提供さ
れていません。
400
CreatePlatformApplication
ADM — clientsecret is
a null string
クライアントシーク
レットの必須文字列が
null です。
400
CreatePlatformApplication
ADM — client_secret is
empty string
クライアントシーク
レットの必須文字列が
空です。
400
CreatePlatformApplication
ADM — client_secret is
not valid
クライアントシーク
レットの必須文字列が
無効です。
400
CreatePlatformApplication
ADM — client_id is
empty string
クライアント ID の必
須文字列が空です。
400
CreatePlatformApplication
ADM — clientId is not
provided
クライアント ID の必
須文字列が提供されて
いません。
400
CreatePlatformApplication
ADM — clientid is a
null string
クライアント ID の必
須文字列が null です。
400
CreatePlatformApplication
ADM — client_id is not
valid
クライアント ID の必
須文字列が無効です。
400
CreatePlatformApplication
EventEndpointCreated
has invalid ARN format
EventEndpointCreated
が無効な ARN 形式で
す。
400
CreatePlatformApplication
EventEndpointDeleted
has invalid ARN format
EventEndpointDeleted
が無効な ARN 形式で
す。
400
CreatePlatformApplication
API Version 2010-03-31
105
このエラーを返すアク
ション
Amazon Simple Notification Service 開発者ガイド
API エラー
エラー
説明
HTTPS ステータス
コード
このエラーを返すアク
ション
EventEndpointUpdated
has invalid ARN format
EventEndpointUpdated
が無効な ARN 形式で
す。
400
CreatePlatformApplication
EventDeliveryAttemptFailure
EventDeliveryAttemptFailure
400
has invalid ARN format が無効な ARN 形式で
す。
CreatePlatformApplication
EventDeliveryFailure
has invalid ARN format
EventDeliveryFailure
が無効な ARN 形式で
す。
400
CreatePlatformApplication
EventEndpointCreated
is not an existing Topic
EventEndpointCreated
は既存のトピックでは
ありません。
400
CreatePlatformApplication
EventEndpointDeleted
is not an existing Topic
EventEndpointDeleted
は既存のトピックでは
ありません。
400
CreatePlatformApplication
EventEndpointUpdated
is not an existing Topic
EventEndpointUpdated
は既存のトピックでは
ありません。
400
CreatePlatformApplication
EventDeliveryAttemptFailure
EventDeliveryAttemptFailure
400
is not an existing Topic は既存のトピックでは
ありません。
CreatePlatformApplication
EventDeliveryFailure is
not an existing Topic
EventDeliveryFailure
は既存のトピックでは
ありません。
400
CreatePlatformApplication
Platform ARN is invalid
プラットフォーム ARN
が無効です。
400
SetPlatformAttributes
Platform ARN is valid
but does not belong to
the user
プラットフォーム ARN
は有効ですが、この
ユーザーに属していま
せん。
400
SetPlatformAttributes
APNS — Principal is
not a valid certificate
APNS プリンシパル
400
(SSL 証明書)に無
効な証明書が指定され
ました。詳細について
は、『Amazon Simple
Notification Service
API Reference』の
「CreatePlatformApplication」
を参照してください。
SetPlatformAttributes
APNS — Principal is
a valid cert but not in
a .pem format
APNS プリンシパ
ル(SSL 証明書)
に、.pem 形式ではな
い有効な証明書が指定
されました。
SetPlatformAttributes
400
API Version 2010-03-31
106
Amazon Simple Notification Service 開発者ガイド
API エラー
エラー
説明
HTTPS ステータス
コード
このエラーを返すアク
ション
APNS — Prinicipal is
an expired certificate
APNS プリンシパル
(SSL 証明書)に失効
した証明書が指定され
ました。
400
SetPlatformAttributes
APNS — Principal is
not an Apple issued
certificate
APNS プリンシパル
(SSL 証明書)に
Apple によって発行さ
れたものではない証明
書が指定されました。
400
SetPlatformAttributes
APNS — Principal is
not provided
APNS プリンシパル
(SSL 証明書)が指定
されませんでした。
400
SetPlatformAttributes
APNS — Credential is
not provided
APNS 認証情報(プ
400
ライベートキー)
が指定されませんで
した。詳細について
は、『Amazon Simple
Notification Service
API Reference』の
「CreatePlatformApplication」
を参照してください。
SetPlatformAttributes
APNS — Credential
are not in a valid .pem
format
APNS 認証情報(プラ
イベートキー)が有効
な .pem 形式ではあり
ません。
SetPlatformAttributes
GCM — serverAPIKey
is not provided
GCM 認証情報(API
400
キー)が指定さ
れませんでした。
詳細については、
『Amazon Simple
Notification Service
API Reference』の
「CreatePlatformApplication」
を参照してください。
SetPlatformAttributes
GCM — serverAPIKey
is a null string
GCM 認証情報(API
キー)が null です。
400
SetPlatformAttributes
ADM — clientId is not
provided
クライアント ID の必
須文字列が提供されて
いません。
400
SetPlatformAttributes
ADM — clientid is a
null string
クライアント ID の必
須文字列が null です。
400
SetPlatformAttributes
ADM — clientsecret is
not provided
必須のクライアント
シークレットが提供さ
れていません。
400
SetPlatformAttributes
400
API Version 2010-03-31
107
Amazon Simple Notification Service 開発者ガイド
API エラー
エラー
説明
HTTPS ステータス
コード
このエラーを返すアク
ション
ADM — clientsecret is
a null string
クライアントシーク
レットの必須文字列が
null です。
400
SetPlatformAttributes
EventEndpointUpdated
has invalid ARN format
EventEndpointUpdated
が無効な ARN 形式で
す。
400
SetPlatformAttributes
EventEndpointDeleted
has invalid ARN format
EventEndpointDeleted
が無効な ARN 形式で
す。
400
SetPlatformAttributes
EventEndpointUpdated
has invalid ARN format
EventEndpointUpdated
が無効な ARN 形式で
す。
400
SetPlatformAttributes
EventDeliveryAttemptFailure
EventDeliveryAttemptFailure
400
has invalid ARN format が無効な ARN 形式で
す。
SetPlatformAttributes
EventDeliveryFailure
has invalid ARN format
EventDeliveryFailure
が無効な ARN 形式で
す。
400
SetPlatformAttributes
EventEndpointCreated
is not an existing Topic
EventEndpointCreated
は既存のトピックでは
ありません。
400
SetPlatformAttributes
EventEndpointDeleted
is not an existing Topic
EventEndpointDeleted
は既存のトピックでは
ありません。
400
SetPlatformAttributes
EventEndpointUpdated
is not an existing Topic
EventEndpointUpdated
は既存のトピックでは
ありません。
400
SetPlatformAttributes
EventDeliveryAttemptFailure
EventDeliveryAttemptFailure
400
is not an existing Topic は既存のトピックでは
ありません。
SetPlatformAttributes
EventDeliveryFailure is
not an existing Topic
EventDeliveryFailure
は既存のトピックでは
ありません。
400
SetPlatformAttributes
Platform ARN is invalid
プラットフォーム ARN
が無効です。
400
GetPlatformApplicationAttributes
Platform ARN is valid
but does not belong to
the user
プラットフォーム ARN
は有効ですが、この
ユーザーに属していま
せん。
403
GetPlatformApplicationAttributes
Token specified is
invalid
指定されたトークンが
無効です。
400
ListPlatformApplications
Platform ARN is invalid
プラットフォーム ARN
が無効です。
400
ListEndpointsByPlatformApplicati
API Version 2010-03-31
108
Amazon Simple Notification Service 開発者ガイド
API エラー
エラー
説明
HTTPS ステータス
コード
このエラーを返すアク
ション
Platform ARN is valid
but does not belong to
the user
プラットフォーム ARN
は有効ですが、この
ユーザーに属していま
せん。
404
ListEndpointsByPlatformApplicati
Token specified is
invalid
指定されたトークンが
無効です。
400
ListEndpointsByPlatformApplicati
Platform ARN is invalid
プラットフォーム ARN
が無効です。
400
DeletePlatformApplication
Platform ARN is valid
but does not belong to
the user
プラットフォーム ARN
は有効ですが、この
ユーザーに属していま
せん。
403
DeletePlatformApplication
Platform ARN is invalid
プラットフォーム ARN
が無効です。
400
CreatePlatformEndpoint
Platform ARN is valid
but does not belong to
the user
プラットフォーム ARN
は有効ですが、この
ユーザーに属していま
せん。
404
CreatePlatformEndpoint
Token is not specified
トークンが指定されて
いません。
400
CreatePlatformEndpoint
Token is not of correct
length
トークンの長さが正し
くありません。
400
CreatePlatformEndpoint
Customer User data is
too large
顧客のユーザーデータ
は UTF-8 エンコードで
2048 バイトを超える
ことはできません。
400
CreatePlatformEndpoint
Endpoint ARN is invalid エンドポイント ARN
が無効です。
400
DeleteEndpoint
Endpoint ARN is valid
but does not belong to
the user
403
DeleteEndpoint
Endpoint ARN is invalid エンドポイント ARN
が無効です。
400
SetEndpointAttributes
Endpoint ARN is valid
but does not belong to
the user
エンドポイント ARN
は有効ですが、この
ユーザーに属していま
せん。
403
SetEndpointAttributes
Token is not specified
トークンが指定されて
いません。
400
SetEndpointAttributes
Token is not of correct
length
トークンの長さが正し
くありません。
400
SetEndpointAttributes
エンドポイント ARN
は有効ですが、この
ユーザーに属していま
せん。
API Version 2010-03-31
109
Amazon Simple Notification Service 開発者ガイド
API エラー
エラー
説明
HTTPS ステータス
コード
このエラーを返すアク
ション
Customer User data is
too large
顧客のユーザーデータ
は UTF-8 エンコードで
2048 バイトを超える
ことはできません。
400
SetEndpointAttributes
Endpoint ARN is invalid エンドポイント ARN
が無効です。
400
GetEndpointAttributes
Endpoint ARN is valid
but does not belong to
the user
エンドポイント ARN
は有効ですが、この
ユーザーに属していま
せん。
403
GetEndpointAttributes
Target ARN is invalid
ターゲット ARN が無
効です。
400
Publish
Target ARN is valid but
does not belong to the
user
ターゲット ARN は有
効ですが、このユー
ザーに属していませ
ん。
403
Publish
Message format is
invalid
メッセージの形式が無
効です。
400
Publish
Message size is larger
than supported by
protocol/end-service
メッセージサイズがプ
ロトコル/エンドサービ
スでサポートされてい
るより大きくなってい
ます。
400
Publish
API Version 2010-03-31
110
Amazon Simple Notification Service 開発者ガイド
Amazon SQS キューへの Amazon
SNS メッセージの送信
Amazon SNS は、Amazon Simple Queue Service (Amazon SQS) と密接に連動します。どちらの
サービスも開発者にさまざまなメリットを提供します。 Amazon SNS を利用すれば、アプリケー
ションは「プッシュ」メカニズムを使用して、複数の受信者にタイミングが重要なメッセージを送
信することができます。そのため更新を定期的に確認または「ポーリング」する必要性がなくなりま
す。Amazon SQS は、ポーリングモデルを通してメッセージを交換するために分散型アプリケーショ
ンによって使用されるメッセージキューサービスで、これを使用すると、送信および受信コンポーネ
ントを、各コンポーネントを同時に使用できない場合でも、切り離すことができます。Amazon SNS
と Amazon SQS を組み合わせて使用することで、イベントの即時通知を必要とするアプリケーション
にメッセージを配信できるだけでなく、他のアプリケーションのメッセージは、後で処理できるよう
に Amazon SQS キューに保持することもできます。
Amazon SQS キューを Amazon SNS トピックにサブスクライブすると、そのトピックにメッセージ
を発行することができ、Amazon SNS が Amazon SQS メッセージをサブスクライブされたキュー
に送信します。Amazon SQS メッセージには、トピックに発行されたが件名とメッセージに加
え、JSON ドキュメントのメッセージに関するメタデータが含まれます。Amazon SQS メッセージ
は、以下の JSON ドキュメントと同様になります。
{
"Type" : "Notification",
"MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "Testing publish to subscribed queues",
"Message" : "Hello world!",
"Timestamp" : "2012-03-29T05:12:16.901Z",
"SignatureVersion" : "1",
"Signature" :
"EXAMPLEnTrFPa37tnVO0FF9Iau3MGzjlJLRfySEoWz4uZHSj6ycK4ph71Zmdv0NtJ4dC/
El9FOGp3VuvchpaTraNHWhhq/
OsN1HVz20zxmF9b88R8GtqjfKB5woZZmz87HiM6CYDTo3l7LMwFT4VU7ELtyaBBafhPTg9O5CnKkg=",
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/
SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:uswest-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"
API Version 2010-03-31
111
Amazon Simple Notification Service 開発者ガイド
ステップ 1. キューとトピックの ARN を取得する
}
Note
次に示す手順を実行する代わりに、Amazon SQS コンソールを使用して Amazon SQS キュー
を Amazon SNS トピックにサブスクライブすることで、手順を簡素化することができます。
詳細については、「Amazon SNS トピックへのキューのサブスクライブ」を参照してくださ
い。
Amazon SNS トピックから Amazon SQS キューにメッセージを送信できるようにするには、以下の
手順を実行します。
1. メッセージの送信先にするキューとキューをサブスクライブするトピックの Amazon Resource
Name(ARN)を取得します。 (p. 112)
2. Amazon SNS トピックに sqs:SendMessage 許可を付与し、キューにメッセージを送信できるよ
うにします。 (p. 113)
3. キューを Amazon SNS トピックにサブスクライブします。 (p. 114)
4. IAM ユーザーまたは AWS アカウントに、Amazon SNS トピックに発行し、Amazon SQS キュー
からのメッセージを読むために適切な許可を与えます。 (p. 114)
5. トピックにメッセージを発行し、キューからのメッセージを読むことでテストします。 (p. 116)
別の AWS アカウントにあるキューにメッセージを送信するようにトピックをセットアップする
方法については、「別のアカウントの Amazon SQS キューへの Amazon SNS メッセージの送
信 (p. 117)」を参照してください。
2 つのキューにメッセージを送信するトピックを作成する AWS CloudFormation テンプレートについ
ては、「AWS CloudFormation テンプレートを使用して Amazon SQS キューにメッセージを送信する
トピックを作成する (p. 120)」を参照してください。
ステップ 1. キューとトピックの ARN を取得する
トピックにキューをサブスクライブするときは、キューの ARN のコピーが必要です。同様に、ト
ピックがキューにメッセージを送ることを許可するには、トピックの ARN のコピーが必要です。
キューの ARN を取得するには、Amazon SQS コンソールまたは GetQueueAttributes API アクション
を使用できます。
キューの ARN を Amazon SQS コンソールから取得するには
1.
AWS マネジメントコンソールにサインインし、Amazon SQS コンソール(https://
console.aws.amazon.com/sqs/)を開きます。
2.
ARN を取得するキューのチェックボックスをオンにします。
3.
[Details] タブから、Amazon SNS トピックへのサブスクライブに使用できるように ARN 値をコ
ピーします。
トピックの ARN を取得するには、Amazon SNS コンソール、sns-get-topic-attributes コマンド、また
は GetQueueAttributes API アクションを使用できます。
トピックの ARN を Amazon SNS コンソールから取得するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
ナビゲーションペインで、ARN を取得するトピックを選択します。
API Version 2010-03-31
112
Amazon Simple Notification Service 開発者ガイド
ステップ 2. Amazon SQS キューにメッセージを
送信する許可を Amazon SNS トピックに付与する
3.
[Topic Details] ペインで、Amazon SNS トピックがキューにメッセージを送信することを許可す
るために使用できるように、[Topic ARN] の値をコピーします。
ステップ 2. Amazon SQS キューにメッセージを
送信する許可を Amazon SNS トピックに付与す
る
Amazon SNS トピックがキューにメッセージを送信できるようにするには、Amazon SNS トピック
に sqs:SendMessage アクションの実行を許可するようにキューのポリシーを設定する必要がありま
す。
トピックにキューをサブスクライブする前に、トピックとキューが必要です。トピックやキューをま
だ作成していない場合は、ここで作成します。詳細については、「トピックの作成」および Amazon
Simple Queue Service 開発者ガイドの「キューの作成」を参照してください。
キューにポリシーを設定するには、Amazon SQS コンソールまたは SetQueueAttributes API アクショ
ンを使用できます。開始する前に、キューにメッセージを送信できるようにするトピックの ARN が
あることを確認してください。
Amazon SQS コンソールを使用してキューに SendMessage ポリシーを設定するには
1.
AWS マネジメントコンソールにサインインし、Amazon SQS コンソール(https://
console.aws.amazon.com/sqs/)を開きます。
2.
ポリシーを設定するキューのチェックボックスをオンにし、[Permissions] タブをクリックしてか
ら、[Add a Permission] をクリックします。
3.
[Add a Permission] ダイアログボックスで、[Effect] には [Allow]、[Principal] には [Everybody (*)]
を選択し、[Actions] ドロップダウンから [SendMessage] を選択します。
4.
トピックにアクションを許可する条件を追加します。[Add Conditions (optional)] をクリックし、
[Condition] には [ArnEquals]、[Key] には [aws:SourceArn] を選択して、[Value] にトピックの
ARN を貼り付けます。[Add Condition] をクリックします。新しい条件は、ボックスの最下部に表
示されます(必要に応じて下方にスクロールして確認します)。
5.
[Add Permission] をクリックします。
独自のポリシードキュメントを作成する場合は、次のようなポリシーを作成します。このポリシー
は、MyTopic が MyQueue にメッセージを送ることを許可します。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"MySQSPolicy001",
"Effect":"Allow",
"Principal":"*",
"Action":"sqs:SendMessage",
"Resource":"arn:aws:sqs:us-east-1:123456789012:MyQueue",
"Condition":{
"ArnEquals":{
"aws:SourceArn":"arn:aws:sns:us-east-1:123456789012:MyTopic"
}
}
}
API Version 2010-03-31
113
Amazon Simple Notification Service 開発者ガイド
ステップ 3. キューを Amazon SNS
トピックにサブスクライブする
]
}
ステップ 3. キューを Amazon SNS トピックにサ
ブスクライブする
トピックを介してキューにメッセージを送信するには、キューを Amazon SNS トピックにサブス
クライブする必要があります。キューは ARN で指定します。トピックにサブスクライブするに
は、Amazon SNS コンソール、sns-subscribe コマンド、または Subscribe API アクションを使用でき
ます。開始する前に、サブスクライブするキューの ARN があることを確認してください。
Amazon SNS コンソールを使用してキューをトピックにサブスクライブするには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
ナビゲーションペインで、トピックを選択します。
3.
[Create Subscription] をクリックして、[Protocol] には [ Amazon SQS] を選択し、[Endpoint] にト
ピックがメッセージを送信するキューの ARN を貼り付けて、[Subscribe]をクリックします。
4.
[Subscription request received!] というメッセージで、[Close] をクリックします。
サブスクリプションが確認されると、新しいサブスクリプションの [Subscription ID] にサブスク
リプション ID が表示されます。キューの所有者がサブスクリプションを作成する場合、サブスク
リプションは自動的に確認され、瞬時にアクティブになります。
通常は、自分のアカウントの自分のトピックに自分のキューをサブスクライブします。ただし、
別のアカウントのキューを自分のトピックにサブスクライブすることもできます。サブスクリプ
ションを作成するユーザーがキューの所有者ではない場合(たとえば、アカウント A のユーザー
がアカウント A のトピックにアカウント B のキューをサブスクライブする場合)、サブスクリ
プションの確認が必用です。別のアカウントのキューをサブスクライブし、サブスクリプション
を確認する方法の詳細については、「別のアカウントの Amazon SQS キューへの Amazon SNS
メッセージの送信 (p. 117)」を参照してください。
ステップ 4. 適切なトピックおよびキューアク
ションに対するアクセス許可を与える
適切なユーザーのみに Amazon SNS トピックへのメッセージの発行および Amazon SQS キューか
らのメッセージの読み取り/削除を許可するには、AWS Identity and Access Management(IAM)を
使用する必要があります。IAM ユーザーのトピックおよびキューに対するアクションの制御に関する
詳細は、「AWS アカウントへのユーザーアクセスのコントロール」および Amazon Simple Queue
Service 開発者ガイドの「AWS アカウントへのユーザーアクセスのコントロール」を参照してくださ
い。
トピックまたはキューへのアクセスは、次の 2 つの方法で制御します。
• IAM ユーザーまたはグループにポリシーを追加する (p. 115)。ユーザーにトピックやキューへのア
クセス許可を付与する最も簡単な方法として、グループを作成し、そのグループに適切なポリシー
とユーザーを追加することができます。個々のユーザーに設定するポリシーを継続的に追跡するよ
りも、グループに対してユーザーを追加または削除する方がはるかに簡単です。
• トピックまたはキューにポリシーを追加する (p. 115)。別の AWS アカウントにトピックやキュー
へのアクセス許可を付与する必用がある場合、そのプリンシパルとして、アクセス許可を付与する
AWS アカウントを持っているポリシーを追加することが唯一の方法です。
API Version 2010-03-31
114
Amazon Simple Notification Service 開発者ガイド
IAM ユーザーまたはグループにポリシーを追加する
ほとんどの場合は、最初の方法(ポリシーをグループに適用し、適切なユーザーをグループに追加ま
たは削除することでアクセス許可を管理する)を使用します。別のアカウントのユーザーにアクセス
許可を付与する場合は、2 番目の方法を使用する必要があります。
IAM ユーザーまたはグループにポリシーを追加する
IAM ユーザーまたはグループに次のポリシーを追加した場合、そのユーザーまたはそのグループのメ
ンバーに、MyTopic トピックで sns:Publish アクションを実行する許可が付与されます。
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"AllowPublishToMyTopic",
"Effect":"Allow",
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic"
}
]
}
IAM ユーザーまたはグループに次のポリシーを追加した場合、ユーザーまたはそのグルー
プのメンバーに、キュー MyQueue1 と MyQueue2 に対して sqs:ReceiveMessage および
sqs:DeleteMessage アクションを実行する許可が付与されます。
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"AllowReadDeleteMessageOnMyQueue",
"Effect":"Allow",
"Action":[
"sqs:ReceiveMessage",
"sqs:DeleteMessage"
],
"Resource":[
"arn:aws:sns:us-east-1:123456789012:MyQueue1",
"arn:aws:sns:us-east-1:123456789012:MyQueue2"
],
}
]
}
トピックまたはキューにポリシーを追加する
以下のサンプルポリシーは、トピックとキューに別のアカウントのアクセス許可を付与する方法を示
しています。
Note
別の AWS アカウントにアカウントのリソースへのアクセス許可を付与する場合、管理レベル
のアクセス(ワイルドカードアクセス)の権限を持っている IAM ユーザーにも、そのリソー
スへのアクセス許可が付与されます。他の IAM アカウントの他のすべてのユーザーは、自動
的にリソースへのアクセスが拒否されます。その AWS アカウントの特定の IAM ユーザーに
リソースへのアクセス許可を付与する場合、管理レベルアクセスの権限を持っているアカウ
ントまたは IAM ユーザーは、そのリソースのアクセス許可をそれらの IAM ユーザーに委任
する必要があります。クロスアカウントの委任の詳細については、『IAM の使用ガイド』の
「クロスアカウントアクセスの有効化」を参照してください。
API Version 2010-03-31
115
Amazon Simple Notification Service 開発者ガイド
ステップ 5. テスト
アカウント 123456789012 の MyTopic トピックに次のポリシーを追加した場合、そのトピックで
sns:Publish アクションを実行するアクセス許可をアカウント111122223333 に付与したことにな
ります。
{
"Version":"2012-10-17",
"Id":"MyTopicPolicy",
"Statement":[{
"Sid":"Allow-publish-to-topic",
"Effect":"Allow",
"Principal":{
"AWS":"111122223333"
},
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic"
}
]
}
アカウント 123456789012 のキュー MyQueue に次のポリシーを追加した場合、そのキューで
sqs:DeleteMessage および sqs:ReceiveMessage アクションを実行する許可をアカウント
111122223333 に付与したことになります。
{
"Version":"2012-10-17",
"Id":"MyQueuePolicy",
"Statement":[
{
"Sid":"Allow-Processing-Of-Messages-for-Queue",
"Effect":"Allow",
"Principal":{
"AWS":"111122223333"
},
"Action":[
"sqs:DeleteMessage",
"sqs:ReceiveMessage"
],
"Resource":[
"arn:aws:sns:us-east-1:123456789012:MyQueue",
]
}
]
}
ステップ 5. テスト
トピックのキューサブスクリプションは、トピックに発行し、トピックがキューに送信したメッセー
ジを表示することでテストできます。
Amazon SNS コンソールを使用してトピックに発行するには
1.
トピックに発行するアクセス許可を持っている AWS アカウントまたは IAM ユーザーの認証情報
を使用して、AWS マネジメントコンソール にサインインし、Amazon SNS コンソール(https://
console.aws.amazon.com/sns/)を開きます。
API Version 2010-03-31
116
Amazon Simple Notification Service 開発者ガイド
別のアカウントのキューへのメッセージの送信
2.
ナビゲーションペインでトピックを選択し、[Publish to Topic] をクリックします。
3.
[Subject] ボックスに件名(たとえば、Testing publish to queue)を入力し、[Message]
ボックスに任意のテキスト(たとえば、Hello world!)を入力して、[Publish Message] をク
リックします。「Your message has been successfully published.」というメッセージが表示され
ます。
Amazon SQS コンソールを使用してトピックからのメッセージを表示するには
1.
キュー内のメッセージを表示するアクセス権限を持っている AWS アカウントまたは IAM ユー
ザーの認証情報を使用して、AWS マネジメントコンソール にサインインし、Amazon SQS コン
ソール (https://console.aws.amazon.com/sqs/) を開きます。
2.
トピックにサブスクライブしているキューのチェックボックスをオンにします。
3.
[Queue Action] ドロップダウンリストから、[View/Delete Messages] を選択し、[Start Polling for
Messages] をクリックします。タイプが [Notification] のメッセージが表示されます。
4.
[Body] 列の [More Details] をクリックします。[Message Details] ボックスに、トピックに発行し
た件名とメッセージを含む JSON ドキュメントが表示されます。メッセージは、以下の JSON ド
キュメントのように見えます。
{
"Type" : "Notification",
"MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "Testing publish to subscribed queues",
"Message" : "Hello world!",
"Timestamp" : "2012-03-29T05:12:16.901Z",
"SignatureVersion" : "1",
"Signature" :
"EXAMPLEnTrFPa37tnVO0FF9Iau3MGzjlJLRfySEoWz4uZHSj6ycK4ph71Zmdv0NtJ4dC/
El9FOGp3VuvchpaTraNHWhhq/
OsN1HVz20zxmF9b88R8GtqjfKB5woZZmz87HiM6CYDTo3l7LMwFT4VU7ELtyaBBafhPTg9O5CnKkg=",
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/
SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:uswest-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"
}
5.
[Close] をクリックします。キューに通知メッセージを送信するトピックへの発行は、正常に終了
しました。
別のアカウントの Amazon SQS キューへの
Amazon SNS メッセージの送信
他のアカウントの Amazon SQS キューに 1 つ以上のサブスクリプションがある Amazon SNS トピッ
クに通知を発行できます。同じアカウント内にある場合と同じ方法でトピックとキューをセットアッ
プします(「Amazon SQS キューへの Amazon SNS メッセージの送信 (p. 111)」を参照)。唯一の
相違点はサブスクリプションの確認の処理方法で、トピックへのキューのサブスクライブ方法によっ
て異なります。
トピック
• キューの所有者がサブスクリプションを作成する (p. 118)
• キューを所有していないユーザーがサブスクリプションを作成する (p. 119)
API Version 2010-03-31
117
Amazon Simple Notification Service 開発者ガイド
キューの所有者がサブスクリプションを作成する
キューの所有者がサブスクリプションを作成する
キューの所有者がサブスクリプションを作成するときは、サブスクリプションの確認は必要ありま
せん。Subscribe アクションが完了するとすぐに、キューはトピックからの通知の受信を開始しま
す。キュー所有者がトピック所有者のトピックにサブスクライブできるようにするには、トピック所
有者が、トピックに対して Subscribe アクションを呼び出す許可をキュー所有者のアカウントに付
与する必要があります。アカウント 123456789012 のトピック MyTopic に追加すると、次のポリシー
は、アカウント 123456789012 の MyTopic に対して sns:Subscribe を呼び出す許可をアカウント
111122223333 に与えます。
{
"Version":"2012-10-17",
"Id":"MyTopicSubscribePolicy",
"Statement":[{
"Sid":"Allow-other-account-to-subscribe-to-topic",
"Effect":"Allow",
"Principal":{
"AWS":"111122223333"
},
"Action":"sns:Subscribe",
"Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic"
}
]
}
このポリシーが MyTopic に設定されると、ユーザーは、アカウント 111122223333 の認証情報を使用
して Amazon SNS コンソールにログインし、トピックにサブスクライブできます。
Amazon SQS コンソールを使用して別のアカウントのトピックに Amazon SQS キューのサブ
スクリプションを追加するには
1.
キューが含まれる AWS アカウントまたはそのアカウントの IAM ユーザーの認証情報を使
用して、AWS マネジメントコンソール にサインインし、Amazon SNS コンソール (https://
console.aws.amazon.com/sns/) を開きます。
2.
トピックとキューの両方の ARN があることを確認してください。サブスクリプションを作成す
るときに必要です。
3.
トピックからメッセージを受信できるように、キューに sqs:SendMessage 許可が設定されてい
ることを確認します。詳細については、「ステップ 2. Amazon SQS キューにメッセージを送信
する許可を Amazon SNS トピックに付与する (p. 113)」を参照してください。
4.
ナビゲーションペインで、[SNS Dashboard] を選択します。
5.
[Dashboard] の [Additional Actions] セクションで、[Create New Subscription] を選択します。
6.
[Topic ARN] ボックスに、トピックの ARN を入力します。
7.
[Protocol] で、[Amazon SQS] を選択します。
8.
[Endpoint] ボックスに、キューの ARN を入力します。
9.
[Subscribe] をクリックします。
10. [Subscription request received!] メッセージで、サブスクリプションの確認が必要であることを告
げるテキストが示されます。キューの所有者である場合は、サブスクリプションの確認は必要あ
りません。[Close] をクリックします。サブスクリプションプロセスが完了すると、トピックに対
して発行された通知メッセージがキューに送信されるようになります。
ユーザーは、AWS アカウント 111122223333 のアクセスキーとセレクタキーを使用して、snssubscribe コマンドを発行するか、Subscribe API アクションを呼び出し、アカウント
123456789012 の MyTopic に Amazon SQS キューをサブスクライブすることもできます。以下の
API Version 2010-03-31
118
Amazon Simple Notification Service 開発者ガイド
キューを所有していないユーザー
がサブスクリプションを作成する
sns-subscribe コマンドは、アカウント 111122223333 のキュー MyQ をアカウント 123456789012 の
トピック MyTopic にサブスクライブします。
aws sns subscribe --topic-arn arn:aws:sns:us-east-1:123456789012:MyTopic -protocol sqs --notification-endpoint arn:aws:sqs:us-east-1:111122223333:MyQ
Note
送信するためには、キューは、Amazon SNS のアクセス許可が必要です。
キューを所有していないユーザーがサブスクリプ
ションを作成する
キューの所有者ではないユーザーがサブスクリプションを作成する(たとえば、アカウント A のト
ピック所有者がアカウント B のキューにサブスクリプションを追加する)ときは、サブスクリプショ
ンの確認が必要です。
Important
トピックにサブスクライブする前に、トピックからメッセージを受信できるように、キュー
に sqs:SendMessage 許可が設定されていることを確認します。「ステップ 2. Amazon SQS
キューにメッセージを送信する許可を Amazon SNS トピックに付与する (p. 113)」を参照
してください。
ユーザーが Subscribe アクションを呼び出すと、SubscriptionConfirmation タイプのメッセー
ジがキューに送信され、サブスクリプション ID が Pending Confirmation に設定されたサブスクリプ
ションが Amazon SNS コンソールに表示されます。サブスクリプションを確認するには、キューか
らのメッセージを読み取れるユーザーがメッセージの SubscribeURL 値に指定された URL にアク
セスする必要があります。サブスクリプションが確認されるまで、トピックに対して発行された通知
はキューに送信されません。サブスクリプションを確認するには、Amazon SQS コンソールまたは
ReceiveMessage API アクションを使用できます。
Amazon SQS コンソールを使用してサブスクリプションを確認するには
1.
AWS マネジメントコンソールにサインインし、Amazon SQS コンソール(https://
console.aws.amazon.com/sqs/)を開きます。
2.
トピックへのサブスクリプションが保留になっているキューを選択します。
3.
[Queue Action] ドロップダウンリストから、[View/Delete Messages] を選択し、[Start Polling for
Messages] をクリックします。タイプが [SubscriptionConfirmation] のメッセージが表示されま
す。
4.
[Body] 列の [More Details] をクリックします。
API Version 2010-03-31
119
Amazon Simple Notification Service 開発者ガイド
AWS CloudFormation テンプレートを使用して Amazon
SQS キューにメッセージを送信するトピックを作成する
5.
テキストボックスで、[SubscribeURL] の値を探し、その URL をコピーします。URL は以下のよ
うになります。
https://sns.us-west-2.amazonaws.com/?
Action=ConfirmSubscription&TopicArn=arn:aws:sns:uswest-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805d352fe148e56f8cff30f0
6.
ウェブブラウザで、URL をアドレスバーに貼り付けて URL にアクセスします。以下の XML ド
キュメントのような応答が表示されます。
<ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/
doc/2010-03-31/">
<ConfirmSubscriptionResult>
<SubscriptionArn>arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54ab0e-4ec2-88e0-db410a0f2bee</SubscriptionArn>
</ConfirmSubscriptionResult>
<ResponseMetadata>
<RequestId>dd266ecc-7955-11e1-b925-5140d02da9af</RequestId>
</ResponseMetadata>
</ConfirmSubscriptionResponse>
Amazon SNS コンソールにトピックのサブスクリプションを表示すると、Subscription ID 列の
[Pending Confirmation] メッセージがサブスクリプション ARN に置き換えられています。サブス
クライブしたキューは、トピックからメッセージを受信する準備ができています。
AWS CloudFormation テンプレートを使用して
Amazon SQS キューにメッセージを送信するト
ピックを作成する
AWS CloudFormation では、テンプレートファイルを使用して、AWS リソースの集合を単一のユニッ
トとして作成/制御することができます。このセクションでは、キューに発行するトピックのデプロ
API Version 2010-03-31
120
Amazon Simple Notification Service 開発者ガイド
AWS CloudFormation テンプレートを使用して AWS
アカウント内のトピックとキューをセットアップする
イを容易にするサンプルテンプレートを使用します。このテンプレートは、2 つのキューの作成、
キューにサブスクリプションを持つトピックの作成、トピックがキューにメッセージを送信できるよ
うにするポリシーのキューへの追加、これらのリソースへのアクセスを制御する IAM ユーザーとグ
ループの作成を行って、セットアップ手順を代行します。
AWS CloudFormation テンプレートを使用して AWS リソースをデプロイする方法の詳細は、『AWS
CloudFormation ユーザーガイド』の「使用開始」を参照してください。
AWS CloudFormation テンプレートを使用して
AWS アカウント内のトピックとキューをセット
アップする
このサンプルテンプレートでは、1 つは IAM グループのメンバーがトピックに発行するため、もう
1 つはキューからのメッセージを読み取るために、それぞれ適切なアクセス許可を付与された 2 つ
の Amazon SQS キューにメッセージを送信できる Amazon SNS トピックを作成します。このテンプ
レートは、各グループに追加される IAM ユーザーも作成します。
このテンプレート(https://s3.amazonaws.com/cloudformation-templates-us-east-1/
SNSToSQS.template)は、「AWS CloudFormation のテンプレート」ページからダウンロードできま
す。
MySNSTopic は 2 つのサブスクライブされたエンドポイント(MyQueue1 と MyQueue2 という 2 つ
の Amazon SQS キュー)に発行するようにセットアップされます。MyPublishTopicGroup は、メン
バーが Publish API アクションまたは sns-publish コマンドを使用して、MySNSTopic に発行するこ
とを許可された IAM グループです。テンプレートは、MyPublishUser と MyQueueUser という IAM
ユーザーを作成し、ログインプロファイルとアクセスキーを設定します。このテンプレートを使用
してスタックを作成するユーザーは、入力パラメータとしてログインプロファイル用のパスワード
を指定します。テンプレートは、2 人の IAM ユーザー用に MyPublishUserKey と MyQueueUserKey
というアクセスキーを作成します。AddUserToMyPublishTopicGroup は MyPublishTopicGroup に
MyPublishUser を追加して、グループに割り当てられたアクセス許可がユーザーに付与されるように
します。
MyRDMessageQueueGroup は IAM グループで、そのメンバーは、ReceiveMessage およ
び DeleteMessage API アクションを使用して 2 つの Amazon SQS キューからメッセージ
を読み取り/削除することを許可されます。AddUserToMyQueueGroup は MyQueueUser を
MyRDMessageQueueGroup に追加して、グループに割り当てられたアクセス許可がユーザーに付与
されるようにします。MyQueuePolicy は、MySNSTopic が 2 つのキューに通知を発行する許可を割り
当てます。
{
"AWSTemplateFormatVersion":"2010-09-09",
"Description":"This Template creates an Amazon SNS topic that can send
messages to two Amazon SQS queues with appropriate permissions for one
IAM user to publish to the topic and another to read messages from the
queues. MySNSTopic is set up to publish to two subscribed endpoints, which
are two Amazon SQS queues (MyQueue1 and MyQueue2). MyPublishUser is an IAM
user that can publish to MySNSTopic using the Publish API. MyTopicPolicy
assigns that permission to MyPublishUser. MyQueueUser is an IAM user that
can read messages from the two Amazon SQS queues. MyQueuePolicy assigns
those permissions to MyQueueUser. It also assigns permission for MySNSTopic
to publish its notifications to the two queues. The template creates access
keys for the two IAM users with MyPublishUserKey and MyQueueUserKey. Note
that you will be billed for the AWS resources used if you create a stack
from this template.",
"Parameters":{
API Version 2010-03-31
121
Amazon Simple Notification Service 開発者ガイド
AWS CloudFormation テンプレートを使用して AWS
アカウント内のトピックとキューをセットアップする
"MyPublishUserPassword":{
"NoEcho":"true",
"Type":"String",
"Description":"Password for the IAM user MyPublishUser",
"MinLength":"1",
"MaxLength":"41",
"AllowedPattern":"[a-zA-Z0-9]*",
"ConstraintDescription":"must contain only alphanumeric characters."
},
"MyQueueUserPassword":{
"NoEcho":"true",
"Type":"String",
"Description":"Password for the IAM user MyQueueUser",
"MinLength":"1",
"MaxLength":"41",
"AllowedPattern":"[a-zA-Z0-9]*",
"ConstraintDescription":"must contain only alphanumeric characters."
}
},
"Resources":{
"MySNSTopic":{
"Type":"AWS::SNS::Topic",
"Properties":{
"Subscription":[
{
"Endpoint":{"Fn::GetAtt":["MyQueue1","Arn"]},
"Protocol":"sqs"
},
{
"Endpoint":{"Fn::GetAtt":["MyQueue2","Arn"]},
"Protocol":"sqs"
}
]
}
},
"MyQueue1":{
"Type":"AWS::SQS::Queue"
},
"MyQueue2":{
"Type":"AWS::SQS::Queue"
},
"MyPublishUser":{
"Type":"AWS::IAM::User",
"Properties":{
"LoginProfile":{
"Password":{"Ref":"MyPublishUserPassword"}
}
}
},
"MyPublishUserKey":{
"Type":"AWS::IAM::AccessKey",
"Properties":{
"UserName":{"Ref":"MyPublishUser"}
}
},
"MyPublishTopicGroup":{
"Type":"AWS::IAM::Group",
API Version 2010-03-31
122
Amazon Simple Notification Service 開発者ガイド
AWS CloudFormation テンプレートを使用して AWS
アカウント内のトピックとキューをセットアップする
"Properties":{
"Policies":[
{
"PolicyName":"MyTopicGroupPolicy",
"PolicyDocument":{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"sns:Publish"
],
"Resource":{"Ref":"MySNSTopic"}
}
]}
}
]
}
},
"AddUserToMyPublishTopicGroup":{
"Type":"AWS::IAM::UserToGroupAddition",
"Properties":{
"GroupName":{"Ref":"MyPublishTopicGroup"},
"Users":[{"Ref":"MyPublishUser"}]
}
},
"MyQueueUser":{
"Type":"AWS::IAM::User",
"Properties":{
"LoginProfile":{
"Password":{"Ref":"MyQueueUserPassword"}
}
}
},
"MyQueueUserKey":{
"Type":"AWS::IAM::AccessKey",
"Properties":{
"UserName":{"Ref":"MyQueueUser"}
}
},
"MyRDMessageQueueGroup":{
"Type":"AWS::IAM::Group",
"Properties":{
"Policies":[
{
"PolicyName":"MyQueueGroupPolicy",
"PolicyDocument":{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"sqs:DeleteMessage",
"sqs:ReceiveMessage"
],
"Resource":[
{"Fn::GetAtt":["MyQueue1","Arn"]},
{"Fn::GetAtt":["MyQueue2","Arn"]}
]
API Version 2010-03-31
123
Amazon Simple Notification Service 開発者ガイド
AWS CloudFormation テンプレートを使用して AWS
アカウント内のトピックとキューをセットアップする
}
]}
}
]
}
},
"AddUserToMyQueueGroup":{
"Type":"AWS::IAM::UserToGroupAddition",
"Properties":{
"GroupName":{"Ref":"MyRDMessageQueueGroup"},
"Users":[{"Ref":"MyQueueUser"}]
}
},
"MyQueuePolicy":{
"Type":"AWS::SQS::QueuePolicy",
"Properties":{
"PolicyDocument":{
"Version":"2012-10-17",
"Id":"MyQueuePolicy",
"Statement":[
{
"Sid":"Allow-SendMessage-To-Both-Queues-From-SNS-Topic",
"Effect":"Allow",
"Principal":"*",
"Action":["sqs:SendMessage"],
"Resource":"*",
"Condition":{
"ArnEquals":{
"aws:SourceArn":{"Ref":"MySNSTopic"}
}
}
}
]
},
"Queues":[{"Ref":"MyQueue1"},{"Ref":"MyQueue2"}]
}
}
},
"Outputs":{
"MySNSTopicTopicARN":{
"Value":{"Ref":"MySNSTopic"}
},
"MyQueue1Info":{
"Value":{"Fn::Join":[
" ",
[
"ARN:",
{"Fn::GetAtt":["MyQueue1","Arn"]},
"URL:",
{"Ref":"MyQueue1"}
]
]}
},
"MyQueue2Info":{
"Value":{"Fn::Join":[
" ",
[
"ARN:",
{"Fn::GetAtt":["MyQueue2","Arn"]},
API Version 2010-03-31
124
Amazon Simple Notification Service 開発者ガイド
AWS CloudFormation テンプレートを使用して AWS
アカウント内のトピックとキューをセットアップする
"URL:",
{"Ref":"MyQueue2"}
]
]}
},
"MyPublishUserInfo":{
"Value":{"Fn::Join":[
" ",
[
"ARN:",
{"Fn::GetAtt":["MyPublishUser","Arn"]},
"Access Key:",
{"Ref":"MyPublishUserKey"},
"Secret Key:",
{"Fn::GetAtt":["MyPublishUserKey","SecretAccessKey"]}
]
]}
},
"MyQueueUserInfo":{
"Value":{"Fn::Join":[
" ",
[
"ARN:",
{"Fn::GetAtt":["MyQueueUser","Arn"]},
"Access Key:",
{"Ref":"MyQueueUserKey"},
"Secret Key:",
{"Fn::GetAtt":["MyQueueUserKey","SecretAccessKey"]}
]
]}
}
}
}
API Version 2010-03-31
125
Amazon Simple Notification Service 開発者ガイド
プリファレンスの設定
Amazon SNS の SMS メッセージを
送信
Amazon SNS を使用して、SMS 対応デバイスにテキストメッセージ、または SMS メッセージを送
信できます。 電話番号をトピックにサブスクライブし、トピックへメッセージを送信することによ
り、電話番号へメッセージを直接送信 (p. 129)または、一度に複数の電話番号にメッセージを送
信 (p. 132)できます。
AWS アカウントに対する SMS プリファレンスを設定 (p. 126)して、目的のユースケースと予算に
対して SMS 配信をカスタマイズできます。 たとえば、ユーザーは、メッセージがコストに対して、
または確実な配信に対して最適化されるかどうかを選択できます。 また、個別のメッセージ配信の使
用量の上限、および AWS アカウントの毎月の使用料金の上限を指定できます。
現地の法律および規制により義務付けられている場合 (米国およびカナダなど)、SMS の受信者はオプ
トアウト (p. 141)ができます。これは、ユーザーの AWS アカウントからの SMS メッセージの受信
の停止を選択することを意味します。 受信者がオプトアウトした後、ユーザーは、制限付きで、再度
電話番号をオプトインし、メッセージの送信を再開できます。
Amazon SNS は、複数のリージョンで SMS メッセージをサポートしているので、ユーザーは、200
か国以上にメッセージを送信できます。 詳細については、「サポートされているリージョンおよび
国 (p. 144)」を参照してください。
トピック
• SMS メッセージプリファレンスの設定 (p. 126)
• SMS メッセージの送信 (p. 129)
• 複数の電話番号に SMS メッセージを送信する (p. 132)
• SMS のアクティビティのモニタリング (p. 136)
• 電話番号および SMS サブスクリプションの管理 (p. 141)
• サポートされているリージョンおよび国 (p. 144)
SMS メッセージプリファレンスの設定
Amazon SNS を使用して、配信の最適化の方法 (コストに対してか、確実な配信に対してか)、毎月の
使用量の上限、メッセージ配信がログに記録される方法、SMS の毎日の使用状況レポートをサブスク
ライブするかどうかなど、SMS メッセージのプリファレンスを指定します。
これらの設定は、アカウントから送信するすべての SMS メッセージに対して有効になりますが、
個々のメッセージの送信時に上書きすることができます。 詳細については、「SMS メッセージの送
信 (p. 129)」を参照してください。
API Version 2010-03-31
126
Amazon Simple Notification Service 開発者ガイド
プリファレンスの設定 (コンソール)
トピック
• プリファレンスの設定 (コンソール) (p. 127)
• プリファレンスの設定 (AWS SDK) (p. 128)
プリファレンスの設定 (コンソール)
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
コンソールメニューで、SMS メッセージングをサポートしているリージョン (p. 144)にリー
ジョンセレクタを設定します。
3.
ナビゲーションペインで、[Text messaging (SMS)] を選択します。
4.
[Text messaging (SMS)] ページで、[Manage text messaging preferences] を選択します。
5.
[Text messaging preferences] ページで、[Default message type] に対して、通常送信する SMS
メッセージのタイプを選択します。
• プロモーション (default) – マーケティングメッセージなどの非クリティカルなメッセージ。
Amazon SNS は、最も低いコストが発生するようにメッセージ配信を最適化します。
• トランザクション – Multi-Factor Authentication のワンタイムパスコードなど、顧客のトランザ
クションをサポートするクリティカルメッセージ。 Amazon SNS は、メッセージ配信を最も高
い信頼性の実現のために最適化します。
メッセージを送信するとき、この設定をオーバーライドできます。
プロモーションおよびトランザクションメッセージの料金表の詳細については、「グローバル
SMS 料金表」を参照してください。
6.
[アカウントの使用料制限] に、各暦月での SMS メッセージに使用する上限額 (USD) を入力しま
す。 Amazon SNS が、SMS メッセージを送信するとその月の使用限度を超えるコストが発生す
ると判断した場合、Amazon SNS は、数分以内に SMS メッセージの発行を停止します。
Important
Amazon SNS は分散システムであるため、使用制限を超えると数分以内に SMS メッ
セージの送信を停止します。 その間に、SMS メッセージを送信し続ければ制限を超える
コストが発生する可能性があります。
デフォルトでは、使用制限は 1.00 USD に設定されます。制限を引き上げる場合は、SNS 制限引
き上げのケースを送信します。[New limit value] に、必要な月ごとの使用制限を入力します。[Use
Case Description] フィールドで、月ごとの SMS 使用制限の引き上げをリクエストしていること
を説明します。
7.
CloudWatch ログアクセスの IAM ロールに対して、Amazon SNS が、SMS 配信のために
CloudWatch Logs でログに書き込めるようにする IAM ロールを作成します。
a.
[Create IAM role] を選択します。
b.
[SNS is requesting permission to use resources in your account] ページで [Allow] を選択しま
す。
8.
[Default percentage of success to sample] で、Amazon SNS が CloudWatch Logs でログを書き
込む、正常な SMS 配信の割合を指定します。 たとえば、失敗した配信にのみログを書き込むに
は、この値を 0 に設定します。 正常な配信の 10% に対してログを書き込むには、10 に設定しま
す。 割合を指定しないなら、Amazon SNS は、すべての正常配信に対してログを書き込みます。
9.
[デフォルトの送信者 ID] に、少なくとも 1 つの文字を含み、スペースは含まない、11 文字以内の
英数字のカスタム ID を入力します。 送信者 ID は、受信デバイスにメッセージ送信者として表示
されます。 たとえば、メッセージ ソースを識別しやすいように、ビジネスブランドを使用できま
す。
API Version 2010-03-31
127
Amazon Simple Notification Service 開発者ガイド
プリファレンスの設定 (AWS SDK)
送信者 ID のサポートについては、国によって異なります。 たとえば、米国の電話番号へ配信さ
れるメッセージは、送信者 ID を表示しません。 送信者 ID をサポートする国については、「サ
ポートされているリージョンおよび国 (p. 144)」を参照してください。
送信者 ID を指定しない場合、サポートされている国では、メッセージは送信者 ID として長い
コードを表示します。 アルファベットの送信者 ID を必要とする国では、メッセージは送信者 ID
として NOTICE を表示します。
メッセージを送信するときに、この設定をオーバーライドできます。
10. レポートストレージで、Amazon S3 バケットの名前を入力して、Amazon SNS. から SMS の毎
日の使用状況レポートを受け取ります。 Amazon SNS は、受信するように Amazon S3 バケット
を指定しない限り、毎日の使用状況レポートを作成しません。 詳細については、「SMS の毎日
の使用状況レポートの表示 (p. 139)」を参照してください。
11. [Update preferences] を選択します。
プリファレンスの設定 (AWS SDK)
AWS SDK の 1 つを使用して SMS プリファレンスを設定するには、Amazon SNS API の
SetSMSAttributes リクエストに対応する SDK のアクションを使用します。 このリクエストに
よって、月ごとの使用制限およびデフォルトの SMS 型 (プロモーションまたはトランザクション) な
どの、異なる SMS の属性に値を割り当てます。すべての SMS 属性については、「Amazon Simple
Notification Service API Reference」の「SetSMSAttributes」を参照してください。
プリファレンスの設定 (AWS SDK for Java)
次の例では、AmazonSNSClient クラスの setSMSAttributes メソッドを使用して、異なる属性名
に値を設定します。
public static void main(String[] args) {
AmazonSNSClient snsClient = new AmazonSNSClient();
setDefaultSmsAttributes(snsClient);
}
public static void setDefaultSmsAttributes(AmazonSNSClient snsClient) {
SetSMSAttributesRequest setRequest = new SetSMSAttributesRequest()
.addAttributesEntry("DefaultSenderID", "mySenderID")
.addAttributesEntry("MonthlySpendLimit", "1")
.addAttributesEntry("DeliveryStatusIAMRole",
"arn:aws:iam::123456789012:role/mySnsRole")
.addAttributesEntry("DeliveryStatusSuccessSamplingRate", "10")
.addAttributesEntry("DefaultSMSType", "Transactional")
.addAttributesEntry("UsageReportS3Bucket", "sns-sms-daily-usage");
snsClient.setSMSAttributes(setRequest);
Map<String, String> myAttributes = snsClient.getSMSAttributes(new
GetSMSAttributesRequest())
.getAttributes();
System.out.println("My SMS attributes:");
for (String key : myAttributes.keySet()) {
System.out.println(key + " = " + myAttributes.get(key));
}
}
この例では、MonthlySpendLimit 属性の値を 1.00 USD に設定します。デフォルトでは、これは
Amazon SNS で許可される最大額です。この制限を引き上げる場合は、SNS 制限引き上げのケースを
API Version 2010-03-31
128
Amazon Simple Notification Service 開発者ガイド
メッセージの送信
送信します。[New limit value] に、必要な月ごとの使用制限を入力します。[Use Case Description]
フィールドで、月ごとの SMS 使用制限の引き上げをリクエストしていることを説明します。
属性が正しく設定されたことを確認するために、この例では、getSMSAttributes メソッドの結果
を表示します。 この例を実行すると、IDE のコンソール出力ウィンドウに属性が表示されます。
My SMS attributes:
DeliveryStatusSuccessSamplingRate = 10
UsageReportS3Bucket = sns-sms-daily-usage
DefaultSMSType = Transactional
DeliveryStatusIAMRole = arn:aws:iam::123456789012:role/mySnsRole
MonthlySpendLimit = 1
DefaultSenderID = mySenderID
SMS メッセージの送信
Amazon SNS を使用して、SMS 対応デバイスに SMS メッセージを送信できます。 これらのデバイ
スの電話番号に直接メッセージを発行でき、Amazon SNS トピックに電話番号をサブスクライブする
必要はありません。
各メッセージを同時に複数の電話番号に発行する場合、電話番号をトピックにサブスクライブすると
便利です。 SMS メッセージをトピックに発行する方法については、「複数の電話番号に SMS メッ
セージを送信する (p. 132)」を参照してください。
メッセージを送信すると、メッセージがコストまたは確実な配信用に最適化されているかどうかを制
御でき、送信者 ID を指定できます。 Amazon SNS API または AWS SDK を使用してメッセージをプ
ログラムによって送信すると、メッセージ配信の上限価格を指定できます。
SMS メッセージを送信するときは、E.164 形式を使用して電話番号を指定します。 E.164 は、国際的
な音声通信に使用される電話番号の構造の規格です。 この形式に従う電話番号には最大 15 桁を設定
でき、プラス記号 (+) および国コードのプレフィックスがついています。 たとえば、E.164 形式の米
国の電話番号は +1XXX5550100 として表示されます。
トピック
• メッセージの送信 (コンソール) (p. 129)
• メッセージの送信 (AWS SDK) (p. 130)
メッセージの送信 (コンソール)
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
コンソールメニューで、SMS メッセージングをサポートしているリージョン (p. 144)にリー
ジョンセレクタを設定します。
3.
ナビゲーションペインで、[Text messaging (SMS)] を選択します。
4.
[テキストメッセージ (SMS)] ページで、[テキストメッセージの送信 (SMS)] を選択します。 [テキ
ストメッセージの送信 (SMS)] ウィンドウが開きます。
5.
[Message type] で、以下のいずれかを選択します。
• プロモーション – マーケティングメッセージなどの非クリティカルなメッセージ。 Amazon
SNS は、最も低いコストが発生するようにメッセージ配信を最適化します。
• トランザクション – Multi-Factor Authentication のワンタイムパスコードなど、顧客のトランザ
クションをサポートするクリティカルメッセージ。 Amazon SNS は、メッセージ配信を最も高
い信頼性の実現のために最適化します。
API Version 2010-03-31
129
Amazon Simple Notification Service 開発者ガイド
メッセージの送信 (AWS SDK)
このメッセージレベルの設定は、[テキストメッセージプリファレンス] ページで設定するデフォ
ルトメッセージタイプを上書きします。
6.
プロモーションおよびトランザクションメッセージの料金表については、「グローバル SMS 料
金表」を参照してください。
メッセージを送信する電話番号を [番号] に入力します。
7.
[メッセージ] にメッセージを入力します。 メッセージには、最大で 160 個の ASCII (または 70 個
の Unicode) 文字を含めることができます。 メッセージがこの長さを超える場合、Amazon SNS
はそれを複数のメッセージとして送信し、それぞれが文字数の制限以内に収められます。 メッ
セージは単語の途中ではなく、全単語の境界で切り離されます。
8.
(オプション) [送信者 ID] に、少なくとも 1 つの文字を含み、スペースは含まない、11 文字以内の
英数字のカスタム ID を入力します。 送信者 ID は、受信デバイスにメッセージ送信者として表示
されます。 たとえば、メッセージ ソースを識別しやすいように、ビジネスブランドを使用できま
す。
送信者 ID のサポートについては、国によって異なります。 たとえば、米国の電話番号へ配信さ
れるメッセージは、送信者 ID を表示しません。 送信者 ID をサポートする国については、「サ
ポートされているリージョンおよび国 (p. 144)」を参照してください。
送信者 ID を指定しない場合、サポートされている国では、メッセージは送信者 ID として長い
コードを表示します。 アルファベットの送信者 ID を必要とする国では、メッセージは送信者 ID
として NOTICE を表示します。
9.
このメッセージレベルの送信者 ID は、[テキストメッセージプリファレンス] ページで設定するデ
フォルトの送信者 ID を上書きします。
[テキストメッセージの送信] を選択します。
メッセージの送信 (AWS SDK)
AWS SDK の 1 つを使用して SMS メッセージを送信するには、Amazon SNS API の Publish リクエ
ストに対応する SDK のアクションを使用します。 このリクエストでは、電話番号に SMS メッセージ
を直接送信できます。 以下の属性名の値を設定する場合、MessageAttributes パラメーターも使用
できます。
AWS.SNS.SMS.SenderID
少なくとも 1 つの文字を含み、スペースは含まない、11 文字以内の英数字のカスタム ID。 送信
者 ID は、受信デバイスにメッセージ送信者として表示されます。 たとえば、メッセージ ソース
を識別しやすいように、ビジネスブランドを使用できます。
送信者 ID のサポートについては、国によって異なります。 たとえば、米国の電話番号へ配信さ
れるメッセージは、送信者 ID を表示しません。 送信者 ID をサポートする国については、「サ
ポートされているリージョンおよび国 (p. 144)」を参照してください。
送信者 ID を指定しない場合、サポートされている国では、メッセージは送信者 ID として長い
コードを表示します。 アルファベットの送信者 ID を必要とする国では、メッセージは送信者 ID
として NOTICE を表示します。
このメッセージレベルの属性は、SetSMSAttributes リクエストを使用して設定す
る、DefaultSenderID アカウントレベルの属性を上書きします。
AWS.SNS.SMS.MaxPrice
SMS メッセージの送信に支払うことのできる上限額 (USD)。 メッセージを送信することによっ
て上限価格を超えるコストが発生すると判断した場合、Amazon SNS はメッセージを送信しませ
ん。
過去 1 か月の SMS コストが既に SetSMSAttributes リクエストを使用して設定す
る、MonthlySpendLimit 属性の制限を超えた場合、この属性は何も実行しません。
API Version 2010-03-31
130
Amazon Simple Notification Service 開発者ガイド
メッセージの送信 (AWS SDK)
Amazon SNS トピックにメッセージを送信する場合、トピックにサブスクライブされている各電
話番号への各メッセージの配信に上限価格が適用されます。
AWS.SNS.SMS.SMSType
送信するメッセージのタイプ。
• Promotional – (初期設定) – マーケティングメッセージなどの非クリティカルなメッセージ。
Amazon SNS は、最も低いコストが発生するようにメッセージ配信を最適化します。
• Transactional - Multi-Factor Authentication のワンタイムパスコードなど、顧客のトランザク
ションをサポートするクリティカルメッセージ。 Amazon SNS は、メッセージ配信を最も高い
信頼性の実現のために最適化します。
このメッセージレベルの属性は、SetSMSAttributes リクエストを使用して設定す
る、DefaultSMSType アカウントレベルの属性を上書きします。
(オプション) メッセージ属性設定 (AWS SDK for Java)
属性キーを MessageAttributeValue オブジェクトと関連付けるマップを構築することで、メッ
セージ属性値を設定します。 各 MessageAttributeValue オブジェクトは属性値で初期化され、各
オブジェクトは値のデータ型を宣言します。 次の例では、上限価格を 0.50 USD、SMS 型をプロモー
ションとして、「mySenderID」に送信者 ID を設定します。
Map<String, MessageAttributeValue> smsAttributes =
new HashMap<String, MessageAttributeValue>();
smsAttributes.put("AWS.SNS.SMS.SenderID", new MessageAttributeValue()
.withStringValue("mySenderID") //The sender ID shown on the device.
.withDataType("String"));
smsAttributes.put("AWS.SNS.SMS.MaxPrice", new MessageAttributeValue()
.withStringValue("0.50") //Sets the max price to 0.50 USD.
.withDataType("Number"));
smsAttributes.put("AWS.SNS.SMS.SMSType", new MessageAttributeValue()
.withStringValue("Promotional") //Sets the type to promotional.
.withDataType("String"));
SMS メッセージを送信する場合、PublishRequest オブジェクトに属性を適用します。
メッセージの送信 (AWS SDK for Java)
次の例では、AmazonSNSClient クラスの publish メソッドを使用して、電話番号にメッセージを
直接送信します。
public static void main(String[] args) {
AmazonSNSClient snsClient = new AmazonSNSClient();
String message = "My SMS message";
String phoneNumber = "+1XXX5550100";
Map<String, MessageAttributeValue> smsAttributes =
new HashMap<String, MessageAttributeValue>();
//<set SMS attributes>
sendSMSMessage(snsClient, message, phoneNumber, smsAttributes);
}
public static void sendSMSMessage(AmazonSNSClient snsClient, String message,
String phoneNumber, Map<String, MessageAttributeValue> smsAttributes) {
PublishResult result = snsClient.publish(new PublishRequest()
.withMessage(message)
.withPhoneNumber(phoneNumber)
.withMessageAttributes(smsAttributes));
API Version 2010-03-31
131
Amazon Simple Notification Service 開発者ガイド
複数の電話番号にメッセージを送信する
System.out.println(result); // Prints the message ID.
}
この例を実行すると、IDE のコンソール出力ウィンドウにメッセージ ID が表示されます。
{MessageId: 9b888f80-15f7-5c30-81a2-c4511a3f5229}
複数の電話番号に SMS メッセージを送信する
トピックにこれらの電話番号を登録することで、1 通の SMS メッセージを一度に複数の電話番号に送
信できます。 トピックは通信チャンネルで、サブスクライバーを追加し、すべてのサブスクライバー
にメッセージを発行できます。 サブスクリプションをキャンセルするか、サブスクライバーがアカ
ウントからの SMS メッセージの受信をオプトアウトするまで、トピックに発行されるすべてのメッ
セージを受け取ります。
トピック
• トピックへのメッセージの送信 (コンソール) (p. 132)
• トピックへのメッセージの送信 (AWS SDK) (p. 133)
トピックへのメッセージの送信 (コンソール)
トピックを作成するには
SMS メッセージを送信するトピックがまだない場合は、次の手順を実行します。
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
コンソールメニューで、SMS メッセージングをサポートしているリージョン (p. 144)にリー
ジョンセレクタを設定します。
3.
ナビゲーションペインで、[Topics] を選択します。
4.
[Topics] ページで、[Create new topic] を選択します。 [Create new topic] ウィンドウが開きま
す。
5.
トピック名に名前を入力します。
6.
(オプション) 表示名に SMS メッセージのカスタムプレフィックスを入力します。 トピックに
メッセージを送信する場合、Amazon SNS によって右アングルブラケット (>) とスペースに続い
て表示名が付加されます。 表示名では大文字と小文字が区別されず、Amazon SNS は表示名を大
文字に変換します。 たとえば、トピックの表示名が MyTopic で、メッセージが Hello World!
である場合、メッセージは次のように表示されます。
MYTOPIC> Hello World!
7.
[Create topic] を選択します。表示名と Amazon リソースネーム (ARN) が、[Topics] ページのテー
ブルに追加されます。
SMS のサブスクリプションを追加する
トピックに 1 回だけメッセージを発行することによって、サブスクリプションを使用して SMS メッ
セージを複数の受取人に送信できます。
1.
[Topics] ページで、トピック ARN を選択します。
2.
トピックの詳細ページで、[サブスクリプションの作成] を選択します。
API Version 2010-03-31
132
Amazon Simple Notification Service 開発者ガイド
トピックへのメッセージの送信 (AWS SDK)
3.
[Protocol] で、[SMS] を選択します。
4.
5.
[エンドポイント] に、メッセージを送信する電話番号を入力します。
[Create Subscription] を選択します。[Subscriptions] テーブルに、サブスクリプションの情報が追
加されます。
電話番号を追加するために、この手順を繰り返すことができ、E メールなどの他の種類のサブス
クリプションを追加できます。
メッセージを送信する
トピックにメッセージを発行すると、Amazon SNS はトピックにサブスクライブされているすべての
電話番号にメッセージの配信を試みます。
1.
トピックの詳細ページで、[Publish to topic] を選択します。
2.
トピックに E メールのサブスクリプションが含まれていない場合、および E メール と SMS のサ
ブスクリプションの両方を発行する場合は、[Publish a message] ページで、[Subject] のフィール
ドを空のままにします。 [Subject] に入力したテキストが E メールの件名の行として使用されま
す。
[Message] にメッセージを入力します。
3.
1 つの SMS メッセージには、最大で 160 個の ASCII 文字または 70 個の Unicode 文字を含める
ことができます。 これらの長さを超えるメッセージは複数のメッセージに分割され、それぞれが
文字数の制限以内に収められます。 メッセージは単語の途中ではなく、全単語の境界で切り離さ
れます。
4.
トピックに表示名がある場合、Amazon SNS はそれをメッセージの長さを増やすメッセージに追
加します。 表示名の長さは、名前の文字数に Amazon SNS が追加する右アングルブラケット (>)
とスペースの 2 文字をプラスしたものです。
[Publish message] を選択します。 Amazon SNS は SMS メッセージを送信し、成功メッセージ
を表示します。
トピックへのメッセージの送信 (AWS SDK)
AWS SDK のいずれかを使用してトピックに SMS メッセージを送信するには、Amazon SNS API で
次のリクエストに対応する SDK のアクションを使用します。
CreateTopic
電話番号をサブスクライブできるトピックを作成し、トピックに発行することで、それらの電話
番号のすべてに一度にメッセージを発行します。
Subscribe
トピックに電話番号をサブスクライブします。
Publish
トピックにサブスクライブされた各電話番号にメッセージを送信します。
メッセージのいくつかの属性の設定に MessageAttributes パラメーターを使用できます (上
限価格など)。 詳細については、「メッセージの送信 (AWS SDK) (p. 130)」を参照してくださ
い。
トピックの作成 (AWS SDK for Java)
次の例では、「mySNSTopic」という名前のトピックを作成するために、AmazonSNSClient クラス
の createTopic メソッドを使用します。
public static void main(String[] args) {
API Version 2010-03-31
133
Amazon Simple Notification Service 開発者ガイド
トピックへのメッセージの送信 (AWS SDK)
AmazonSNSClient snsClient = new AmazonSNSClient();
String topicArn = createSNSTopic(snsClient);
}
public static String createSNSTopic(AmazonSNSClient snsClient) {
CreateTopicRequest createTopic = new CreateTopicRequest("mySNSTopic");
CreateTopicResult result = snsClient.createTopic(createTopic);
System.out.println("Create topic request: " +
snsClient.getCachedResponseMetadata(createTopic));
System.out.println("Create topic result: " + result);
return result.getTopicArn();
}
この例では、リクエスト ID を取得するために getCachedResponseMetadata メソッドを使用しま
す。
この例を実行すると、IDE のコンソール出力ウィンドウに次のように表示されます。
{TopicArn: arn:aws:sns:us-east-1:123456789012:mySNSTopic}
CreateTopicRequest - {AWS_REQUEST_ID=93f7fc90-f131-5ca3-ab18-b741fef918b5}
トピックに SMS のサブスクリプションを追加します (AWS
SDK for Java)
次の例では、トピックにサブスクリプションを追加するために、AmazonSNSClient クラスの
subscribe メソッドを使用します。
public static void main(String[] args) {
AmazonSNSClient snsClient = new AmazonSNSClient();
String phoneNumber = "+1XXX5550100";
String topicArn = createSNSTopic(snsClient);
subscribeToTopic(snsClient, topicArn, "sms", phoneNumber);
}
//<create SNS topic>
public static void subscribeToTopic(AmazonSNSClient snsClient, String
topicArn,
String protocol, String endpoint) {
SubscribeRequest subscribe = new SubscribeRequest(topicArn, protocol,
endpoint);
SubscribeResult subscribeResult = snsClient.subscribe(subscribe);
System.out.println("Subscribe request: " +
snsClient.getCachedResponseMetadata(subscribe));
System.out.println("Subscribe result: " + subscribeResult);
}
この例では、subscribeRequest オブジェクトを作成し、次の引数を渡します。
• topicArn - サブスクリプションが追加されるトピックの Amazon リソースネーム (ARN)。
• "sms" - SMS のサブスクリプションのプロトコル オプション。
• endpoint - トピックにサブスクライブする電話番号。
この例では、サブスクリプションのリクエストのリクエスト ID を取得するため
に、getCachedResponseMetadata メソッドを使用します。
API Version 2010-03-31
134
Amazon Simple Notification Service 開発者ガイド
トピックへのメッセージの送信 (AWS SDK)
この例を実行すると、IDE のコンソールウィンドウにサブスクリプションのリクエストの ID が表示さ
れます。
SubscribeRequest - {AWS_REQUEST_ID=f38fe925-8093-5bd4-9c19-a7c7625de38c}
(オプション) メッセージ属性設定 (AWS SDK for Java)
属性キーを MessageAttributeValue オブジェクトと関連付けるマップを構築することで、メッ
セージ属性値を設定します。 各 MessageAttributeValue オブジェクトは属性値で初期化され、各
オブジェクトは値のデータ型を宣言します。 次の例では、上限価格を 0.50 USD、SMS 型をプロモー
ションとして、「mySenderID」に送信者 ID を設定します。
Map<String, MessageAttributeValue> smsAttributes =
new HashMap<String, MessageAttributeValue>();
smsAttributes.put("AWS.SNS.SMS.SenderID", new MessageAttributeValue()
.withStringValue("mySenderID") //The sender ID shown on the device.
.withDataType("String"));
smsAttributes.put("AWS.SNS.SMS.MaxPrice", new MessageAttributeValue()
.withStringValue("0.50") //Sets the max price to 0.50 USD.
.withDataType("Number"));
smsAttributes.put("AWS.SNS.SMS.SMSType", new MessageAttributeValue()
.withStringValue("Promotional") //Sets the type to promotional.
.withDataType("String"));
メッセージ属性の詳細については、「メッセージの送信 (AWS SDK) (p. 130)」を参照してください
SMS メッセージを送信する場合、PublishRequest オブジェクトに属性を適用します。
トピックにメッセージを発行します (AWS SDK for Java)
次の例では、トピックに SMS メッセージを発行するために、AmazonSNSClient クラスの publish
メソッドを使用します。
public static void main(String[] args) {
AmazonSNSClient snsClient = new AmazonSNSClient();
String message = "My SMS message";
Map<String, MessageAttributeValue> smsAttributes =
new HashMap<String, MessageAttributeValue>();
//<set SMS attributes>
String topicArn = createSNSTopic(snsClient);
//<subscribe to topic>
sendSMSMessageToTopic(snsClient, topicArn, message, smsAttributes);
}
//<create topic method>
//<subscribe to topic method>
public static void sendSMSMessageToTopic(AmazonSNSClient snsClient, String
topicArn,
String message, Map<String, MessageAttributeValue> smsAttributes) {
PublishResult result = snsClient.publish(new PublishRequest()
.withTopicArn(topicArn)
.withMessage(message)
.withMessageAttributes(smsAttributes));
System.out.println(result);
API Version 2010-03-31
135
Amazon Simple Notification Service 開発者ガイド
SMS のアクティビティのモニタリング
}
Amazon SNS トピックにサブスクライブされているすべての電話番号にメッセージの配信を試みま
す。
この例では、トピックの Amazon リソースネーム (ARN) およびメッセージを引数として渡すとき
に、publishRequest オブジェクトを作成します。 publishResult オブジェクトは、Amazon
SNS によって返されるメッセージ ID をキャプチャします。
この例を実行すると、IDE のコンソール出力ウィンドウにメッセージ ID が表示されます。
{MessageId: 9b888f80-15f7-5c30-81a2-c4511a3f5229}
SMS のアクティビティのモニタリング
SMS をモニタリングすることによって、送信先の電話番号、成功した配信または失敗した配信、エ
ラーの原因、コスト、およびその他の情報を追跡できます。 Amazon SNS は、コンソールの統計をま
とめ、Amazon CloudWatch に情報を送信し、指定した Amazon S3 バケットに SMS の毎日の使用状
況レポートを送信します。
トピック
• SMS 配信統計の表示 (p. 136)
• SMS 配信用の Amazon CloudWatch のメトリクスおよびログを表示する (p. 136)
• SMS の毎日の使用状況レポートの表示 (p. 139)
SMS 配信統計の表示
最新の SMS 配信に関する統計を表示するために Amazon SNS コンソールを使用できます。
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
コンソールメニューで、SMS メッセージングをサポートしているリージョン (p. 144)にリー
ジョンセレクタを設定します。
3.
4.
ナビゲーションペインで、[テキストメッセージ (SMS)] を選択します。
[テキストメッセージ (SMS)] ページの、[Account stats] セクションで、トランザクションおよび
プロモーション SMS メッセージ配信のグラフを表示します。 各グラフは、前述の 15 日間の次
のデータを表示します。
• 配信成功率 (正常な配信の割合)
• 送信 (配信試行数)
• 失敗 (配信の失敗数)
このページで、毎日の使用状況レポートを保存する Amazon S3 バケットに移動するために、[使用状
況] ボタンを選択します。 詳細については、「SMS の毎日の使用状況レポートの表示 (p. 139)」を
参照してください。
SMS 配信用の Amazon CloudWatch のメトリクス
およびログを表示する
Amazon CloudWatch および Amazon CloudWatch Logs を使用して、SMS のメッセージ配信を監視で
きます。
API Version 2010-03-31
136
Amazon Simple Notification Service 開発者ガイド
CloudWatch のメトリクスとログを表示
トピック
•
•
•
•
•
Amazon CloudWatch メトリクスの表示 (p. 137)
CloudWatch Logs の表示 (p. 137)
正常な SMS 配信のログの例 (p. 137)
失敗した SMS 配信のログの例 (p. 138)
SMS 配信の失敗の原因 (p. 138)
Amazon CloudWatch メトリクスの表示
Amazon SNS は、自動的に SMS メッセージ配信に関するメトリクスを収集し、これらを Amazon
CloudWatch にプッシュします。 CloudWatch を使用してこれらのメトリクスを監視し、そのメトリ
クスがしきい値を超えたときに警告するようにアラームを作成できます。 CloudWatch メトリクス
のモニタリング、CloudWatch アラームの設定、利用可能なメトリクスの種類についての詳細は、
「CloudWatch による Amazon SNS のモニタリング (p. 193)」を参照してください。
CloudWatch Logs の表示
Amazon SNS の Amazon CloudWatch Logs への書き込みを有効化することにより、正常な、お
よび失敗した SMS メッセージ配信の情報を収集できます。 送信した各 SMS メッセージに対し
て、Amazon SNS は、メッセージの価格、成功または失敗のステータス、失敗の理由 (メッセージが
失敗した場合)、メッセージのドウェル時間、その他の情報を含むログを書き込みます。
SMS メッセージに対して CloudWatch Logs を有効にする
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
コンソールメニューで、SMS メッセージングをサポートしているリージョン (p. 144)にリー
ジョンセレクタを設定します。
3.
4.
5.
ナビゲーションペインで、[Text messaging (SMS)] を選択します。
[Text messaging (SMS)] ページで、[Manage text messaging preferences] を選択します。
[テキストメッセージプリファレンス] ページで、CloudWatch ログアクセスの IAM ロールに対し
て、CloudWatch Logs に SMS 配信のために Amazon SNS がログに書き込めるようにする IAM
ロールを作成します。
6.
7.
a.
[Create IAM role] を選択します。
b.
[SNS is requesting permission to use resources in your account] ページで [Allow] を選択しま
す。
[Default percentage of success to sample] で、Amazon SNS が CloudWatch Logs でログを書き
込む、正常な SMS 配信の割合を指定します。 たとえば、失敗した配信にのみログを書き込むに
は、この値を 0 に設定します。 正常な配信の 10% に対してログを書き込むには、10 に設定しま
す。 割合を指定しないなら、Amazon SNS は、すべての正常配信に対してログを書き込みます。
[Update preferences] を選択します。
[テキストメッセージプリファレンス] ページの他のオプションについては、「プリファレンスの設定
(コンソール) (p. 127) 」を参照してください。
正常な SMS 配信のログの例
正常な SMS 配信の配信ステータスのログは次の例のようになります。
{
"notification": {
"messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf",
"timestamp": "2016-06-28 00:40:34.558"
API Version 2010-03-31
137
Amazon Simple Notification Service 開発者ガイド
CloudWatch のメトリクスとログを表示
},
"delivery": {
"phoneCarrier": "My Phone Carrier",
"mnc": 270,
"destination": "+1XXX5550100”,
"priceInUSD": 0.00645,
"smsType": "Transactional",
"mcc": 310,
"providerResponse": "Message has been accepted by phone carrier",
"dwellTimeMs": 599,
"dwellTimeMsUntilDeviceAck": 1344
},
"status": "SUCCESS"
}
失敗した SMS 配信のログの例
失敗した SMS 配信の配信ステータスのログは次の例のようになります。
{
"notification": {
"messageId": "1077257a-92f3-5ca3-bc97-6a915b310625",
"timestamp": "2016-06-28 00:40:34.559"
},
"delivery": {
"mnc": 0,
"destination": "+1XXX5550100”,
"priceInUSD": 0.00645,
"smsType": "Transactional",
"mcc": 0,
"providerResponse": "Unknown error attempting to reach phone",
"dwellTimeMs": 1420,
"dwellTimeMsUntilDeviceAck": 1692
},
"status": "FAILURE"
}
SMS 配信の失敗の原因
失敗の理由は、providerResponse 属性で提供されます。 SMS メッセージは以下の理由で送信に失
敗することがあります。
• 電話業者がスパムとしてブロック
•
•
•
•
送信先がブラックリストに記載されている
無効な電話番号
メッセージ本文が無効
電話業者がこのメッセージをブロック
•
•
•
•
•
電話業者が現在、到達不可能/使用不可能
電話が SMS をブロック
電話がブラックリストに載せられている
電話が現在、到達不可能/使用不可能
電話番号はオプトアウトしている
• この配信が上限価格を超えている
• 電話に達する際の原因不明なエラー
API Version 2010-03-31
138
Amazon Simple Notification Service 開発者ガイド
使用状況レポートの表示
SMS の毎日の使用状況レポートの表示
Amazon SNS から毎日の使用状況レポートにサブスクライブすることによって、SMS 配信をモニタ
リングできます。 Amazon SNS は指定した Amazon S3 バケットに CSV ファイルとして使用状況レ
ポートを毎日配信します。
トピック
• 毎日の使用状況レポートの情報 (p. 139)
• 毎日の使用状況レポートにサブスクライブする (p. 139)
毎日の使用状況レポートの情報
使用状況レポートには、アカウントによって正常に配信された各 SMS メッセージに関する次の情報
が含まれています。
• メッセージの発行された時刻 (UTC)
• メッセージ ID
• 送信先の電話番号
• メッセージの種類
• 配信ステータス
• メッセージの価格 (USD)
• パート番号 (1 通のメッセージとして長すぎる場合、メッセージは複数のパートに分割されます)
• パートの総数
毎日の使用状況レポートにサブスクライブする
毎日の使用状況レポートにサブスクライブするには、適切なアクセス許可を持つ Amazon S3 バケッ
トを作成する必要があります。
毎日の使用状況レポート用の Amazon S3 バケットを作成するには
1.
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール(https://
console.aws.amazon.com/s3/)を開きます。
2.
[Create Bucket] を選択します。
3.
[バケット名] に、sns-sms-daily-usage のような名前を入力します。 バケット名の規則と制限
については、「Amazon Simple Storage Service 開発者ガイド」の、「バケット命名規則」を参
照してください。
4.
[Create] を選択します。
5.
[すべてのバケット] テーブルでバケットを選択して、[プロパティ] を選択します。
6.
[Permissions] セクションで、[Add bucket policy] を選択します。
7.
[Bucket Policy Editor] ウィンドウで、Amazon SNS サービスプリンシパルをバケットに書き込む
ことを許可するポリシーを提供します。例については、「バケットポリシーの例 (p. 140)」を参
照してください。
ポリシーの例を使用する場合は、my-s3-bucket をバケットの名前に置き換えるようにしてくだ
さい。
8.
[Save] を選択します。
毎日の使用状況レポートにサブスクライブする
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
API Version 2010-03-31
139
Amazon Simple Notification Service 開発者ガイド
使用状況レポートの表示
2.
ナビゲーションペインで、[Text messaging (SMS)] を選択します。
3.
[テキストメッセージ (SMS)] ページで、[テキストメッセージのプリファレンスを管理する] を選
択します。
[テキストメッセージプリファレンス] ページで、[レポートストレージ] に、SMS の毎日の使用状
況レポートを受け取る Amazon S3 バケットの名前を入力します。
[Update preferences] を選択します。
4.
5.
[テキストメッセージプリファレンス] ページの他のオプションについては、「プリファレンスの設定
(コンソール) (p. 127) 」を参照してください。
毎日の使用状況レポートにサブスクライブすると、Amazon S3 コンソールでレポートを表示できま
す。 Amazon SNS コンソールの [テキストメッセージ (SMS)] ページに移動して、[使用状況] ボタンを
選択することもできます。
バケットポリシーの例
次のポリシーは、Amazon SNS サービスプリンシパルに s3:PutObject および
s3:GetBucketLocation アクションの実行を許可します。Amazon SNS から SMS の毎日の使用状
況レポートを受け取る Amazon S3 バケットを作成するときに、この例を使用できます。
{
"Version": "2012-10-17",
"Id": "sns-sms-daily-usage-policy",
"Statement": [
{
"Sid": "AllowPutObject",
"Effect": "Allow",
"Principal": {
"Service": "sns.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-s3-bucket/*"
},
{
"Sid": "AllowGetBucketLocation",
"Effect": "Allow",
"Principal": {
"Service": "sns.amazonaws.com"
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::my-s3-bucket"
}
]
}
毎日の使用状況レポートの例
毎日の使用状況レポートにサブスクライブすると、Amazon SNS は毎日、以下の場所に CSV ファイ
ルを使用して使用状況データを配置します。
<my-s3-bucket>/SMSUsageReports/<region>/YYYY/MM/DD/00x.csv.gz
各ファイルには、最大 50,000 のレコードを含めることができます。 1 日のレコードがこの制限を超
えると、Amazon SNS は複数のファイルを追加します。
レポートの例を以下に示します。
API Version 2010-03-31
140
Amazon Simple Notification Service 開発者ガイド
サブスクリプションの管理
PublishTimeUTC,MessageId,DestinationPhoneNumber,MessageType,DeliveryStatus,PriceInUSD,PartNu
2016-05-10T03:00:29.476Z,96a298ac-1458-4825a7eb-7330e0720b72,1XXX5550100,Promotional,Message has been accepted by phone
carrier,0.90084,1,1
2016-05-10T03:00:29.561Z,1e29d394d7f4-4dc9-996e-26412032c344,1XXX5550100,Promotional,Message has been accepted
by phone carrier,0.34322,1,1
2016-05-10T03:00:30.769Z,98ba941c-afc7-4c51ba2c-56c6570a6c08,1XXX5550100,Transactional,Message has been accepted by
phone carrier,0.27815,1,1
. . .
電話番号および SMS サブスクリプションの管理
Amazon SNS には、アカウントから SMS メッセージを受信するユーザーを管理するためのオプショ
ンが複数用意されています。 制限された頻度で、アカウントからの SMS メッセージの受信をオプト
アウトした電話番号をオプトインできます。 SMS サブスクリプションへのメッセージの送信を停止
するために、それらに発行されるサブスクリプションやトピックを削除できます。
トピック
• SMS メッセージの受信のオプトアウト (p. 141)
• 電話番号とサブスクリプション (コンソール) の管理 (p. 141)
• 電話番号およびサブスクリプション (AWS SDK) の管理 (p. 142)
SMS メッセージの受信のオプトアウト
現地の法律および規制により義務付けられている場合 (米国およびカナダなど)、SMS の受信者はデ
バイスを使用して、Amazon SNS がメッセージを配信する同じロングコードまたはショートコード
に STOP または ARRET (フランス語) と返信することにより、オプトアウトできます。 オプトアウ
ト後、ユーザーが電話番号をオプトインしない限り、受信者は AWS アカウントから配信される SMS
メッセージを受信しなくなります。
電話番号が Amazon SNS トピックにサブスクライブされると、オプトアウトはサブスクリプションを
削除しませんが、電話番号をオプトインしない限り、SMS メッセージは、サブスクリプションへ送信
できません。
電話番号とサブスクリプション (コンソール) の管理
Amazon SNS コンソールを使用して、アカウントから SMS メッセージを受信する電話番号を制御で
きます。
オプトアウトされた電話番号をオプトインする
ユーザーのアカウントからの SMS メッセージの受信をオプトアウトした電話番号を表示し、これら
の電話番号をオプトインしてメッセージの送信を再開することができます。
30 日に 1 回のみ、電話番号をオプトインできます。
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
コンソールメニューで、SMS メッセージングをサポートしているリージョン (p. 144)にリー
ジョンセレクタを設定します。
3.
ナビゲーションペインで、[Text messaging (SMS)] を選択します。
API Version 2010-03-31
141
Amazon Simple Notification Service 開発者ガイド
電話番号およびサブスクリプション (AWS SDK) の管理
4.
[Text messaging (SMS)] ページで、[オプトアウトされた電話番号を表示] を選択します。 [Opted
out phone numbers] ページは、オプトアウトされた電話番号を表示します。
5.
オプトインする電話番号のチェックボックスをオンにして、[Opt in] を選択します。 電話番号は
オプトアウトではなくなり、送信した SMS メッセージを受信します。
SMS サブスクリプションを削除する
トピックにパブリッシュするときに、その電話番号への SMS メッセージの送信を停止するように
SMS サブスクリプションを削除します。
1.
ナビゲーションペインで [Subscriptions] を選択します。
2.
削除するサブスクリプションのチェックボックスをオンにします。 それから、[Actions] を選択し
て、[Delete Application] を選択します。
3.
[Delete ] ウィンドウで、[Delete] を選択します。 Amazon SNS はサブスクリプションを削除し、
成功メッセージを表示します。
トピックの削除
サブスクライブしたエンドポイントにメッセージを発行しない場合トピックを削除します。
1.
ナビゲーションペインで、[Topics] を選択します。
2.
削除するトピックのチェックボックスをオンにします。 [Actions] を選択してから、[Delete
Topics] を選択します。
3.
[Delete ] ウィンドウで、[Delete] を選択します。 Amazon SNS はトピックを削除し、成功メッ
セージを表示します。
電話番号およびサブスクリプション (AWS SDK) の
管理
AWS SDK を使用して、Amazon SNS に対してプログラムによるリクエストを行い、アカウントから
SMS メッセージを受信できる電話番号を管理できます。
すべてのオプトアウトした電話番号を表示する
すべてのオプトアウトした電話番号を表示するには、Amazon SNS API を使用し
て、ListPhoneNumbersOptedOut リクエストを送信します。 たとえば、AWS SDK for Java を使用
して、AmazonSNSClient クラスの listPhoneNumbersOptedOut メソッドを使用できます。
public static void main(String[] args) {
AmazonSNSClient snsClient = new AmazonSNSClient();
listOptOut(snsClient);
}
public static void listOptOut(AmazonSNSClient snsClient) {
String nextToken = null;
do {
ListPhoneNumbersOptedOutResult result = snsClient
.listPhoneNumbersOptedOut(new ListPhoneNumbersOptedOutRequest()
.withNextToken(nextToken));
nextToken = result.getNextToken();
for (String phoneNum : result.getPhoneNumbers()) {
System.out.println(phoneNum);
API Version 2010-03-31
142
Amazon Simple Notification Service 開発者ガイド
電話番号およびサブスクリプション (AWS SDK) の管理
}
} while (nextToken != null);
}
Amazon SNS は、ページ分割されたレスポンスを返すので、この例では Amazon SNS が次のトーク
ンを返すごとに、リクエストを繰り返します。 この例を実行すると、IDE のコンソール出力ウィンド
ウで、すべてのオプトアウトした電話番号のリストが表示されます。
電話番号がオプトアウトしているかどうかを確認する
電話番号がオプトアウトしているかどうかを確認するには、Amazon SNS API を使用し
て、CheckIfPhoneNumberIsOptedOut リクエストを送信します。 たとえば、AWS SDK for Java
を使用して、AmazonSNSClient クラスの checkIfPhoneNumberIsOptedOut メソッドを使用でき
ます。
CheckIfPhoneNumberIsOptedOutRequest request = new
CheckIfPhoneNumberIsOptedOutRequest().withPhoneNumber(phoneNumber);
System.out.println(snsClient.checkIfPhoneNumberIsOptedOut(request));
この例を実行すると、IDE のコンソール出力ウィンドウに true または false の結果が表示されます。
{IsOptedOut: false}
オプトアウトされた電話番号をオプトインする
電話番号をオプトインするには、Amazon SNS API を使用して、OptInPhoneNumber リクエ
ストを送信します。 たとえば、AWS SDK for Java を使用して、AmazonSNSClient クラスの
optInPhoneNumber メソッドを使用できます。
snsClient.optInPhoneNumber(new
OptInPhoneNumberRequest().withPhoneNumber(phoneNumber));
30 日に 1 回のみ、電話番号をオプトインできます。
SMS サブスクリプションを削除する
Amazon SNS トピックからの SMS サブスクリプションを削除するには、Amazon SNS API を使用し
て ListSubscriptions リクエストを送信することにより、サブスクリプション ARN を取得し、そ
れから ARN を Unsubscribe リクエストに渡します。
たとえば、AWS SDK for Java を使用して、AmazonSNSClient クラスの listSubscriptions メ
ソッドを使用し、サブスクリプション ARN を取得できます。
ListSubscriptionsResult result = snsClient.listSubscriptions();
for (Subscription sub : result.getSubscriptions()) {
System.out.println(sub);
}
文字列引数として、ARN を unsubscribe メソッドに渡すことにより、サブスクリプションを削除で
きます。
snsClient.unsubscribe(subscriptionArn);
API Version 2010-03-31
143
Amazon Simple Notification Service 開発者ガイド
サポートされているリージョンおよび国
トピックの削除
トピックとサブスクリプションすべてを削除するには、Amazon SNS API を使用して ListTopics リ
クエストを送信することでトピック ARN を取得し、次に、その ARN を DeleteTopic リクエストに
渡します。
たとえば、AWS SDK for Java を使用して、AmazonSNSClient クラスの listTopics メソッドを使
用し、トピック ARN を取得できます。
ListTopicsResult result = snsClient.listTopics();
for (Topic t : result.getTopics()) {
System.out.println(t);
}
文字列引数として、ARN を deleteTopic メソッドに渡すことにより、トピックを削除できます。
snsClient.deleteTopic(topicArn);
サポートされているリージョンおよび国
現在、Amazon SNS は、次のリージョンで SMS メッセージをサポートしています。
リージョン名
リージョン
エンドポイント
プロトコル
米国東部(バージニア
北部)
us-east-1
sns.usHTTP および HTTPS
east-1.amazonaws.com
米国西部 (オレゴン)
us-west-2
sns.usHTTP および HTTPS
west-2.amazonaws.com
欧州 (アイルランド)
eu-west-1
sns.euHTTP および HTTPS
west-1.amazonaws.com
アジアパシフィック
(東京)
ap-northeast-1
sns.apHTTP および HTTPS
northeast-1.amazonaws.com
アジアパシフィック
(シンガポール)
ap-southeast-1
sns.apHTTP および HTTPS
southeast-1.amazonaws.com
アジアパシフィック
(シドニー)
ap-southeast-2
sns.apHTTP および HTTPS
southeast-2.amazonaws.com
Amazon SNS を使用して、以下の国に SMS メッセージを送信できます。
国
ISO コード
送信者 ID のサポート
アフガニスタン
af
アルバニア
AL
はい
アルジェリア
DZ
アンドラ
AD
はい
アンゴラ
AO
はい
API Version 2010-03-31
144
Amazon Simple Notification Service 開発者ガイド
サポートされているリージョンおよび国
国
ISO コード
送信者 ID のサポート
アンギラ
AI
はい
アンティグアバーブーダ
AG
はい
Argentina
AR
アルメニア
AM
はい
アルバ
AW
はい
オーストラリア
AU
はい
オーストリア
AT
はい
アゼルバイジャン
AZ
バハマ諸島
BS
はい
バーレーン
BH
はい
バングラデシュ
BD
バルバドス
BB
はい
ベラルーシ
BY
はい
ベルギー
BE
ベリーズ
BZ
はい
ベニン
BJ
はい
バミューダ
BM
はい
ブータン
BT
はい
ボリビア
BO
はい
ボスニアヘルツェゴビナ
BA
はい
ボツワナ
BW
はい
ブラジル
BR
ブルネイ
BN
はい
ブルガリア
BG
はい
ブルキナファソ
BF
はい
ブルンジ
BI
はい
カンボジア
KH
はい
カメルーン
CM
はい
カナダ
CA
カーボベルデ
CV
はい
ケイマン諸島
KY
はい
API Version 2010-03-31
145
Amazon Simple Notification Service 開発者ガイド
サポートされているリージョンおよび国
国
ISO コード
送信者 ID のサポート
中央アフリカ共和国
CF
はい
チャド
TD
はい
チリ
CL
中国
CN
コロンビア
CO
コモロ
KM
はい
クック諸島
CK
はい
コスタリカ
CR
クロアチア
HR
キプロス
CY
はい
チェコ共和国
CZ
はい
コンゴ民主共和国
CD
デンマーク
DK
はい
ジブチ
DJ
はい
ドミニカ
DM
はい
ドミニカ共和国
DO
東ティモール
TL
エクアドル
EC
エジプト
EG
エルサルバドル
SV
赤道ギニア
GQ
はい
エストニア
EE
はい
エチオピア
ET
フェロー諸島
FO
はい
フィジー
FJ
はい
フィンランド
FI
はい
フランス
FR
はい
フランス領ギアナ
GF
ガボン
GA
はい
ガンビア
GM
はい
ジョージア
GE
はい
API Version 2010-03-31
146
Amazon Simple Notification Service 開発者ガイド
サポートされているリージョンおよび国
国
ISO コード
送信者 ID のサポート
ドイツ
DE
はい
ガーナ
GH
ジブラルタル
GI
はい
ギリシャ
GR
はい
グリーンランド
GL
はい
グレナダ
GD
はい
グアドループ
GP
はい
グアム
GU
グアテマラ
GT
ギニア
GN
はい
ギニアビサウ
GW
はい
ガイアナ
GY
はい
ハイチ
HT
はい
ホンジュラス
HN
香港
香港
はい
ハンガリー
HU
アイスランド
IS
はい
インド
IN
インドネシア
ID
イラク
IQ
アイルランド
IE
はい
イスラエル
IL
はい
イタリア
IT
はい
コートジボワール
CI
ジャマイカ
JM
はい
日本
日本
ヨルダン
JO
はい
カザフスタン
KZ
ケニア
KE
キリバス
KI
クウェート
KW
API Version 2010-03-31
147
Amazon Simple Notification Service 開発者ガイド
サポートされているリージョンおよび国
国
ISO コード
送信者 ID のサポート
キルギスタン
KG
ラオス
LA
ラトビア
LV
はい
レバノン
LB
はい
レソト
LS
はい
リベリア
LR
はい
リビア
LY
はい
リヒテンシュタイン
LI
はい
リトアニア
LT
はい
ルクセンブルグ
LU
はい
中国 (マカオ特別自治区)
MO
はい
マケドニア
MK
はい
マダガスカル
MG
はい
マラウイ
MW
はい
マレーシア
MY
モルジブ
MV
はい
マリ
ML
マルタ
MT
はい
マルチニーク
MQ
はい
モーリタニア
MR
はい
モーリシャス
MU
はい
メキシコ
MX
モルドバ
MD
はい
モナコ
MC
モンゴル
MO
はい
モンテネグロ
ME
はい
モントセラト
MS
はい
モロッコ
MA
モザンビーク
MZ
ミャンマー
MM
ナミビア
NA
API Version 2010-03-31
148
Amazon Simple Notification Service 開発者ガイド
サポートされているリージョンおよび国
国
ISO コード
送信者 ID のサポート
ネパール
NP
オランダ
NL
はい
オランダ領アンティル
AN
はい
ニューカレドニア
NC
はい
ニュージーランド
NZ
ニカラグア
NI
ニジェール
NE
はい
ナイジェリア
NG
はい
ノルウェー
いいえ
はい
オマーン
OM
パキスタン
PK
パラオ
PW
パレスチナ
PS
はい
パナマ
PA
パプアニューギニア
PG
はい
パラグアイ
PY
はい
ペルー
PE
はい
フィリピン
PH
ポーランド
PL
はい
ポルトガル
PT
はい
プエルトリコ
PR
カタール
QA
コンゴ共和国
CG
レユニオン島
RE
はい
ルーマニア
RO
ロシア
RU
はい
ルワンダ
RW
はい
セントクリストファーネイビス
KN
セントルシア
LC
セントビンセントおよびグレナ
ディーン諸島
VC
サモア
WS
はい
API Version 2010-03-31
149
Amazon Simple Notification Service 開発者ガイド
サポートされているリージョンおよび国
国
ISO コード
送信者 ID のサポート
サントメプリンシペ
ST
はい
サウジアラビア
南米
セネガル
SN
はい
セルビア
RS
セイシェル
SC
はい
シエラレオネ
SL
はい
シンガポール
SG
はい
スロバキア
SK
はい
スロベニア
SI
はい
ソロモン諸島
SB
はい
ソマリア
SO
はい
南アフリカ
ZA
韓国
KR
南スーダン
SS
はい
スペイン
ES
はい
Sri Lanka
LK
スリナム
SR
はい
スワジランド
SZ
はい
スウェーデン
SE
はい
スイス
CH
はい
台湾
TW
タジキスタン
TJ
はい
タンザニア
TZ
はい
タイ
TH
トーゴ
TG
はい
トンガ
TO
はい
トリニダード・トバゴ
TT
はい
チュニジア
TN
トルコ
TR
トルクメニスタン
TM
はい
タークスおよびカイコス諸島
TC
はい
API Version 2010-03-31
150
Amazon Simple Notification Service 開発者ガイド
サポートされているリージョンおよび国
国
ISO コード
送信者 ID のサポート
ウガンダ
UG
はい
ウクライナ
UA
はい
アラブ首長国連邦
AE
英国
GB
はい
アメリカ合衆国
US
ウルグアイ
UY
ウズベキスタン
UZ
はい
バヌアツ
VU
はい
Venezuela
VE
ベトナム
VN
英領バージン諸島
VG
はい
米領バージン諸島
VI
イエメン
YE
はい
ザンビア
ZM
はい
ジンバブエ
ZW
はい
API Version 2010-03-31
151
Amazon Simple Notification Service 開発者ガイド
HTTP/HTTPS エンドポイントへの
Amazon SNS メッセージの送信
Amazon SNS を使用して、1 つ以上の HTTP または HTTPS エンドポイントに通知メッセージを送
信できます。エンドポイントをトピックに受信登録すると、トピックに通知を発行することができま
す。Amazon SNS は HTTP POST リクエストを送信し、通知の内容を受信登録したエンドポイントに
配信します。エンドポイントを受信登録する際は、Amazon SNS が POST リクエストをエンドポイン
トに送信するときに HTTP を使用するか HTTPS を使用するかを選択します。HTTPS を使用する場合
は、以下に対して Amazon SNS のサポートを利用できます。
• Server Name Indication(SNI) — これにより、Amazon SNS は複数のドメインをホストするため
に複数の証明書を必要とするサーバーなど、SNI を必要とする HTTPS エンドポイントをサポート
することができます。SNI の詳細については、http://ja.wikipedia.org/wiki/Server_Name_Indication
を参照してください。
• Basic and Digest Access Authentication — これにより、https://user:[email protected] や
https://[email protected] など、HTTP POST リクエストで HTTPS URL にユーザー名とパス
ワードを指定することができます。HTTPS を使用する場合、ユーザー名とパスワードは確立され
た SSL 接続で暗号化されます。ドメイン名のみがプレーンテキストで送信されます。Basic and
Digest Access Authentication の詳細については、http://www.rfc-editor.org/info/rfc2617 を参照してく
ださい。
リクエストには、JSON ドキュメントの通知に関するメタデータとともに、トピックに発行され
た件名とメッセージが含まれます。リクエストは以下の HTTP POST リクエストのようになりま
す。HTTP ヘッダーおよびリクエスト本文の JSON 形式の詳細については、「HTTP/HTTPS ヘッ
ダー (p. 201)」および「HTTP/HTTPS 通知の JSON 形式 (p. 204)」を参照してください。
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: da41e39f-ea4d-435a-b922-c6aae3915ebe
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:uswest-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
Content-Length: 761
Content-Type: text/plain; charset=UTF-8
Host: ec2-50-17-44-49.compute-1.amazonaws.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
API Version 2010-03-31
152
Amazon Simple Notification Service 開発者ガイド
ステップ 1: エンドポイントで Amazon SNS メッ
セージを処理する準備が完了していることを確認する
{
"Type" : "Notification",
"MessageId" : "da41e39f-ea4d-435a-b922-c6aae3915ebe",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "test",
"Message" : "test message",
"Timestamp" : "2012-04-25T21:49:25.719Z",
"SignatureVersion" : "1",
"Signature" :
"EXAMPLElDMXvB8r9R83tGoNn0ecwd5UjllzsvSvbItzfaMpN2nk5HVSw7XnOn/49IkxDKz8YrlH2qJXj2iZB0Zo2O7
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/
SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:uswest-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55"
}
Amazon SNS トピックが HTTP または HTTPS エンドポイントにメッセージを送信できるようにする
には、以下の手順に従います。
ステップ 1: エンドポイントで Amazon SNS メッセージを処理する準備が完了していることを確認す
る (p. 153)
ステップ 2: Amazon SNS トピックに HTTP/HTTPS エンドポイントを受信登録する (p. 156)
ステップ 3: 受信登録を確認する (p. 157)
ステップ 4: 受信登録の配信再試行ポリシーを設定する(オプション) (p. 157)
ステップ 5: トピックに発行するアクセス許可をユーザーに付与する(オプション) (p. 157)
ステップ 6: HTTP/HTTPS エンドポイントにメッセージを送信する (p. 159)
ステップ 1: エンドポイントで Amazon SNS メッ
セージを処理する準備が完了していることを確認
する
HTTP または HTTPS エンドポイントをトピックに受信登録する前には、Amazon SNS が受信登録
の確認および通知メッセージを送信するために使用する HTTP POST のリクエストを処理する能
力が HTTP または HTTPS エンドポイントにあることを確認する必要があります。通常、これは
Amazon SNS からの HTTP リクエストを処理するウェブアプリケーション(たとえば、エンドポイ
ントが Apache と Tomcat で Linux を実行している場合は Java servlet)の作成とデプロイを意味し
ます。HTTP エンドポイントを受信登録する場合、Amazon SNS は受信登録の確認リクエストを送信
します。受信登録を作成するときに、エンドポイントはこのリクエストを受信して処理する準備がで
きている必要があります。Amazon SNS はこの時点でこのリクエストを送信するためです。Amazon
SNS はユーザーが受信登録を確認するまでエンドポイントに通知を送信しません。Amazon SNS は、
受信登録を確認すると、受信登録したトピックで発行アクションが実行されたときにエンドポイント
に通知を送信します。
受信登録確認および通知メッセージを処理するようにエンドポイントを設定するには
1.
コードは、Amazon SNS がエンドポイントに送信する HTTP POST リクエストの HTTP ヘッダー
を読み取る必要があります。また、コードは Amazon SNS が送信したメッセージのタイプを示
API Version 2010-03-31
153
Amazon Simple Notification Service 開発者ガイド
ステップ 1: エンドポイントで Amazon SNS メッ
セージを処理する準備が完了していることを確認する
すヘッダーフィールド x-amz-sns-message-type を探す必要があります。ヘッダーを確認す
ると、HTTP リクエストの本文を解析することなく、メッセージタイプを判断できます。処理す
る必要がある 2 つのタイプ(SubscriptionConfirmation および Notification)がありま
す。UnsubscribeConfirmation メッセージは、受信登録がトピックから削除された場合のみ
使用されます。
HTTP ヘッダーの詳細については、「HTTP/HTTPS ヘッダー (p. 201)」を参照してください。
以下の HTTP POST のリクエストは受信登録の確認メッセージの例です。
POST / HTTP/1.1
x-amz-sns-message-type: SubscriptionConfirmation
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "SubscriptionConfirmation",
"MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b",
"Token" :
"2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb718
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Message" : "You have chosen to subscribe to the topic arn:aws:sns:uswest-2:123456789012:MyTopic.\nTo confirm the subscription, visit the
SubscribeURL included in this message.",
"SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?
Action=ConfirmSubscription&TopicArn=arn:aws:sns:uswest-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6
"Timestamp" : "2012-04-26T20:45:04.751Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEpH
+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDV
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/
SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem"
}
2.
コードは Amazon SNS メッセージを構成する名前と値のペアを読み取る HTTP POST リクエ
ストの本文で JSON ドキュメントを解析する必要があります。制御文字のエスケープ表現を
ASCII 文字値に戻す変換(\n を改行文字に変換するなど)を実行する JSON パーサーを使用し
ます。Jackson JSON プロセッサ(http://wiki.fasterxml.com/JacksonHome)などの既存の JSON
パーサーを使用するか、または独自のパーサーを使用できます。件名フィールドとメッセージ
フィールドで有効な JSON としてテキストを送信するためには、Amazon SNS は一部の制御文
字を、JSON ドキュメントに含めることができるエスケープ表現に変換する必要があります。エ
ンドポイントに送信される POST リクエストの本文で JSON ドキュメントを受信する場合で、ト
ピックに対して発行された元の件名およびメッセージとまったく同じ表現が必要なときは、エス
ケープした文字を元の文字値に戻す変換を実行する必要があります。これは、署名では署名する
文字列の一部としてメッセージと件名が元の形式で使用されるため、通知の署名を確認する場合
に重要です。
3.
Amazon SNS によって送信された通知、受信登録の確認、または受信登録解除の確認メッセージ
の信頼性を確認する必要があります。エンドポイントは、Amazon SNS メッセージに含まれてい
る情報を使用して署名を再作成し、署名を Amazon SNS がメッセージとともに送信した署名と照
合することで、メッセージの内容を確認できるようにします。メッセージの署名の確認の詳細に
ついては、「Amazon SNS メッセージの署名の確認 (p. 178)」を参照してください。
4.
コードは、ヘッダーフィールド x-amz-sns-message-type で指定したタイプに基づい
て、HTTP リクエストの本文に含まれている JSON ドキュメントを読み取り、メッセージを処理
API Version 2010-03-31
154
Amazon Simple Notification Service 開発者ガイド
ステップ 1: エンドポイントで Amazon SNS メッ
セージを処理する準備が完了していることを確認する
する必要があります。メッセージの 2 つの主要なタイプを処理するためのガイドラインを以下に
示します。
SubscriptionConfirmation
SubscribeURL の値を読み取り、その URL にアクセスします。受信登録を確認し、エンド
ポイントで通知の受信を開始するには、(URL に HTTP GET リクエストを送信するなどし
て)SubscribeURL URL にアクセスする必要があります。SubscribeURL の例について
は、前の手順の HTTP リクエストの例を参照してください。SubscriptionConfirmation
メッセージの形式の詳細については、「HTTP/HTTPS 受信登録の確認の JSON 形
式 (p. 202)」を参照してください。URL にアクセスすると、以下の XML ドキュメントのよ
うな応答があります。ドキュメントは、ConfirmSubscriptionResult 要素内でエンドポ
イントの受信登録 ARN を返します。
<ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/
doc/2010-03-31/">
<ConfirmSubscriptionResult>
<SubscriptionArn>arn:aws:sns:uswest-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55</
SubscriptionArn>
</ConfirmSubscriptionResult>
<ResponseMetadata>
<RequestId>075ecce8-8dac-11e1-bf80-f781d96e9307</RequestId>
</ResponseMetadata>
</ConfirmSubscriptionResponse>
SubscribeURL にアクセスする代わりに、ConfirmSubscription アクションを
SubscriptionConfirmation メッセージの対応する値に設定した Token とともに使って
受信登録を確認できます。トピックの所有者と受信登録の所有者がエンドポイントの受信登
録を解除できるようにするには、AWS 署名とともに ConfirmSubscription アクションを
呼び出します。
通知
Subject および Message の値を読み取り、トピックに発行された通知情報を取得します。
Notification メッセージの形式の詳細については、「HTTP/HTTPS ヘッダー (p. 201)」
を参照してください。以下の HTTP POST リクエストは、エンドポイント example.com に送
信される通知メッセージの例です。
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:uswest-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96
Content-Length: 773
Content-Type: text/plain; charset=UTF-8
Host: example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "Notification",
"MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "My First Message",
"Message" : "Hello world!",
"Timestamp" : "2012-05-02T00:54:06.655Z",
"SignatureVersion" : "1",
API Version 2010-03-31
155
Amazon Simple Notification Service 開発者ガイド
ステップ 2: Amazon SNS トピックに HTTP/
HTTPS エンドポイントを受信登録する
"Signature" :
"EXAMPLEw6JRNwm1LFQL4ICB0bnXrdB8ClRMTQFGBqwLpGbM78tJ4etTwC5zU7O3tS6tGpey3ejedNdOJ
+1fkIp9F2/LmNVKb5aFlYq+9rk9ZiPph5YlLmWsDcyC5T+Sy9/
umic5S0UQc2PEtgdpVBahwNOdMW4JPwk0kAJJztnc=",
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/
SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:uswest-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"
}
5.
エンドポイントが Amazon SNS からの HTTP POST メッセージに適切なステータスコードで応
答することを確認します。接続は 15 秒でタイムアウトします。エンドポイントが、接続がタイ
ムアウトする前に応答しないか、200~4xx の範囲外のステータスコードを返す場合、Amazon
SNS はメッセージの配信を失敗と見なします。
6.
コードが Amazon SNS からのメッセージ配信の再試行を処理できることを確認します。Amazon
SNS は、エンドポイントから正常な応答を受け取らない場合、そのメッセージの配信をもう一
度試みます。これは受信登録の確認メッセージを含むすべてのメッセージに適用されます。デ
フォルトでは、メッセージの最初の配信が失敗した場合、Amazon SNS は試行の失敗の間隔と
して 20 秒に設定された遅延時間で、最大 3 回再試行を試みます。メッセージのリクエストは 15
秒でタイムアウトします。つまり、メッセージ配信の失敗がタイムアウトによって発生した場
合、Amazon SNS は前回の配信の試みから約 35 秒後に再試行します。デフォルトの配信ポリ
シーが適切でない場合は、エンドポイントで別の配信ポリシーを設定できます。
わかりやすく言うと、Amazon SNS は、配信の試行が失敗して初めて再試行を試みます。 xamz-sns-message-id ヘッダーフィールドを使用してメッセージを識別できます。受信メッ
セージとともに処理したメッセージ ID を比較することで、メッセージが再試行であるかどうかを
判断することができます。
7.
HTTPS エンドポイントを受信登録する場合、エンドポイントに、信頼できる認証機関(CA)か
らのサーバー証明書があることを確認します。Amazon SNS は、Amazon SNS で信頼された CA
によって署名済みのサーバー証明書がある HTTPS エンドポイントのみにメッセージを送信しま
す。信頼された CA のリストについては、「HTTPS エンドポイントについて Amazon SNS で認
識される証明機関(CA) (p. 165)」を参照してください。
8.
Amazon SNS メッセージを受信するために作成したコードをデプロイします。エンドポイントを
受信登録するときに、エンドポイントは少なくとも受信登録の確認メッセージを受信する準備が
できている必要があります。
ステップ 2: Amazon SNS トピックに HTTP/
HTTPS エンドポイントを受信登録する
トピックを通じて HTTP または HTTPS エンドポイントにメッセージを送信するには、エンドポイン
トを Amazon SNS トピックに受信登録する必要があります。エンドポイントを指定するには、その
URL を使用します。トピックにサブスクライブするには、Amazon SNS コンソール、sns-subscribe
コマンド、または Subscribe API アクションを使用できます。開始する前に、受信登録するエンドポ
イントの URL があり、ステップ 1 で説明したように、エンドポイントで確認メッセージや通知メッ
セージを受信する準備ができていることを確認します。
Amazon SNS コンソールを使って HTTP または HTTPS エンドポイントをトピックに受信登
録するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
左のナビゲーションペインで、[Topics] をクリックし、トピックを選択します。
3.
[Other actions] ドロップダウンリストをクリックし、[Subscribe to topic] を選択します。
API Version 2010-03-31
156
Amazon Simple Notification Service 開発者ガイド
ステップ 3: 受信登録を確認する
4.
[Protocol] ドロップダウンリストで [HTTP] または [HTTPS] を選択します。
5.
[Endpoint] ボックスで、メッセージの送信先となるトピックのエンドポイントの URL を貼り付
け、[Create subscription] をクリックします。
6.
[Subscription request received!] というメッセージで、[Close] をクリックします。
新しい受信登録の [Subscription ID] に、PendingConfirmation と表示されます。受信登録を確認す
ると、[Subscription ID] に受信登録 ID が表示されます。
ステップ 3: 受信登録を確認する
エンドポイントを受信登録すると、Amazon SNS はエンドポイントに受信登録の確認メッセージを送
信します。ステップ 1 (p. 153) で説明しているアクションを実行するコードは、すでにエンドポイ
ントにデプロイしています。具体的には、エンドポイントのコードは、受信登録の確認メッセージか
ら SubscribeURL 値を取得し、SubscribeURL そのもので指定された場所にアクセスするか、この
場所を利用可能にして、ユーザーがウェブブラウザを使用するなどして手動で SubscribeURL にアク
セスできるようにする必要があります。Amazon SNS は、受信登録が確認されるまでエンドポイント
にメッセージを送信しません。SubscribeURL にアクセスすると、応答には受信登録のための ARN
を指定する SubscriptionArn 要素を含む XML ドキュメントが含まれます。Amazon SNS コンソー
ルを使用して、受信登録が確認されたことを検証できます。[Subscription ID] には、最初に受信登録
を追加したときに表示された PendingConfirmation 値の代わりに、受信登録の ARN が表示されま
す。
ステップ 4: 受信登録の配信再試行ポリシーを設
定する(オプション)
デフォルトでは、メッセージの最初の配信が失敗した場合、Amazon SNS は試行の失敗の間隔として
20 秒に設定された遅延時間で、最大 3 回再試行を試みます。ステップ 1 (p. 153) で説明しているよ
うに、エンドポイントには再試行されたメッセージを処理できるコードが必要です。トピックまたは
受信登録で配信ポリシーを設定することで、Amazon SNS が失敗したメッセージを再試行する頻度と
間隔をコントロールできます。トピックまたは特定の受信登録で配信ポリシーを設定できます。
ステップ 5: トピックに発行するアクセス許可を
ユーザーに付与する(オプション)
デフォルトでは、トピックの所有者にはトピックを発行するアクセス許可があります。その他の
ユーザーやアプリケーションがトピックに発行できるようにするには、AWS Identity and Access
Management(IAM)を使ってトピックへの発行許可を付与する必要があります。Amazon SNS アク
ションのアクセス許可の IAM ユーザーへの付与の詳細については、「AWS アカウントへのユーザー
アクセスのコントロール」を参照してください。
トピックへのアクセスは、以下の 2 つの方法でコントロールできます。
• IAM ユーザーまたはグループにポリシーを追加する。トピックへのアクセス許可をユーザーに付与
する最も簡単な方法では、グループを作成し、適切なポリシーをグループに追加して、そのグルー
プにユーザーを追加します。個々のユーザーに設定するポリシーを継続的に追跡するよりも、グ
ループに対してユーザーを追加または削除する方がはるかに簡単です。
• トピックにポリシーを追加する。別の AWS アカウントにトピックへのアクセス許可を追加する場
合、そのプリンシパルとして、アクセス許可を付与する AWS アカウントを持っているポリシーを
追加することが唯一の方法です。
API Version 2010-03-31
157
Amazon Simple Notification Service 開発者ガイド
ステップ 5: トピックに発行するアクセス
許可をユーザーに付与する(オプション)
ほとんどの場合は、最初の方法(ポリシーをグループに適用し、適切なユーザーをグループに追加ま
たは削除することでアクセス許可を管理する)を使用します。別のアカウントのユーザーにアクセス
許可を付与する必要がある場合は、2 番目の方法を使用します。
IAM ユーザーまたはグループに次のポリシーを追加した場合、そのユーザーまたはそのグループのメ
ンバーに、MyTopic トピックで sns:Publish アクションを実行する許可が付与されます。
{
"Version":"2012-10-17",
"Statement":[{
"Sid":"AllowPublishToMyTopic",
"Effect":"Allow",
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic"
}
]
}
以下の例のポリシーでは、トピックへのアクセス許可を別のアカウントに付与する方法を示していま
す。
Note
別の AWS アカウントにアカウントのリソースへのアクセス許可を付与する場合、管理レベル
のアクセス(ワイルドカードアクセス)の権限を持っている IAM ユーザーにも、そのリソー
スへのアクセス許可が付与されます。他の IAM アカウントの他のすべてのユーザーは、自動
的にリソースへのアクセスが拒否されます。その AWS アカウントの特定の IAM ユーザーに
リソースへのアクセス許可を付与する場合、管理レベルアクセスの権限を持っているアカウ
ントまたは IAM ユーザーは、そのリソースのアクセス許可をそれらの IAM ユーザーに委任
する必要があります。クロスアカウントの委任の詳細については、『IAM の使用ガイド』の
「クロスアカウントアクセスの有効化」を参照してください。
アカウント 123456789012 の MyTopic トピックに次のポリシーを追加した場合、そのトピックで
sns:Publish アクションを実行するアクセス許可をアカウント111122223333 に付与したことにな
ります。
{
"Version":"2012-10-17",
"Id":"MyTopicPolicy",
"Statement":[{
"Sid":"Allow-publish-to-topic",
"Effect":"Allow",
"Principal":{
"AWS":"111122223333"
},
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic"
}
]
}
API Version 2010-03-31
158
Amazon Simple Notification Service 開発者ガイド
ステップ 6: HTTP/HTTPS エンド
ポイントにメッセージを送信する
ステップ 6: HTTP/HTTPS エンドポイントにメッ
セージを送信する
トピックに発行することで、トピックの受信登録にメッセージを送信できます。トピックに発行する
には、Amazon SNS コンソール、sns-publish コマンド、または Publish API を 使用できます。
ステップ 1 (p. 153) を実行した場合、エンドポイントでデプロイしたコードで通知を処理できま
す。
Amazon SNS コンソールを使用してトピックに発行するには
1.
トピックに発行するアクセス許可を持っている AWS アカウントまたは IAM ユーザーの認証情報
を使用して、AWS マネジメントコンソール にサインインし、Amazon SNS コンソール(https://
console.aws.amazon.com/sns/)を開きます。
2.
左のナビゲーションペインで、[Topics] をクリックし、トピックを選択します。
3.
[Publish to topic] ボタンをクリックします。
4.
[Subject] ボックスに件名(たとえば、「###############」)を入力します。
5.
[Message] ボックスに任意のテキスト(たとえば、「Hello world!」)を入力して、[Publish
message] をクリックします。
「Your message has been successfully published.」というメッセージが表示されます。
HTTP/HTTPS エンドポイントに対する Amazon
SNS 配信再試行ポリシーの設定
トピック
• トピックおよび受信登録への配信ポリシーの適用 (p. 161)
• 最大受信レートの設定 (p. 162)
• 即時の再試行段階 (p. 163)
• バックオフ前段階 (p. 163)
• バックオフ段階 (p. 164)
• バックオフ後段階 (p. 164)
HTTP/HTTPS エンドポイントへの Amazon SNS の配信が成功するためには、複数回の試行が必要と
なる場合があります。これが発生するのは、たとえば受信登録したエンドポイントがメンテナンスの
ためにダウンしている場合や、トラフィックが混雑している場合です。最初の配信の試行で受信者か
らの正常な応答がない場合、Amazon SNS はそのメッセージの配信をもう一度試みます。そのような
試みを再試行と呼びます。つまり、再試行は最初に配信を試みた後に発生する配信の試みです。
Amazon SNS は配信の試行が失敗した後でのみ、再試行を試みます。Amazon SNS では、次の状況が
配信の試行の失敗と見なされます。
• 500~599 の範囲の HTTP ステータス。
• 200~599 の範囲外の HTTP ステータス。
• リクエストのタイムアウト(15 秒)。リクエストのタイムアウトが発生した場合は、次の再試行が
タイムアウトの後に指定された間隔で発生します。たとえば、再試行間隔が 20 秒で、リクエスト
がタイムアウトした場合、次のリクエストの開始はタイムアウトしたリクエストの開始から 35 秒
後になります。
API Version 2010-03-31
159
Amazon Simple Notification Service 開発者ガイド
HTTP/HTTPS エンドポイントに対する
Amazon SNS 配信再試行ポリシーの設定
• 接続タイムアウト、エンドポイントの到達不可能、不適切な SSL 証明書などの接続エラー。
配信ポリシーを使用すると、再試行の合計数をコントロールできるだけでなく、再試行の間の遅延時
間もコントロールできます。4 つの個別の段階において、最大 100 回の再試行を指定できます。シス
テムのメッセージの最大有効期間は 1 時間です。この 1 時間の制限は、配信ポリシーで延長すること
はできません。
1. 即時の再試行段階 (p. 163)—この段階は遅延なしの段階とも呼ばれ、最初の配信の試行の直後に
発生します。[Retries with no delay] に設定する値により、最初の配信の試行直後の再試行回数が決
まります。この段階では再試行間の遅延時間はありません。
2. バックオフ前段階 (p. 163)—バックオフ前段階が、即時の再試行段階に続きます。バックオフ関
数が再試行に適用される前に発生する一連の再試行を作成するには、この段階を使用します。バッ
クオフ前段階の再試行回数を指定するには、[Minimum delay retries] を使用します。この段階での
再試行の間の遅延時間をコントロールするには、[Minimum delay] 設定を使用します。
3. バックオフ段階 (p. 164)—再試行バックオフ関数を使用してこの段階の再試行の間の遅延時間
をコントロールできるため、この段階はバックオフ段階と呼ばれます。[Minimum delay] および
[Maximum delay] を設定し、[Retry backoff function] を選択して、最小遅延時間から最大遅延時間ま
で遅延時間を増やす間隔を定義します。
4. バックオフ後段階 (p. 164)—バックオフ段階の後にバックオフ後段階が続きます。バックオフ後
段階の再試行回数を指定するには、[Maximum delay retries] 設定を使用します。この段階の再試行
の間の遅延時間をコントロールするには、[Maximum delay] 設定を使用します。
バックオフ段階は、最もよく使用される段階です。配信ポリシーが設定されていない場合、デフォ
ルトでは、バックオフ段階で 3 回再試行が行われ、再試行の間の遅延時間は 20 秒になります。
[Minimum delay] と [Maximum delay] の両方のデフォルト値は 20 です。デフォルトの再試行回数は 3
です。したがって、デフォルトの再試行ポリシーでは 20 秒の再試行の遅延時間で合計 3 回再試行が
行われます。次の図は、それぞれの再試行に関連する遅延時間を示しています。
API Version 2010-03-31
160
Amazon Simple Notification Service 開発者ガイド
トピックおよび受信登録への配信ポリシーの適用
再試行バックオフ関数による再試行の間の遅延時間への影響を確認するには、最大遅延時間を 40 秒
に設定し、残りの設定をデフォルト値のままにします。この変更により、配信ポリシーではバックオ
フ段階中に 3 回の再試行、20 秒の最小遅延時間、および 40 秒の最大遅延時間が指定されます。デ
フォルトのバックオフ関数は線形なので、メッセージ間の遅延はバックオフ段階中に一定の割合で増
加します。Amazon SNS は 20 秒後に最初の再試行、30 秒後に 2 回目の再試行、40 秒後に最後の再
試行を試みます。次の図は、それぞれの再試行に関連する遅延時間を示しています。
システムのメッセージの最大有効期間は 1 時間です。この 1 時間の制限は、配信ポリシーで延長する
ことはできません。
Note
HTTP および HTTPS の受信登録タイプのみが配信ポリシーでサポートされていま
す。Amazon SNS の他の受信登録タイプ(E メール、Amazon SQS、SMS など)のサポート
は現在行われていません。
トピックおよび受信登録への配信ポリシーの適用
Amazon SNS トピックに配信ポリシーを適用できます。トピックに配信ポリシーを設定する場合、ポ
リシーはトピックのすべての受信登録に適用されます。次の図は、トピックに関連付けられた 3 つす
べての受信登録に適用する配信ポリシーを持つトピックを示しています。
個々の受信登録に配信ポリシーを適用することもできます。受信登録に配信ポリシーを割り当てる
と、受信登録レベルのポリシーがトピックレベルの配信ポリシーよりも優先されます。次の図では、1
API Version 2010-03-31
161
Amazon Simple Notification Service 開発者ガイド
最大受信レートの設定
つの受信登録に受信登録レベルの配信ポリシーがあり、他の 2 つの受信登録にはこのポリシーがあり
ません。
場合によっては、すべての受信登録配信ポリシーを無視し、受信登録で独自の配信ポリシーを設定し
ていても、トピックの配信ポリシーがすべての受信登録に適用されるようにしたいことがあります。
すべての受信登録にトピックの配信ポリシーを適用するように Amazon SNS を設定するには、[View/
Edit Topic Delivery Policies] ダイアログボックスの [Ignore subscription override] をクリックします。
次の図は、受信登録レベルのポリシーが明示的に無視されているため、受信登録に独自の受信登録配
信ポリシーがあっても、すべての受信登録に適用されるトピックレベルの配信ポリシーを示していま
す。
最大受信レートの設定
受信登録したエンドポイントに Amazon SNS が 1 秒あたりに送信するメッセージの最大数を設定す
るには、[Maximum receive rate] 設定を指定します。Amazon SNS は、配信を待機しているメッセー
ジを 1 時間保持します。1 時間以上保持されたメッセージは破棄されます。
• トピックのすべての受信登録に適用される最大受信レートを設定するには、[Edit Topic Delivery
Policy] ダイアログボックスを使ってトピックレベルで設定を適用します。詳細については、「ト
ピックの最大受信レートを設定するには (p. 162)」を参照してください。
• 特定の受信登録に適用される最大受信レートを設定するには、[Edit Subscription Delivery Policy] ダ
イアログボックスを使って受信登録レベルで設定を適用します。詳細については、「受信登録の最
大受信レートを設定するには (p. 163)」を参照してください。
トピックの最大受信レートを設定するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
API Version 2010-03-31
162
Amazon Simple Notification Service 開発者ガイド
即時の再試行段階
2.
左のナビゲーションペインで、[Topics] をクリックし、トピックを選択します。
3.
[Other actions] ドロップダウンリストをクリックし、[Edit topic delivery policy] を選択します。
4.
[Maximum receive rate] ボックスに整数値(2 など)を入力します。
5.
[Update policy] をクリックして変更を保存します。
受信登録の最大受信レートを設定するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
左のナビゲーションペインで、[Topics] をクリックし、トピックの ARN を選択します。
3.
[Topic Details] ペインで受信登録を選択し、[Edit topic delivery policy] をクリックします。
4.
[Maximum receive rate] ボックスに整数値(2 など)を入力します。
5.
[Update policy] をクリックして変更を保存します。
即時の再試行段階
即時の再試行段階は最初の配信の試行の直後に実行されます。この段階は、再試行の間の遅延時間な
しで発生するため、遅延なしの段階とも呼ばれます。この段階での再試行のデフォルトの回数は 0 で
す。
即時の再試行の段階の再試行回数を設定するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
左のナビゲーションペインで、[Topics] をクリックし、トピックの ARN を選択します。
3.
[Topic Details] ペインで、[Other topic actions] ドロップダウンリストから [Edit topic delivery
policy] を選択します。
4.
[Retries with no delay] ボックスに整数値を入力します。
5.
[Update policy] をクリックして変更を保存します。
バックオフ前段階
バックオフ前段階が、即時の再試行段階に続きます。バックオフ関数が再試行の間の遅延時間に影響
する前に発生する 1 つ以上の再試行を作成する場合は、この段階を使用します。この段階では、再試
行の間の時間は一定で、[Minimum delay] で選択する設定と同じです。[Minimum delay] 設定は 2 つの
段階の再試行に影響します。バックオフ前段階のすべての再試行に適用されるとともに、バックオフ
段階の再試行の最初の遅延時間となります。この段階での再試行のデフォルトの回数は 0 です。
バックオフ前段階の再試行の数を設定するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
左のナビゲーションペインで、[Topics] をクリックし、トピックの ARN を選択します。
3.
[Topic Details] ペインで、[Other topic actions] ドロップダウンリストから [Edit topic delivery
policy] を選択します。
4.
[Minimum delay retries] ボックスに整数値を入力します。
5.
この段階のメッセージ間の遅延時間を設定するには、[Minimum delay] ボックスに整数値を入力し
ます。
設定する値は、[Maximum delay] に設定する値以下である必要があります。
6.
[Update policy] をクリックして変更を保存します。
API Version 2010-03-31
163
Amazon Simple Notification Service 開発者ガイド
バックオフ段階
バックオフ段階
バックオフ段階は、デフォルトで適用される唯一の段階です。[Number of retries] を使用して、バック
オフ段階での再試行回数をコントロールできます。
Important
[Number of retries] で選択する値は、[Retries with no delay]、[Minimum delay retries]、および
[Maximum delay retries] で設定する再試行を含めて、再試行の合計回数を表します。
バックオフ段階の再試行の頻度は、3 つのパラメータでコントロールできます。
• Minimum delay-最小遅延時間は、バックオフ段階の最初の再試行に関連する遅延時間を定義しま
す。
• Maximum delay-最大遅延時間は、バックオフ段階の最後の再試行に関連する遅延時間を定義しま
す。
• Retry backoff function-再試行のバックオフ関数は、バックオフ段階の最初の再試行と最後の再試行
の間のすべての再試行に関連する遅延時間を計算するために Amazon SNS で使用されるアルゴリズ
ムを定義します。
4 つの再試行バックオフ関数から選択できます。
• 線形
• 算術
• 幾何学的
• 指数的
次の画面ショットは、各バックオフ関数がバックオフ期間中にメッセージに関連する遅延時間にどの
ように影響するかを示しています。縦軸は、10 回ごとの再試行に関連する遅延時間を秒単位で表しま
す。横軸は再試行回数を表します。最小遅延時間は 5 秒で、最大遅延時間は 260 秒です。
バックオフ後段階
バックオフ後段階は最後の段階です。バックオフ関数が再試行の間の遅延時間に影響した後で発生す
る 1 つ以上の再試行を作成する場合は、この段階を使用します。この段階では、再試行間の時間は一
定で、[Maximum delay] で選択する設定と同じです。[Maximum delay] 設定は 2 つの段階の再試行に
API Version 2010-03-31
164
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
影響します。バックオフ後段階のすべての再試行に適用されるとともに、バックオフ段階の再試行の
最後の遅延時間となります。この段階での再試行のデフォルトの回数は 0 です。
バックオフ後段階の再試行回数を設定するには
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
左のナビゲーションペインで、[Topics] をクリックし、トピックの ARN を選択します。
3.
[Topic Details] ペインで、[Other topic actions] ドロップダウンリストから [Edit topic delivery
policy] を選択します。
4.
[Maximum delay retries] ボックスに整数値を入力します。
5.
この段階のメッセージ間の遅延時間を設定するには、[Maximum delay] ボックスに値を入力しま
す。
設定する値は、[Minimum delay] に設定する値以上である必要があります。
6.
[Update policy] をクリックして変更を保存します。
HTTPS エンドポイントについて Amazon SNS で
認識される証明機関(CA)
トピックに HTTPS エンドポイントを受信登録した場合、そのエンドポイントには、信頼できる認証
機関(CA)によって署名されたサーバー証明書が必要です。Amazon SNS は Amazon SNS が認識
できる信頼された CA からの署名証明書を持つ HTTPS エンドポイントにのみメッセージを配信しま
す。Amazon SNS は以下の CA を認識します。
mozillacert81.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E
mozillacert99.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
F1:7F:6F:B6:31:DC:99:E3:A3:C8:7F:FE:1C:F1:81:10:88:D9:60:33
swisssignplatinumg2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66
mozillacert145.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
10:1D:FA:3F:D5:0B:CB:BB:9B:B5:60:0C:19:55:A4:1A:F4:73:3A:04
mozillacert37.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B1:2E:13:63:45:86:A4:6F:1A:B2:60:68:37:58:2D:C4:AC:FD:94:97
mozillacert4.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E3:92:51:2F:0A:CF:F5:05:DF:F6:DE:06:7F:75:37:E1:65:EA:57:4B
amzninternalitseccag2, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
FA:07:FA:A6:35:D0:BC:98:72:3D:B3:08:8A:CD:CD:CD:3E:23:F9:ED
mozillacert70.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C
mozillacert88.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
FE:45:65:9B:79:03:5B:98:A1:61:B5:51:2E:AC:DA:58:09:48:22:4D
mozillacert134.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
70:17:9B:86:8C:00:A4:FA:60:91:52:22:3F:9F:3E:32:BD:E0:05:62
API Version 2010-03-31
165
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
mozillacert26.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
87:82:C6:C3:04:35:3B:CF:D2:96:92:D2:59:3E:7D:44:D9:34:FF:11
verisignclass2g2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9D
mozillacert77.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6
mozillacert123.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
2A:B6:28:48:5E:78:FB:F3:AD:9E:79:10:DD:6B:DF:99:72:2C:96:E5
utndatacorpsgcca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
58:11:9F:0E:12:82:87:EA:50:FD:D9:87:45:6F:4F:78:DC:FA:D6:D4
mozillacert15.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
74:20:74:41:72:9C:DD:92:EC:79:31:D8:23:10:8D:C2:81:92:E2:BB
digicertglobalrootca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36
mozillacert66.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
DD:E1:D2:A9:01:80:2E:1D:87:5E:84:B3:80:7E:4B:B1:FD:99:41:34
mozillacert112.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
43:13:BB:96:F1:D5:86:9B:C1:4E:6A:92:F6:CF:F6:34:69:87:82:37
utnuserfirstclientauthemailca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B1:72:B1:A5:6D:95:F9:1F:E5:02:87:E1:4D:37:EA:6A:44:63:76:8A
verisignc2g1.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
67:82:AA:E0:ED:EE:E2:1A:58:39:D3:C0:CD:14:68:0A:4F:60:14:2A
mozillacert55.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
AA:DB:BC:22:23:8F:C4:01:A1:27:BB:38:DD:F4:1D:DB:08:9E:F0:12
mozillacert101.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
99:A6:9B:E6:1A:FE:88:6B:4D:2B:82:00:7C:B8:54:FC:31:7E:15:39
mozillacert119.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
75:E0:AB:B6:13:85:12:27:1C:04:F8:5F:DD:DE:38:E4:B7:24:2E:FE
verisignc3g1.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A1:DB:63:93:91:6F:17:E4:18:55:09:40:04:15:C7:02:40:B0:AE:6B
mozillacert44.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
5F:43:E5:B1:BF:F8:78:8C:AC:1C:C7:CA:4A:9A:C6:22:2B:CC:34:C6
mozillacert108.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9C
mozillacert95.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
DA:FA:F7:FA:66:84:EC:06:8F:14:50:BD:C7:C2:81:A5:BC:A9:64:57
keynectisrootca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
9C:61:5C:4D:4D:85:10:3A:53:26:C2:4D:BA:EA:E4:A2:D2:D5:CC:97
mozillacert141.pem, Apr 22, 2014, trustedCertEntry,
API Version 2010-03-31
166
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
Certificate fingerprint (SHA1):
31:7A:2A:D0:7F:2B:33:5E:F5:A1:C3:4E:4B:57:E8:B7:D8:F1:FC:A6
equifaxsecureglobalebusinessca1, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45
baltimorecodesigningca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
30:46:D8:C8:88:FF:69:30:C3:4A:FC:CD:49:27:08:7C:60:56:7B:0D
mozillacert33.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
FE:B8:C4:32:DC:F9:76:9A:CE:AE:3D:D8:90:8F:FD:28:86:65:64:7D
mozillacert0.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
97:81:79:50:D8:1C:96:70:CC:34:D8:09:CF:79:44:31:36:7E:F4:74
mozillacert84.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D3:C0:63:F2:19:ED:07:3E:34:AD:5D:75:0B:32:76:29:FF:D5:9A:F2
mozillacert130.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E5:DF:74:3C:B6:01:C4:9B:98:43:DC:AB:8C:E8:6A:81:10:9F:E4:8E
mozillacert148.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
04:83:ED:33:99:AC:36:08:05:87:22:ED:BC:5E:46:00:E3:BE:F9:D7
mozillacert22.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
32:3C:11:8E:1B:F7:B8:B6:52:54:E2:E2:10:0D:D6:02:90:37:F0:96
verisignc1g1.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
90:AE:A2:69:85:FF:14:80:4C:43:49:52:EC:E9:60:84:77:AF:55:6F
mozillacert7.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A
mozillacert73.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B5:1C:06:7C:EE:2B:0C:3D:F8:55:AB:2D:92:F4:FE:39:D4:E7:0F:0E
mozillacert137.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
4A:65:D5:F4:1D:EF:39:B8:B8:90:4A:4A:D3:64:81:33:CF:C7:A1:D1
swisssignsilverg2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB
mozillacert11.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
05:63:B8:63:0D:62:D7:5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43
mozillacert29.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
74:F8:A3:C3:EF:E7:B3:90:06:4B:83:90:3C:21:64:60:20:E5:DF:CE
mozillacert62.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A1:DB:63:93:91:6F:17:E4:18:55:09:40:04:15:C7:02:40:B0:AE:6B
mozillacert126.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
25:01:90:19:CF:FB:D9:99:1C:B7:68:25:74:8D:94:5F:30:93:95:42
soneraclass1ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
07:47:22:01:99:CE:74:B9:7C:B0:3D:79:B2:64:A2:C8:55:E9:33:FF
mozillacert18.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
79:98:A3:08:E1:4D:65:85:E6:C2:1E:15:3A:71:9F:BA:5A:D3:4A:D9
API Version 2010-03-31
167
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
mozillacert51.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
FA:B7:EE:36:97:26:62:FB:2D:B0:2A:F6:BF:03:FD:E8:7C:4B:2F:9B
mozillacert69.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
2F:78:3D:25:52:18:A7:4A:65:39:71:B5:2C:A2:9C:45:15:6F:E9:19
mozillacert115.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9
verisignclass3g5ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
4E:B6:D5:78:49:9B:1C:CF:5F:58:1E:AD:56:BE:3D:9B:67:44:A5:E5
utnuserfirsthardwareca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
04:83:ED:33:99:AC:36:08:05:87:22:ED:BC:5E:46:00:E3:BE:F9:D7
addtrustqualifiedca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
4D:23:78:EC:91:95:39:B5:00:7F:75:8F:03:3B:21:1E:C5:4D:8B:CF
mozillacert40.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5
mozillacert58.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
8D:17:84:D5:37:F3:03:7D:EC:70:FE:57:8B:51:9A:99:E6:10:D7:B0
verisignclass3g3ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6
mozillacert104.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
4F:99:AA:93:FB:2B:D1:37:26:A1:99:4A:CE:7F:F0:05:F2:93:5D:1E
mozillacert91.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
3B:C0:38:0B:33:C3:F6:A6:0C:86:15:22:93:D9:DF:F5:4B:81:C0:04
thawtepersonalfreemailca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E6:18:83:AE:84:CA:C1:C1:CD:52:AD:E8:E9:25:2B:45:A6:4F:B7:E2
certplusclass3pprimaryca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
21:6B:2A:29:E6:2A:00:CE:82:01:46:D8:24:41:41:B9:25:11:B2:79
verisignc3g4.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3A
swisssigngoldg2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61
mozillacert47.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
1B:4B:39:61:26:27:6B:64:91:A2:68:6D:D7:02:43:21:2D:1F:1D:96
mozillacert80.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B8:23:6B:00:2F:1D:16:86:53:01:55:6C:11:A4:37:CA:EB:FF:C3:BB
mozillacert98.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
C9:A8:B9:E7:55:80:5E:58:E3:53:77:A7:25:EB:AF:C3:7B:27:CC:D7
mozillacert144.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
37:F7:6D:E6:07:7C:90:C5:B1:3E:93:1A:B7:41:10:B4:F2:E4:9A:27
starfieldclass2ca, Apr 22, 2014, trustedCertEntry,
API Version 2010-03-31
168
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
Certificate fingerprint (SHA1):
AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A
mozillacert36.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
23:88:C9:D3:71:CC:9E:96:3D:FF:7D:3C:A7:CE:FC:D6:25:EC:19:0D
mozillacert3.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
87:9F:4B:EE:05:DF:98:58:3B:E3:60:D6:33:E7:0D:3F:FE:98:71:AF
globalsignr2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
75:E0:AB:B6:13:85:12:27:1C:04:F8:5F:DD:DE:38:E4:B7:24:2E:FE
mozillacert87.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74
mozillacert133.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
85:B5:FF:67:9B:0C:79:96:1F:C8:6E:44:22:00:46:13:DB:17:92:84
mozillacert25.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
4E:B6:D5:78:49:9B:1C:CF:5F:58:1E:AD:56:BE:3D:9B:67:44:A5:E5
verisignclass1g2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
27:3E:E1:24:57:FD:C4:F9:0C:55:E8:2B:56:16:7F:62:F5:32:E5:47
mozillacert76.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
F9:B5:B6:32:45:5F:9C:BE:EC:57:5F:80:DC:E9:6E:2C:C7:B2:78:B7
mozillacert122.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
02:FA:F3:E2:91:43:54:68:60:78:57:69:4D:F5:E4:5B:68:85:18:68
godaddysecurecertificationauthority, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
7C:46:56:C3:06:1F:7F:4C:0D:67:B3:19:A8:55:F6:0E:BC:11:FC:44
mozillacert14.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25
equifaxsecureca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A
mozillacert65.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
69:BD:8C:F4:9C:D3:00:FB:59:2E:17:93:CA:55:6A:F3:EC:AA:35:FB
mozillacert111.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
9C:BB:48:53:F6:A4:F6:D3:52:A4:E8:32:52:55:60:13:F5:AD:AF:65
certumtrustednetworkca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E
mozillacert129.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E6:21:F3:35:43:79:05:9A:4B:68:30:9D:8A:2F:74:22:15:87:EC:79
mozillacert54.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
03:9E:ED:B8:0B:E7:A0:3C:69:53:89:3B:20:D2:D9:32:3A:4C:2A:FD
mozillacert100.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
58:E8:AB:B0:36:15:33:FB:80:F7:9B:1B:6D:29:D3:FF:8D:5F:00:F0
mozillacert118.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45
API Version 2010-03-31
169
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
mozillacert151.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
AC:ED:5F:65:53:FD:25:CE:01:5F:1F:7A:48:3B:6A:74:9F:61:78:C6
thawteprimaryrootcag3, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
F1:8B:53:8D:1B:E9:03:B6:A6:F0:56:43:5B:17:15:89:CA:F3:6B:F2
quovadisrootca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
DE:3F:40:BD:50:93:D3:9B:6C:60:F6:DA:BC:07:62:01:00:89:76:C9
thawteprimaryrootcag2, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
AA:DB:BC:22:23:8F:C4:01:A1:27:BB:38:DD:F4:1D:DB:08:9E:F0:12
deprecateditsecca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
12:12:0B:03:0E:15:14:54:F4:DD:B3:F5:DE:13:6E:83:5A:29:72:9D
entrustrootcag2, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4
mozillacert43.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
F9:CD:0E:2C:DA:76:24:C1:8F:BD:F0:F0:AB:B6:45:B8:F7:FE:D5:7A
mozillacert107.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
8E:1C:74:F8:A6:20:B9:E5:8A:F4:61:FA:EC:2B:47:56:51:1A:52:C6
trustcenterclass4caii, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A6:9A:91:FD:05:7F:13:6A:42:63:0B:B1:76:0D:2D:51:12:0C:16:50
mozillacert94.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
49:0A:75:74:DE:87:0A:47:FE:58:EE:F6:C7:6B:EB:C6:0B:12:40:99
mozillacert140.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
CA:3A:FB:CF:12:40:36:4B:44:B2:16:20:88:80:48:39:19:93:7C:F7
ttelesecglobalrootclass3ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
55:A6:72:3E:CB:F2:EC:CD:C3:23:74:70:19:9D:2A:BE:11:E3:81:D1
amzninternalcorpca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
43:E3:E6:37:C5:88:05:67:91:37:E3:72:4D:01:7F:F4:1B:CE:3A:97
mozillacert32.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
60:D6:89:74:B5:C2:65:9E:8A:0F:C1:88:7C:88:D2:46:69:1B:18:2C
mozillacert83.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A0:73:E5:C5:BD:43:61:0D:86:4C:21:13:0A:85:58:57:CC:9C:EA:46
verisignroot.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
36:79:CA:35:66:87:72:30:4D:30:A5:FB:87:3B:0F:A7:7B:B7:0D:54
mozillacert147.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
58:11:9F:0E:12:82:87:EA:50:FD:D9:87:45:6F:4F:78:DC:FA:D6:D4
camerfirmachambersca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C
mozillacert21.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB
mozillacert39.pem, Apr 22, 2014, trustedCertEntry,
API Version 2010-03-31
170
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
Certificate fingerprint (SHA1):
AE:50:83:ED:7C:F4:5C:BC:8F:61:C6:21:FE:68:5D:79:42:21:15:6E
mozillacert6.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4
verisignuniversalrootca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
36:79:CA:35:66:87:72:30:4D:30:A5:FB:87:3B:0F:A7:7B:B7:0D:54
mozillacert72.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
47:BE:AB:C9:22:EA:E8:0E:78:78:34:62:A7:9F:45:C2:54:FD:E6:8B
geotrustuniversalca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E6:21:F3:35:43:79:05:9A:4B:68:30:9D:8A:2F:74:22:15:87:EC:79
mozillacert136.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D1:EB:23:A4:6D:17:D6:8F:D9:25:64:C2:F1:F1:60:17:64:D8:E3:49
mozillacert10.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
5F:3A:FC:0A:8B:64:F6:86:67:34:74:DF:7E:A9:A2:FE:F9:FA:7A:51
mozillacert28.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
66:31:BF:9E:F7:4F:9E:B6:C9:D5:A6:0C:BA:6A:BE:D1:F7:BD:EF:7B
mozillacert61.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E0:B4:32:2E:B2:F6:A5:68:B6:54:53:84:48:18:4A:50:36:87:43:84
mozillacert79.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D8:A6:33:2C:E0:03:6F:B1:85:F6:63:4F:7D:6A:06:65:26:32:28:27
mozillacert125.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B3:1E:B1:B7:40:E3:6C:84:02:DA:DC:37:D4:4D:F5:D4:67:49:52:F9
mozillacert17.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
40:54:DA:6F:1C:3F:40:74:AC:ED:0F:EC:CD:DB:79:D1:53:FB:90:1D
mozillacert50.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
8C:96:BA:EB:DD:2B:07:07:48:EE:30:32:66:A0:F3:98:6E:7C:AE:58
mozillacert68.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
AE:C5:FB:3F:C8:E1:BF:C4:E5:4F:03:07:5A:9A:E8:00:B7:F7:B6:FA
mozillacert114.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
51:C6:E7:08:49:06:6E:F3:92:D4:5C:A0:0D:6D:A3:62:8F:C3:52:39
mozillacert57.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D6:DA:A8:20:8D:09:D2:15:4D:24:B5:2F:CB:34:6E:B2:58:B2:8A:58
verisignc2g3.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
61:EF:43:D7:7F:CA:D4:61:51:BC:98:E0:C3:59:12:AF:9F:EB:63:11
verisignclass2g3ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
61:EF:43:D7:7F:CA:D4:61:51:BC:98:E0:C3:59:12:AF:9F:EB:63:11
mozillacert103.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
70:C1:8D:74:B4:28:81:0A:E4:FD:A5:75:D7:01:9F:99:B0:3D:50:74
mozillacert90.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC
API Version 2010-03-31
171
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
verisignc3g3.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6
mozillacert46.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
40:9D:4B:D9:17:B5:5C:27:B6:9B:64:CB:98:22:44:0D:CD:09:B8:89
godaddyclass2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4
verisignc4g3.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
C8:EC:8C:87:92:69:CB:4B:AB:39:E9:8D:7E:57:67:F3:14:95:73:9D
mozillacert97.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0F
mozillacert143.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
36:B1:2B:49:F9:81:9E:D7:4C:9E:BC:38:0F:C6:56:8F:5D:AC:B2:F7
mozillacert35.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
2A:C8:D5:8B:57:CE:BF:2F:49:AF:F2:FC:76:8F:51:14:62:90:7A:41
mozillacert2.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3A
utnuserfirstobjectca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E1:2D:FB:4B:41:D7:D9:C3:2B:30:51:4B:AC:1D:81:D8:38:5E:2D:46
mozillacert86.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
74:2C:31:92:E6:07:E4:24:EB:45:49:54:2B:E1:BB:C5:3E:61:74:E2
mozillacert132.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
39:21:C1:15:C1:5D:0E:CA:5C:CB:5B:C4:F0:7D:21:D8:05:0B:56:6A
addtrustclass1ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9D
mozillacert24.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
59:AF:82:79:91:86:C7:B4:75:07:CB:CF:03:57:46:EB:04:DD:B7:16
verisignc1g3.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
20:42:85:DC:F7:EB:76:41:95:57:8E:13:6B:D4:B7:D1:E9:8E:46:A5
mozillacert9.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
F4:8B:11:BF:DE:AB:BE:94:54:20:71:E6:41:DE:6B:BE:88:2B:40:B9
amzninternalrootca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A7:B7:F6:15:8A:FF:1E:C8:85:13:38:BC:93:EB:A2:AB:A4:09:EF:06
mozillacert75.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A
entrustevca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B3:1E:B1:B7:40:E3:6C:84:02:DA:DC:37:D4:4D:F5:D4:67:49:52:F9
secomscrootca2, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74
camerfirmachambersignca, Apr 22, 2014, trustedCertEntry,
API Version 2010-03-31
172
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
Certificate fingerprint (SHA1):
4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0C
secomscrootca1, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
36:B1:2B:49:F9:81:9E:D7:4C:9E:BC:38:0F:C6:56:8F:5D:AC:B2:F7
mozillacert121.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9D
mozillacert139.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
DE:3F:40:BD:50:93:D3:9B:6C:60:F6:DA:BC:07:62:01:00:89:76:C9
mozillacert13.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
06:08:3F:59:3F:15:A1:04:A0:69:A4:6B:A9:03:D0:06:B7:97:09:91
mozillacert64.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
62:7F:8D:78:27:65:63:99:D2:7D:7F:90:44:C9:FE:B3:F3:3E:FA:9A
mozillacert110.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
93:05:7A:88:15:C6:4F:CE:88:2F:FA:91:16:52:28:78:BC:53:64:17
mozillacert128.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A9:E9:78:08:14:37:58:88:F2:05:19:B0:6D:2B:0D:2B:60:16:90:7D
entrust2048ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
50:30:06:09:1D:97:D4:F5:AE:39:F7:CB:E7:92:7D:7D:65:2D:34:31
mozillacert53.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
7F:8A:B0:CF:D0:51:87:6A:66:F3:36:0F:47:C8:8D:8C:D3:35:FC:74
mozillacert117.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74
mozillacert150.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
33:9B:6B:14:50:24:9B:55:7A:01:87:72:84:D9:E0:2F:C3:D2:D8:E9
thawteserverca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
9F:AD:91:A6:CE:6A:C6:C5:00:47:C4:4E:C9:D4:A5:0D:92:D8:49:79
secomvalicertclass1ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E5:DF:74:3C:B6:01:C4:9B:98:43:DC:AB:8C:E8:6A:81:10:9F:E4:8E
mozillacert42.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BF
gtecybertrustglobalca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
97:81:79:50:D8:1C:96:70:CC:34:D8:09:CF:79:44:31:36:7E:F4:74
mozillacert106.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E7:A1:90:29:D3:D5:52:DC:0D:0F:C6:92:D3:EA:88:0D:15:2E:1A:6B
equifaxsecureebusinessca1, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
DA:40:18:8B:91:89:A3:ED:EE:AE:DA:97:FE:2F:9D:F5:B7:D1:8A:41
mozillacert93.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
31:F1:FD:68:22:63:20:EE:C6:3B:3F:9D:EA:4A:3E:53:7C:7C:39:17
quovadisrootca3, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
1F:49:14:F7:D8:74:95:1D:DD:AE:02:C0:BE:FD:3A:2D:82:75:51:85
API Version 2010-03-31
173
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
quovadisrootca2, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
CA:3A:FB:CF:12:40:36:4B:44:B2:16:20:88:80:48:39:19:93:7C:F7
soneraclass2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
37:F7:6D:E6:07:7C:90:C5:B1:3E:93:1A:B7:41:10:B4:F2:E4:9A:27
mozillacert31.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
9F:74:4E:9F:2B:4D:BA:EC:0F:31:2C:50:B6:56:3B:8E:2D:93:C3:11
mozillacert49.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
61:57:3A:11:DF:0E:D8:7E:D5:92:65:22:EA:D0:56:D7:44:B3:23:71
mozillacert82.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
2E:14:DA:EC:28:F0:FA:1E:8E:38:9A:4E:AB:EB:26:C0:0A:D3:83:C3
mozillacert146.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
21:FC:BD:8E:7F:6C:AF:05:1B:D1:B3:43:EC:A8:E7:61:47:F2:0F:8A
baltimorecybertrustca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74
mozillacert20.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61
mozillacert38.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
CB:A1:C5:F8:B0:E3:5E:B8:B9:45:12:D3:F9:34:A2:E9:06:10:D3:36
mozillacert5.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B8:01:86:D1:EB:9C:86:A5:41:04:CF:30:54:F3:4C:52:B7:E5:58:C6
mozillacert71.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0C
verisignclass3g4ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3A
mozillacert89.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
C8:EC:8C:87:92:69:CB:4B:AB:39:E9:8D:7E:57:67:F3:14:95:73:9D
mozillacert135.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
62:52:DC:40:F7:11:43:A2:2F:DE:9E:F7:34:8E:06:42:51:B1:81:18
camerfirmachamberscommerceca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1
mozillacert27.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
3A:44:73:5A:E5:81:90:1F:24:86:61:46:1E:3B:9C:C4:5F:F5:3A:1B
verisignclass3g2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0F
mozillacert60.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
3B:C4:9F:48:F8:F3:73:A0:9C:1E:BD:F8:5B:B1:C3:65:C7:D8:11:B3
mozillacert78.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
29:36:21:02:8B:20:ED:02:F5:66:C5:32:D1:D6:ED:90:9F:45:00:2F
certumca, Apr 22, 2014, trustedCertEntry,
API Version 2010-03-31
174
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
Certificate fingerprint (SHA1):
62:52:DC:40:F7:11:43:A2:2F:DE:9E:F7:34:8E:06:42:51:B1:81:18
deutschetelekomrootca2, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BF
mozillacert124.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
4D:23:78:EC:91:95:39:B5:00:7F:75:8F:03:3B:21:1E:C5:4D:8B:CF
mozillacert16.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
DA:C9:02:4F:54:D8:F6:DF:94:93:5F:B1:73:26:38:CA:6A:D7:7C:13
secomevrootca1, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
FE:B8:C4:32:DC:F9:76:9A:CE:AE:3D:D8:90:8F:FD:28:86:65:64:7D
mozillacert67.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D6:9B:56:11:48:F0:1C:77:C5:45:78:C1:09:26:DF:5B:85:69:76:AD
globalsignr3ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D6:9B:56:11:48:F0:1C:77:C5:45:78:C1:09:26:DF:5B:85:69:76:AD
mozillacert113.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
50:30:06:09:1D:97:D4:F5:AE:39:F7:CB:E7:92:7D:7D:65:2D:34:31
aolrootca2, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
85:B5:FF:67:9B:0C:79:96:1F:C8:6E:44:22:00:46:13:DB:17:92:84
trustcenteruniversalcai, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
6B:2F:34:AD:89:58:BE:62:FD:B0:6B:5C:CE:BB:9D:D9:4F:4E:39:F3
aolrootca1, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
39:21:C1:15:C1:5D:0E:CA:5C:CB:5B:C4:F0:7D:21:D8:05:0B:56:6A
mozillacert56.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
F1:8B:53:8D:1B:E9:03:B6:A6:F0:56:43:5B:17:15:89:CA:F3:6B:F2
verisignc2g2.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9D
verisignclass1g3ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
20:42:85:DC:F7:EB:76:41:95:57:8E:13:6B:D4:B7:D1:E9:8E:46:A5
mozillacert102.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
96:C9:1B:0B:95:B4:10:98:42:FA:D0:D8:22:79:FE:60:FA:B9:16:83
addtrustexternalca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
02:FA:F3:E2:91:43:54:68:60:78:57:69:4D:F5:E4:5B:68:85:18:68
verisignclass3ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A1:DB:63:93:91:6F:17:E4:18:55:09:40:04:15:C7:02:40:B0:AE:6B
verisignc3g2.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0F
mozillacert45.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
67:65:0D:F1:7E:8E:7E:5B:82:40:A4:F4:56:4B:CF:E2:3D:69:C6:F0
verisignc4g2.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
0B:77:BE:BB:CB:7A:A2:47:05:DE:CC:0F:BD:6A:02:FC:7A:BD:9B:52
API Version 2010-03-31
175
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
digicertassuredidrootca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
05:63:B8:63:0D:62:D7:5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43
verisignclass1ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
CE:6A:64:A3:09:E4:2F:BB:D9:85:1C:45:3E:64:09:EA:E8:7D:60:F1
mozillacert109.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B5:61:EB:EA:A4:DE:E4:25:4B:69:1A:98:A5:57:47:C2:34:C7:D9:71
thawtepremiumserverca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E0:AB:05:94:20:72:54:93:05:60:62:02:36:70:F7:CD:2E:FC:66:66
verisigntsaca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
BE:36:A4:56:2F:B2:EE:05:DB:B3:D3:23:23:AD:F4:45:08:4E:D6:56
mozillacert96.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
55:A6:72:3E:CB:F2:EC:CD:C3:23:74:70:19:9D:2A:BE:11:E3:81:D1
mozillacert142.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
1F:49:14:F7:D8:74:95:1D:DD:AE:02:C0:BE:FD:3A:2D:82:75:51:85
thawteprimaryrootca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
91:C6:D6:EE:3E:8A:C8:63:84:E5:48:C2:99:29:5C:75:6C:81:7B:81
mozillacert34.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
59:22:A1:E1:5A:EA:16:35:21:F8:98:39:6A:46:46:B0:44:1B:0F:A9
mozillacert1.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
23:E5:94:94:51:95:F2:41:48:03:B4:D5:64:D2:A3:A3:F5:D8:8B:8C
mozillacert85.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
CF:9E:87:6D:D3:EB:FC:42:26:97:A3:B5:A3:7A:A0:76:A9:06:23:48
valicertclass2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
31:7A:2A:D0:7F:2B:33:5E:F5:A1:C3:4E:4B:57:E8:B7:D8:F1:FC:A6
mozillacert131.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
37:9A:19:7B:41:85:45:35:0C:A6:03:69:F3:3C:2E:AF:47:4F:20:79
mozillacert149.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1
geotrustprimaryca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
32:3C:11:8E:1B:F7:B8:B6:52:54:E2:E2:10:0D:D6:02:90:37:F0:96
mozillacert23.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
91:C6:D6:EE:3E:8A:C8:63:84:E5:48:C2:99:29:5C:75:6C:81:7B:81
verisignc1g2.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
27:3E:E1:24:57:FD:C4:F9:0C:55:E8:2B:56:16:7F:62:F5:32:E5:47
mozillacert8.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
3E:2B:F7:F2:03:1B:96:F3:8C:E6:C4:D8:A8:5D:3E:2D:58:47:6A:0F
mozillacert74.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
92:5A:8F:8D:2C:6D:04:E0:66:5F:59:6A:FF:22:D8:63:E8:25:6F:3F
mozillacert120.pem, Apr 22, 2014, trustedCertEntry,
API Version 2010-03-31
176
Amazon Simple Notification Service 開発者ガイド
HTTPS エンドポイントの証明機関
Certificate fingerprint (SHA1):
DA:40:18:8B:91:89:A3:ED:EE:AE:DA:97:FE:2F:9D:F5:B7:D1:8A:41
geotrustglobalca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12
mozillacert138.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E1:9F:E3:0E:8B:84:60:9E:80:9B:17:0D:72:A8:C5:BA:6E:14:09:BD
mozillacert12.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36
comodoaaaca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
D1:EB:23:A4:6D:17:D6:8F:D9:25:64:C2:F1:F1:60:17:64:D8:E3:49
mozillacert63.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
89:DF:74:FE:5C:F4:0F:4A:80:F9:E3:37:7D:54:DA:91:E1:01:31:8E
certplusclass2primaryca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
74:20:74:41:72:9C:DD:92:EC:79:31:D8:23:10:8D:C2:81:92:E2:BB
mozillacert127.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12
ttelesecglobalrootclass2ca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9
mozillacert19.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B4:35:D4:E1:11:9D:1C:66:90:A7:49:EB:B3:94:BD:63:7B:A7:82:B7
digicerthighassuranceevrootca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25
mozillacert52.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
8B:AF:4C:9B:1D:F0:2A:92:F7:DA:12:8E:B9:1B:AC:F4:98:60:4B:6F
mozillacert116.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
2B:B1:F5:3E:55:0C:1D:C5:F1:D4:E6:B7:6A:46:4B:55:06:02:AC:21
globalsignca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9C
mozillacert41.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
6B:2F:34:AD:89:58:BE:62:FD:B0:6B:5C:CE:BB:9D:D9:4F:4E:39:F3
mozillacert59.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
36:79:CA:35:66:87:72:30:4D:30:A5:FB:87:3B:0F:A7:7B:B7:0D:54
mozillacert105.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
77:47:4F:C6:30:E4:0F:4C:47:64:3F:84:BA:B8:C6:95:4A:8A:41:EC
trustcenterclass2caii, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
AE:50:83:ED:7C:F4:5C:BC:8F:61:C6:21:FE:68:5D:79:42:21:15:6E
mozillacert92.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A3:F1:33:3F:E2:42:BF:CF:C5:D1:4E:8F:39:42:98:40:68:10:D1:A0
geotrustprimarycag3, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
03:9E:ED:B8:0B:E7:A0:3C:69:53:89:3B:20:D2:D9:32:3A:4C:2A:FD
API Version 2010-03-31
177
Amazon Simple Notification Service 開発者ガイド
メッセージ署名の確認
entrustsslca, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
99:A6:9B:E6:1A:FE:88:6B:4D:2B:82:00:7C:B8:54:FC:31:7E:15:39
verisignc3g5.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
4E:B6:D5:78:49:9B:1C:CF:5F:58:1E:AD:56:BE:3D:9B:67:44:A5:E5
geotrustprimarycag2, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
8D:17:84:D5:37:F3:03:7D:EC:70:FE:57:8B:51:9A:99:E6:10:D7:B0
mozillacert30.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
E7:B4:F6:9D:61:EC:90:69:DB:7E:90:A7:40:1A:3C:F4:7D:4F:E8:EE
mozillacert48.pem, Apr 22, 2014, trustedCertEntry,
Certificate fingerprint (SHA1):
A0:A1:AB:90:C9:FC:84:7B:3B:12:61:E8:97:7D:5F:D3:22:61:D3:CC
Amazon SNS メッセージの署名の確認
Amazon SNS によって送信された通知、受信登録の確認、または受信登録解除の確認メッセージの信
頼性を確認する必要があります。エンドポイントは、Amazon SNS メッセージに含まれる情報を使用
して、署名する文字列と署名を再作成し、メッセージの内容から再作成した署名を、Amazon SNS が
メッセージとともに送信した署名を照合してメッセージの内容を確認できるようにします。
なりすまし攻撃を防ぐには、Amazon SNS によって送信されたメッセージを検証するときに、以下の
操作を行う必要があります。
• Amazon SNS から証明書を取得するときは必ず HTTPS を使用する。
• 証明書の信頼性を検証する。
• 証明書が Amazon SNS から受信されたことを確認する。
• 可能であれば、サポートされている Amazon SNS 用 AWS SDK のいずれかを使用してメッセー
ジを検証および確認する。たとえば AWS SDK for PHP では、MessageValidator クラスの
isValid メソッドを使用します。
Amazon SNS メッセージを処理する Java サーブレットのコード例については、 「Amazon SNS エン
ドポイント Java Servlet のコード例 (p. 180)」を参照してください。
HTTP クエリベースのリクエストの使用時に Amazon SNS メッセージの署名を確認するには
1.
Amazon SNS がエンドポイントに送信した HTTP POST リクエストの本文で、JSON ドキュメ
ント名前から名前と値のペアを抽出します。署名する文字列を作成するために、名前と値のペ
アの一部の値を使用します。Amazon SNS メッセージの署名を確認する場合は、Message およ
び Subject の値で、エスケープした制御文字を元の文字表現に変換し直すことが重要です。こ
れらの値では、署名する文字列の一部として使用するときに、元の形式になっている必要があり
ます。JSON ドキュメントを解析する方法の詳細については、「ステップ 1: エンドポイントで
Amazon SNS メッセージを処理する準備が完了していることを確認する (p. 153)」を参照して
ください。
SignatureVersion により、署名バージョンがわかります。署名バージョンからは、署名を生
成する方法の要件を判断できます。Amazon SNS 通知については、Amazon SNS は現在、署名
バージョン 1 をサポートしています。 このセクションでは、署名バージョン 1 を使用して署名を
作成する手順を説明します。
2.
メッセージの署名に Amazon SNS が使用した X509 証明書を取得します。SigningCertURL 値
は、メッセージのデジタル署名の作成に使用された X509 証明書の場所を指します。この場所か
ら証明書を取得します。
API Version 2010-03-31
178
Amazon Simple Notification Service 開発者ガイド
メッセージ署名の確認
3.
証明書からパブリックキーを抽出します。SigningCertURL で指定された証明書からのパブリッ
クキーを使用して、メッセージの信頼性と整合性を確認します。
4.
メッセージタイプを判断します。署名する文字列の形式は Type 値によって指定されるメッセー
ジタイプによって異なります。
5.
署名する文字列を作成します。署名する文字列は、改行文字で区切られた、メッセージからの特
定の名前と値のペアのリストです。それぞれの名前と値のペアは、名前で始まり、改行文字、値
の順に続き、改行文字で終わります。名前と値のペアは、バイト順でソートしてリストされる必
要があります。
署名する文字列には、メッセージタイプに応じて以下の名前と値のペアが必要です。
通知
通知メッセージには、以下の名前と値のペアを含める必要があります。
Message
MessageId
Subject (if included in the message)
Timestamp
TopicArn
Type
以下の例は Notification に関して署名する文字列です。
Message
My Test Message
MessageId
4d4dc071-ddbf-465d-bba8-08f81c89da64
Subject
My subject
Timestamp
2012-06-05T04:37:04.321Z
TopicArn
arn:aws:sns:us-east-1:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P
Type
Notification
SubscriptionConfirmation および UnsubscribeConfirmation
SubscriptionConfirmation および UnsubscribeConfirmation メッセージには、以下
の名前と値のペアを含める必要があります。
Message
MessageId
SubscribeURL
Timestamp
Token
TopicArn
Type
以下の例は SubscriptionConfirmation に関して署名する文字列です。
Message
My Test Message
MessageId
3d891288-136d-417f-bc05-901c108273ee
SubscribeURL
API Version 2010-03-31
179
Amazon Simple Notification Service 開発者ガイド
エンドポイント Java Servlet のコード例
https://sns.us-west-2.amazonaws.com/?
Action=ConfirmSubscription&TopicArn=arn:aws:sns:uswest-2:123456789012:s4MySNSTopic-1G1WEFCOXTC0P&Token=2336412f37fb687f5d51e6e241d09c8058323f60b964268bfe08ce
Timestamp
2012-06-03T19:25:13.719Z
Token
2336412f37fb687f5d51e6e241d09c8058323f60b964268bfe08ce35640228c208a66d3621bd9f7b01291
TopicArn
arn:aws:sns:us-west-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P
Type
SubscriptionConfirmation
6.
Base64 形式から Signature の値をデコードします。メッセージは、Base64 としてエンコード
された Signature 値で署名を配信します。署名の値を、計算した署名と比較する前に、Base64
から Signature の値をデコードし、同じ形式を使って値を比較します。
7.
Amazon SNS メッセージの派生したハッシュ値を生成します。署名の生成に使用されるのと同じ
ハッシュ関数に、正規形式で Amazon SNS メッセージを送信します。
8.
Amazon SNS メッセージのアサートされたハッシュ値を生成します。アサートされたハッシュ値
は、Amazon SNS メッセージで配信された署名を復号するために(ステップ 3 の)パブリック
キー値を使用した結果です。
9.
Amazon SNS メッセージの信頼性と整合性を確認します。(ステップ 7 からの)派生したハッ
シュ値を、(ステップ 8 からの)アサートされたハッシュ値に比較します。値が同じ場合、受信
者はメッセージが転送中に変更されておらず、メッセージが Amazon SNS から発信されたことを
確認できます。値が同じでない場合、受信者はこれを信頼することはできません。
Amazon SNS エンドポイント Java Servlet の
コード例
Important
以下のコードスニペットは Amazon SNS HTTP POST リクエストを処理する Java servlet
を理解するために役立ちます。運用環境にスニペットを実装する前に、スニペットのい
ずれの部分も目的に適していることを確認します。たとえば、本稼働環境でなりすまし
攻撃を避けるには、受信した Amazon SNS メッセージが Amazon SNS からのものであ
ることを確認する必要があります。そのためには、Amazon SNS 証明書に表示された
[Subject Alternative Name] フィールドの DNS 名の値(us-west-2 の DNS Name=sns.uswest-2.amazonaws.com、リージョンによって異なる)が、受信した Amazon SNS メッセー
ジと同じであることを確認します。サーバーの識別情報の確認の詳細については、『RFC
2818』の「3.1 サーバーの識別情報」を参照してください。「Amazon SNS メッセージの署
名の確認 (p. 178)」も参照してください。
以下のメソッドでは、Java servlet で Amazon SNS からの HTTP POST リクエストに対するハンド
ラーの例を実装します。
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException, SecurityException{
//Get the message type header.
String messagetype = request.getHeader("x-amz-sns-message-type");
//If message doesn't have the message type header, don't process it.
if (messagetype == null)
return;
// Parse the JSON message in the message body
API Version 2010-03-31
180
Amazon Simple Notification Service 開発者ガイド
エンドポイント Java Servlet のコード例
// and hydrate a Message object with its contents
// so that we have easy access to the name/value pairs
// from the JSON message.
Scanner scan = new Scanner(request.getInputStream());
StringBuilder builder = new StringBuilder();
while (scan.hasNextLine()) {
builder.append(scan.nextLine());
}
Message msg = readMessageFromJson(builder.toString());
// The signature is based on SignatureVersion 1.
// If the sig version is something other than 1,
// throw an exception.
if (msg.getSignatureVersion().equals("1")) {
// Check the signature and throw an exception if the signature
verification fails.
if (isMessageSignatureValid(msg))
log.info(">>Signature verification succeeded");
else {
log.info(">>Signature verification failed");
throw new SecurityException("Signature verification failed.");
}
}
else {
log.info(">>Unexpected signature version. Unable to verify signature.");
throw new SecurityException("Unexpected signature version. Unable to
verify signature.");
}
// Process the message based on type.
if (messagetype.equals("Notification")) {
//TODO: Do something with the Message and Subject.
//Just log the subject (if it exists) and the message.
String logMsgAndSubject = ">>Notification received from topic " +
msg.getTopicArn();
if (msg.getSubject() != null)
logMsgAndSubject += " Subject: " + msg.getSubject();
logMsgAndSubject += " Message: " + msg.getMessage();
log.info(logMsgAndSubject);
}
else if (messagetype.equals("SubscriptionConfirmation"))
{
//TODO: You should make sure that this subscription is from the topic
you expect. Compare topicARN to your list of topics
//that you want to enable to add this endpoint as a subscription.
//Confirm the subscription by going to the subscribeURL location
//and capture the return value (XML message body as a string)
Scanner sc = new Scanner(new URL(msg.getSubscribeURL()).openStream());
StringBuilder sb = new StringBuilder();
while (sc.hasNextLine()) {
sb.append(sc.nextLine());
}
log.info(">>Subscription confirmation (" + msg.getSubscribeURL() +")
Return value: " + sb.toString());
//TODO: Process the return value to ensure the endpoint is subscribed.
}
else if (messagetype.equals("UnsubscribeConfirmation")) {
//TODO: Handle UnsubscribeConfirmation message.
API Version 2010-03-31
181
Amazon Simple Notification Service 開発者ガイド
エンドポイント Java Servlet のコード例
//For example, take action if unsubscribing should not have occurred.
//You can read the SubscribeURL from this message and
//re-subscribe the endpoint.
log.info(">>Unsubscribe confirmation: " + msg.getMessage());
}
else {
//TODO: Handle unknown message type.
log.info(">>Unknown message type.");
}
log.info(">>Done processing message: " + msg.getMessageId());
}
以下の例の Java メソッドは、リクエスト本文で送信されたデータが含まれる Message オブジェクト
からの情報を使って署名を作成し、メッセージの Base64 でエンコードされた元の署名(Message オ
ブジェクトからも読み取られる)に対してその署名を確認します。
private static boolean isMessageSignatureValid(Message msg) {
try {
URL url = new URL(msg.getSigningCertURL());
InputStream inStream = url.openStream();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert =
(X509Certificate)cf.generateCertificate(inStream);
inStream.close();
Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(cert.getPublicKey());
sig.update(getMessageBytesToSign(msg));
return sig.verify(Base64.decodeBase64(msg.getSignature()));
}
catch (Exception e) {
throw new SecurityException("Verify method failed.", e);
}
}
以下の Java メソッドの例では、連携して Amazon SNS メッセージに署名するための文字
列を作成します。getMessageBytesToSign メソッドは、メッセージタイプに基づいて適
切な署名対象の文字列メソッドを呼び出し、バイト配列として署名する文字列を実行しま
す。buildNotificationStringToSign および buildSubscriptionStringToSign メソッド
は、「Amazon SNS メッセージの署名の確認 (p. 178)」に説明している形式に基づいて、署名する
文字列を作成します。
private static byte [] getMessageBytesToSign (Message msg) {
byte [] bytesToSign = null;
if (msg.getType().equals("Notification"))
bytesToSign = buildNotificationStringToSign(msg).getBytes();
else if (msg.getType().equals("SubscriptionConfirmation") ||
msg.getType().equals("UnsubscribeConfirmation"))
bytesToSign = buildSubscriptionStringToSign(msg).getBytes();
return bytesToSign;
}
//Build the string to sign for Notification messages.
public static String buildNotificationStringToSign( Message msg) {
String stringToSign = null;
API Version 2010-03-31
182
Amazon Simple Notification Service 開発者ガイド
エンドポイント Java Servlet のコード例
//Build the string to sign from the values in the message.
//Name and values separated by newline characters
//The name value pairs are sorted by name
//in byte sort order.
stringToSign = "Message\n";
stringToSign += msg.getMessage() + "\n";
stringToSign += "MessageId\n";
stringToSign += msg.getMessageId() + "\n";
if (msg.getSubject() != null) {
stringToSign += "Subject\n";
stringToSign += msg.getSubject() + "\n";
}
stringToSign += "Timestamp\n";
stringToSign += msg.getTimestamp() + "\n";
stringToSign += "TopicArn\n";
stringToSign += msg.getTopicArn() + "\n";
stringToSign += "Type\n";
stringToSign += msg.getType() + "\n";
return stringToSign;
}
//Build the string to sign for SubscriptionConfirmation
//and UnsubscribeConfirmation messages.
public static String buildSubscriptionStringToSign(Message msg) {
String stringToSign = null;
//Build the string to sign from the values in the message.
//Name and values separated by newline characters
//The name value pairs are sorted by name
//in byte sort order.
stringToSign = "Message\n";
stringToSign += msg.getMessage() + "\n";
stringToSign += "MessageId\n";
stringToSign += msg.getMessageId() + "\n";
stringToSign += "SubscribeURL\n";
stringToSign += msg.getSubscribeURL() + "\n";
stringToSign += "Timestamp\n";
stringToSign += msg.getTimestamp() + "\n";
stringToSign += "Token\n";
stringToSign += msg.getToken() + "\n";
stringToSign += "TopicArn\n";
stringToSign += msg.getTopicArn() + "\n";
stringToSign += "Type\n";
stringToSign += msg.getType() + "\n";
return stringToSign;
}
API Version 2010-03-31
183
Amazon Simple Notification Service 開発者ガイド
前提条件
Amazon SNS 通知を使用した
Lambda 関数の呼び出し
Amazon SNS と AWS Lambda は統合されているため、Amazon SNS 通知を使用して Lambda 関数を
呼び出すことができます。Lambda 関数がサブスクライブしている SNS トピックにメッセージが発行
されると、発行されたメッセージのペイロードで Lambda 関数が呼び出されます。Lambda 関数は、
メッセージペイロードを入力パラメータとして受け取り、メッセージの情報の操作、他の SNS トピッ
クへのメッセージの発行、または他の AWS サービスへのメッセージの送信を行うことができます。
さらに、Amazon SNS は、Lambda エンドポイントに送信されたメッセージ通知のメッセージ配信ス
テータス属性もサポートします。詳細については、「メッセージの配信ステータスの Amazon SNS ト
ピック属性を使用する」を参照してください。
前提条件
Amazon SNS 通知を使用して Lambda 関数を呼び出すには、以下が必要になります。
• Lambda 関数
• Amazon SNS トピック
Lambda 関数の作成の詳細については、「AWS Lambda の使用開始」を参照してください。Amazon
SNS トピックの作成については、「トピックの作成」を参照してください。
AWS マネジメントコンソール を使用した
Amazon SNS と Lambda エンドポイントの設定
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
左の [Navigation] ペインで、[Topics] をクリックし、Lambda エンドポイントがサブスクライブす
るトピックをクリックします。
3.
[Actions] をクリックし、[Subscribe to topic] をクリックします。
4.
[Protocol] ドロップダウンボックスで [AWS Lambda] を選択します。
API Version 2010-03-31
184
Amazon Simple Notification Service 開発者ガイド
AWS マネジメントコンソール を使用した
Amazon SNS と Lambda エンドポイントの設定
5.
[Endpoint] ドロップダウンボックスで、Lambda 関数の ARN を選択します。
6.
[Version or Alias] ドロップダウンボックスで、使用可能なバージョンまたはエイリアスの中から
使用するものを選択します。[$LATEST] を選択すると、最新バージョンの Lambda 関数を指定で
きます。 バージョンまたはエイリアスを指定しない場合、[default] を選択することもできます。
これは、機能的には [$LATEST] と同じです。詳細については、「AWS Lambda 関数のバージョ
ニングとエイリアス」を参照してください。
7.
[Create subscription] をクリックします。
Lambda 関数がサブスクライブしている SNS トピックにメッセージが発行されると、発行されたメッ
セージのペイロードで Lambda 関数が呼び出されます。SNS、Lambda、および Amazon DynamoDB
を使用してサンプルメッセージ履歴ストアを作成する方法については、AWS モバイル開発ブログ
「Amazon SNS 経由で AWS Lambda 関数を呼び出す」を参照してください。
API Version 2010-03-31
185
Amazon Simple Notification Service 開発者ガイド
メッセージの配信ステータスの
Amazon SNS トピック属性を使用
する
Amazon SNS は、次の Amazon SNS エンドポイントでトピックに送信された通知メッセージの配信
ステータスを記録するためのサポートを提供します。
• アプリケーション
• HTTP
• Lambda
• SQS
メッセージの配信ステータスの属性を設定すると、Amazon SNS エンドポイントにサブスクライブし
ているトピックに送信されたメッセージについて、ログエントリが CloudWatch Logs に送信されま
す。メッセージの配信ステータスを記録することは、以下のように運用をよりよく把握するために役
立ちます。
• メッセージが Amazon SNS エンドポイントに配信されたかどうかを知ることができます。
• Amazon SNS エンドポイントから Amazon SNS に送信された応答を識別します。
• メッセージのドウェル時間(発行のタイムスタンプから Amazon SNS エンドポイントへの配信直前
までの時間)を決定します。
メッセージの配信ステータスのトピック属性を設定するには、AWS マネジメントコンソール、AWS
Software Development Kit (SDK)、またはクエリ API を使用できます。
トピック
• AWS マネジメントコンソール でメッセージの配信ステータスの属性を設定する (p. 187)
• AWS SDK を使用した、Amazon SNS エンドポイントにサブスクライブしたトピックのメッセー
ジ配信ステータス属性の設定 (p. 187)
API Version 2010-03-31
186
Amazon Simple Notification Service 開発者ガイド
AWS マネジメントコンソール でメッ
セージの配信ステータスの属性を設定する
AWS マネジメントコンソール でメッセージの配
信ステータスの属性を設定する
次の手順は、コンソールを使用して、Amazon SNS から AWS Lambda エンドポイントへのメッセー
ジ配信ステータス属性を設定する方法について説明しています。
Amazon SNS から Lambda エンドポイントへの通知のメッセージ配信ステータスを設定する
には:
1.
通知のステータスを確認するか、通知の確認メールを再送信するには
2.
左の [Navigation] ペインで、[Topics] をクリックし、メッセージの配信ステータス情報を受信する
トピックをクリックします。
3.
[Actions] をクリックして、[Delivery status] をクリックします。
4.
[Lambda] チェックボックスをオンにします。
5.
[Delivery Status] ダイアログボックスで、[Create IAM Roles] をクリックします。
IAM コンソールにリダイレクトされます。
6.
[Allow] をクリックして、お客様に代わって CloudWatch Logs を使用できるように Amazon SNS
に書き込みのアクセスを付与します。
7.
[Delivery Status] ダイアログボックスに戻り、[Percentage of Success to Sample (0-100)] フィー
ルドに、CloudWatch Logs を受信するために送信される成功したメッセージの割合を数字で入力
します。
Note
メッセージの配信ステータスのアプリケーション属性を設定した後は、メッセージの配
信に失敗すると、必ず CloudWatch Logs が生成されます。
8.
最後に、[Save Configuration] をクリックします。
これで、メッセージの配信ステータスを含む CloudWatch Logs を参照して解析できま
す。CloudWatch の使用方法の詳細については、「CloudWatch のドキュメント」を参照してくだ
さい。
AWS SDK を使用した、Amazon SNS エンドポイ
ントにサブスクライブしたトピックのメッセージ
配信ステータス属性の設定
AWS SDK には、Amazon SNS でメッセージの配信ステータスの属性を使用するための API がいくつ
かの言語で用意されています。
トピック属性
メッセージの配信ステータスには、次のトピック属性名の値を使用できます。
アプリケーション
• ApplicationSuccessFeedbackRoleArn
• ApplicationSuccessFeedbackSampleRate
• ApplicationFailureFeedbackRoleArn
API Version 2010-03-31
187
Amazon Simple Notification Service 開発者ガイド
トピック属性を設定する Java の例
Note
Amazon SNS アプリケーションエンドポイントに送信される通知メッセージのメッセージ
配信ステータスのトピックの属性を設定できることに加えて、プッシュ通知サービスに送
信されるプッシュ通知メッセージの配信ステータスのアプリケーション属性を設定するこ
ともできます。詳細については、「メッセージの配信ステータスの Amazon SNS アプリ
ケーション属性を使用する」を参照してください。
HTTP
• HTTPSuccessFeedbackRoleArn
• HTTPSuccessFeedbackSampleRate
• HTTPFailureFeedbackRoleArn
Lambda
• LambdaSuccessFeedbackRoleArn
• LambdaSuccessFeedbackSampleRate
• LambdaFailureFeedbackRoleArn
SQS
• SQSSuccessFeedbackRoleArn
• SQSSuccessFeedbackSampleRate
• SQSFailureFeedbackRoleArn
<ENDPOINT>SuccessFeedbackRoleArn 属性と <ENDPOINT>FailureFeedbackRoleArn
属性は、お客様に代わって CloudWatch Logs を使用できるように Amazon SNS に書き込み
のアクセスを付与するために使用します。<ENDPOINT>SuccessFeedbackSampleRate 属
性は、成功した配信メッセージのサンプルレートの割合(0-100)を指定するためのもので
す。<ENDPOINT>FailureFeedbackRoleArn 属性を設定した後は、メッセージの配信に失敗する
と、必ず CloudWatch Logs が生成されます。
トピック属性を設定する Java の例
次の Java の例は、SetTopicAttributes API を使用して、Amazon SNS エンドポイントをサブス
クライブしているトピックに送信された通知メッセージのメッセージ配信ステータスのトピックの属
性を設定する方法を示します。この例では、topicArn、attribName、および attribValue に文字
列値が設定されたことを前提としています。
final static String topicArn = ("arn:aws:sns:uswest-2:123456789012:MyTopic");
final static String attribName = ("LambdaSuccessFeedbackRoleArn");
final static String attribValue = ("arn:aws:iam::123456789012:role/
SNSSuccessFeedback");
SetTopicAttributesRequest setTopicAttributesRequest = new
SetTopicAttributesRequest();
setTopicAttributesRequest.withTopicArn(topicArn);
setTopicAttributesRequest.setAttributeName(attribName);
setTopicAttributesRequest.setAttributeValue(attribValue);
API Version 2010-03-31
188
Amazon Simple Notification Service 開発者ガイド
トピック属性を設定する Java の例
SDK for Java の詳細については、「AWS SDK for Java の使用開始」を参照してください。
API Version 2010-03-31
189
Amazon Simple Notification Service 開発者ガイド
メッセージ属性の項目および検証
Amazon SNS メッセージ属性の使
用
Amazon Simple Notification Service(Amazon SNS)は、Amazon SQS エンドポイントへのメッセー
ジ属性の配信をサポートします。メッセージ属性を使用すると、構造化メタデータ項目(タイムスタ
ンプ、地理空間データ、署名、識別子など)を指定することができます。メッセージ属性はオプショ
ンであり、メッセージ本文とは別個のものですが、メッセージ本文とともに Amazon SQS エンドポイ
ントに送信されます。この情報は、メッセージ本文を処理してからでなくてもメッセージを処理する
方法を調べるために、メッセージの受信者が使用できます。各メッセージには最大 10 個の属性を指
定できます。メッセージ属性を指定するには、AWS Software Development Kit(SDK)またはクエリ
API を使用します。
Important
Amazon SQS エンドポイントでメッセージ属性を使用するには、サブスクリプション属性の
Raw Message Delivery を True に設定する必要があります。raw メッセージ配信の詳細につ
いては、「付録: ラージペイロードおよび raw メッセージ配信 (p. 209)」を参照してくださ
い。
また、モバイルエンドポイント用のプッシュ通知メッセージを構築するためにメッセージ属性を使用
することもできます。このシナリオでは、メッセージ属性はプッシュ通知メッセージを構築するため
に使用されるだけで、Amazon SQS エンドポイントにメッセージとメッセージ属性を送信する場合と
は異なり、エンドポイントには配信されません。
トピック
•
•
•
•
メッセージ属性の項目および検証 (p. 190)
メッセージ属性のデータ型と検証 (p. 191)
予約済みメッセージ属性 (p. 191)
AWS SDK でのメッセージ属性の使用 (p. 192)
メッセージ属性の項目および検証
各メッセージ属性は、次の項目で構成されています。
• 名前 – メッセージ属性名には、A-Z、a-z、0-9、下線(_)、ハイフン(-)、ピリオド(.)を使用
できます。名前の先頭と末尾をピリオドにすることはできず、ピリオドを連続して使用すること
API Version 2010-03-31
190
Amazon Simple Notification Service 開発者ガイド
データ型
はできません。名前では大文字と小文字が区別され、メッセージのすべての属性名間で一意にす
る必要があります。名前の長さは最大 256 文字です。名前を "AWS." または "Amazon."(または大
文字と小文字の違いによるバリエーション)で始めることはできません。これらのプレフィックス
は、Amazon Web Services が使用するように予約されています。
• 型 – サポートされるメッセージ属性のデータ型は、文字列、数値、バイナリです。データ型のコン
テンツには、メッセージ本文と同じ制限があります。データ型では大文字と小文字が区別され、長
さは最大 256 バイトです。詳細については、「メッセージ属性のデータ型と検証 (p. 191)」セク
ションを参照してください。
• 値 – ユーザー指定のメッセージ属性値。文字列データ型の場合、値属性のコンテンツにはメッ
セージ本文と同じ制限があります。詳細については、『Amazon Simple Notification Service API
Reference』の「Publish」アクションを参照してください。
名前、型、値を空または Null にすることはできません。さらに、メッセージ本文を空または Null にす
ることもできません。メッセージ属性のすべての部分(名前、型、値を含む)は、メッセージサイズ
の制限に含められます。制限は、現在のところ 256 KB(262,144 バイト)です。
メッセージ属性のデータ型と検証
メッセージ属性のデータ型は、メッセージ属性が Amazon SNS によって処理される方法を特定しま
す。たとえば、型が数値の場合、Amazon SNS はその属性が数値であることを検証します。
Amazon SNS では、以下の論理データ型がサポートされています。
• 文字列 – 文字列は、UTF-8 バイナリエンコードされた Unicode です。コードの値のリストについて
は、http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters を参照してください。
• 数値 – 数値は正または負の整数か、浮動小数点数です。数値には、整数、浮動小数点数、倍精度浮
動小数点数が通常サポートするほとんどの値を包含できる十分な範囲と精度があります。数値は最
大 38 桁の精度で、10^-128 から 10^+126 の間とします。先頭と末尾の 0 は切り捨てられます。
• バイナリ – バイナリ型の属性には、圧縮データ、暗号化データ、イメージなど、任意のバイナリ
データが保存されます。
予約済みメッセージ属性
次の表は、プッシュ通知メッセージを構築するために使用できるプッシュ通知サービスの予約済み
メッセージ属性の一覧です。
プッシュ通知
サービス
予約済みメッセージ属性
許可された値
Baidu
AWS.SNS.MOBILE.BAIDU.DeployStatus(オ 1—開発環境。2—本稼働環境。
プション)
(デフォルト 1)
AWS.SNS.MOBILE.BAIDU.MessageType(オ0—アプリケーション内メッセー
プション)
ジ。1—アラート通知。(デフォル
ト 1)
AWS.SNS.MOBILE.BAIDU.MessageKey(オ
プション)
メッセージにアタッチできる短い
メッセージ識別子
MPNS
AWS.SNS.MOBILE.MPNS.Type(必須)
トークン(タイル通知用)、トー
スト、raw
AWS.SNS.MOBILE.MPNS.NotificationClass(必
須)
リアルタイム、優先度、通常
API Version 2010-03-31
191
Amazon Simple Notification Service 開発者ガイド
AWS SDK でのメッセージ属性の使用
プッシュ通知
サービス
予約済みメッセージ属性
許可された値
WNS
AWS.SNS.MOBILE.WNS.Type(必須)
X-WNS-Type と同じ
AWS.SNS.MOBILE.WNS.CachePolicy(オ
プション)
X-WNS-Cache-Policy と同じ
AWS.SNS.MOBILE.WNS.Group(オプショ
ン)
AWS.SNS.MOBILE.WNS.Match(オプショ
ン)
X-WNS-Group と同じ
X-WNS-Match と同じ
X-WNS-SuppressPopup と同じ
X-WNS-Tag と同じ
AWS.SNS.MOBILE.WNS.SuppressPopup(オ
プション)
AWS.SNS.MOBILE.WNS.Tag(オプショ
ン)
Baidu でのメッセージ属性の使用の詳細については、「メッセージを構築するためのメッセージ属性
の使用 (p. 69)」を参照してください。
AWS SDK でのメッセージ属性の使用
AWS SDK には、Amazon SNS でメッセージ属性を使用するための API がいくつかの言語で用意され
ています。メッセージ属性を使用する Java の例は、AWS サンプルファイル SNSMobilePush.java
内にあります。このサンプルファイルは、snsmobilepush.zip ファイルに含まれています。
メッセージのメッセージ属性を設定するときに、string 値または binary 値を使用できます
が、string 値と binary 値の両方を使用することはできません。
SDK for Java の詳細については、「AWS SDK for Java の使用開始」を参照してください。
API Version 2010-03-31
192
Amazon Simple Notification Service 開発者ガイド
Amazon SNS の CloudWatch メトリクスへのアクセス
CloudWatch による Amazon SNS
のモニタリング
Amazon SNS と CloudWatch は統合されているため、個々のアクティブな Amazon SNS の通知に
関して、メトリクスを収集、表示、分析できます。 Amazon SNS に対して CloudWatch を設定する
と、Amazon SNS トピック、プッシュ通知、および SMS 配信のパフォーマンスをより正確に把握で
きます。 たとえば、NumberOfNotificationsFailed など、Amazon SNS メトリクスの指定されたしきい
値に達した場合に E メール通知が送信されるように、アラームを設定することができます。Amazon
SNS が CloudWatch に送信するすべてのメトリクスのリストについては、「Amazon SNS メトリク
ス (p. 195)」を参照してください。Amazon SNS プッシュ通知の詳細については、「Amazon SNS
モバイルプッシュ通知 (p. 39)」を参照してください。
Amazon SNS トピック用に CloudWatch を使用して設定するメトリクスは、自動的に収集され、5 分
おきに CloudWatch にプッシュされます。これらのメトリクスは、CloudWatch ガイドラインを満た
すすべてのトピックで収集され、アクティブになります。トピックは、トピックでの最後のアクティ
ビティ(つまり、任意の API 呼び出し)から最大 6 時間 CloudWatch によりアクティブと見なされま
す。
Note
CloudWatch でレポートされた Amazon SNS メトリクスについては料金は発生しません。こ
れらのメトリクスは、Amazon SNS サービスの一環として提供されます。
Amazon SNS の CloudWatch メトリクスへのアク
セス
CloudWatch コンソールまたは CloudWatch 独自のコマンドラインインターフェイス(CLI)を使用す
るか、CloudWatch API をプログラムにより使用して、Amazon SNS のメトリクスをモニタリングで
きます。次の手順は、さまざまなオプションを使用してメトリクスにアクセスする方法を示していま
す。
CloudWatch コンソールを使用してメトリクスを表示するには
1.
AWS マネジメントコンソール にサインインした後、 https://console.aws.amazon.com/
cloudwatch/にある CloudWatch コンソールを開きます。
API Version 2010-03-31
193
Amazon Simple Notification Service 開発者ガイド
Amazon SNS メトリクスの CloudWatch アラームの設定
2.
[View Metrics] をクリックします。
3.
[Viewing] ドロップダウンメニューから、[SNS: Topic Metrics]、[SNS: Push Notifications
by Application]、[SNS: Push Notifications by Application and Platform]、または [SNS: Push
Notifications by Platform] を選択して、利用できるメトリクスを表示します。
4.
収集されたデータのグラフなどの詳細を表示するには、特定の項目をクリックします。たとえ
ば、選択されたメトリクス NumberOfMessagesPublished の以下のグラフは、6 時間の範囲を通
じて 5 分間に発行された Amazon SNS メッセージの平均数を示しています。
CloudWatch CLI からメトリクスにアクセスするには
•
mon-get-stats を呼び出します。このメトリクス、および他のメトリクス関連の機能の詳細に
ついては、「Amazon CloudWatch ユーザーガイド」を参照してください。
CloudWatch API からメトリクスにアクセスするには
•
GetMetricStatistics を呼び出します。このメトリクス、および他のメトリクス関連の機能の
詳細については、「Amazon CloudWatch API リファレンス」を参照してください。
Amazon SNS メトリクスの CloudWatch アラーム
の設定
CloudWatch では、メトリクスのしきい値に到達したときのアラームを設定することもできます。た
とえば、サンプリング期間内に指定されたしきい値に到達した場合、イベントについて知らせる E
メール通知が送信されるように、メトリクス NumberOfNotificationsFailed のアラームを設定できま
す。
API Version 2010-03-31
194
Amazon Simple Notification Service 開発者ガイド
Amazon SNS メトリクス
CloudWatch コンソールを使用してアラームを設定するには
1.
AWS マネジメントコンソール にサインインした後、 https://console.aws.amazon.com/
cloudwatch/にある CloudWatch コンソールを開きます。
2.
[Alarms] をクリックして [Create Alarm] ボタンをクリックします。これにより、[Create Alarm]
ウィザードが起動します。
3.
Amazon SNS メトリクスをスクロールして、アラームを設定するメトリクスを見つけます。ア
ラームを作成するメトリクスを選択し、[Continue] をクリックします。
4.
[Name]、[Description]、[Threshold]、[Time] のそれぞれにメトリクスの値を入力し、[Continue]
をクリックします。
5.
アラーム状態として [Alarm] を選択します。アラーム状態になったときに CloudWatch から E
メールが届くようにするには、既存の Amazon SNS トピックを選択するか、[Create New Email
Topic] を選択します。[Create New Email Topic] をクリックすると、新しいトピックの名前と E
メールアドレスを設定できます。このリストは、今後のアラーム用に保存され、ドロップダウン
ボックスに表示されます。[Continue] をクリックします。
Note
[Create New Email Topic] を使用して新しい Amazon SNS トピックを作成する場合、
メールアドレスを検証しなければ、そのアドレスで通知を受け取ることができません。E
メールは、アラームがアラーム状態になったときにのみ送信されます。アラーム状態に
なったときに、メールアドレスの検証がまだ完了していない場合は、そのアドレスで通
知を受け取ることはできません。
6.
この時点で、[Create Alarm] ウィザードで、作成するアラームを確認できます。何らかの変更を
行う必要がある場合は、右側にある [Edit] リンクを使用します。希望どおりの設定になったら、
[Create Alarm] をクリックします。
CloudWatch とアラームの使用方法の詳細については、CloudWatch のドキュメントを参照してくださ
い。
Amazon SNS メトリクス
Amazon SNS は以下のメトリクスを CloudWatch に送信します。
メトリクス
説明
NumberOfMessagesPublished
発行されたメッセージの数。
単位: Count
有効な統計: Sum
発行されたメッセージのサイズ。
PublishSize
単位: Bytes
有効な統計: Minimum、Maximum、Average、Count
NumberOfNotificationsDelivered
正常に配信されたメッセージの数。
単位: Count
有効な統計: Sum
NumberOfNotificationsFailed
Amazon SNS が配信に失敗したメッセージの数。この
メトリクスは、Amazon SNS が Amazon SQS、電子
API Version 2010-03-31
195
Amazon Simple Notification Service 開発者ガイド
Amazon Simple Notification Service
メトリクスのディメンション
メトリクス
説明
メール、SMS、またはモバイルプッシュのエンドポイ
ントへのメッセージ配信の試行を停止した後に適用さ
れます。HTTPまたはHTTPSエンドポイントに対して
配信が試行されるたびに、メトリクスが1つ追加されま
す。他のすべてのエンドポイントの場合、メッセージ
が配信されないとカウントが1増加します (試行回数に
関係なく)。HTTPエンドポイントの再試行回数はコン
トロールできます。詳細については、「HTTP/HTTPS
エンドポイントに対する Amazon SNS 配信再試行ポリ
シーの設定 (p. 159)」を参照してください。
単位: Count
有効な統計: Sum, 平均
正常な SMS メッセージ配信のレート
SMSSuccessRate
単位: Count
有効な統計: Sum、Average、Data Samples
Amazon Simple Notification Service メトリクスの
ディメンション
Amazon Simple Notification Service は以下のディメンションを CloudWatch に送信します。
ディメンション
説明
Application
アプリケーションオブジェクトのフィルタ。APNS や GCM な
ど、サポートされるプッシュ通知サービスの 1 つに登録されてい
るアプリケーションやデバイスを表す。
Application,Platform
アプリケーションおよびプラットフォームオブジェクトのフィル
タ。プラットフォームオブジェクトは、APNS や GCM など、サ
ポートされるプッシュ通知サービスで使用される。
Country
SMS メッセージの宛先国のフィルタ。 国は、ISO 3166-1 alpha-2
コードで表されます。
Platform
APNS や GCM などのプッシュ通知サービスで使用されるプラッ
トフォームオブジェクトのフィルタ。
TopicName
Amazon SNS トピック名のフィルタ。
SMSType
SMS メッセージのメッセージタイプのフィルタ。 プロモーショ
ンまたはトランザクションがあります。
API Version 2010-03-31
196
Amazon Simple Notification Service 開発者ガイド
CloudTrail 内の Amazon SNS 情報
AWS CloudTrail を使用した
Amazon Simple Notification Service
API 呼び出しのログ記録
Amazon SNS は CloudTrail と統合されています。CloudTrail は、AWS アカウントで Amazon SNS に
よって行われたか Amazon SNS に代わって行われた API 呼び出しを記録し、指定した Amazon S3 バ
ケットにログファイルを渡すサービスです。CloudTrail は、Amazon SNS コンソールまたは Amazon
SNS API から行われた API 呼び出しをキャプチャします。CloudTrail によって収集された情報を使
用して、Amazon SNS に対してどのようなリクエストが行われたか(リクエストの実行元 IP アドレ
ス、実行者、実行日時など)を判断できます。CloudTrail の詳細(設定して有効にする方法など)に
ついては、AWS CloudTrail User Guideを参照してください。
CloudTrail 内の Amazon SNS 情報
AWS アカウントで CloudTrail のログ記録を有効にすると、Amazon SNS アクションに対する API 呼
び出しがログファイルに記録されます。Amazon SNS レコードは、他の AWS サービスレコードと一
緒にログファイルに記録されます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイ
ルをいつ作成して書き込むかを決定します。
以下のアクションがサポートされています。
• AddPermission
• ConfirmSubscription
• CreatePlatformApplication
• CreatePlatformEndpoint
• CreateTopic
• DeleteEndpoint
• DeletePlatformApplication
• DeleteTopic
API Version 2010-03-31
197
Amazon Simple Notification Service 開発者ガイド
Amazon SNS ログファイルエントリの概要
• GetEndpointAttributes
• GetPlatformApplicationAttributes
• GetSubscriptionAttributes
• GetTopicAttributes
• ListEndpointsByPlatformApplication
• ListPlatformApplications
• ListSubscriptions
• ListSubscriptionsByTopic
• ListTopics
• RemovePermission
• SetEndpointAttributes
• SetPlatformApplicationAttributes
• SetSubscriptionAttributes
• SetTopicAttributes
• Subscribe
• Unsubscribe
Note
Amazon Web Services にログインしていないとき(非認証モード)、ConfirmSubscription ま
たは Unsubscribe アクションが呼び出されても、そのアクションは CloudTrail に記録されま
せん。たとえば、E メール通知内のリンクをクリックして、あるトピックへの保留中のサブス
クリプションを確認したとき、ConfirmSubscription アクションが非認証モードで呼び出
されたとします。この場合、ConfirmSubscription アクションは CloudTrail に記録されま
せん。
各ログエントリには、誰がリクエストを生成したかに関する情報が含まれます。ログのユーザー ID 情
報は、リクエストが、ルートまたは IAM ユーザーの認証情報を使用して送信されたか、ロールまたは
フェデレーションユーザーの一時的なセキュリティ認証情報を使用して送信されたか、あるいは別の
AWS サービスによって送信されたかを確認するのに役立ちます。詳細については、CloudTrail Event
Reference の userIdentity フィールドを参照してください。
必要な場合はログファイルを自身のバケットに保管できますが、ログファイルを自動的にアーカイブ
または削除するにように Amazon S3 ライフサイクルルールを定義することもできます。デフォルト
では Amazon S3 のサーバー側の暗号化 (SSE) を使用して、ログファイルが暗号化されます。
ログファイルの配信時にすぐにアクションを実行する場合、新しいログファイルの配信時に
CloudTrail により Amazon SNS 通知を発行することを選択できます。詳細については、「Amazon
SNS 通知の構成」を参照してください。
また、複数の AWS リージョンと複数の AWS アカウントからの Amazon SNS ログファイルを 1 つの
Amazon S3 バケットに集約することもできます。詳細については、「CloudTrail ログファイルの単一
の Amazon S3 バケットへの集約」を参照してください。
Amazon SNS ログファイルエントリの概要
CloudTrail ログファイルには、複数の JSON 形式イベントで構成される 1 つ以上のログエントリを
記録できます。ログエントリは任意の送信元からの単一のリクエストを表し、リクエストされたアク
ション、パラメーター、アクションの日時などに関する情報を含みます。ログエントリは、特定の順
API Version 2010-03-31
198
Amazon Simple Notification Service 開発者ガイド
Amazon SNS ログファイルエントリの概要
序になるように生成されるわけではありません。つまり、パブリック API 呼び出しの順序付けられた
スタックトレースではありません。
以下に示しているのは、ListTopics、CreateTopic、DeleteTopic のアクションの CloudTrail ロ
グエントリの例です。
{
"Records": [
{
"eventVersion": "1.02",
"userIdentity": {
"type":"IAMUser",
"userName":"Bob"
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::123456789012:user/Bob",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE"
},
"eventTime": "2014-09-30T00:00:00Z",
"eventSource": "sns.amazonaws.com",
"eventName": "ListTopics",
"awsRegion": "us-west-2",
"sourceIPAddress": "127.0.0.1",
"userAgent": "aws-sdk-java/unknown-version",
"requestParameters": {
"nextToken": "ABCDEF1234567890EXAMPLE=="
},
"responseElements": null,
"requestID": "example1-b9bb-50fa-abdb-80f274981d60",
"eventID": "example0-09a3-47d6-a810-c5f9fd2534fe",
"eventType": "AwsApiCall",
"recipientAccountId": "123456789012"
},
{
"eventVersion": "1.02",
"userIdentity": {
"type":"IAMUser",
"userName":"Bob"
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::123456789012:user/Bob",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE"
},
"eventTime": "2014-09-30T00:00:00Z",
"eventSource": "sns.amazonaws.com",
"eventName": "CreateTopic",
"awsRegion": "us-west-2",
"sourceIPAddress": "127.0.0.1",
"userAgent": "aws-sdk-java/unknown-version",
"requestParameters": {
"name": "hello"
},
"responseElements": {
"topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic"
},
"requestID": "example7-5cd3-5323-8a00-f1889011fee9",
"eventID": "examplec-4f2f-4625-8378-130ac89660b1",
"eventType": "AwsApiCall",
API Version 2010-03-31
199
Amazon Simple Notification Service 開発者ガイド
Amazon SNS ログファイルエントリの概要
"recipientAccountId": "123456789012"
},
{
"eventVersion": "1.02",
"userIdentity": {
"type":"IAMUser",
"userName":"Bob"
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::123456789012:user/Bob",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE"
},
"eventTime": "2014-09-30T00:00:00Z",
"eventSource": "sns.amazonaws.com",
"eventName": "DeleteTopic",
"awsRegion": "us-west-2",
"sourceIPAddress": "127.0.0.1",
"userAgent": "aws-sdk-java/unknown-version",
"requestParameters": {
"topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic"
},
"responseElements": null,
"requestID": "example5-4faa-51d5-aab2-803a8294388d",
"eventID": "example8-6443-4b4d-abfd-1b867280d964",
"eventType": "AwsApiCall",
"recipientAccountId": "123456789012"
},
]
}
API Version 2010-03-31
200
Amazon Simple Notification Service 開発者ガイド
HTTP/HTTPS ヘッダー
付録: メッセージおよび JSON の形
式
Amazon SNS では以下の形式が使用されます。
トピック
• HTTP/HTTPS ヘッダー (p. 201)
• HTTP/HTTPS 受信登録の確認の JSON 形式 (p. 202)
• HTTP/HTTPS 通知の JSON 形式 (p. 204)
• HTTP/HTTPS 受信登録の解除の JSON 形式 (p. 205)
• SetSubscriptionAttributes 配信ポリシーの JSON 形式 (p. 206)
• SetTopicAttributes 配信ポリシーの JSON 形式 (p. 207)
HTTP/HTTPS ヘッダー
Amazon SNS が受信登録の確認、通知、または受信登録解除の確認メッセージを HTTP/HTTPS エン
ドポイントに送信するときは、Amazon SNS 固有の多くのヘッダー値とともに POST メッセージを送
信します。これらのヘッダー値を使用すると、JSON メッセージ本文を解析して Type 値を読み取る
ことなく、メッセージタイプの識別などの操作を行うことができます。
x-amz-sns-message-type
メッセージのタイプ。指定できる値は、SubscriptionConfirmation、Notification、およ
び UnsubscribeConfirmation です。
x-amz-sns-message-id
共通のユニークな識別子。発行される各メッセージで一意です。再試行間に Amazon SNS が再送
信する通知の場合、元のメッセージのメッセージ ID が使用されます。
x-amz-sns-topic-arn
このメッセージの発行先トピックの Amazon リソースネーム(ARN)。
x-amz-sns-subscription-arn
このエンドポイントへの受信登録の ARN。
次の HTTP POST ヘッダーは、HTTP エンドポイントへの通知メッセージのヘッダーの例です。
API Version 2010-03-31
201
Amazon Simple Notification Service 開発者ガイド
HTTP/HTTPS 受信登録の確認の JSON 形式
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:uswest-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
HTTP/HTTPS 受信登録の確認の JSON 形式
HTTP/HTTPS エンドポイントを受信登録すると、Amazon SNS は HTTP/HTTPS エンドポイントに
受信登録の確認メッセージを送信します。このメッセージには、受信登録を確認するためにアクセス
する必要がある SubscribeURL 値が含まれています(または、Token 値を ConfirmSubscription で使
用できます)。受信登録が確認されるまで、Amazon SNS はこのエンドポイントに通知を送信しませ
ん。
受信登録の確認メッセージは、次の名前と値のペアを持つ JSON ドキュメントを含むメッセージ本文
がある POST メッセージです。
メッセージ
メッセージについて説明する文字列。受信登録の確認の場合、この文字列は次のようになりま
す。
You have chosen to subscribe to the topic arn:aws:sns:useast-1:123456789012:MyTopic.\nTo confirm the subscription, visit the
SubscribeURL included in this message.
MessageId
共通のユニークな識別子。発行される各メッセージで一意です。再試行間に Amazon SNS が再送
信するメッセージの場合、元のメッセージのメッセージ ID が使用されます。
署名
Message、MessageId、Type、Timestamp、および TopicArn 値の Base64 エンコードされた
"SHA1withRSA" 署名。
SignatureVersion
使用される Amazon SNS 署名のバージョン。
SigningCertURL
メッセージの署名に使用された証明書の URL。
SubscribeURL
受信登録を確認するためにアクセスする必要がある URL。または、代わりに Token を
ConfirmSubscription アクションに使用して受信登録を確認することもできます。
タイムスタンプ
受信登録の確認が送信された日時(GMT)。
Token
受信登録を確認するために ConfirmSubscription アクションで使用する値。また
は、SubscribeURL にアクセスできます。
TopicArn
このエンドポイントが受信登録しているトピックの Amazon リソースネーム(ARN)。
タイプ
メッセージのタイプ。受信登録の確認の場合、タイプは SubscriptionConfirmation です。
API Version 2010-03-31
202
Amazon Simple Notification Service 開発者ガイド
HTTP/HTTPS 受信登録の確認の JSON 形式
次の HTTP POST メッセージは、HTTP エンドポイントへの SubscriptionConfirmation メッセージの
例です。
POST / HTTP/1.1
x-amz-sns-message-type: SubscriptionConfirmation
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "SubscriptionConfirmation",
"MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b",
"Token" :
"2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e2
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Message" : "You have chosen to subscribe to the topic arn:aws:sns:uswest-2:123456789012:MyTopic.\nTo confirm the subscription, visit the
SubscribeURL included in this message.",
"SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?
Action=ConfirmSubscription&TopicArn=arn:aws:sns:uswest-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988
"Timestamp" : "2012-04-26T20:45:04.751Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEpH
+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0A
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/
SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem"
}
受信登録の確認の JSON 形式の定義を表示するには、https://sns.us-west-2.amazonaws.com/doc/
2010-03-31/SubscriptionConfirmation.json の JSON ファイルをダウンロードできます。
API Version 2010-03-31
203
Amazon Simple Notification Service 開発者ガイド
HTTP/HTTPS 通知の JSON 形式
HTTP/HTTPS 通知の JSON 形式
Amazon SNS が受信登録している HTTP または HTTPS エンドポイントに通知を送信すると、エンド
ポイントに送信される POST メッセージには、次の名前と値のペアを持つ JSON ドキュメントを含む
メッセージ本文があります。
メッセージ
通知がトピックに発行されたときに指定された Message の値。
MessageId
共通のユニークな識別子。発行される各メッセージで一意です。再試行間に Amazon SNS が再送
信する通知の場合、元のメッセージのメッセージ ID が使用されます。
署名
Message、MessageId、Subject(存在する場合)、Type、Timestamp、TopicArn 値の Base64 エ
ンコードされた "SHA1withRSA" 署名。
SignatureVersion
使用される Amazon SNS 署名のバージョン。
SigningCertURL
メッセージの署名に使用された証明書の URL。
件名
通知がトピックに公開されたときに指定された Subject パラメータ。これはオプションのパラ
メータです。Subject が指定されていない場合、この名前と値のペアは、この JSON ドキュメン
トに表示されません。
タイムスタンプ
通知が公開されたときの日時(GMT)。
TopicArn
このメッセージの発行先トピックの Amazon リソースネーム(ARN)。
タイプ
メッセージのタイプ。通知の場合、タイプは Notification です。
UnsubscribeURL
このトピックからエンドポイントの受信登録を解除するために使用できる URL。この URL にア
クセスすると、Amazon SNS はエンドポイントの受信登録を解除し、このエンドポイントへの通
知の送信を停止します。
次の HTTP POST メッセージは、HTTP エンドポイントへの通知メッセージの例です。
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:uswest-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96
Content-Length: 773
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "Notification",
"MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "My First Message",
"Message" : "Hello world!",
"Timestamp" : "2012-05-02T00:54:06.655Z",
API Version 2010-03-31
204
Amazon Simple Notification Service 開発者ガイド
HTTP/HTTPS 受信登録の解除の JSON 形式
"SignatureVersion" : "1",
"Signature" :
"EXAMPLEw6JRNwm1LFQL4ICB0bnXrdB8ClRMTQFGBqwLpGbM78tJ4etTwC5zU7O3tS6tGpey3ejedNdOJ
+1fkIp9F2/LmNVKb5aFlYq+9rk9ZiPph5YlLmWsDcyC5T+Sy9/
umic5S0UQc2PEtgdpVBahwNOdMW4JPwk0kAJJztnc=",
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/
SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:uswest-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"
}
通知の JSON 形式の定義を確認するには、https://sns.us-west-2.amazonaws.com/doc/2010-03-31/
Notification.json の JSON ファイルをダウンロードできます。
HTTP/HTTPS 受信登録の解除の JSON 形式
HTTP/HTTPS エンドポイントの受信登録がトピックから解除されると、Amazon SNS はエンドポイ
ントに登録解除の確認メッセージを送信します。
受信登録解除の確認メッセージは、次の名前と値のペアを持つ JSON ドキュメントを含むメッセージ
本文がある POST メッセージです。
メッセージ
メッセージについて説明する文字列。受信登録解除の確認の場合、この文字列は次のようになり
ます。
You have chosen to deactivate subscription arn:aws:sns:useast-1:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.
\nTo cancel this operation and restore the subscription, visit the
SubscribeURL included in this message.
MessageId
共通のユニークな識別子。発行される各メッセージで一意です。再試行間に Amazon SNS が再送
信するメッセージの場合、元のメッセージのメッセージ ID が使用されます。
署名
Message、MessageId、Type、Timestamp、および TopicArn 値の Base64 エンコードされた
"SHA1withRSA" 署名。
SignatureVersion
使用される Amazon SNS 署名のバージョン。
SigningCertURL
メッセージの署名に使用された証明書の URL。
SubscribeURL
受信登録を再確認するためにアクセスする必要がある URL。または、代わりに Token を
ConfirmSubscription アクションに使用して受信登録を再確認することもできます。
タイムスタンプ
受信登録解除の確認が送信された日時(GMT)。
Token
受信登録を再確認するために ConfirmSubscription アクションで使用できる値。また
は、SubscribeURL にアクセスできます。
TopicArn
このエンドポイントが受信登録を解除されたトピックの Amazon リソースネーム(ARN)。
API Version 2010-03-31
205
Amazon Simple Notification Service 開発者ガイド
SetSubscriptionAttributes 配信ポリシーの JSON 形式
タイプ
メッセージのタイプ。受信登録解除の確認の場合、タイプは UnsubscribeConfirmation で
す。
次の HTTP POST メッセージは、HTTP エンドポイントへの UnsubscribeConfirmation メッセージの
例です。
POST / HTTP/1.1
x-amz-sns-message-type: UnsubscribeConfirmation
x-amz-sns-message-id: 47138184-6831-46b8-8f7c-afc488602d7d
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:uswest-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
Content-Length: 1399
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "UnsubscribeConfirmation",
"MessageId" : "47138184-6831-46b8-8f7c-afc488602d7d",
"Token" :
"2336412f37fb687f5d51e6e241d09c805a5a57b30d712f7948a98bac386edfe3e10314e873973b3e0a3c09119b
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Message" : "You have chosen to deactivate subscription arn:aws:sns:uswest-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel
this operation and restore the subscription, visit the SubscribeURL included
in this message.",
"SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?
Action=ConfirmSubscription&TopicArn=arn:aws:sns:uswest-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f7948a98bac38
"Timestamp" : "2012-04-26T20:06:41.581Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEHXgJmXqnqsHTlqOCk7TIZsnk8zpJJoQbr8leD
+8kAHcke3ClC4VPOvdpZo9s/
vR9GOznKab6sjGxE8uwqDI9HwpDm8lGxSlFGuwCruWeecnt7MdJCNh0XK4XQCbtGoXB762ePJfaSWi9tYwzW65zAFU04
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/
SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem"
}
受信登録解除の確認の JSON 形式の定義を確認するには、https://sns.us-west-2.amazonaws.com/doc/
2010-03-31/UnsubscribeConfirmation.json の JSON ファイルをダウンロードできます。
SetSubscriptionAttributes 配信ポリシーの JSON
形式
SetSubscriptionAttributes アクションにリクエストを送信し、AttributeName パラメータを
DeliveryPolicy の値に設定する場合、AttributeValue パラメータの値は有効な JSON のオブジェク
トである必要があります。たとえば、次の例では、配信ポリシーを合計 5 回の再試行に設定します。
http://sns.us-east-1.amazonaws.com/
?Action=SetSubscriptionAttributes
API Version 2010-03-31
206
Amazon Simple Notification Service 開発者ガイド
SetTopicAttributes 配信ポリシーの JSON 形式
&SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic
%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca
&AttributeName=DeliveryPolicy
&AttributeValue={"healthyRetryPolicy":{"numRetries":5}}
...
AttributeValue パラメータの値には、次の JSON 形式を使用します。
{
"healthyRetryPolicy" : {
"minDelayTarget" : <int>,
"maxDelayTarget" : <int>,
"numRetries" : <int>,
"numMaxDelayRetries" : <int>,
"backoffFunction" : "<linear|arithmetic|geometric|exponential>"
},
"throttlePolicy" : {
"maxReceivesPerSecond" : <int>
}
}
SetSubscriptionAttribute アクションの詳細については、『Amazon Simple Notification Service API
Reference』の「SetSubscriptionAttributes」を参照してください。
SetTopicAttributes 配信ポリシーの JSON 形式
SetTopicAttributes アクションにリクエストを送信し、AttributeName パラメータの値を
DeliveryPolicy に設定する場合、AttributeValue パラメータの値は有効な JSON のオブジェクトで
ある必要があります。たとえば、次の例では、配信ポリシーを合計 5 回の再試行に設定します。
http://sns.us-east-1.amazonaws.com/
?Action=SetTopicAttributes
&TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A123456789012%3AMy-Topic
&AttributeName=DeliveryPolicy
&AttributeValue={"http":{"defaultHealthyRetryPolicy":{"numRetries":5}}}
...
AttributeValue パラメータの値には、次の JSON 形式を使用します。
{
"http" : {
"defaultHealthyRetryPolicy" : {
"minDelayTarget": <int>,
"maxDelayTarget": <int>,
"numRetries": <int>,
"numMaxDelayRetries": <int>,
"backoffFunction": "<linear|arithmetic|geometric|exponential>"
},
"disableSubscriptionOverrides" : <boolean>,
"defaultThrottlePolicy" : {
"maxReceivesPerSecond" : <int>
API Version 2010-03-31
207
Amazon Simple Notification Service 開発者ガイド
SetTopicAttributes 配信ポリシーの JSON 形式
}
}
}
SetTopicAttribute アクションの詳細については、『Amazon Simple Notification Service API
Reference』の「SetTopicAttributes」を参照してください。
API Version 2010-03-31
208
Amazon Simple Notification Service 開発者ガイド
AWS マネジメントコンソール で
の raw メッセージ配信の有効化
付録: ラージペイロードおよび raw
メッセージ配信
Amazon SNS および Amazon SQS を使用すると、最大で 256 KB(262,144 バイト)のサイズの
ラージペイロードメッセージを送信できるようになります。ラージペイロード(64 KB から 256 KB
のメッセージ)を送信するには、AWS 署名バージョン 4(SigV4)署名をサポートしている AWS
SDK を使用する必要があります。AWS SDK で SigV4 がサポートされているかどうかを確認するに
は、SDK のリリースノートを調べます。
ラージペイロードの送信の他に、Amazon SNS を使用して、Amazon SQS エンドポイントまたは
HTTP/S エンドポイントに配信されるメッセージの raw メッセージ配信ができるようになりまし
た。これによって、エンドポイントが JSON 形式を処理する必要がなくなります。この形式は、raw
メッセージ配信が選択されない場合に、Amazon SNS メタデータのために作成されます。たとえ
ば、Amazon SQS エンドポイントに対する raw メッセージ配信を有効にすると、Amazon SNS メタ
データは含まれず、発行されたメッセージはサブスクライブされた Amazon SQS エンドポイントに
そのまま配信されます。HTTP/S エンドポイントに対する raw メッセージ配信を有効にすると、メッ
セージには追加の HTTP ヘッダー x-amz-sns-rawdelivery が含められ、その値が true に設定さ
れて、メッセージが JSON 形式ではなく raw で発行されたことが示されます。これによって、これら
のエンドポイントは何が配信されるかを知ることができるので、JSON から raw 配信へのサブスクリ
プションの移行が容易になります。
いずれかの AWS SDK を使用して raw メッセージ配信を有効にするに
は、SetSubscriptionAttribute アクションを使用し、RawMessageDelivery 属性の値を true
に設定する必要があります。デフォルト値は false です。
AWS マネジメントコンソール での raw メッセー
ジ配信の有効化
AWS マネジメントコンソール を使用し、[Raw Message Delivery] サブスクリプション属性の値を
true に設定して、raw メッセージ配信を有効にすることができます。
AWS マネジメントコンソール で raw メッセージ配信を有効にするには
1.
2.
通知のステータスを確認するか、通知の確認メールを再送信するには
Amazon SQS エンドポイントまたは HTTP/S エンドポイントにサブスクライブされているトピッ
クを選択し、トピックの ARN をクリックします。
API Version 2010-03-31
209
Amazon Simple Notification Service 開発者ガイド
AWS マネジメントコンソール で
の raw メッセージ配信の有効化
[Topic Details] ページが表示されます。
3.
4.
[Subscription ID] を選択し、次に [Other subscription actions] ドロップダウンボックスをクリック
します。
[Edit subscription attributes] をクリックし、[Raw Message Delivery] を選択して、[Set
subscription attributes] をクリックします。
API Version 2010-03-31
210
Amazon Simple Notification Service 開発者ガイド
ドキュメント履歴
次の表に、『Amazon SNS 開発者ガイド』の前回のリリース以後に行われた、ドキュメントの重要な
変更を示します。
• API バージョン: 2010-03-31
• 文書の最終更新: 2016 年 6 月 28 日
変更
説明
日付日
Amazon SNS は
世界的に展開する
SMS をサポートし
ます
Amazon SNS は 200 か国以上への SMS メッセージを
サポートするようになりました。 多くの電話番号にト
ピックを取り上げ、トピックへメッセージを送信するこ
とにより、電話番号へメッセージを直接送信または、一
度に複数の電話番号にメッセージを送信できます。 詳
細については、「Amazon SNS の SMS メッセージを送
信 (p. 126)」を参照してください。
2016 年 6 月 28 日
プラットフォーム
エンドポイントと
デバイストークン
プラットフォームエンドポイントを作成して、Amazon
SNS モバイルプッシュ通知用のデバイストークンを管
理する方法に関するトピックを追加しました。詳細につ
いては、「プラットフォームエンドポイントの作成とデ
バイストークンの管理 (p. 87)」を参照してください。
2015 年 9 月 23 日
アプリケーション
イベント通知
特定のアプリケーションイベントが発生したときに通
知をトリガーする方法についてのトピックを追加しま
した。詳細については、「アプリケーションイベント通
知 (p. 98)」を参照してください。
2015 年 9 月 23 日
VoIP および Mac
OS X のプッシュ通
知の新しいサポー
ト
Apple Push Notification Service を使用した VoIP およ
び Mac OS X アプリへのプッシュ通知メッセージの送
信に関する新しいトピックを追加しました。詳細につ
いては、「Apple Push Notification Service の使用開
始 (p. 47)」を参照してください。
2015 年 6 月 15 日
AWS Lambda 関数
の呼び出し
Amazon SNS 通知機能を使用して Lambda 関数を呼び
出す方法のトピックを追加しました。詳細については、
「Amazon SNS 通知を使用した Lambda 関数の呼び出
し (p. 184)」を参照してください。
2015 年 4 月 09 日
メッセージの配
信ステータスの
メッセージの配信ステータスの Amazon SNS トピック
属性の使用についてのトピックを追加しました。詳細
2015 年 4 月 09 日
API Version 2010-03-31
211
Amazon Simple Notification Service 開発者ガイド
変更
説明
日付日
Amazon SNS ト
ピック属性を使用
する
については、「メッセージの配信ステータスの Amazon
SNS トピック属性を使用する (p. 186)」を参照してくだ
さい。
プッシュ通知メッ
セージの配信ス
テータスの記録を
サポート
メッセージの配信ステータスの Amazon SNS アプリ
ケーション属性の使用についてのトピックを追加し
ました。詳細については、「メッセージの配信ステー
タスの Amazon SNS アプリケーション属性を使用す
る (p. 95)」を参照してください。
2015 年 2 月 05 日
Amazon Simple
Notification
Service での AWS
CloudTrail のサ
ポート
CloudTrail を使用した Amazon SNS API 呼び出しのロ
グ記録についてのトピックを追加しました。詳細につ
いては、「AWS CloudTrail を使用した Amazon Simple
Notification Service API 呼び出しのログ記録 (p. 197)」
を参照してください。
2014 年 10 月 9 日
Amazon SNS モバ
イルプッシュを使
用するために必要
な手順の概要
Amazon SNS モバイルプッシュを使用するために必要
な手順の概要についてのトピックを追加しました。この
トピックは、Amazon SNS モバイルプッシュ API の使
用にかかわる手順をよりすばやく理解するために役立ち
ます。詳細については、「Amazon SNS モバイルプッ
シュを使用するために必要な手順の概要 (p. 41)」を参
照してください。
2014 年 10 月 9 日
Windows Phone 用
Microsoft プッシュ
通知サービス で
の認証されたメッ
セージのサポート
MPNS で認証されたメッセージを送信する方法につ
いてのトピックを更新しました。詳細については、
「MPNS の使用開始 (p. 75)」を参照してください。
2014 年 8 月 19 日
モバイルプッシュ
通知サービスの
有効期限(TTL)
メッセージ属性の
設定のサポート
モバイルプッシュ通知メッセージの有効期限メタデータ
を指定する方法についてのトピックを追加しました。
詳細については、「モバイルプッシュ通知サービスの
Amazon SNS 有効期限(TTL)メッセージ属性の使
用 (p. 100)」を参照してください。
2014 年 7 月 10 日
Baidu Cloud
Push、Windows
Phone 用 Microsoft
プッシュ通知サー
ビス、および
Windows プッシュ
通知サービス のサ
ポート
Baidu、MPNS、および WNS の使用方法に関するト
ピックと Amazon SNS を使ってモバイルデバイスに
プッシュ通知メッセージを送信する方法に関するト
ピックを追加しました。詳細については、「Baidu
Cloud Push の使用開始 (p. 54)」、「MPNS の使用開
始 (p. 75)」、および「WNS の使用開始 (p. 79)」を参照
してください。
2014 年 6 月 12 日
メッセージ属性
メッセージ属性により、メッセージに関する構造化メ
タデータ項目を提供することができます。詳細について
は、「Amazon SNS メッセージ属性の使用 (p. 190)」を
参照してください。
2014 年 6 月 12 日
API Version 2010-03-31
212
Amazon Simple Notification Service 開発者ガイド
変更
説明
日付日
Java の Amazon
SNS サンプル
AWS SDK for Java と Amazon SNS の使用に関するセ
クションを追加しました。このセクションの例では、新
しい Amazon SNS クライアントを作成する方法、使用
する Amazon SNS エンドポイントを設定する方法、お
よび新しいトピックを作成する方法について示します。
さらに、トピックに受信登録する方法、トピックに発行
する方法、およびトピックを削除する方法の例を示しま
す。詳細については、「Amazon SNS での AWS SDK
for Java の使用 (p. 10)」を参照してください。
2014 年 4 月 23 日
モバイルプッシュ
通知
メッセージでカスタムプラットフォーム固有のペイロー
ドを作成し、モバイルデバイスに送信する方法に関する
トピックを追加しました。詳細については、「メッセー
ジでのカスタムプラットフォーム固有のペイロードの
モバイルデバイスへの送信 (p. 93)」を参照してくださ
い。
2013 年 12 月 17 日
2013 年 12 月 5 日
モバイルプッシュ
通知
モバイルデバイスのアプリに通知メッセージを直接送信
するためのサポートを追加しました。詳細については、
「Amazon SNS モバイルプッシュ通知 (p. 39)」を参照
してください。
2013 年 8 月 13 日
初回リリース
これは『Amazon SNS 開発者ガイド』の最初のリリー
スです。
2013 年 5 月 1 日
API Version 2010-03-31
213