29
Copyright © Classmethod, Inc. Lambda × Mobile の可能性 2014.12.22 AWS Lambda Meetup #0 underscore Inc. 諏訪 悠紀 ×

Lambda × Mobileの可能性

Embed Size (px)

Citation preview

Page 1: Lambda × Mobileの可能性

Copyright © Classmethod, Inc.

Lambda × Mobile の可能性 2014.12.22 AWS Lambda Meetup #0

underscore Inc. 諏訪 悠紀

×

Page 2: Lambda × Mobileの可能性

諏訪 悠紀• アンダースコア株式会社 CTO • iOS / Android アプリ開発 / デザイン • AWSのモバイルへの活用

http://dev.classmethod.jp/author/suwa-yuki/ブログ

http://underscore-app.tumblr.com/アプリ

Page 3: Lambda × Mobileの可能性

AWS Mobile SDKの これまで

Page 4: Lambda × Mobileの可能性

モバイルから直接使える AWS サービス

認証 : Cognito データストア : DynamoDB ストレージ : S3 プッシュ通知 : SNS 行動分析 : Mobile Analytics データストリーミング : Kinesis 分散キュー : SQS

Page 5: Lambda × Mobileの可能性

2 Tier ではちょっと使いづらい•各サービスが疎結合 •サービス同士をつなぎ込むにはアプリへの実装 or サーバーが必要 •アプリに実装する場合は Android / iOS のそれぞれの実装が必要 •サーバーレスでなければ AWS Mobile SDK の真価が発揮されない

Page 6: Lambda × Mobileの可能性

そこで Lambda の登場!•イベントドリブン •サービス同士の連係が可能 •サーバーレス •モバイルで行わせたくない処理も実行可能

Page 7: Lambda × Mobileの可能性

モバイルアプリへの 活用例

Page 8: Lambda × Mobileの可能性

写真管理

•モバイルからS3で保存 •メタデータを抜き出してDynamoDBに保存 •モバイルからS3オブジェクトとメタデータを取得

Page 9: Lambda × Mobileの可能性

写真管理

ログイン

Credential 取得

写真ファイル 保存 / 取得

メタデータ取得

イベント発火

メタデータ保存

Page 10: Lambda × Mobileの可能性

Like 機能

• DynamoDBにToとFromを保存 • ToのユーザーとFromのユーザーを取得 • ToのユーザーにPush通知 •モバイルに他のユーザー情報へのアクセス権が不要(IDだけ分かればOK)

Page 11: Lambda × Mobileの可能性

Like 機能

ログイン

Credential 取得

To & From 保存

Push 通知

イベント発火

To に Publish

Page 12: Lambda × Mobileの可能性

キャンペーン配信•ゲームのイベント告知やクーポン配信など •モバイルからユーザー情報を

DynamoDBに保存 •ユーザー情報を見てSNS Topicを

Subscribe / Unsubscribe

Page 13: Lambda × Mobileの可能性

キャンペーン配信Credential 取得

ユーザー情報 保存 イベント発火

条件に応じて Subscribe

コンテンツ 取得

呼び出し

Publish

Push 通知

コンテンツ追加

Page 14: Lambda × Mobileの可能性

Lambda は モバイルアプリで 活用できそう!

Page 15: Lambda × Mobileの可能性

本当に サーバーレスで いけるのか?

Page 16: Lambda × Mobileの可能性

Lambda × Mobile のポイント•イベントドリブンではあるが、要件によってはイベントが足りない場合がある •モバイルから実行させたくない処理を担当させたい • RDSのデータの読み書き •アクセス権限の付与

Page 17: Lambda × Mobileの可能性

iOS から Lambda Functionを

InvokeAsync したい!

Page 18: Lambda × Mobileの可能性

しかし AWS SDK for iOS は

未対応

Page 19: Lambda × Mobileの可能性

Lambda に対応させてみた

1. AWS SDK for iOS リポジトリを Fork

2. Lambda に使うクラスを追加 • AWSLambda, AWSLambdaModel の追加

3. 既存のクラスの改修 • AWSService, AWSSignature の修正

4. API の呼び出しテスト • AWSLambdaTests の追加

Page 20: Lambda × Mobileの可能性

InvokeAsync が 何故か成功しない…

Page 21: Lambda × Mobileの可能性

“ The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. “

Page 22: Lambda × Mobileの可能性

orz

Page 23: Lambda × Mobileの可能性

POST /2014-11-13/functions/helloLambda/invoke-async/

content-length:19 content-type:binary/octet-stream …

POST /2014-11-13/functions/helloLambda/invoke-async

content-length:19 content-type:binary/octet-stream …

Page 24: Lambda × Mobileの可能性

// InvokeAsync if ([path containsString:@"invoke-async"]) { path = [path stringByAppendingString:@"/"]; }

足りないところだけ追加

Page 25: Lambda × Mobileの可能性

InvokeAsync 成功!

Page 26: Lambda × Mobileの可能性

https://github.com/suwa-yuki/aws-sdk-ios

Page 27: Lambda × Mobileの可能性

Lambda の課題•対応しているイベントが少ない -特に SNS のサポートが欲しい

• Function の実行結果を受け取れない -非同期で処理が行われるため - SQS や SNS の併用が必要

•バッチ処理ができない - S3 で状態管理などの実装が必要

Page 28: Lambda × Mobileの可能性

まとめ

• Lambda のモバイル活用は今後に期待 • AWS Mobile SDK も今後に期待 •今後も Developers.IO で Lambda × Mobile の情報を配信していきます

Page 29: Lambda × Mobileの可能性