Iot時代のサービス  <AWS  Lambda>事始め
アイレット株式会社
2014.02.21
cloudpack
⽐比企  宏之
●  ⽐比企  宏之  (ひき  ひろゆき)
●  cloudpack  グループリーダー
●  JAWS-‐‑‒UG⼤大阪⽀支部⻑⾧長
●  JAWS-‐‑‒UG関⻄西エリアリーダー(関⻄西エリア取り纏め)
●  JAWS-‐‑‒UG  初代(唯⼀一)MVP  受賞
●  好きなAWSサービス  :  AWS  Direct  Connect
              @unioce
              facebook.com/hiroyuki.hiki
趣味  ガンダムとアクアリウム
10,000社を超えるパートナーの中で、
最上位のパートナーである
APNプレミアコンサルティングパートナー
に3年年連続認定
IoTとは?
「モノのインターネット」(Internet  of  Things:IoT)
コンピュータなどの情報・通信機器だけでなく、
世の中に存在する様々なモノに通信機能を持たせ、
インターネットに接続したり相互に通信することにより、
自動認識や自動制御、遠隔計測などを行うこと。
(Internet  of  Everything:IoE)
IoTにさらに⼈人も含めた概念念。
IoTとは?
「モノのインターネット」(Internet  of  Things:IoT)
コンピュータなどの情報・通信機器だけでなく、
世の中に存在する様々なモノに通信機能を持たせ、
IoTに向いているAWSのサービスは
⾊色々ありますが
今回はLambdaを紹介。
AWS Lambdaとは?
•サーバーの負荷を気にせずインフラの管理理不不要(
    AWS側が裏裏で⾃自動でスケールアウトしてくれる)
•使った分だけの課⾦金金(リクエスト数+(時間✖️メモリ))
•課⾦金金は100ミリ秒単位
•実装⾔言語はNode.js(今は)でLambdaファンクションを
    コーディングしデプロイするだけで使⽤用可能。
•AWS上の特定のサービスのイベントやデータを処理理
AWS Lambdaの活用ポイント
•S3へのファイル操作が⾏行行われた時の処理理
•DinamoDBでデータ操作が⾏行行われた時の
  ストアドプロシージャとして
•スマフォアプリのバックエンド(BaaS)として
•キネシスに流流れ込んできた機器などのデータの処理理
AWS Lambdaの大事なポイント
•対応イベント(データ)
•Lambdaファンクション
•pushモデル  と  pullモデル  という利利⽤用形態
•呼び出し側  (invocation  role)  と  実⾏行行側  (
    excution  role)  のIAMロールの設定
対応イベント
•AWS  SDK
•Amazon  S3
•Amazon  DynamoDB
•Amazon  Kinesis
Lambdaファンクション(何が出来るの?)
•Node.jsの関数で出来る事は⼤大体出来る
•Node.jsのnpmも使える(
    AWS  SDKも使える)
•CoffeeScriptでも記述可能
Lambdaファンクション(何が出来ないの?)
•Lambdaファンクション単体で
    データを保持する事が出来ない
•VPCが使えない(RDSなどにVPCの機能を
    使ったセキュアな接続が出来ない)
Lambdaファンクションのデプロイ方法
•コンソール上のエディタ、または
    ZIPファイルアップロードでプロジェクトをUP
    ※nmpのライブラリはZIPファイルにまとめてUP
•リソースサイズ(性能)の設定
    ※128MBから1GBの範囲で64MB毎の設定
•タイムアウト値は1秒から60秒で設定
•Lambdaファンクションにひもづける
  イベントの指定
Lambdaファンクションのデプロイ方法(画面)
•コンソール上のエディタ、または
    ZIPファイルアップロードでプロジェクトをUP
    ※nmpのライブラリはZIPファイルにまとめてUP
•リソースサイズ(性能)の設定
    ※128MBから1GBの範囲で64MB毎の設定
•タイムアウト値は1秒から60秒で設定
•Lambdaファンクションにひもづける
  イベントの指定
画⾯面でJSで登録するか?
プロジェクトを
アップロードするか?
Lambdaファンクションのデプロイ方法(画面)
•コンソール上のエディタ、または
    ZIPファイルアップロードでプロジェクトをUP
    ※nmpのライブラリはZIPファイルにまとめてUP
•リソースサイズ(性能)の設定
    ※128MBから1GBの範囲で64MB毎の設定
•タイムアウト値は1秒から60秒で設定
•Lambdaファンクションにひもづける
  イベントの指定
画⾯面でJSを編集可能
Lambdaファンクションのデプロイ方法(画面)
•コンソール上のエディタ、または
    ZIPファイルアップロードでプロジェクトをUP
    ※nmpのライブラリはZIPファイルにまとめてUP
