1. Lambda関数とは:
- AWSLambdaで実行するアプリケーション
- サポートされる言語、もしくはカスタムランタイムで用意した言語で記述
- それぞれが隔離されたコンテナ内で実行される
- 1コンテナで複数イベントを同時に処理することはない
3.利用する言語の関数もしくはメソッドをハンドラーとして指定し、実行の際に呼び出す(JSON形式)にアクセスすることが可能
- ハンドラー内では呼び出しの:際にパラメータとして渡されたイベントのデータ(JSON形式)にアクセスすることが可能
- コード依存関係も含めてビルド、パッケージングしたうえでアップロード
- ZIP形式
- アップロードしたものはAmazon S3に保存され、実行以外は暗号化される
- ユーザがS3にアップロードしてARNで指定することも可能
2. Lambda関数に基本的にサポートされている言語
- Python
- Node
- C#
- Java
- PowerShell
- Ruby
3. Lambda関数 - 基本設定
3-1) メモリ
- 64MBごとに128MBから10,240MBの間で設定可能
- 容量に応じてCPU能力なども比例
- メモリ容量が一定を超えると使用するコア数も増えるため、マルチコアを活用するようなコードを実装することでより効果的な処理が可能
3-2) タイムアウト
コードを一定時間実行してからタイムアウトする。
Lambda関数がタイムアウトするまでの最大実行時間を指す
- Lambda関数の実行時間に関するタイムアウト
- 最大900秒(15分)まで
- 一秒単位で調整可
3-3) 実行ロール
Lambda関数の実行リールとは、AWSサービスおよびリソースにアクセス許可を関数に付与するIAM(Identity and Access Management)ロールを指す
- 必要なAWSリソースのアクセスを許可するIAMロール
- 指定されたIAMロールに沿ってLambda関数からAWSのリソースのアクセスが許可される可能
4. Lambda関数の制限
- インバウンドネットワーク接続はブロックされる
- アウトバウンドはTCP/IPとUDP/IPソケットのみ
- ptraceシステムコールはブロックされる
- TCP 25番ポートのトラフィックされる
5. 実行環境
- オペレーションシステム:Amazon Linux
- AMI: amzn-ami-hvm-2027.03.1.20170812-x86_64-gp2
- Linux : 4.14.77-70.59.amzn1.x86_64
- AWS SDK for JavaScript: 2.290.0
- SDK for Python (Boto 3)
• Python 3.6: boto3-1.7.74 botocore-1.10.74
• Python 3.7: boto3-1.9.42 botocore-1.12.42
6. イベントソース
Lambda関数のイベントソースにはAWSのサービス+ユーザが開発したアプリケーション
6-1) イベントソースを恩恵
- AWS(IAM)を使用しリソースへのアクセスを安全に管理
- 保存中のデータを暗号化
- AWS PrivateLinkのVPCエンドポイントを使用しAmazon Virtual Private Cloudからアクセス可能
- Amazon CloudWatch Application Insights使用し、メトリクスを基にした報告、警告を生成
7. 呼び出しタイプ
カスタムアプリケーションによる呼び出し、もしくはAWS CLIなどを用いての手動実行の場合に呼び出しタイプを指定できる。
※イベントソースがAWSのサービスの場合はサービスごとに事前に決められていて変更不可
7-1) 非同期呼び出しタイプ
- InvocationTypeはEvent
- レスポンス内容はリクエストが正常に受け付けられたかどうか
7-2) 同期呼び出しタイプ
- InvocationTypeはRequestResponse
- 実行完了時にレスポンスが返ってくる。その内容は関数内で定義
VPCアクセス
Amazon RDSやElasticacheなどのVPC内のリソースインターネットを経由せずにアクセス可能