Lambda関数

민태영·2024년 10월 16일
0

1. Lambda関数とは:

  1. AWSLambdaで実行するアプリケーション
    • サポートされる言語、もしくはカスタムランタイムで用意した言語で記述
  2. それぞれが隔離されたコンテナ内で実行される
    - 1コンテナで複数イベントを同時に処理することはない
    3.利用する言語の関数もしくはメソッドをハンドラーとして指定し、実行の際に呼び出す(JSON形式)にアクセスすることが可能
    - ハンドラー内では呼び出しの:際にパラメータとして渡されたイベントのデータ(JSON形式)にアクセスすることが可能
  3. コード依存関係も含めてビルド、パッケージングしたうえでアップロード
    • 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内のリソースインターネットを経由せずにアクセス可能

profile
꿈을 꾸는 개발자

0개의 댓글