AWS Lambda の amplify-login で始まる関数の要否判断について調査した結果を備忘録として残しておく

調査に至った事象

AWS より以下のメールが配信されていた
対象の Lambda 関数を確認すると掲題のものが指摘を受けていたが、作成した記憶がなかったため、要否の判断がつかなかったため、調査を行なった

[アクションが必要です] AWS Lambda での Node.js 16 のサポート終了について | [Action Required] AWS Lambda end of support for Node.js 16

English follows Japanese | 英語のメッセージは日本語の後にございます
いつもお世話になっております。

[Amazon Health Dashboard はこのコミュニケーションに関するリマインダー通知を定期的にトリガーする場合があります]
お客様の AWS アカウントに現在、Node.js 16 ランタイムを使用する AWS Lambda 関数が 1 つ以上あることが判明したため、ご連絡いたしております。
Lambda での Node.js 16 のサポートは 2024 年 6 月 12 日に終了します。これは、2023 年 9 月 11 日に Node.js 16 がサポート終了 (EOL) したことに続くものです [1]。

Lambda ランタイムサポートポリシー [2] で説明されているように、Lambda の言語ランタイムのサポートはいくつかの段階で終了します。2024 年 6 月 12 日以降、Lambda は Lambda 関数で使用される Node.js 16 ランタイムにセキュリティパッチやその他の更新を適用しなくなり、Node.js 16 を使用する関数はテクニカルサポートの対象ではなくなります。また、Node.js 16 は AWS コンソールで使用できなくなりますが、AWS CloudFormation、AWS CLI、AWS SAM、またはその他のツールを使用して、Node.js 16 を使用する関数を作成および更新することはできます。2025 年 2 月 28 日以降、Node.js 16 ランタイムを使用する新しい Lambda 関数を作成することはできなくなります。2025 年 3 月 31 日以降、Node.js 16 ランタイムを使用する既存の関数を更新することはできなくなります。

2024 年 6 月 12 日までに、既存の Node.js 16 の関数を利用可能な最新の Node.js ランタイムにアップグレードすることをお勧めします。Node.js 16 の関数のリストは、AWS ヘルスダッシュボードの [影響を受けるリソース](Affected resources) タブにあります。
サポートの終了は関数の実行には影響しません。関数は引き続き実行されます。ただし、これらはサポートされていないランタイムで実行されるため、AWS Lambda チームによるメンテナンスやパッチの適用は行われません。

この通知は、$LATEST 関数バージョンに Node.js 16 ランタイムを使用する関数に対して生成されました。次のコマンドは、AWS CLI [3] を使用して、Node.js 16 を使用して特定のリージョンのすべての関数 (公開されている関数バージョンを含む) を一覧表示する方法を示しています。アカウントでこのような関数をすべて見つけるには、各リージョンで次のコマンドを繰り返します。

aws lambda list-functions --region us-west-2 --output text --query "Functions[?Runtime=='nodejs16.x'].FunctionArn"

廃止予定の 180 日前から、Trusted Advisor を使用して、公開されている関数バージョン [4] を含め、Node.js 16 ランタイムを使用するすべての関数を識別することもできます。

ご不明な点やサポートが必要な場合は、AWS サポート [5] までお問い合わせ下さい。
・・・

amplify-login で始まる Lambda 関数とは?

Amplify Studioを有効化した際に自動的に作成される関数

要否の判断

Amplify Studio を使用していない場合は削除して問題ない
また、参考のように Amplify アプリと Lambda 関数の関連性を特定することができる

  • Lamdba 関数名の AppID と Cognito ユーザプール名の AppID が一致しているかどうか

全リージョンに存在する Lambda 関数の中で Node 16 を使用しているものを出力する方法

前提条件

  • Sh が実行可能
  • AWS CLI がインストール済
  • 以下の権限を実行可能な IAM ユーザ or IAM ロールが設定済
    • ec2:DescribeRegions
    • lambda:ListFunctions
#!/bin/sh

CMDNAME=`basename $0`
if [ $# -gt 1 ]; then
    echo "Usage: ${CMDNAME} [profile]" 1>&2
    exit 1
fi

# 第1引数でプロファイル名が指定されていたら上書きする
PROFILE="default"
if [ $# -eq 1 ]; then
    PROFILE=$1
fi

# AWSのリージョンのリストを取得する
REGIONS=(`aws --profile ${PROFILE} ec2 describe-regions --query Regions[*].RegionName --output text`)

# リージョン毎に Lambda 関数のリストを出力する ※Lambda 関数名 昇順
for region in ${REGIONS[@]}
do
    echo "[${region}]"
    aws --profile ${PROFILE} lambda list-functions --output text --region ${region}  --query "Functions[?Runtime=='nodejs16.x'].[FunctionName, LastModified, Description]" | sort -k 1 | column -t -s "`printf '\t'`"
    echo "---------------------"
done