Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

  • View
    699

  • Download
    12

  • Category

    Internet

Preview:

Citation preview

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/

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