...

Amazon SNS Mobile Push

by user

on
Category: Documents
12

views

Report

Comments

Transcript

Amazon SNS Mobile Push
Migrating Apps from Parse to AWS
Keisuke Nishitani (@Keisuke69)
Amazon Web Services Japan K.K.
Jul 05, 2016
Profile
Keisuke Nishitani
Solutions Architect, Amazon Web Service Japan K.K
✤ ソリューションアーキテクト
✤ クラウドを使ったアプリ開発とかモバイル開発の話しをよくします
✤ モバイルニンジャ1号機
✤ RESTおじさん
✤ Lambda Wizards
✤ 餃子の王将エヴァンジェリスト(自称)
✤ 音楽が好きです、フジロッカーです、今年も行きます
✤ でもサマソニも毎年行きます
✤ 小説大好き、マンガ大好き、空想好き
✤ ブログ: http://keisuke69.hatenablog.jp/
@Keisuke69
Keisuke69
Keisuke69x
Keisuke69
Keisuke69
AWS Black Belt Online Seminer へようこそ!
✤ 質問を投げることができます!
✤Adobe Connect のチャット機能を使って、質問を書き込んでください。(書き
込んだ質問は、主催者にしか見えません)
✤Twitterへツイートする際はハッシュタグ #awsblackbelt をご利用ください。
①画面右下の
チャットボックス
に質問を書き込ん
でください
②吹き出しマーク
で送信してくださ
い
内容についての注意点
✤ 本資料では2016年7月5日時点のサービス内容および価格についてご
説明しています。最新の情報は AWS 公式ウェブサイト
(http://aws.amazon.com) にてご確認ください。
✤ 資料作成には十分注意しておりますが、資料内の価格と AWS 公式
ウェブサイト記載の価格に相違があった場合、AWS 公式ウェブサイ
トの価格を優先とさせていただきます。
✤ 価格は税抜表記となっています。日本居住者のお客様がサービスを使
用する場合、別途消費税をご請求させていただきます。
AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with
the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this
document is provided only as an estimate of usage charges for AWS services based on certain information that you have
provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.
will shutdown Jan 28, 2017
Recommended timeline by Parse
✤ April 28, 2016
✤Data migrated to a self-hosted MongoDB.
✤ July 28, 2016
✤Finish setting up your self-hosted Parse Server and release a new app pointing
to it.
✤ January 28, 2017
✤Parse shutdown.
AWSに移行するメリット
✤ モバイルアプリ開発に利用可能なサービスが提供されている
✤Amazon SNSなどParseが提供している機能相当のサービスを提供
✤その他にも、実デバイスでのテストを可能にするAWS Device FarmやAPIの提
供・管理を容易にするAmazon API Gateway / AWS Lambdaなどのサービスも
提供
✤ 自前で構築した場合でも運用の効率化・自動化ができる
✤オートスケーリング
✤APIを利用した運用作業の自動化
✤Elastic BeanstalkやCloudFormationを利用した構築作業の自動化
マイグレーションの選択肢
✤ Parse ServerとMongoDBをAWS上でセットアップし、稼働させる
✤Parse ServerはAWS Elastic Beanstalkを利用してセットアップすることも可能
✤MongoDBは自前で用意するだけでなくmLabなどのサービス利用も可能
✤ Parse PushはAmazon SNS mobile pushへ
✤ Parse AnalyticsはAmazon Mobile Analyticsへ
✤ Parse UsersはAWS Cognito User Poolsへ
Parse Server
✤ Parse終了に伴い、ParseがサービスのバックエンドをOSSとして公
開したもの
✤ Node.js 4.3とMongoDBの2.6.X/3.0.Xが必要
✤ サービス版と全く同一のものが利用できるわけではない
✤AnalyticsやJobsなどが未サポート
✤Cloud Codeが同一ホスト上で稼働
✤Push通知ではスケジュール機能やレポート機能が未サポート
✤詳細はコンパチビリティガイドを参照
✤ 可用性やスケーラビリティは自身で考えて確保する必要がある
移行のステップ
✤ Parse DBから用意したMongoDBへデータ移行
✤ ローカルでParse Serverをセットアップし移行したDBを使ってテスト
✤ AWS上でParse Serverをセットアップしテスト
✤ アクセス先を切り替えたアプリをリリース
✤ 詳細は以下のリンク先を参照
https://parse.com/migration
AWS Elastic Beanstalk
を使用したParse Serverのセット
アップ
AWS Elastic Beanstalk
インフラ構成の構築・アプリデプロイの自動化サービス
✤特徴 (http://aws.amazon.com/jp/elasticbeanstalk/)
✤速く簡単にアプリケーションをデプロ
イ可能
✤インフラストラクチャの準備&運営か
らアプリケーションスタックの管理ま
で自動化
✤Auto Scaling によりコストを抑えなが
らスケーラビリティを確保
✤Java, PHP, Ruby, Python,
Node.js, .NET, Docker などに対応
✤価格体系 (http://aws.amazon.com/jp/elasticbeanstalk/pricing/)
✤追加料金なし
✤アプリケーションの保存、実行に必要
なAWSリソース (EC2, S3, RDS,
DynamoDB など) に対してのみ課金
Elastic Beanstalkを利用したParse Serverの実行
✤ 以下のリンク先をクリックし、Parse ServerをElastic Beastalkで起動
https://console.aws.amazon.com/elasticbeanstalk/home?region=us-east1#/newApplication?applicationName=ParseServer&solutionStackName=Node.js&tierName=WebS
erver&instanceType=t2.small&sourceBundleUrl=https://s3.amazonaws.com/elasticbeanstalksamples-us-east-1/eb-parse-server-sample/parse-server-example.zip
✤ アプリケーション名を設定し、「Review & Launch」をクリックするだけ
✤ Parse Server用のEC2インスタンスが設定されデプロイされる
MongoDBのセットアップ(mLab利用)
✤ mLabはAWS上で動かすMongoDBをサービスとして提供
✤もちろん、MongoDBインスタンスを手動でセットアップするのも問題なし
※MongoDB on AWSに関する参考資料
http://www.slideshare.net/AmazonWebServicesJapan/black-belt-online-seminar-awsmongodb
✤ データ移行にはParse DashboardのMigrateオプションを利用すると簡
単
MongoDBのセットアップ(mLab利用)
✤
✤
✤
✤
✤
mLabにサインアップ
「Create new」をクリックし、新規データベースを作成
「Cloud Provider」としてAWSを選択し、自身の環境にあわせてPlanを選択
Single-nodeの0.5GBが無償枠として提供されている
任意の名前をつけ「Create new MongoDB deployment」をクリック
MongoDBのセットアップ(mLab利用)
✤ 作成したデータベースをクリックし、ユーザを追加
Elastic Beanstalkの設定
✤ 「Configuration」から「Software Configuration」を選択
✤ Environment Propertiesの各値を自身の値に変更する
AWS Mobileサービス
AWS Mobile サービス
あなたのモバイルアプリ
ゲーム
ユーティリティ
ファイナンス
ソーシャル
エンターテインメント
AWS Mobile SDK
AWS SDK for Android
AWS SDK for iOS
AWS SDK for Unity
AWS SDK for JavaScript
モバイルに最適化
されたサービス
Cognito
Mobile Analytics
SNS Mobile Push
Device Farm
API Gateway
SES
Lambda
モバイルに最適化
されたコネクタ
Kinesis
コアとなるサービス群
ストレージ
DynamoDB
データベース
S3
SQS
キュー
グローバルインフラ
メール
コンピュート
ネットワーク
AWS Mobile Hub
SNS Mobile Push
Cognito
Lambda
Mobile Analytics
Device Farm
CloudFront
S3
AWS Mobile Hub
✤ AWS上でモバイルアプリを作成する最も簡単な方法
✤ ユーザサインインといった典型的なユースケースの選択と
設定
✤ 自動で必要なAWSサービスをプロビジョニング
✤ iOSとAndroid向けにプロビジョニングされたサービスを
使って実際に機能するクイックスタートアプリを生成
✤ AWS Mobile Hub自体のご利用は無料
※利用する各サービスの費用はかかります
プロジェクトの作成と機能の追加
例:User Sign-in
✤ ユーザがどのようにサインインするか設
定:
✤ サインインなし、オプショナルもしくは必
須
✤ サインインプロバイダを設定:
✤ Facebook (Google, Twitter, Amazon etc)
✤ 独自のシステム(認証基盤)
✤ クイックスタート用アプリにサインイン画
面を追加
Powered by Amazon Cognito Identity
例:Push通知
✤ アプリへのプッシュ通知
✤iOS/Android
✤1:1 もしくはトピック
✤ クイックスタートアプリでは以下の機能
が含まれる
✤通知のEnable/Disable
✤SNSを使ったトークンの自動登録
✤サブスクライブするトピックの選択
Powered by Amazon SNS
例:Cloud Logic
✤ バックエンドのコードを実行
✤ モバイルアプリから直接呼び出し
✤ JavaScript、Python、Javaに対応
✤ コードを書くだけでよく、インフラの
管理不要
Powered by AWS Lambda
スターターアプリのダウンロード
AWS Mobile SDK
✤ Mobile OS へ最適化されたAWS SDK
✤ オンライン・オフラインを自動でハンドリ
ング
✤ ローカルオフラインキャシュを利用するアーキ
テクチャ
✤ メモリフットプリントの削減
✤ 各プラットフォームのエンハンスに追従
iOS
Xamarin
Android
Fire OS
Unity
Parse PushからAmazon SNSへの
移行
Amazon SNS Mobile Push
✤世界中のユーザにクロスプラットフォームでプッシュ通知
✤個々の通知だけでなく多数の受信者への同報通知も可能
iOS
Apple iPhones and iPads
Apple APNS
Google GCM
Internet
Amazon SNS
Mobile Push
Baidu CP
Amazon ADM
Windows WNS
and MPNS
Android Phones and Tablets
Android Phones and Tablets in China
Kindle Fire Devices
Windows Desktop and Windows Phone Devices
Step 1: Parse Pushデータのエクスポート
✤ Parseのコンソールにログインし、アプリケーションを選択
✤ Core > Browserと進み、Installationを選択
✤ 右上のEditをクリック
✤ Export this dataを選択
Step 1: Parse Pushデータのエクスポート
✤ Exportをクリック
✤ しばらくするとJSON形式でエクスポートされたデータ(Zipファイ
ル)のダウンロードリンクがメールで届く
Step 1: Parse Pushデータのエクスポート
✤ エクスポートされたJSON
ファイルをダウンロードし、
保存
✤ エクスポートされたデータ
には以下が含まれる
- deviceToken
- deviceType
- channels
Step 2: APNSとGCMのクレデンシャル取得
✤ Parseを利用する際に作成したAPNSとGCM(もしくはどちらか)の
クレデンシャルを取得する
✤iOSアプリケーション向け(APNS): Amazon SNSは.p12 push certificateを使
用するが、これは自身のMacのKeychainからエクスポート可能。もし.p12を
持っていないならこちらのチュートリアルのStep1を参照
✤Androidアプリケーション向け(GCM): Parseのアプリに紐付けているGoogle
Developers ProjectのAPI(Server)Keyを使う必要あり
✤Windowsアプリケーション向け(WNS): こちらの手順に従ってClient secret
とPackage Security Identifier (SID)を渡す必要あり
✤ AWS Mobile Hubを利用してSNSリソースを作成するのに利用するた
め、これらのクレデンシャルを保存しておく
Step 3: AWSリソースの作成
✤ マネージメントコンソール上でAWS Mobile Hubを選択する
✤ 「Get Started」を選択
Step 3: AWSリソースの作成
✤ 「First things first…」の内容を確認
✤ パーミッションを許可するため「Yes, grant permissions」をクリック
Step 3: AWSリソースの作成
✤ 「Create new mobile project」を選択し、プロジェクト名を入力(例
:Parse Migration)
✤ プロジェクトが作成された後、「Push Notifications」のfeatureを追加
Step 3: AWSリソースの作成
✤ 「Click Enable push」をクリックし、プラットフォームを選択
✤ 各プラットフォームのクレデンシャルをアップロードし、「Save
changes」をクリック
Step 3: AWSリソースの作成
✤ Mobile Hubのコンソールの左パネルでResourcesをクリック
✤ Amazon SNS Platform Applicationsで、ハイライトされた名前をコ
ピーしテンポラリの場所に保存
✤ Amazon SNS Topicsで、トピック名をコピーしテンポラリの場所に保
存
Step 3: AWSリソースの作成
✤ 完全修飾なSNSのplatform application名は以下のようになり、ハイラ
イトされた箇所がStep 4で移行ツールに渡すアプリケーション名にな
る
arn:aws:sns:us-east1:xxxxxxxxxxxx:app/APNS/parse_MOBILEHUB_1768078787
Step 3: AWSリソースの作成
✤ 移行ツールの利用にはAWSクレデンシャルが必要なため、事前に取得
する
✤ 以下のリンクからAWSクレデンシャルコンソールにアクセス
https://console.aws.amazon.com/iam/home?region=us-east1#security_credential
✤ 「Continue to Security Credentials」をクリック
Step 3: AWSリソースの作成
✤ 「Access Keys (Access Key and Secret Access Key)」をクリック
✤ 「Create New Access Key」をクリック
Step 3: AWSリソースの作成
✤ 「Create Access Key」で「Show Access Key」を選択
✤ 「Access Key ID」と「Secret Access Key」の両方をコピーし保存
Step 4: Parse Pushデータのインポート
✤ 以下のリンクからParse Push migration toolをダウンロード
https://s3.amazonaws.com/sns.region/SNSImportTool.jar
✤ 移行ツールは自分のMac/PCから実行可能なスタンドアロンjarファイル
✤ 前のステップで集めた情報をパラメータ形式でツールに渡す
✤ Javaの実行環境が必要
✤ 以下のように必要なオプションに適切な値を指定してコマンド実行
java -jar SNSImportTool.jar -s -f <PATH_TO_EXPORTED_PARSE_INSTALLATION_.JSON_FILE>
--apnsName <APNS_PLATFORM_APP_NAME_STEP>
--gcmName <GCM_PLATFORM_APP_NAME_STEP>
--wnsName <WNS_PLATFORM_APP_NAME_STEP>
--topicName <SNS_TOPIC_NAME_STEP>
--awsaccess <AWS_KEY_ID_STEP>
--awssecret <SECRET_ACCESS_KEY_STEP>
移行ツール
✤ 指定されたPlatformApplicationを検証
✤ PlatformEndpointをエクスポートされたJSONファイル内のユニーク
なトークンごとに作成
✤ ユニークなchannelごとにSNS Topicを作成し、これらのTopicに対し
てPlatformEndpointを登録
✤ 「parse_alldevices」というTopicを作成し、全てのPlatformEndpoint
を登録
Parse Pushとの対応
機能
Parse Push
Amazon SNS
サブスクリプション
Yes - channel
Yes - topic
高度なターゲティング
Yes – オブジェクト、ユーザ、クエリ、ジオポイント No
カスタムセグメント
Yes – Saved Audiences
No
スケジュール通知
Yes (Android/Windowsのみ)
No
A/B テスト
Yes – Push Experiments
No
Pushのローカライズ
Yes
No
バッジインクリメント
Yes – (iOSのみ)
No
期限設定
Yes
Yes
バックグラウンド/サイレントPush
Yes
Yes
サウンド
Yes
Yes
キャンペーン
Yes
No
Token Feedback
No
Yes
Token/Endpoint イベントトリガー
Yes
Delivery Success/Failureの100%ロ
グ出力
No (“Generic” Push Delivery Reportのみ)
Yes
Yes (ターゲットしたendpointごとにsuccess/failureを100%ログ
出力)
Parse AnalyticsからAmazon
Mobile Analyticsへの移行
Amazon Mobile Analytics
 利用状況に関するデータを大規模に収集、自動的に可視化
アプリケーション側はAmazon Mobile SDKを組み込むだけ
 生データをS3/Redshiftへ自動エクスポート可能
既存のユーザマスタの突き合わせ等によるより深い分析が可能
CSVでのダウンロードも可能
 高速かつスケーラブル
データを受け取ったら60分以内にレポート反映
数百万のユーザーからの数十億イベント/日を収集・処理可能
 クロスプラットフォーム
各種デバイス、OS(Android, iOS, FireOS)からデータを送信可能
AWS SDK for JavaScriptでもサポート
ビジネス上重要な指標
1. Monthly Active Users
(MAU)
2. Daily Active Users (DAU)
3. New Users,
4. Daily Sessions,
5. Sticky Factor,
6. 1-Day Retention,
7. Avg. Revenue per DAU,
8. Daily Paying Users,
9. Avg. Paying DAU
継続率のトラッキング
ユーザの継続率はマーケティ
ング、新機能、UI変更やアプ
リ更新の効果を測る際の重要
な指標
日次/週次でユーザ再訪率に
関する4つのチャートを提供
カスタムイベントのトラッキング
アプリ固有のアクションに関して行動分析
が可能
特定イベントの発生頻度に関するレポート
を提供。各イベントに属性やメトリックを
追加可能。
サンプル
Track the number of
Likes/Shares, per article,
in a news app
In-app item popularity in a
shopping app
Number of songs played,
per user session, in a
music app
Understand player
abort rates per level,
in a game
Amazon Mobile Analyticsの利用
✤ Amazon SNSと同様の手順でAWS Mobile Hubを利用してプロジェク
トを作成
✤ 「App Analytics」のfeatureを追加
Amazon Mobile Analyticsの利用
✤ 「Add analytics」を選択し、「Save changes」をクリック
Amazon Mobile Analyticsの利用
✤ 左パネルから「Build」を選択し、対象プラットフォームを選択する
Parse Analyticsとの対応
Feature
Parse Analytics (Client-side)
Amazon Mobile Analytics
Active Users
Yes - Daily Active Users (DAU), Weekly Active
Users (WAU), Monthly Active Users (MAU), and
Installations
Yes - Daily Active Users (DAU), Monthly Active
Users (MAU), and Installations
Sessions
Yes – App Opens
Yes - Session Count and Average Sessions per
Daily Active User
Custom Events
Yes
Yes
Revenue
No
Yes - Average Revenue per Daily Active User
(ARPDAU) and Average Revenue per Paying Daily
Active User (ARPPDAU)
Retention
Yes
Yes - Day 1, 3, and 7 Retention and Week 1, 2,
and 3 Retention
Sticky Factor
No
Yes - DAU divided by MAU
Console Reports
Yes - Overview, Audience, Events, Saved/Recent
Queries
Yes - Overview, Active Users, Sessions, Retention,
Revenue, and Custom Events
Download Reports
Yes - CSV format
Yes - CSV format
Auto Export
No
Yes - Amazon Simple Storage Service (Amazon S3)
bucket and Amazon Redshift cluster
Amazon Cognito User Pools
Amazon Cognito Identity User Pools (Beta)
ユーザ管理を簡単に
モバイルおよび Web アプリに
サインアップとサインインの機
能を簡単に追加
マネージド型
ユーザディレクトリ
数億のユーザまでスケールす
るユーザディレクトリを作成・管
理するシンプル、セキュア、低
コストでフルマネージドなサー
ビス
拡張されたセキュリティ機能
電話番号や email アドレスの
検証と多要素認証の提供
幅広いユーザシナリオ
ユーザのサインアップと
サインイン
Email もしくは
電話番号による確認
パスワード紛失
ユーザプロファイル
SMS ベースの MFA
Email、電話番号もしくはユーザ名とパスワードを使用したサインアップ
サインアップ後のサインイン
アカウントを確認するための Email アドレスや電話番号の検証
パスワードを紛失した場合にユーザは自分自身でパスワード変更可能
カスタム属性を含むユーザプロファイルの取得と更新
有効にすると、サインアップ、パスワード紛失におけるフローの一環としてSMS を通じ
た確認コードによる多要素認証(MFA)を利用可能
幅広い管理者シナリオ
ユーザプールの
作成と管理
ユーザプール内の
ユーザ管理
Email と電話番号の確認
AWS アカウント内に複数のユーザプールを作成、構成、削除可能
ユーザプール内の特定ユーザのリスト、検索、アクション実行
アカウントの有効化前に SMS を通じてユーザの email アドレスと電話番号を検証す
る設定(SMS経由)
AWS Lambda による
カスタマイズ
ワークフローをカスタマイズするために AWS Lambda のファンクションを作成
パスワードポリシーの
セットアップ
最小文字数、大文字、特殊文字を含めるといったパスワード要件のコントロール
属性の定義
必要な属性の選択とカスタムユーザ属性の定義
セキュアなサインインを簡単に
Amazon Cognito
サードパーティのアイデ
ンティティプロバイダによ
る認証
Sign in with
Facebook
Or
Username
User Pools
Password
Sign In
Or
ゲストアクセス
Start as a guest
Photo credit: rolands.lakis via VisualHunt.com / CC BY
資料の配置場所
✤ AWS クラウドサービス活用資料集
✤http://aws.amazon.com/jp/aws-jp-introduction/
✤ AWS Solutions Architect ブログ
✤最新の情報、セミナー中のQ&A等が掲載されています
✤http://aws.typepad.com/sajp/
公式Twitter/Facebook
AWSの最新情報をお届けします
検索
@awscloud_jp
もしくは
http://on.fb.me/1vR8yWm
最新技術情報、イベント情報、お役立ち情報、
お得なキャンペーン情報などを日々更新しています!
Fly UP