ここでは、AWSを基礎から学ぶ人向けに必要な情報をまとめていきます。
初学者のためのAWS入門シリーズ
- [初学者のためのAWS入門(1)] (https://qiita.com/mshinoda88/items/e7557227f7060b52d8ae)
- [初学者のためのAWS入門(2) - CloudFormation入門1] (https://qiita.com/mshinoda88/items/c5b238212c2de850efdd)
- [初学者のためのAWS入門(3) - CloudFormation入門2]
(https://qiita.com/mshinoda88/items/65e7e145c7ec943af403) - 初学者のためのAWS入門(4) - S3でBasic認証を設定してリポジトリを公開
- 初学者のためのAWS入門(5) - S3+Athena+QuickSightでデータ分析結果の可視化
- 初学者のためのAWS入門(6) - Lambdaでサーバレス実行してみる
1. Lambdaとは
Lambdaはサーバーのプロビジョニングや管理を行わずにコードを実行してくれます。
イベント駆動によえい処理を実行する環境で、「難しいサーバー構築などが不要で簡単にアプリのコードが動かせます」
1-1. 特長
- 最大のポイント:EC2のような仮想サーバを立てる必要がない。(サーバレス)
- コンピューティングのオートスケール
つまり、処理件数が増えてくると、自動的に実行ユニットを増やして並列にスケールアウトしてくれる。CPUやメモリを使用率に応じてオートスケール設定を調整するなどの作業は不要。 - 低コスト少ない労力でサービスを開発できる
- API Gateway をエンドポイント(ただのURLとして)とし、組み合わせて利用することで、簡単なWebサービスやAPIサービスを公開できる。
時間帯によってアクセス数の変動が多いサイトや、特別な日だけアクセス数の急増するサイトに効果的。
1-2. 注意点
- 稼働時間やステートレス、リレーショナルデータベースとの相性があり、全てをEC2からLambdaに置き換えることは困難。
- 以下のような場合は向いていない。
- 1回の処理時間が長いワークロード
- 24時間絶えずリクエストがあるWebサービス
2.料金
関数を実行するのにかかった時間だけ料金がかかります。
- コードを実行していない時は課金されません。
- ミリ秒単位の課金
AWS Lambda では、コードが実行される 100 ms ごと、およびコードがトリガーされた回数に対して課金されます。 - 毎月1,000,000 件のリクエストは無料
以後は 1,000,000 件のリクエストあたり 0.20USD
3.スペックと制約
項目 | 値 |
---|---|
ディスク容量 | 512MB |
メモリ | 128Mbyteから1536Mbyteまで |
タイムアウト | 最長15分 |
ペイロード | リクエストとレスポンスの本文のペイロードは最大6Mbyte |
イベントリクエストの本文 | 最大136Kbit |
同時実行数 | ソフトリミットで、リクエストに応じて増やせる |
- デプロイのパッケージサイズとファイル記述子の最大数に制約を受けます。
- コードがトリガーされる回数の基づいて、実行時間の1ミリ秒ごとに構築されます。
4.連携するAWSサービス
4-1. Lambda がイベントを読み取るサービス
- Amazon Kinesis
- Amazon DynamoDB
- Amazon Simple Queue Service
4-2. Lambda 関数を同期的に呼び出すサービス
- Application Load Balancer
- Amazon Cognito
- Amazon Lex
- Amazon Alexa
- Amazon API Gateway
- Amazon CloudFront (Lambda@Edge)
- Amazon Kinesis Data Firehose
- AWS Step Functions
4-3. Lambda 関数を非同期的に呼び出すサービス
- Amazon Simple Storage Service
- Amazon Simple Notification Service
- Amazon Simple Email Service
- AWS CloudFormation
- Amazon CloudWatch Logs
- Amazon CloudWatch Events
- AWS CodeCommit
- AWS Config
- AWS IoT Events
5.lambdaのモデル
Pushモデル
- S3/Cognito/SNSなどのAWSサービスとカスタムイベントが直接実行することにより起動するLambdaファンクション
- サービスもしくはアプリが直接実行する
- 3回までリトライ
- さらに細かくわけるとリソースによって処理結果をレスポンスとして受け取る同期呼び出しと処理の完了は待たない非同期呼び出しがサポートされている。
Pullモデル
- DynamoDBとKinesisなどのデータ処理はLambdaに対して直接的にイベント発行を行わないためLambdaがそれらへポーリングを行い自らイベントを取得
- 上記のようなストリームベースとSQSのキューベースがある。
- ストリームに入ってきた順に処理される
- イベントソースとして登録したストリームに対してLambdaが自動的にデータ取得などのファンクションを実行する
- イベントごとに複数レコードを取得可能
- データが期限切れになるまでリトライ
6. 触ってみよう
AWS Lambda とりあえず触ってみた
https://qiita.com/leomaro7/items/d8d8d4e10214115fc188