1日1%成長する ~Aws Lambda Part1~
AWSの学習メモ
- AWSのblackbaltの動画を15分以上毎日見る
- 動画を簡単にまとめる
Aws Lambda Part1 サーバレスとは? - インフラのプロビジョニング不要 - 自動でスケール - Lambdaはリクエスト数に応じて自動的に起動数がコントロールされる - - 価値に対する支払い - 高可用かつ安全 Lambda - ランタイム - 必要なときにコードを実行を行いたい - インフラの構成・管理が面倒 アプリケーションモデル イベントソース -> Lambda -> サービスなど イベントソース - S3にオブジェクトが作成される - Kinesisにストリームデータが保存される - HTTPSのリクエスト Lambda - PythonやNodejsなど サービス - S3やdynamodbなど Lambda関数 - AWS Lambdaで実行するアプリケーション - それぞれが隔離されたコンテナ内で実行される - 利用する言語の関数もしくはメソッドをハンドラーとして指定して関数を実行 - コードは依存関係も含めてビルド、パッケージングした上でアップロード 設定 - メモリ - 64MBごとに128MB~3008MB - 容量に応じてCPU能力も上がる - メモリ容量が一定数を超えるとコア数も増える - タイムアウト - 最大900秒(15分) - 実行ロール - 必要なAWSリソースへのアクセスを許可するIAMロールが必要 制限 - インバウンドネットワークはブロックされる - Listenとかはできない - アウトバウンドはTCP/IPとUDP/IP - ptraceシステムコールはブロックされる - TCP25番ポートはブロックされる イベントソース - ポーリングベース - ストリームベースとそれ以外 - Lambdaがポーリングをして処理するデータがある場合にLambda関数を実行 - それ以外 - Lambda関数はイベントソースから呼び出される - イベントソース - AWSのサービスorユーザが開発したアプリケーション 呼び出しタイプ 非同期 InvocationType:Event レスポンス:リクエストが受け付けられたかどうか 同期 InvocationType:RequestResponse レスポンス:返却される。レスポンス内容はLambda関数で用意 リトライ ストリームベースではないイベントソース 同期 - エラー発生時にレスポンスにFunctionErrorが含まれる - パーミッション、Limit、関数コードや設定による問題など特定のステータスコードが返却 - AWSサービスからの呼び出しの場合、その設定に従う 非同期 - 自動的に2回までリトライされ、その後イベントは破棄 - リトライ遅延有り - DLQ(Dead Letter Queue)を設定することでSQS or SNSトピックに移動させて確認可能 ポーリングベースでストリームベースのイベントソース - データの有効期限が切れるまでリトライ - 失敗したレコードの有効期限が切れるもしくは処理が成功するまで、そのシャードからの読み込みはブロックされ、 新しいレコードの読み込みは行われない - このLambdaの処理が完了(失敗含む)までブロックされてしまう ポーリングベースでストリームベースではないイベントソース - バッチのメッセージはすべてキューに返り、Visibility Timeoutがすぎればまた処理が行われる その後成功すればキューから削除される - 新しいメッセージの処理はブロックされない VPCアクセスの注意 - 設定するとインターネット不可 - グローバルIPは振られない - 十分なENIまたはサブネットIPがないとリクエスト数が増えたときに失敗する 同時実行数 - セーフガードとしてアカウントに対してデフォルトで1000で制限されている - 実績に応じて制限緩和申請 - 同時実行数を超えたリクエストはスロットリングエラー(429)が返却される - 非同期呼び出しの場合は15~30分程度はバーストとして許容されるがそれ移行はスロットリング対象 自動スケーリング - 初期値はリージョンごと異なる東京リージョンは1000(オレゴンとかは3000 - この値は制限緩和不可