Slide 1

Slide 1 text

Cognito + SNS + Zabbixで サーバー監視アプリを作ってみた JAWS-UG⼭形 芦野 光 トラック︓[Aceに聞け]

Slide 2

Slide 2 text

自己紹介 ¤ 芦野 光 ¤ 宮城県仙台市在住 ¤ 専門学生 ¤ JAWS-UG山形、仙台 ¤ AWS歴:6ヶ月 ¤ 専門学校 ¤ 東北電子専門学校 高度ITエンジニア科 所属(4年課程) ¤ 株式会社エスツー ¤ サーバーエンジニア(アルバイト勤務) ¤ 最近のできごと ¤ AWS麻雀はじめました

Slide 3

Slide 3 text

アジェンダ ¤ AWSを知ったきっかけ と AWSを使ったきっかけ ¤ Amazon Cognito ¤ Amazon SNS ¤ アプリの紹介とデモ

Slide 4

Slide 4 text

AWSを知ったきっかけ

Slide 5

Slide 5 text

AWSってなに︖ クラウド︖ VPS︖ IaaS︖ 参加する前 通販のAmazonがサーバ屋さん︖ PaaS︖

Slide 6

Slide 6 text

参加してみた

Slide 7

Slide 7 text

AWS便利︕︕ 参加した後

Slide 8

Slide 8 text

AWSを使ったきっかけ ¤きっかけは、学校の授業の課題 ¤ Androidのアプリ開発の授業。 ¤ 課題は「電話帳アプリ」の作成。

Slide 9

Slide 9 text

AWSを使ったきっかけ ¤課題の開発自体は順調でしたが・・・ ¤追加の仕様変更が。。 ¤クラウドと複数端末との同期機能︖知らない。。 ¤あれ、でも。

Slide 10

Slide 10 text

これ、AWSでもしかしたらできそう︕︖

Slide 11

Slide 11 text

探してみた

Slide 12

Slide 12 text

AWSを使ったきっかけ ¤ これ、AWSでもしかしたらできそう︕︖ ¤ 探してみる。 できそうな予感。

Slide 13

Slide 13 text

実装してみる

Slide 14

Slide 14 text

AWSを使ったきっかけ ¤できた! Amazon Cognito mobile client mobile client Sync Identity

Slide 15

Slide 15 text

Amazon Cognito

Slide 16

Slide 16 text

Amazon Cognitoとは ¤ Amazon Cognito ¤ AWSのモバイルサービス、2014年7⽉にリリース ¤ 提供している内容は⼤きく2つ ¤ Sync ¤ クラウド上にモバイルと同期できるデータストアを提供。 ¤ Identity Broker ¤ モバイルからAWS上へのリソースのアクセス認証と制御。 ¤ 提供しているリージョン ¤ US East (N. Virginia) ¤ EU (Ireland) ¤ AWS Mobile SDKサポート

Slide 17

Slide 17 text

Amazon Cognitoとは ¤ Sync ¤ クラウド上にモバイルと同期できるデータストアを提供。 ¤ DatasetというテーブルにKey/Value形式でのデータの保存。 ¤ オフラインでもローカルのデータが利⽤可能。 ¤ 同期時にコンフリクトの検知と発⽣時の処理実装が可能。 ¤ 複数デバイスをまたいだ同期が可能。

Slide 18

Slide 18 text

Amazon Cognitoとは ¤ Sync Identitypool Identity Identity Identity 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

Slide 19

Slide 19 text

Amazon Cognitoとは ¤ Sync – ⽤語 ¤ Identitypool ¤ アプリケーションのユーザアイデンティティを整理するコンテナ。 ¤ AWSアカウント1つにつき60個作成可能。 ¤ Identity ¤ ユーザアイデンティティ ¤ 複数のデバイスで共有可能。 ¤ 複数のDatasetを持つ。 ¤ Dataset(Key/Valueのテーブル,同期ストア) ¤ Dataset1つあたり、1MBまでのデータが保存可能 ¤ Key/Value形式、Keyの数は最⼤1024個 ¤ 保存できるデータ ¤ 英数字の⽂字列 ¤ バイナリデータはBase64でエンコードすることで保存可能。 ¤ 1ユーザーあたり、Datasetの合計サイズの上限は20MB

Slide 20

