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
© Copyright 2024 Paperzz