LoginSignup
2
0

TerraformでAWS LambdaをNode.js 20へアップグレードする方法

Posted at

先日AWSから 『[アクションが必要です] AWS Lambda での Node.js 16 のサポート終了について』 というタイトルのメールを受け取ったので、早速アップグレードを試みたのですが、Terraform初心者としてハマるところが多かったので、備忘録としての投稿です。

前提

今回の例は、以前Terraformで構築したNode.js 16のAWS Lambdaを、Node.js 20に更新するものです。
またTerraformは当初、1.4.4を使用していました。

LambdaのNode.js Runtimeが更新できない!

AWSからのメールにあった2024 年 6 月 12 日までに、既存の Node.js 16 の関数を Node.js 20 にアップグレードすることをお勧めします。の指示に従い、aws_lambda_functionのruntimeをnodejs16.xからnodejs20.xに変更し、terraformのコマンドを実行したところ…

Upgradeエラー1.png

nodejs20.xがサポートされていないように見える?

Terraformのupdate情報を確認する

本稿執筆時点で、Terraformの最新版が1.6.6とのことだったので、1.4.4から1.6.6にアップグレードして再度トライしてみましたが、エラーメッセージは変わらず。

terraform-provider-awsのchangelogを確認すると、2023/11/16リリースの5.26.0でnodejs20.xが追加されたことを確認。
https://github.com/hashicorp/terraform-provider-aws/blob/5deca6413355b80d737a33f646223798dc0af2cc/CHANGELOG.md?plain=1#L233

一方でTerraformの1.6.6は2023/12/13リリースなので、Terraformのミスとは考えづらい。
https://github.com/hashicorp/terraform/releases/tag/v1.6.6

terraform-provider-awsを別途指定する方法があると考えるのが自然かも?

灯台下暗し

terraform-provider-awsを指定できないか?と思いながら改めてterraformのバージョンを確認していたところ、

Upgradeエラー2.png

provider_registry.terraform.io/hashicorp/aws v4.63.0

君だったのか!と気付き、Terraformの設定に以下を追加。(上述のterraform-provider-awsの情報に合わせ、5.26.0以上としました。)

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.26.0"
    }
  }
}

早速Terraformコマンドを実行したところ、

Upgradeエラー3.png

指示された通りterraform init -upgradeを実行したところ、aws_lambda_functionのruntimeにnodejs20.xを指定できるようになりました。

所感

今回のトラブルシューティングを含め、昨今Google検索だけでは必要な情報を見つけられない印象が自分の中にあります。昨今は、以下のように情報収集して問題解決することが増えてきています。

  1. 当該ツール・アプリのGitHubリポジトリを確認する。
    • Issue・changelog・テストコードに、欲しい情報が見つかることが多いです。
  2. エラーメッセージを詳細に確認する。
    • 単純なバージョン情報や、隅の方に表示されているメッセージが、案外キーになっていることが昨今多いかも。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0