チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【AWS】サーバーレス入門におけるLambdaとは〜Schoo生放送のメモ〜

schooというオンライン講座を久々に見たらちょうど今勉強始めたサーバレスについてやってた。
http://schoo.jp/

知ってることも多かったが、本とかネットも断片的なところがあるので、
復習の意味も込めて記載しておきます。
※2018年3月25日(日)現在の情報

Lambdaの特徴

・必要な時だけコンテナが作られ、終わったら消える(なのでサーバはあるけど消える。これはサーバレスと呼ばれる所以。実際、Lambdaコンテナの正体はAmazonLinux)
・コンテナは再利用される。
→都度作り直すと時間がかかるため。前に実行した時のゴミが残る場合がある。
・急激なアクセス増にも耐えられる。
・実行したい数だけ並列実行される(最大数制限あり)
・コスト削減→実行回数、時間に対する課金。
・最大実行時間5分(課金積んでも増やせないが、メモリを増やすことで多少実行時間は減らせる)

手順

1事前にプログラム作って登録
2実行時だけ自動でコンテナつくられる
以上

書式(Pythonの例)

def lambda_handler(event,context);

AWSサービスとの連携例

SES(メール関連)との連携例
・自動返信する
・受診したらメールアドレスをDBに登録する
・メール宛先不明ならDBから削除する
などが可能

API Gatewayとの連携例
・ブラウザ→API Gateway→Lambda

ロール(IAMロール)

書き込み権限が必要
AWSLambdaBasicExecutionRoleポリシーが必須。
その他必要に応じて
AmazonS3FullAccessポリシーなどを付与する。

デバッグ(ログ)

Stdout に出力するとCloud Watch logに残る。
printfするとcloudwatchlogにだされる
ログはcloud watch logsに記録される。 デバッグもこれを見れば出来る。

メモ

AWSリソースとは、S3やDynamoDBなどのサービスのこと。
・LambdaからRDSも可能だが使いにくい。(VPCに対応していない)
Lambdaをキャッシュ的に使う、あとでRDSにコピーしていくのはあり。
・SQSでキューしているものをLambdaで処理可能
・Lambdaで外部ライブラリは可能、ZIPでまとめてアップする。ただしLinuxで動くものに限る。