lambda × mobileの可能性

Post on 13-Jul-2015

2.664 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Copyright © Classmethod, Inc.

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

underscore Inc. 諏訪 悠紀

×

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

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

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

AWS Mobile SDKの これまで

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

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

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

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

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

写真管理

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

写真管理

ログイン

Credential 取得

写真ファイル 保存 / 取得

メタデータ取得

イベント発火

メタデータ保存

Like 機能

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

Like 機能

ログイン

Credential 取得

To & From 保存

Push 通知

イベント発火

To に Publish

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

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

Subscribe / Unsubscribe

キャンペーン配信Credential 取得

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

条件に応じて Subscribe

コンテンツ 取得

呼び出し

Publish

Push 通知

コンテンツ追加

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

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

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

iOS から Lambda Functionを

InvokeAsync したい!

しかし AWS SDK for iOS は

未対応

Lambda に対応させてみた

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

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

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

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

InvokeAsync が 何故か成功しない…

“ 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. “

orz

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 …

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

足りないところだけ追加

InvokeAsync 成功!

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

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

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

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

まとめ

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

top related