Amplify FunctionのNode.jsバージョンアップ方法

technologies

こんにちは、ベンジャミンの池畠です!
Amplify CLIでLambda Functionを使用して開発を行っている皆さん
↓のような連絡がAWSから来ていないでしょうか?

簡単にいうと、Lambdaの中のランタイムとして使用しているNode.jsのバージョンが古くなってきていてAWSサポートが終わってしまいますよ!という連絡です。

おそらくAWS開発に慣れている方であれば「AWSコンソールからランタイムあげるようにポチポチすれば終わりじゃん」って思う方もいるかと思います。
しかしAmplify CLIを使用して開発をしている場合、Amplifyコマンド実行と同時に元のバージョンに戻ってしまう可能性を秘めているためAWSコンソールだけでは解決しないのです!

どうやってAmplifyでバージョンアップをするのか?

<Amplifyプロジェクト名>/
    └amplify/
        └backend/
            └function/
                └<Function名>/
                    └<Function名>-cloudformation_template.json

↑のファイルを参照してください。
このファイル内に以下のような記載が自動でされていると思います。

        :
        :
    "Role": {
      "Fn::GetAtt": [
        "LambdaExecutionRole",
        "Arn"
      ]
    },
    "Runtime": "nodejs14.x", // ここを→「nodejs20.x」などと書き換える
    "Layers": [],
    "Timeout": "25"
  }
},
        :
        :

ここをバージョンアップしたいNode.jsバージョンに書き換えてamplify pushコマンドを実行すればバージョンアップは完了です!
作業としてはこれだけなのですごく簡単かなと思います。(試していないですが、ランタイムがPythonの場合でも同様の手順でバージョンアップはできるかなと思います。)

本当に作業はこれだけ?

しかしNode.jsのバージョンアップをしているということはプログラム内で使用しているnpmパッケージもバージョンアップしないといけないケースがありませんか?
特にNode.js 14もしくはNode.js 16を使用していてNode.js 18もしくはNode.js 20にバージョンアップする場合は、aws-sdkのバージョンがV2からV3に変更になります!(参考リンクこちら&以下参考)

aws-sdkのバージョンアップについては中身のプログラムの記載方法もガラッと変わるため既存のプログラムの修正作業も発生します!

参考
aws-sdk version2 for javascript : https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/
aws-sdk version3 for javascript : https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/

サポート終了のメールが届いたら早めに上記確認して作業開始することをお勧めします。
※ちなみにこのサポート終了の通知メールはサポート終了の180日ほど前に来るようです。

このまま放置してしまっているとどうなるのか?

こちらに詳細が記載されていますが、まとめると、

  • AWS側が実行しているセキュリティーパッチの対象外になってしまう
  • AWSからの技術的サポートが受けられなくなる
  • 新たにLambda関数の作成ができなくなる(サポート終了後30日以降)
  • 既存のLambda関数のプログラム修正ができなくなる(サポート終了後60日以降)

ここまできてしまうと何か問題が起きた時に開発者のあなたの責任になってきてしまうのでそうならないように事前に対応をしておきたいですね。

以上読んでいただきありがとうございます。
この記事が皆様のお役に立てれば幸いです!!

関連記事一覧