AWS Lambda入門したのでメモ
一年前に半日ほど触ったが、ケツが決まっててとりあえず動かせ!だったので復習がてら勉強
ついでにIAMもある程度学んだ。IAMがAWSの敷居を上げてる気がする
読んだ and 役立った
AWS初心者入門 第7回 「Lambda」ってなにがスゴイんですか? | 連載コラム 元SEママの情シスなりきりAWS奮闘記 | マネージドクラウド with AWS
全くわかっていない人目線で書いてくれている
AWS Lambda (サーバーレスでコードを実行・自動管理) | AWS
3分の動画見れば大体わかる
ASCII.jp:エンジニアを魅了してきたAWS Lambda、その4年間の軌跡 (2/2)
企業でのユースケースを書いてくれている
どう活用するかというイメージがついた
AWS を安全に使うために(IAM のベストプラクティス) | DevelopersIO
IAMの具体例
AWS Lambda とは - AWS Lambda
AWSの公式ページ-Lambda関数の呼び出し-まで
SAM・VPC関連は飛ばした。
とはいえ、絶対に自動化したくなるだろうからSAMは近いうちに試したい。
何がイケてるのか
環境構築を気にせずコードに集中できる(ただしIAMは分かりづらいし面倒)
起動時間だけ課金なので経済的
スケーリングを自動でやってくれる
単語のゆるふわ理解
- イベントソース:lambda起動のトリガー
- IAM:権限を限定する機能。ユーザー(+グループ)・ロールがある。
UNIXの「root」アカウントの直接利用、Windowsの「Administrator」の直接利用は望ましくないというのと同じ考えに基づきます。 AWS再入門 AWS IAM (Identity and Access Management) 編 | DevelopersIO
手を動かした
以下、メモ
aws-cliのインストールでは--userオプションは外した。
systemではなくpyenvのpythonでインストールしたので壊れてもいいかと。それより環境PATHはなるべくいじりたくない。
忘れないようにしておこう。
printとloggingはログに表示される。
テスト時はコンソールのLog outputを見ればいいし、CloudWatchLogにすべて保存される。
import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def my_logging_handler(event, context): print("print:get event {}".format(event)) logger.info('logging:got event{}'.format(event)) logger.error('logging:error') return 'Hello from Lambda!'
venvでインストールしたパッケージを使いたい場合、site-packageディレクトリをzip化
zip -r9 module_name.zip env/lib/python3.6/site-packages zip -g module_name.zip module_name.py
S3のユースケースでPillowを使うのだが、デプロイ後にimportエラーが出て2時間くらいドハマリした。
Macで作業してデプロイしようとしていたのだが、OSによってpipで用いるランタイムやパッケージが異なりsite-packagesの構成が変わるよう。
それでユースケースではlinux(EC2)環境にて作業していたのだ。ちゃんと意味があるのね。
こういう場面に遭遇すると表面的な対処ばかりしてきた自身の力不足を痛感する。まぁ勉強になったから良しとしよう。