Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた
JAWS-UG山形 芦野 光
トラック:[Aceに聞け]
自己紹介
芦野 光 宮城県仙台市在住
専門学生
JAWS-UG山形、仙台
AWS歴:6ヶ月
専門学校 東北電子専門学校 高度ITエンジニア科 所属(4年課程)
株式会社エスツー サーバーエンジニア(アルバイト勤務)
最近のできごと AWS麻雀はじめました
アジェンダ
AWSを知ったきっかけ と AWSを使ったきっかけ
Amazon Cognito
Amazon SNS
アプリの紹介とデモ
AWSを知ったきっかけ
AWSってなに? クラウド?
VPS?
IaaS?
参加する前
通販のAmazonがサーバ屋さん?
PaaS?
参加してみた
AWS便利!!
参加した後
AWSを使ったきっかけ
きっかけは、学校の授業の課題
Androidのアプリ開発の授業。
課題は「電話帳アプリ」の作成。
AWSを使ったきっかけ
課題の開発自体は順調でしたが・・・
追加の仕様変更が。。
クラウドと複数端末との同期機能?知らない。。
あれ、でも。
これ、AWSでもしかしたらできそう!?
探してみた
AWSを使ったきっかけ
これ、AWSでもしかしたらできそう!?
探してみる。
できそうな予感。
実装してみる
AWSを使ったきっかけ
できた!
Amazon Cognito
mobile client mobile client
Sync
Identity
Amazon Cognito
Amazon Cognitoとは
Amazon Cognito
AWSのモバイルサービス、2014年7月にリリース
提供している内容は大きく2つ
Sync
クラウド上にモバイルと同期できるデータストアを提供。
Identity Broker
モバイルからAWS上へのリソースのアクセス認証と制御。
提供しているリージョン
US East (N. Virginia)
EU (Ireland)
AWS Mobile SDKサポート
Amazon Cognitoとは
Sync
クラウド上にモバイルと同期できるデータストアを提供。
DatasetというテーブルにKey/Value形式でのデータの保存。
オフラインでもローカルのデータが利用可能。
同期時にコンフリクトの検知と発生時の処理実装が可能。
複数デバイスをまたいだ同期が可能。
Amazon Cognitoとは
Sync
Identitypool
Identity IdentityIdentity
Dataset…
key value
1 Blue
2 Red
3 White
Dataset…
key value
1 Blue
2 Red
3 White
Dataset…
key value
1 Blue
2 Red
3 White
Dataset…
key value
1 Blue
2 Red
3 White
Dataset…
key value
1 Blue
2 Red
3 White
Dataset…
key value
1 Blue
2 Red
3 White
Dataset…
key value
1 Blue
2 Red
3 White
Dataset…
key value
1 Blue
2 Red
3 White
Dataset…
key value
1 Blue
2 Red
3 White
Amazon Cognitoとは Sync –用語
Identitypool アプリケーションのユーザアイデンティティを整理するコンテナ。
AWSアカウント1つにつき60個作成可能。
Identity ユーザアイデンティティ
複数のデバイスで共有可能。
複数のDatasetを持つ。
Dataset(Key/Valueのテーブル,同期ストア) Dataset1つあたり、1MBまでのデータが保存可能
Key/Value形式、Keyの数は最大1024個
保存できるデータ
英数字の文字列
バイナリデータはBase64でエンコードすることで保存可能。
1ユーザーあたり、Datasetの合計サイズの上限は20MB
Amazon Cognitoとは
Sync
Identity Pool…(App)
Dataset…
key value
1 Apple
2 Watermelon
3 Orange
Identity…(Device)
Dataset…
key value
1 Apple
2 Watermelon
3 Orange
AppPull
Push
synchronize
Amazon Cognitoとは
Sync
Identity Pool…(App)
Dataset…
key value
1 Apple
2 Watermelon
3 Orange
Identity…(Device)
Dataset…
key value
1 Apple
2 Watermelon
3 Orange
App
Dataset…
key value
1 Apple
2 Watermelon
3 Strawberry
Put
Get
Amazon Cognitoとは
Sync
Identity Pool…(App)
Identity…(Device)
Dataset…
key value
1 Apple
2 Watermelon
3 Orange
AppPull
Push
synchronize
Dataset…
key value
1 Apple
2 Watermelon
3 StrawberryConflict
Dataset…
key value
1 Apple
2 Watermelon
3 Strawberry
Amazon Cognitoとは
Syncのユースケース
ゲームのセーブデータ。
アプリの設定情報。
電話帳の複数端末での同期。
Amazon Cognitoとは
Identity Broker
モバイルからAWS上のリソースへのアクセス認証と制御。
AWS上のリソースをモバイルから直接利用できる。(2 tier architecture)EC2なし構成ができる!
アクセス認証
OpenID Connect対応アイデンティティプロバイダーが利用可能
Facebook,Googleなどのアカウントを用いて認証可能
自前の認証基盤を利用することも可能
Developer Authenticated Identities
アクセス制御
認証あり、認証なし(ゲスト)ユーザにそれぞれのアクセス制御をIAMのRoleで割り当てができる。
Amazon Cognitoとは
活用事例
株式会社ガリバー 様
クルマとの双方向コミュニケーションサービス「DRIVE+」にてCognitoを認証基盤として採用。
Concrete Software,Inc
NHLホッケーターゲットスマッシュ(スマホアプリ)にて、ゲームデータの保存と認証に採用。
Amazon Cognitoとは
Cognitoの便利な機能
Cognitoストリーム(Kinessis連携)
同期ストアの同期、更新情報をKinessisで取り扱うことが可能に。
Push synchronization(SNS連携)
複数デバイスで使っている同期ストアが更新されるとAmazonSNSからサイレントプッシュ通知され、複数デバイスがクラウド上の同期ストアと同期を行う。
Dataset…
key value
1 Apple
2 Watermelon
3 Orange
Dataset…
key value
1 Apple
2 Watermelon
3 Strawberry
Amazon Cognito
new!
Amazon SNS
Dataset…
key value
1 Apple
2 Watermelon
3 Orange
PullPush
synchronizesynchronize
Push synchronizationMobile Push
Dataset…
key value
1 Apple
2 Watermelon
3 Strawberry
Dataset…
key value
1 Apple
2 Watermelon
3 Strawberry
料金(2015年3月22日 現在)
同期と容量に対して課金
容量
同期ストアの容量 1 GB につき毎月 0.15ドル
同期
同期オペレーション 1 万回につき 0.15ドル
Amazon SNS
Amazon SNSとは
Amazon Simple Notification Service
AWSのモバイルサービス
クラウド上からモバイルへのメッセージ配信サービス
特徴
マルチプロトコル対応
クロスプラットフォーム対応(プッシュ配信)
シンプル・スケーラブル
AWS Mobile SDKサポート
Amazon SNSとは
マルチプロトコル対応
プッシュ
Apple、Google、Fire OS、Windows デバイス対応
SMS, E-mail
テキストメッセージ
HTTP/s
任意の HTTP エンドポイントに配信
SQS(Amazon Simple Queue Service)
SNSからキューを登録
Amazon SNSとは
クロスプラットフォーム対応
異なるプラットフォームに対して、同じAPIで操作をサポート。
メッセージサイズはネィテブプラットフォームが上限
APNS(256B or 2KB)
GCM(4096B)
Amazon SNSとは
異なるプラットフォームのサポート ー 従来
APNS
GCM
WPNS
Hello
Hello
Hello
Hello
Hello
Hello
Amazon SNSとは
異なるプラットフォームのサポート ー Amazon SNS
APNS
GCM
WPNS
Hello
Hello
Hello
Hello
Amazon
SNS
Amazon SNSを使ってみる1
アプリケーションの登録
※事前にGoogle Cloud Messagingを許可する
プロジェクト(アプリ)のAPIキーの取得が必要
Amazon SNSを使ってみる2
アプリケーションに送信先デバイスを登録
GCMとの初期通信時に発行されるデバイストークン
(送信先のアドレスのようなもの)を登録
Amazon SNSを使ってみる2
アプリケーションに送信先デバイスを登録
GCMとの初期通信時に発行されるデバイストークン
(送信先のアドレスのようなもの)を登録
登録するとエンドポイントが生成されます。
Amazon SNSを使ってみる3
トピックの作成
(メッセージを複数デバイスに一括送信できるグループ)
Amazon SNSを使ってみる4
トピックにエンドポイントの追加( create subscription )
(一括送信するグループにデバイスを追加する)
Amazon SNSを使ってみる5
トピックにエンドポイントの追加( create subscription )
(一括送信するグループにデバイスを追加する)
Amazon SNSを使ってみる6
メッセージの送信
Amazon SNSを使ってみる6
メッセージの送信
APIでも可能です!
Amazon SNSを使ってみる7
App Topic
EndPoint
EndPoint
EndPoint
EndPoint
Subscription(PUSH)
Subscription(PUSH)
Subscription(mail)
Topic
Subscription(SMS)
Amazon SNSとは
SNSの便利な機能
メッセージの配信結果の確認(CloudWatch連携)
CloudWatch上で配信結果の確認が可能に
イベントの通知
登録したアプリケーションに、エンドポイントが追加、削除、更新された際にイベント通知。
料金(2015年3月22日 現在)
料金表
アプリの紹介とデモ
Amazon SNSでサーバー監視通知
Zabbixからのアラートをプッシュ通知にて受信。
ポップアップ表示、通知音、バイブレーションなどを用いてプッシュ通知をお知らせ。
プッシュ通知で受信したアラートを一覧表示。
プッシュ通知にはAmazon SNSを利用。
アラートの複数端末同期にAmazon Cognitoを利用。
※ 画像は開発中のサンプルです。
デモ
仕組み1
Amazon SNS
Amazon EC2
(Zabbix)
DeviceToken登録
仕組み1
Amazon SNS
Amazon EC2
(Zabbix)
PublishMobile
Push
仕組み2
Amazon SNS
Amazon EC2
(Zabbix)
Publish(対応開始)
Mobile
Push
#slack
機能紹介
アラートの一覧表示機能
アラートの状況、ホスト名、トリガー名を表示。
プッシュ受信と共にリアルタイムで表示。
エスカレーション通知機能(少し実装)
※Zabbixのエスカレーション機能は使用しません。
エスカレーション発生時に、メンバーに通知、状況を共有。
Slackへの投稿(未実装)
エスカレーション発生状況を自動でSlackに投稿。
アラート状況をクラウドと複数端末間での同期(Cognito)
SNSでプッシュが受信できなかった時の対策として
定期的にクラウドの同期ストアと同期。
仕組み3
Amazon EC2
(Zabbix)
Amazon Cognito
Sync
参考サイト Cognito
http://techlife.cookpad.com/entry/2014/07/29/173726
http://dev.classmethod.jp/cloud/aws/
http://aws.amazon.com/jp/cognito/
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-cognito-amazon-mobile-analytics
http://blog.takuros.net/entry/2015/01/20/070824
http://mobile.awsblog.com/
http://221616.com/gulliver/news/press/20140930-13992.html
http://media.amazonwebservices.com/jp/csd20140909/KEY-01-03.pdf
http://mobile.awsblog.com/post/Tx3LC2Y5I3MXF0K/Concrete-Software-uses-Amazon-Cognito-for-NHL-Hockey-Target-Smash
SNS
http://www.slideshare.net/AmazonWebServicesJapan/20130917-aws-meisterregenerateextrasnsmobilepushpublic?related=1
http://aws.amazon.com/jp/sns/
ご清聴ありがとうございました
Top Related