(レポート) CMP301: AWS Lambda and the Serverless Cloud #reinvent

2015.10.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Lambdaの特徴

  • 次のことを気にしなくて良い
  • サーバー
  • オーバー/アンダーキャパシティ
  • デプロイ
  • スケールや耐障害性
  • OSや言語のアップデート
  • 監視やロギング
  • にもかかわらず、次のことが簡単にできる
  • 自分の書いたコードを実行
  • コードの並列実行
  • バックエンドやイベントハンドラー、データ処理システムの作成
  • 処理がされない時間帯は無課金

Lambdaの利点をまとめると

  • サーバーレス
  • スケールするイベントドリブン
  • 課金単位が秒以下

Lambdaの動き

スクリーンショット 2015-10-09 16.53.15 イベントが発生すると

  • 認証処理が実行され
  • デプロイされ
  • ステートレスにコードが実行され
  • 実行内容の監視とロギングが行われる

Lambdaと連携しているAWSサービス

スクリーンショット 2015-10-09 16.58.23

Lambdaの歩み

スクリーンショット 2015-10-09 17.17.43

この機能、見逃してないよね?

SESインバウンドルール

SESで受診したメールをLambdaで処理できる。 次の例ではSESによってスパム判定された場合にログが記録されるようにしている。 スクリーンショット 2015-10-09 17.20.01

※ SESでのメール受信については弊社記事も参照ください。 [新機能]Amazon SES でメール受信が出来るようになりました!

CloudWatch Logs連携

スクリーンショット 2015-10-09 17.27.09 ログの内容に応じて任意の処理をほぼリアルタイムで実行することができる

Lambdaの新機能

Pythonサポート

Python2.7をサポート

  • 全てのSDK
  • AWS CLI
  • AWSコンソール で利用可能。

さらに

  • Lambdaで実行されるPythonはboto3を使える
  • すでにドキュメントも揃ってる
  • コンソールにはブループリントも用意した

Function実行時間の延長

これまで、最長60秒だった実行時間が最大300秒まで延長できるようになった

Functionのスケジュール実行

  • 時間指定、もしくは実行間隔指定
  • 標準的なcronの記法が使える
  • 実行間隔の粒度は5分
  • さらに細かい粒度でスケジュール実行したい場合はLambdaファンクション内でスケジューリング
  • SQS等からのpollingができる!
  • 現在のところ、スケジューリング設定できるのはAWSコンソールからだけ
  • CLIやSDKのサポートは2015年の末ごろを予定

Functionのバージョニング

Functionがアップロードされるたびに自動で連番がふられる

Functionの呼び出し方法

(ファンクション名):(バージョン番号) という指定ができるようになった

  • 最新のバージョンを呼び出す場合
  • FunctionName
  • FunctionName:$LATEST
  • バージョンを指定して呼び出す場合
  • FunctionName:1
  • FunctionName:2
  • 名前付きバージョンを呼び出す場合
  • FunctionName:production
  • FunctionName:v1_2_3_4

最後の呼び出し方から推測できる通り、バージョンにはエイリアスとして名前をつけることができる

IoTのバックエンドとして利用可能

新しく発表されたAWS IoTのバックエンドにLambdaが利用出来る スクリーンショット 2015-10-09 17.56.36

(予告)VPC対応

VPC内でLambda実行が可能になる

  • 実行するVPCを選択
  • サブネットグループとセキュリティグループを選択
  • VPC内のプライベートなリソースにアクセス可能
  • 今年の末に対応予定

スクリーンショット 2015-10-09 18.02.43 俺らは頑張った、次はお前らの番だ!!

感想

個人的に去年のre:Inventの目玉はAWS Lambdaだと思っているのですが、そのLambdaに欲しかった機能が全て実現された気がします。 開発者の地震と勢いを感じられるセッションでした。 使い倒しましょう。