アンダースコア (クラスメソッドの子会社)
モバイルから直接使えるAWSサービス
- Cognito(認証)
- DynamoDB(データストア)
- S3(ストレージ)
- SNS(プッシュ通知)
- Mobile Analytics(行動分析)
- Kinesis(データストリーmキング)
- SQS(分散キュー)
2 Tierではちょっと使いづらい
- サービスが粗結合
- 実装がつらい
- アプリに実装する場合はAndroid iOSのそれぞれの実装が必要
- サーバーレスでなければSDKの真価が発揮できない
そこでLambda
- イベントドリブン
- サービス同士の連携
- サーバーレス
写真管理
- モバイルからS3で保存
- メタデータを抜き出してDynamoDB
- モバイルからS3オブジェクトとメタデータを取得
構成
Credential取得(顔本尼先生のアカウント) 写真ファイルを保存し取得→イベント発火→ラムダ メタデータ取得→メタデータ保存→ラムダ
Like機能
- 顔本のいいね的なアレ
- DynamoDBにToとFromを保存
- EC2を立てなくても機能が作れる
キャンペーン配信
- イベント告知やクーポン配信など
- モバイルからユーザー通信をDynamoDBに送信
Lambdaがモバイルアプリで活用できそう
でも本当にサーバーレスでいけるの?
- イベントドリブンではあるが、要件によってはイベントが足りない
- モバイルから実行させたくない処理
- RDSのデータ読み書き
- アクセス権限付与(Lambdaを使うことで)
つまり、iOSからLambda FunctionをInvokeAsyncしたい人生だった
でも AWS SDK for iOSは未対応 →Forkして実装を修正する力業
http://aws.amazon.com/jp/sdkforios/
なぜかInvokeAsyncが成功しない
課題
- 対応しているイベントが少ない(SNSのサポート)
- Functionの実行結果を受け取れない
- 非同期で処理が行われている
- SQSやSNSの併用
- バッチ処理ができない
- S3で状態管理などの実装が必要
まとめ
- Lambdaのモバイル活用は今後に期待
- AWS Mobile SDKも今後に期待