Slide 1

Slide 1 text

LambdaをCodeBuildから AWS CLIで更新したら、 502エラーを起こした話 JAWS-UG朝会 #83 2026/07/27 伊藤雅⼈ @mito0358

Slide 2

Slide 2 text

⾃⼰紹介 伊藤 雅⼈ @mito0358 役割: Cloud Infrastructure Engineer / SRE 経歴: 現在は、⾃社サービスのインフラを担当しています。 以前は、組み込みソフトウェア開発、⾃動⾞業界の⽣産管理‧情シス、 NW運⽤⾃動化、Ansible‧Terraformの社外向け研修の講師、PdMなど。 趣味: 年数回のテニス(区営コートの予約倍率30~40倍!) 技術同⼈誌の執筆(サークル「AutoOps屋」、次回で3冊⽬) マガポケで続きを読みたい漫画にコメントする(推し:異世界辺境メシ)

Slide 3

Slide 3 text

Lambda関数の起動 Lambdaのインフラ Lambdaのコンテナ Pending Inactive Active ColdStart (初期化) ColdStart(実⾏) WarmStart(実⾏) Lambdaのコンテナを動かすための、インフラの構築から始まります。 そのインフラがActive状態のときにコンテナが起動でき、Lambda関数がリクエストを 処理できます。

Slide 4

Slide 4 text

Lambda関数の状態 エラー発⽣時は0.2秒間 Lambdaのインフラ Lambdaのコンテナ Pending Inactive Active ColdStart (初期化) ColdStart(実⾏) WarmStart(実⾏) Pending — Lambda は関数を作成した後、関数の状態を保留に設定します。 保留状態の場合、Lambda は関数のリソースの作成または設定を試みます。 Lambda は、保留状態の関数を呼び出しません。 関数に対する呼び出しやその他の API アクションは全て失敗します。

Slide 5

Slide 5 text

Lambda関数の状態 14⽇間、Lambdaが起動しないと遷移する Lambdaのインフラ Lambdaのコンテナ Pending Inactive Active ColdStart (初期化) ColdStart(実⾏) WarmStart(実⾏) Inactive — Lambda ⽤に設定された外部リソースを再利⽤するのに ⼗分な時間アイドル状態を維持した関数は⾮アクティブになります。 14 ⽇間呼び出されなかったとき、または Lambda が実⾏環境を定期的に リサイクルしたときに Inactive になります。 ⾮アクティブな関数を呼び出そうとすると、呼び出しは失敗し、関数リソース が再作成されるまで、Lambda は関数を保留状態に設定します。 ほかのステータスとして、Failedがあります。 参考:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/functions-states.html https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/snapstart-troubleshooting.html

Slide 6

Slide 6 text

エラーが起きた状況 Cold Startは関係なかった!! コマンドでLambdaのアップデートを実⾏した後、即エイリアスを切り替えました。 結果、トラフィックが流れ、Pending中のLambdaを呼び出そうとして失敗しました。 1. aws lambda update-function-code 2. aws lambda update-alias 検証ログ 時刻 新規作成v51 Lambaのインフラ構築状況 [11:02:15] Config(v51): State: WAITING (v51 はまだ未作成) [11:02:17] Config(v51): State: WAITING (v51 はまだ未作成) [11:02:19] Config(v51): State: Pending LastUpdateStatus: None [11:02:20] Config(v51): State: Pending LastUpdateStatus: None [11:02:22] Config(v51): State: Active LastUpdateStatus: Successful [11:02:23] Config(v51): State: Active LastUpdateStatus: Successful エイリアスの向き先 Alias(dev) -> v50 Alias(dev) -> v50 Alias(dev) -> v50 Alias(dev) -> v51 Alias(dev) -> v51 Alias(dev) -> v51

Slide 7

Slide 7 text

解決策 2つのパターンが考えられます 1. LambdaのステータスがActiveになってから、エイリアスを切り替える ○ CLIコマンドでステータスの変更をチェックする 2. CodePipelineで、直接Lambdaをデプロイする ○ 2025年5⽉16⽇に発表されました 参考 https://aws.amazon.com/jp/about-aws/whats-new/2025/05/aws-codepipeline-deploying-lambda-traffic-shifting/

Slide 8

Slide 8 text

ご清聴ありがとうございました。 @mito0358