Slide 20 text

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 Pull Push synchronize

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Amazon Cognitoとは ¤ Sync Identity Pool…(App) Identity…(Device) Dataset… key value 1 Apple 2 Watermelon 3 Orange App Pull Push synchronize Dataset… key value 1 Apple 2 Watermelon 3 Strawberry Conflict Dataset… key value 1 Apple 2 Watermelon 3 Strawberry

Slide 23

Slide 23 text

Amazon Cognitoとは ¤ Syncのユースケース ¤ ゲームのセーブデータ。 ¤ アプリの設定情報。 ¤ 電話帳の複数端末での同期。

Slide 24

Slide 24 text

Amazon Cognitoとは ¤ Identity Broker ¤ モバイルからAWS上のリソースへのアクセス認証と制御。 ¤ AWS上のリソースをモバイルから直接利⽤できる。 (2 tier architecture)EC2なし構成ができる︕ ¤ アクセス認証 ¤ OpenID Connect対応アイデンティティプロバイダーが利⽤可能 ¤ Facebook,Googleなどのアカウントを⽤いて認証可能 ¤ ⾃前の認証基盤を利⽤することも可能 ¤ Developer Authenticated Identities ¤ アクセス制御 ¤ 認証あり、認証なし(ゲスト)ユーザにそれぞれのアクセス制御を IAMのRoleで割り当てができる。

Slide 25

Slide 25 text

Amazon Cognitoとは ¤ 活⽤事例 ¤ 株式会社ガリバー 様 ¤ クルマとの双⽅向コミュニケーションサービス 「DRIVE+」にてCognitoを認証基盤として採⽤。 ¤ Concrete Software,Inc ¤ NHLホッケーターゲットスマッシュ(スマホアプ リ)にて、ゲームデータの保存と認証に採⽤。

Slide 26

Slide 26 text

Amazon Cognitoとは ¤ Cognitoの便利な機能 ¤ Cognitoストリーム(Kinessis連携) ¤ 同期ストアの同期、更新情報をKinessisで取り扱うことが可能に。 ¤ Push synchronization(SNS連携) ¤ 複数デバイスで使っている同期ストアが更新されると AmazonSNSからサイレントプッシュ通知され、 複数デバイスがクラウド上の同期ストアと同期を⾏う。

Slide 27

Slide 27 text

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 Pull Push synchronize synchronize Push synchronization Mobile Push Dataset… key value 1 Apple 2 Watermelon 3 Strawberry Dataset… key value 1 Apple 2 Watermelon 3 Strawberry

Slide 28

Slide 28 text

料⾦(2015年3⽉22⽇ 現在) ¤ 同期と容量に対して課⾦ ¤ 容量 ¤ 同期ストアの容量 1 GB につき毎⽉ 0.15ドル ¤ 同期 ¤ 同期オペレーション 1 万回につき 0.15ドル

Slide 29

Slide 29 text

Amazon SNS

Slide 30

Slide 30 text

Amazon SNSとは ¤ Amazon Simple Notification Service ¤ AWSのモバイルサービス ¤ クラウド上からモバイルへのメッセージ配信サービス ¤ 特徴 ¤ マルチプロトコル対応 ¤ クロスプラットフォーム対応(プッシュ配信) ¤ シンプル・スケーラブル ¤ AWS Mobile SDKサポート

Slide 31

Slide 31 text

Amazon SNSとは ¤ マルチプロトコル対応 ¤ プッシュ ¤ Apple、Google、Fire OS、Windows デバイス対応 ¤ SMS, E-mail ¤ テキストメッセージ ¤ HTTP/s ¤ 任意の HTTP エンドポイントに配信 ¤ SQS(Amazon Simple Queue Service) ¤ SNSからキューを登録

Slide 32

Slide 32 text

Amazon SNSとは ¤ クロスプラットフォーム対応 ¤ 異なるプラットフォームに対して、同じAPIで操作をサポート。 ¤ メッセージサイズはネィテブプラットフォームが上限 ¤ APNS(256B or 2KB) ¤ GCM(4096B)

Slide 33

Slide 33 text

Amazon SNSとは ¤ 異なるプラットフォームのサポート ー 従来 APNS GCM WPNS Hello Hello Hello Hello Hello Hello

Slide 34

Slide 34 text

Amazon SNSとは ¤ 異なるプラットフォームのサポート ー Amazon SNS APNS GCM WPNS Hello Hello Hello Hello Amazon SNS