•リソースサイズ(性能)の設定
    ※128MBから1GBの範囲で64MB毎の設定
•タイムアウト値は1秒から60秒で設定
•Lambdaファンクションにひもづける
  イベントの指定
ロールの設定
Lambdaファンクションのデプロイ方法(画面)
•コンソール上のエディタ、または
    ZIPファイルアップロードでプロジェクトをUP
    ※nmpのライブラリはZIPファイルにまとめてUP
•リソースサイズ(性能)の設定
    ※128MBから1GBの範囲で64MB毎の設定
•タイムアウト値は1秒から60秒で設定
•Lambdaファンクションにひもづける
  イベントの指定
コンテナのメモリと
タイムアウト値の設定
pushモデル と pullモデル という利用形態
pushモデル
•Amazon  S3とカスタムイベント(
    SDKからのコール)
•実⾏行行順番は不不明
•三回までリトライ
pushモデル と pullモデル という利用形態
pullモデル
•Amazon  DynamoDB/Amazon  Kinesis
•順序性あり
•イベントごとの複数レコード対応
•データが期限切切れになるまでリトライ
呼び出し側 (invocation role) と

実行側 (excution role) のIAMロールの設定
Invaocation  Role
    どの機能がLambdaファンクションを実⾏行行するか
Execution  Role
    どのAWS機能をLambdaファンクションが実⾏行行するか
ネイティブライブラリの実行
Lambdaファンクションで使う
ネイティブライブラリを
ビルドしてパッケージにして
プロジェクトに取り込む事も可能
※AMAZON  Linuxでビルドしたもの
コンテナのライフサイクル
開始
ファンクションの作成後、またはコードや設定更更新後の
初回実⾏行行時にコンテナが作成されて、
コードがコンテナ内にロードされる。
終了了
•Timeout時
•context.done()呼び出し時
•クラッシュ時
•process.exit()呼び出し時
コンテナのライフサイクル
再利利⽤用
•前回の実⾏行行時からある程度度時間が経過した後に
    再度度実⾏行行される場合は新規でコンテナが作成される。
•前回の実⾏行行から時間が⽴立立っていない場合はコンテナの
    再利利⽤用の可能性がある。
再利利⽤用を前提にしたコードは
バグの元
モニタリング
Cloud  WatchによるMetricsの監視
•レイテンシ
•リクエスト数
•Errors数
制限事項(1コンテナあたり)
リソース 制限
/tmp スペース 512MB
ファイルディスクリプタ 1024
プロセス数およびスレッド数(合計) 1024
インプット 制限
ZIPファイル 30MB
InvokeAsyncのリクエスト(JSON) 128KB
料金体系
リクエスト数
•毎⽉月最初の  1,000,000  件は無料料
•その後は  0.20  USD/1,000,000  件の
  リクエスト(0.0000002  USD/秒)
時間
コードの実⾏行行が開始からコードが返されるか
中⽌止されるまでで計算され、100  ミリ秒単位
で切切り上げ。
料金体系
メモリ
メモリ(MB) 100 ミリ秒単位の価格
128 0.000000208
192 0.000000313
256 0.000000417
320 0.000000521
384 0.000000625
448 0.000000729
512 0.000000834
メモリ(MB) 100 ミリ秒単位の価格
576 0.000000938
640 0.000001042
704 0.000001146
768 0.000001250
832 0.000001354
896 0.000001459
960 0.000001563
1024 0.000001667
1⽉月あたり最⼤大320万秒のコンピュート処理理時間(128MB時。
メモリが増えると減る)が無料料。
まとめ
•BaaSのような使い⽅方も出来るけど
    基本はAWSのサービス間をつなぐスクリプト
•サーバーの管理理不不要で勝⼿手にスケールアウト
    してくれるので便便利利
•Node.js⾃自体に癖がある(コールバックメイン)けど
    慣れているエンジニアならタイムアウトも
    考慮するので問題なし?
•WEBのサーバー部分を素直に実装したいなら
    AWS  Elastic  Beanstalkで
クラウド電話 twillio
Cloudpack⼤大阪⽀支社(東京も)
クラウドで⼀一緒に流流れを
変えたい同志を絶賛募集中です
※開発だけどインフラに興味ある⼈人も
話を聴きたい⽅方は是⾮非⽐比企まで
30
Cloudpack⼤大阪⽀支社(東京も)
クラウドで⼀一緒に流流れを
変えたい同志を絶賛募集中です
※開発だけどインフラに興味ある⼈人も
話を聴きたい⽅方は是⾮非⽐比企まで
31
アウトソーシングの開発で
コンペやお客様から
買いたたかれたりして
うんざりしているエンジニアは
特に話をしたいですw
32
ご清聴ありがとうございました

Aws lambda 事始め