Slide 1

Slide 1 text

インフラ担当者が Lambdaの設定値について 今⼀度整理してみた ryosaan 1

Slide 2

Slide 2 text

⾃⼰紹介 ● ryosaan (@hr0hr57) ● 某⾦融系SIerでインフラ設計‧構築を担当 ● ⾦融のお客様向けのAWS基盤環境設計 ● 所属コミュニティ ○ AWS Community Builder(Cloud Operations) ○ Ops-JAWS運営 ○ CNDT2023運営 ○ この他クラウド系コミュニティによく出没 ● 2022-23 APN ALL AWS Certifications Engineers 2

Slide 3

Slide 3 text

Lambda使ってますか? ● フルマネージドなサーバレスコンピューティングサービス ● EC2等のコンピューティング環境のプロビジョニング不要で、 アプリケーションコードの実⾏が可能 ● 複数ランタイムをサポート (2023/12/6 現在) python(3.7~3.11)、Node.js(14.x~20.x)、Go(1.x)、Java(8~21)、Ruby(2.7,3.2)、.NET(6) Rustもプレビュー中 ● ファイル処理でのS3やストリーミング処理でのKinesis等、AWSの各サービス との統合に便利 ● サーバレスサービスのパイオニア 3

Slide 4

Slide 4 text

利⽤するきっかけ ● 普段はインフラ基盤(VPC‧EC2‧RDS等)の設計構築を担当 ● オンプレからのリフト環境のため、JP1のジョブを利⽤ ● JP1ジョブでAWSのAPIを実⾏することで、S3インベントリ履歴からオブジェ クトの改ざんを検知する⽇次処理を⾏っていた ● インベントリの量によってジョブのタイムアウトが発⽣ ● 再実⾏によってジョブエラーは解消 ● ⽇次処理ではなく逐次処理にすることで、運⽤負荷を減らしたい 4

Slide 5

Slide 5 text

設定値① ⼀般設定 ● メモリ 関数に割り当てるメモリを指定する。関数の処理量に応じて変更。 課⾦計算対象。128 MB〜10,240 MB の値を 1 MB 単位で設定。 ● タイムアウト 関数のタイムアウトを指定する。1秒〜15分の1秒単位で設定。 デフォルト3秒。 ● エフェメラルストレージ /tmpディレクトリのサイズを指定する。ローカルで処理するファイルがある 場合に指定。512 MB から 10,240 MB の間で、1 MB 刻みで設定。 5

Slide 6

Slide 6 text

設定値② ⼀般設定 ● 実⾏ロール Lambdaに付与するIAMロールを指定する。S3アクセスやCloudWatch等への 必要なIAM権限を付与する。 ● 環境変数 Lambda関数内で参照する環境変数を設定する。Lambda内からはOSの環境 変数として利⽤可能。 AWSが予約済みの環境変数もあるため確認が必要。 6

Slide 7

Slide 7 text

設定値③ ⼀般設定 ● VPCの設定 Lambdaの実⾏環境を特定のNWに制限したい場合は指定する。 VPC内のリソースへのアクセス時に必要。 7 Lambda Service VPC Customer VPC Endpoint NAT Gateway

Slide 8

Slide 8 text

設定値④ ⼀般設定 ● バージョン 公開バージョンを指定する。バージョンを利⽤することで、安定稼働中のリ ソースに影響を与えずにテストを⾏う事ができる。 ● エイリアス エイリアスを指定することで、関数更新時にLambdaの呼び出し元での変更 が不要になる。バージョン更新時にLambda側でエイリアスと紐づけること で利⽤可能。 8

Slide 9

Slide 9 text

設定値⑤ ⼀般設定 ● ファイルシステム Lambdaが実⾏時にマウントするストレージを指定する。Lambdaは揮発性 のストレージしか持たないため、永続的なファイルや共通のファイルを⼀元 的に保存しておくためのEFS等を指定しておく。 ● トリガー Lambdaを実⾏するトリガーを指定する。API Gatewayの他、SQSや EventBridge等が指定できる。 9

Slide 10

Slide 10 text

