1日1%成長する ~Aws Lambda Part2~

AWSの学習メモ

Aws Lambda Part2

基本
    メモリ
    - 64MBごとに128MB~3008MB
    - メモリ容量に応じてCPU能力なども比例
    - メモリ容量が一定を超えるとコア数増加

    タイムアウト
    - MAX900秒(15分)

プログラムモデルの基本
    ハンドラー
        - エントリポイント
        - パラメータはJson形式

    コンテキスト
        - ランタイムに関する情報が含まれ、ハンドラー内部からアクセス可
        - コンテキストオブジェクトが2つめのパラメータとして渡される
        - コールバックを使用する言語の場合、コールバックメソッドの振る舞いを設定可能

    ロギング
        - AWS CloudWatch Logs
            - CloudWatch Logsの制限があるのでそれに影響される場合もある

    例外
        - 各言語ごと
        - Lambda関数を同期的に呼び出している場合はクライアントへのエラーがレスポンスされる

    - ステートレスで作成
    - 関数はリクエストのたび違うコンピューティングリソースになる可能性がある
    - ローカルファイルシステムへのアクセス等は制限される
    - 永続化にはs3、dynamodbまたはクラウドストレージサービスへ保存

設計図
    - Python、Nodeはサンプルレコード集がある
    - Serverless Application Responsitoryというものがある
        - 作成したサーバレスアプリケーションを公開、共有するための機能
        - 設計図はサービスチームによるメンテナンス、ユーザによる追加登録は不可能

VPC
    VPC内のリソースインターネットを経由せずにアクセス可能
    AZごとに1つ以上のサブネットを指定しておくのがおすすめ
        ※AZ障害発生時やIPアドレス枯渇時にも別のAZでLambda関数を実行可能

    ENIを利用
        - 作成・削除はLambdaが完全コントロール
        - ENIにはサブネットのIPがDHCPで動的に割り当てられる
        - IAM roleにAWSLambdaVPCAccessExecuteRoleというポリシーをアタッチしておく

VPCアクセスの注意
    - 設定したタイミングからインターネットにアクセスできない
    - パブリックIPアドレスは割り当てられない
    - 必要な場合はNATインスタンスを用意 or Amazon VPC Natゲートウェイを利用

ENIまたはサブネットIPが無い場合はリクエストに失敗する
    - 非同期呼び出しの場合はこのエラーはCloudWatch Logに記録されない
    - コンソールで実行するなど、同期実行でエラー応答は取得可能

    ※ENIキャパシティ:Projected peak concurrent executions * (Memory in GB/3GB)