Shogo's Blog

Apr 19, 2022 - 1 minute read - aws lambda

EOL間近の AWS Lambda Runtimes を探すスクリプト

「[要対応] AWS Lambda における Python 3.6 のサポート終了 | [Action Required] AWS Lambda end of support for Python 3.6」というメールを受け取ったので、その対応メモ。

背景

調査自体は簡単です。親切なことに送られてきたメールにやり方がバッチリ記載されています。

次のコマンドは、AWS CLI [3] を使用して、特定のリージョン内の Python 3.6 を使用しているすべての関数を一覧表示する方法を示しています。お客様のアカウント内のこうした関数すべてを確認するには、リージョンごとに次のコマンドを繰り返してください。

以下のコマンドを叩くだけ。

aws lambda list-functions \
    --function-version ALL \
    --region us-east-1 \
    --output text \
    --query "Functions[?Runtime=='python3.6'].FunctionArn"

ただ、「リージョンごとに次のコマンドを繰り返してください」とあるんですよね。 えっと・・・AWSって一体いくつリージョンあるんだっけ・・・? このメールを書いた人は自社のリージョン数を把握しているんでしょうか? 管理しているAWSアカウントも複数あるので、全リージョン分繰り返すなんて不毛です。

調査方法

そういうわけで簡単なシェルスクリプトを書きました。

#!/bin/bash
for ACCOUNT in $(perl -nle 'print $1 if /^[[](?:profile\s+)?([^]]+)/' ~/.aws/config); do
    for REGION in $(aws ec2 describe-regions --region us-east-1 --profile "$ACCOUNT" --output text --query "Regions[].{Name:RegionName}"); do
        echo "$ACCOUNT, $REGION:" >&2
        aws lambda list-functions \
            --function-version ALL \
            --region "$REGION" \
            --profile "$ACCOUNT" \
            --output text \
            --query "Functions[?Runtime=='python3.6'].FunctionArn"
    done
done

見つけたらランタイムを Python 3.9 にアップグレードしましょう。 多くの場合単純にランタイムの設定を変えるだけだと思いますが、 必要に応じてコードを書き換えてください。

まとめ

次のランタイムサポート終了のときに困らないようメモっておきました。 Python 3.9 のEOLは2025年10月なので、そのころにまた活躍することでしょう。 Queryの python3.6 の部分は適宜書き換えてください。

ちなみに2022-04-19現在、利用可能なリージョン数は22ありました(GovCloudのような特殊なリージョンを除く)。

参考