34. ID プロバイダ
ゲストアクセス
独⾃自認証システム
ユニーク ID
Joe Anna Bob
デバイス
プラットフォーム
AWS サービス
複数の ID プロバイダをサポート
ID プロバイダと簡単に連携して認証
Amazon, Facebook, Twitter, Google,
OpenID Connect などに対応
ユニークなアイデンティティ
認証済ユーザに対してユニークIDを割り当て、
デバイスやプラットフォームをまたがって認
識識と管理理
Amazon Cognito Identity
Mobile
Analytics
S3 DynamoDB Kinesis
容易易なセキュリティのベストプラク
ティス実装
モバイルデバイスからAWSリソースへのセ
キュアなアクセスのためのやり取りをIAMと
連携して簡略略化
35. Amazon Cognitoの認証フロー
Amazon Cognito ID
(Temp Credentials)
Amazon
DynamoDB
End Users
Developer
App with
AWS Mobile
SDK
Access
to AWS
Services
Amazon Cognito
Identity Broker
User Name
Password
Amazon Cognito ID,
Temp Credentials
Amazon S3
Amazon Mobile
Analytics
Amazon Cognito
Sync Store
AWS
Management
Console
Token
Pool ID
Role ARNs
User Authentication
System
(Running on AWS or not)
Token
38. Amazon Cognitoの認証フロー
(Developer Authenticated Identities)
Amazon Cognito ID
(Temp Credentials)
Amazon
DynamoDB
End Users
Developer
App with
AWS Mobile
SDK
Access
to AWS
Services
Amazon Cognito
Identity Broker
Get OpenID Token
User Name
Password
Amazon Cognito ID,
Temp Credentials
Amazon S3
Amazon Mobile
Analytics
Amazon Cognito
Sync Store
AWS
Management
Console
OIDC Token
Pool ID
Role ARNs
独⾃自認証システム
(AWS上で稼働していなくてもOK)
OIDC Token
OIDC Token
49. Amazon Cognitoのセキュリティ
細やかなアクセス制御
IAM との連携で AWS リソースへの細かなアクセ
ス制御を実現
AWS Credentials の保護
必要な権限だけを付与された⼀一時的なクレデンシャル
を取得できるので、アプリにクレデンシャルを埋め込
まなくてよい
セキュリティのベストプラクティスを⽀支援
セキュリティトークンサービスと連携したり、トー
クンベンディングマシンを構築する必要はない
セキュアに AWS サービスを利利⽤用
EC2 S3 DynamoDB Kinesis
S3
DynamoDB
Get Delete Put
50. Concrete Software
Concrete Software has been making hit mobile games
like Jellyflop and PBA Bowling Challenge since 2003.
Amazon Cognitoによって、迅速
なゲーム開発が可能となり、ユー
ザに素晴らしいエクスペリエンス
提供も可能となりました
Keith A. Pichelman
CEO, Concrete Software
”
“ • クロスデバイス、クロスプラットフォームで
シームレスなユーザ体験の提供
• クラウドへゲームの状態を保存し、サーバレ
スでクロスデバイスに同期を実施
チャレンジ
解決策
• CognitoによりAWSリソースへのセキュアな
アクセスが可能に
• Cognito Syncはいかなるサーバサイドのイ
ンフラも必要とせずにクラウドへのデータ保
存に対する柔軟性を提供してくれ、デバイス
上でのキャッシュを実現
65. Amazon Cognito Sync クラウドへのデータ保存と同期
アプリのデータ、設定、状態などを保存
アプリやデバイスのデータをクラウドに保存でき、
ログイン後にマージされる
クロスデバイス、クロスプラットフォー
ムで同期
ユーサデータや設定をデバイスをまたいで同期
バックエンド不不要
スケーラブルで信頼性の⾼高いデータ同期基盤を簡
単に利利⽤用可能
User Data
Storage and
Sync
Any Platform
iOS/Android/FireOS
k/v data
Identity pool
67. Cognito Sync データモデル 例例
User情報
Dataset
ゲームとユーティリ
ティ、2種類アプリを
提供
Game情報
Dataset
Identitypool1
ユーティリティ
App
Game
App
AWS
Account
Dataset
Identity
Identity
Identity
Dataset
Dataset
Identity
Pool
1:60
1:n
1:20
DatasetDataset
Record
1:1024
You
Your App
Your App Users
User Data
Container
User Data
68. コード例例(Android)
// Cognito Sync client の初期化
CognitoSyncManager syncClient = new CognitoSyncManager(
getApplicationContext(),
Regions.AP_NORTHEAST_1, // Region
credentialsProvider);
//Datasetをオープンし、レコードを追加
Dataset dataset = syncClient.openOrCreateDataset("myDataset");
dataset.put("myKey", "myValue");
//同期処理理の実⾏行行
dataset.synchronize(new DefaultSyncCallback() {
@Override
public void onSuccess(Dataset dataset, List newRecords) {
//Your handler code here
}
});
74. Joe Anna Bob
High Scores
Joe 1500
Anna 800
Bob 750
Amazon DynamoDB
No SQL データベース
⾼高い信頼性、スケーラビリティ、低レイテ
ンシで安定した性能を兼ね備えた NoSQL
データベースサービス
DynamoDB Connector
• Object Mapper
• アプリ側のクラスが Amazon
DynamoDB テーブルにマッピング
• オブジェクトをテーブルに変換する
ことも、その逆も必要ない
75. Id isbn Title hardCover
1 22-22222 My First Book Yes
2 43-43234 My Favorite Book No
3 55-12345 My New Book Yes
Table: Bookstore
コード例例(Android)
@DynamoDBTable(tableName = "Bookstore")
public static class Book {
private int id;
private String isbn, title;
private Boolean hardCover;
@DynamoDBHashKey(attributeName = "id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@DynamoDBAttribute(attributeName="isbn")
public String getIsbn() {
return isbn;
}
...
}
76. コード例例(Android)
// Build a book object
Book book = new Book();
book.setId(17);
book.setIsbn("222-2222222222");
book.setTitle("Some Title");
book.setHardCover(true);
// Save book object to dynmaoDB
mapper.save(book);
// Update item and save object again
book.setTitle("Updated Title");
book.setHardCover(false);
mapper.save(book);
// Load another book
Book anotherBook = mapper.load(Book.class,7);
107. Amazon SNS
Mobile Push
Internet
Apple APNS
Google GCM
Amazon ADM
Windows WNS
and MPNS
Baidu CP
業界初!
Amazon SNS Mobile Push
世界中のユーザにクロスプラットフォームでプッシュ通知
個々の通知だけでなく多数の受信者への同報通知も可能
Android Phones and Tablets
Apple iPhones and iPads
Kindle Fire Devices
Android Phones and Tablets in China
iOS
Windows Desktop and Windows Phone Devices
115. Development/testing process
Develop SCM
commit Automated
build
trigger Automated
UI test
(simulators)
always
Is
milestone
?
no
Beta deploy
to
manual testers
Automated
UI test
(Device Farm)
yes
116. Development/testing process
Develop SCM
commit Automated
build
trigger Automated
UI test
(simulators)
always
Is
milestone
?
no
Beta deploy
to
manual testers
Automated
UI test
(Device Farm)
yes
PMease QuickBuild
• Javaベースのクロスプラットフォームな⾃自動ビルドサーバ
• AndroidとiOS向けの⾃自動ビルド
• HockeyAppとTestFlightを通じたベータ配布
• シミュレータに対するAppium UI テストの実⾏行行
• マイルストーンビルドはAWS Device Farmへ送付
117. Development/testing process
Develop SCM
commit Automated
build
trigger Automated
UI test
(simulators)
always
Is
milestone
?
no
Beta deploy
to
manual testers
Automated
UI test
(Device Farm)
yes
Appium
• 各種⾔言語で書かれたテストを実⾏行行可能なフレームワーク
• Ex: Ruby, Python, Java, JavaScript, PHP, C#
• 各⾔言語のテストランナーを利利⽤用
• Ex: JUnit for Java, NUnit for C#
• 既存のネイティブアプリ向けUIテスト⾃自動化フレームワークを利利⽤用
• UIAutomation – iOS
• UIAutomator – Android
• テストのための特別なビルドが不不要であり、テストしたビルドをそのまま出せる
118. Development/testing process
Develop SCM
commit Automated
build
trigger Automated
UI test
(simulators)
always
Is
milestone
?
no
Beta deploy
to
manual testers
Automated
UI test
(Device Farm)
yes
HockeyApp
• Android、iOSとWindowsへのベータ配布
• iOS – プロビジョニングプロファイルが必要
TestFlight
• iOSへのベータ配布
119. Development/testing process
Develop SCM
commit Automated
build
trigger Automated
UI test
(simulators)
always
Is
milestone
?
no
Beta deploy
to
manual testers
Automated
UI test
(Device Farm)
yes
139. easy ten
Mobile app that helps you learn
10 new, foreign words a day
Users have learned
170 000 000+
new words
1 200 000+
downloads
• Featured in 85+ countries
• Top 5 grossing apps overall (Russia)
• Top 8 grossing apps overall (Brazil)