Slide 35

Slide 35 text

Amazon SNSを使ってみる1 ¤ アプリケーションの登録 ※事前にGoogle Cloud Messagingを許可する プロジェクト(アプリ)のAPIキーの取得が必要

Slide 36

Slide 36 text

Amazon SNSを使ってみる2 ¤ アプリケーションに送信先デバイスを登録 GCMとの初期通信時に発⾏されるデバイストークン (送信先のアドレスのようなもの)を登録

Slide 37

Slide 37 text

Amazon SNSを使ってみる2 ¤ アプリケーションに送信先デバイスを登録 GCMとの初期通信時に発⾏されるデバイストークン (送信先のアドレスのようなもの)を登録 登録するとエンドポイントが⽣成されます。

Slide 38

Slide 38 text

Amazon SNSを使ってみる3 ¤ トピックの作成 (メッセージを複数デバイスに⼀括送信できるグループ)

Slide 39

Slide 39 text

Amazon SNSを使ってみる4 ¤ トピックにエンドポイントの追加( create subscription ) (⼀括送信するグループにデバイスを追加する)

Slide 40

Slide 40 text

Amazon SNSを使ってみる5 ¤ トピックにエンドポイントの追加( create subscription ) (⼀括送信するグループにデバイスを追加する)

Slide 41

Slide 41 text

Amazon SNSを使ってみる6 ¤ メッセージの送信

Slide 42

Slide 42 text

Amazon SNSを使ってみる6 ¤ メッセージの送信 APIでも可能です︕

Slide 43

Slide 43 text

Amazon SNSを使ってみる7 App Topic EndPoint EndPoint EndPoint EndPoint Subscription(PUSH) Subscription(PUSH) Subscription(mail) Topic Subscription(SMS)

Slide 44

Slide 44 text

Amazon SNSとは ¤ SNSの便利な機能 ¤ メッセージの配信結果の確認(CloudWatch連携) ¤ CloudWatch上で配信結果の確認が可能に ¤ イベントの通知 ¤ 登録したアプリケーションに、エンドポイントが追加、削除、更 新された際にイベント通知。

Slide 45

Slide 45 text

料⾦(2015年3⽉22⽇ 現在)

Slide 46

Slide 46 text

料⾦表

Slide 47

Slide 47 text

アプリの紹介とデモ

Slide 48

Slide 48 text

Amazon SNSでサーバー監視通知 ¤ Zabbixからのアラートをプッシュ通知にて受信。 ¤ ポップアップ表⽰、通知⾳、バイブレーションなど を⽤いてプッシュ通知をお知らせ。 ¤ プッシュ通知で受信したアラートを⼀覧表⽰。 ¤ プッシュ通知にはAmazon SNSを利⽤。 ¤ アラートの複数端末同期にAmazon Cognitoを利⽤。 ※ 画像は開発中のサンプルです。

Slide 49

Slide 49 text

デモ

Slide 50

Slide 50 text

仕組み1 Amazon SNS Amazon EC2 (Zabbix) Device Token登録

Slide 51

Slide 51 text

仕組み1 Amazon SNS Amazon EC2 (Zabbix) Publish Mobile Push

Slide 52

Slide 52 text

仕組み2 Amazon SNS Amazon EC2 (Zabbix) Publish (対応開始) Mobile Push #slack

Slide 53

Slide 53 text

機能紹介 ¤ アラートの⼀覧表⽰機能 ¤ アラートの状況、ホスト名、トリガー名を表⽰。 ¤ プッシュ受信と共にリアルタイムで表⽰。 ¤ エスカレーション通知機能(少し実装) ¤ ※Zabbixのエスカレーション機能は使⽤しません。 ¤ エスカレーション発⽣時に、メンバーに通知、状況を共有。 ¤ Slackへの投稿(未実装) ¤ エスカレーション発⽣状況を⾃動でSlackに投稿。 ¤ アラート状況をクラウドと複数端末間での同期(Cognito) ¤ SNSでプッシュが受信できなかった時の対策として ¤ 定期的にクラウドの同期ストアと同期。

Slide 54

Slide 54 text

仕組み3 Amazon EC2 (Zabbix) Amazon Cognito Sync

Slide 55

Slide 55 text

参考サイト ¤ 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/

Slide 56

Slide 56 text

ご清聴ありがとうございました