設定値⑥ ⼀般設定 ● 同時実⾏ 同時に処理できる関数の数。 上限は同⼀アカウント同⼀リージョン内につき1000(上限緩和可能)。 同時実⾏数=1秒あたりの呼び出し数×平均実⾏時間(秒) ex)100リクエスト/秒の関数が平均10秒実⾏されると同時実⾏数は1000 ○ 予約済み同時実⾏ 予約した同時実⾏数の範囲内の関数は正常に実⾏され、超過したものはスロットリングを⾏ いキューイングされ、実⾏可能になったら順不同に処理される ○ プロビジョニング済み同時実⾏ 事前に実⾏環境を準備しておき、関数実⾏を⾼速化する。プロビジョニングするので追加料 ⾦がかかる。 10

Slide 11

Slide 11 text

設定値⑦ 呼び出し⽅法 ● 同期呼び出し Lambdaを呼び出し、レスポンスを呼び出し元に返す実⾏⽅法。 invocation-typeが”Invoke”。 ● ⾮同期呼び出し SNSやS3からのイベントをLambda⽤のイベントキューに⼊れ、Lambdaが ポーリングして処理を実⾏する。invocation-typeが”Event”。 イベントを保持する最⼤有効時間を設定できる(最⼤6時間)。 関数が失敗した際の再試⾏の最⼤回数を0〜2で指定する。さらに失敗したイ ベントをデッドレターキューに送信し、後続処理を実⾏する事も可能。 11

Slide 12

Slide 12 text

設定値⑧ 呼び出し⽅法 ● 関数URL Lambdaを外部から単体で実⾏するためのURLを発⾏する機能。 通常API Gateway等を通してAWS外部からLambdaを実⾏する必要がある が、Lambda⾃体にURLを付与することで、API Gateway等の外部向けエンド ポイントが不要になる。 12

Slide 13

Slide 13 text

設定値⑨ その他 ● コード署名 AWS Signerを利⽤してコード署名を⾏う事で、関数の改ざんがされていない ことを保証する機能。 署名検証に失敗したものはデプロイできないようにする設定が可能。 ● データベースプロキシ RDS Proxyを作成し、RDSへの接続時のコネクション数を制御する。 RDSのコンソールからも構築できるが、Lambdaコンソールから構築もでき るようになった。 13

Slide 14

Slide 14 text

設定値⑩ その他 ● ステートマシン Step Functionsのステートマシンの作成が可能。Step Functionsのコンソー ルから作成するしかなかったが、Lambdaコンソールに統合された。 14

Slide 15

Slide 15 text

その他 最近のアップデート ● LambdaコンソールへのCloudWatch Logs統合 LambdaコンソールでCloudWatch Logsのログを確認できるようになった。 ● Lambda関数のダウンロード機能が追加 関数コードと設定YAMLファイルがダウンロードできるようになった。 ● Application Composerへのエクスポート機能が追加 サーバレスアプリケーションをGUIで構築(CloudFormationテンプレートの 作成)するApplication Composerへエクスポートできるようになった。 トリガー情報もエクスポートされるため、簡単にローコード化できる。 15

Slide 16

Slide 16 text

【宣伝】OpsJAWS re:Cap ● 12/18(⽉) 18:30〜21:00 ● AWSJ⽬黒オフィス ● AWSのSAも登壇予定 ● Opsなアップデートについて語り合いましょう! ● 開始前に軽⾷を持ち込んで軽く 懇親会を⾏う予定です! https://opsjaws.doorkeeper.jp/events/165903 16

Slide 17

Slide 17 text

【宣伝】CloudNative Days Tokyo 2023 ● 12/11(⽉)‧12/12(⽕) 10:50〜18:30 ● 有明セントラルタワー ホール&カンファレンス 3F ● CloudNativeなセッションが多数準備されています! ● JAWS界隈で有名なあの⽅々もご登壇予定 ● コミュニティLTとしてJAWSも参加予定 https://event.cloudnativedays.jp/cndt2023 17

Slide 18

Slide 18 text

どんどんLambda使っていきましょう! ご清聴ありがとうございました!! 18