lambda × mobileの可能性
TRANSCRIPT
![Page 1: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/1.jpg)
Copyright © Classmethod, Inc.
Lambda × Mobile の可能性 2014.12.22 AWS Lambda Meetup #0
underscore Inc. 諏訪 悠紀
×
![Page 2: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/2.jpg)
諏訪 悠紀• アンダースコア株式会社 CTO • iOS / Android アプリ開発 / デザイン • AWSのモバイルへの活用
http://dev.classmethod.jp/author/suwa-yuki/ブログ
http://underscore-app.tumblr.com/アプリ
![Page 3: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/3.jpg)
AWS Mobile SDKの これまで
![Page 4: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/4.jpg)
モバイルから直接使える AWS サービス
認証 : Cognito データストア : DynamoDB ストレージ : S3 プッシュ通知 : SNS 行動分析 : Mobile Analytics データストリーミング : Kinesis 分散キュー : SQS
![Page 5: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/5.jpg)
2 Tier ではちょっと使いづらい•各サービスが疎結合 •サービス同士をつなぎ込むにはアプリへの実装 or サーバーが必要 •アプリに実装する場合は Android / iOS のそれぞれの実装が必要 •サーバーレスでなければ AWS Mobile SDK の真価が発揮されない
![Page 6: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/6.jpg)
そこで Lambda の登場!•イベントドリブン •サービス同士の連係が可能 •サーバーレス •モバイルで行わせたくない処理も実行可能
![Page 7: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/7.jpg)
モバイルアプリへの 活用例
![Page 8: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/8.jpg)
写真管理
•モバイルからS3で保存 •メタデータを抜き出してDynamoDBに保存 •モバイルからS3オブジェクトとメタデータを取得
![Page 9: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/9.jpg)
写真管理
ログイン
Credential 取得
写真ファイル 保存 / 取得
メタデータ取得
イベント発火
メタデータ保存
![Page 10: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/10.jpg)
Like 機能
• DynamoDBにToとFromを保存 • ToのユーザーとFromのユーザーを取得 • ToのユーザーにPush通知 •モバイルに他のユーザー情報へのアクセス権が不要(IDだけ分かればOK)
![Page 11: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/11.jpg)
Like 機能
ログイン
Credential 取得
To & From 保存
Push 通知
イベント発火
To に Publish
![Page 12: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/12.jpg)
キャンペーン配信•ゲームのイベント告知やクーポン配信など •モバイルからユーザー情報を
DynamoDBに保存 •ユーザー情報を見てSNS Topicを
Subscribe / Unsubscribe
![Page 13: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/13.jpg)
キャンペーン配信Credential 取得
ユーザー情報 保存 イベント発火
条件に応じて Subscribe
コンテンツ 取得
呼び出し
Publish
Push 通知
コンテンツ追加
![Page 14: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/14.jpg)
Lambda は モバイルアプリで 活用できそう!
![Page 15: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/15.jpg)
本当に サーバーレスで いけるのか?
![Page 16: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/16.jpg)
Lambda × Mobile のポイント•イベントドリブンではあるが、要件によってはイベントが足りない場合がある •モバイルから実行させたくない処理を担当させたい • RDSのデータの読み書き •アクセス権限の付与
![Page 17: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/17.jpg)
iOS から Lambda Functionを
InvokeAsync したい!
![Page 18: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/18.jpg)
しかし AWS SDK for iOS は
未対応
![Page 19: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/19.jpg)
Lambda に対応させてみた
1. AWS SDK for iOS リポジトリを Fork
2. Lambda に使うクラスを追加 • AWSLambda, AWSLambdaModel の追加
3. 既存のクラスの改修 • AWSService, AWSSignature の修正
4. API の呼び出しテスト • AWSLambdaTests の追加
![Page 20: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/20.jpg)
InvokeAsync が 何故か成功しない…
![Page 21: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/21.jpg)
“ 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の可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/22.jpg)
orz
![Page 23: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/23.jpg)
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の可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/24.jpg)
// InvokeAsync if ([path containsString:@"invoke-async"]) { path = [path stringByAppendingString:@"/"]; }
足りないところだけ追加
![Page 25: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/25.jpg)
InvokeAsync 成功!
![Page 27: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/27.jpg)
Lambda の課題•対応しているイベントが少ない -特に SNS のサポートが欲しい
• Function の実行結果を受け取れない -非同期で処理が行われるため - SQS や SNS の併用が必要
•バッチ処理ができない - S3 で状態管理などの実装が必要
![Page 28: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/28.jpg)
まとめ
• Lambda のモバイル活用は今後に期待 • AWS Mobile SDK も今後に期待 •今後も Developers.IO で Lambda × Mobile の情報を配信していきます
![Page 29: Lambda × Mobileの可能性](https://reader033.vdocuments.site/reader033/viewer/2022042522/55a2ca191a28ab146c8b46e6/html5/thumbnails/29.jpg)