AWS Lambda 関数の特定のランタイムを全リージョンから取得するAWS CLIコマンド
2024.4.26
概要
AWS から Lambda 関数のランタイム EOL についてお知らせが来ているかと思います。
このお知らせの内容に対象となる Lambda 関数を取得する AWS CLI のコマンドがありますが、リージョンを指定する必要があります。
リージョンごとに、コマンドを実行するのは手間なのですべてのリージョンの結果をまとめて取得する方法をご紹介します。
[Action Required] AWS Lambda end of support for Python 3.8 Hello, We are contacting you as we have identified that your AWS Account currently has one or more AWS Lambda functions using the Python 3.8 runtime. We are ending support for Python 3.8 in Lambda on October 14, 2024. This follows Python 3.8 End-Of-Life (EOL) which is scheduled for October, 2024 [1]. As described in the Lambda runtime support policy [2], end of support for language runtimes in Lambda happens in several stages. Starting on October 14, 2024, Lambda will no longer apply security patches and other updates to the Python 3.8 runtime used by Lambda functions, and functions using Python 3.8 will no longer be eligible for technical support. Also, Python 3.8 will no longer be available in the AWS Console, although you can still create and update functions that use Python 3.8 via AWS CloudFormation, the AWS CLI, AWS SAM, or other tools. Starting February 28, 2025, you will no longer be able to create new Lambda functions using the Python 3.8 runtime. Starting March 31, 2025, you will no longer be able to update existing functions using the Python 3.8 runtime. We recommend that you upgrade your existing Python 3.8 functions to the latest available Python runtime in Lambda before October 14, 2024. End of support does not impact function execution. Your functions will continue to run. However, they will be running on an unsupported runtime which is no longer maintained or patched by the AWS Lambda team. This notification is generated for functions using the Python 3.8 runtime for the $LATEST function version. The following command shows how to use the AWS CLI [3] to list all functions in a specific region using Python 3.8, including published function versions. To find all such functions in your account, repeat this command for each region: aws lambda list-functions --region us-west-2 --output text --query "Functions[?Runtime=='python3.8'].FunctionArn" A list of your affected Lambda functions is available in the 'Affected resources' tab of your AWS Health Dashboard. From 180 days before deprecation, you can also use Trusted Advisor to identify all functions using the Python 3.8 runtime, including published function versions [4]. If you have any concerns or require further assistance, please contact AWS Support [5]. [1] https://devguide.python.org/versions/ [2] https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html [3] https://aws.amazon.com/cli/ [4] https://docs.aws.amazon.com/awssupport/latest/user/security-checks.html#aws-lambda-functions-deprecated-runtimes [5] https://aws.amazon.com/support
結論
結論としては以下のコマンドを実行すれば取得できます。
for region in `aws ec2 describe-regions --query 'Regions[].RegionName' --output text`;do aws lambda list-functions --region ${region} --output text --query 'Functions[?Runtime==`python3.8`].[FunctionArn]';done
なお、Runtime
の値を変えれば別のランタイムも検索できます。
ランタイム一覧は以下ドキュメントにあるIdentifier
を指定します。
実行結果は以下の通りです。
※cloudshell から実行してます
[cloudshell-user@ip-10-134-21-136 ~]$ for region in `aws ec2 describe-regions --query 'Regions[].RegionName' --output text`;do aws lambda list-functions --region ${region} --output text --query 'Functions[?Runtime==`python3.8`].[FunctionArn]';done arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXXX:function:test arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXXX:function:test2
コマンドの内容
以下 2 つをいい感じに組み合わせているワンライナーです。
- リージョン一覧
- 特定のランタイム一覧
リージョン一覧
describe-regions
コマンドを実行することでリージョン一覧が取得できます。
describe-regions — AWS CLI 2.15.40 Command Reference
名前以外は不要なのでクエリでリージョン名だけ出力してます。
コマンド単体実行結果
[cloudshell-user@ip-10-138-184-123 ~]$ aws ec2 describe-regions --query 'Regions[].RegionName' --output text ap-south-1 eu-north-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-3 ap-northeast-2 ap-northeast-1 ca-central-1 sa-east-1 ap-southeast-1 ap-southeast-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2
このリージョン一覧をregion
変数に渡して for 文で回してます。
特定のランタイム一覧
続いてが、list-functions
というコマンドで Lambda 関数の一覧を取得します。
list-functions — AWS CLI 2.15.40 Command Reference
公式ドキュメントや AWS お知らせにある AWS CLI をほぼそのまま活用します。
AWS お知らせ以外にも、以下ドキュメントにも載っています。
Lambda runtimes – AWS Lambda
コマンド単体実行結果
[cloudshell-user@ip-10-138-184-123 ~]$ aws lambda list-functions --region ap-northeast-1 --output text --query 'Functions[?Runtime==`python3.8`].[FunctionArn]' arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXXX:function:test arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXXX:function:test2
結果ごとに改行をつけたかったので、以下の通り変更しています。
'Functions[?Runtime==`python3.8`].FunctionArn' ↓ 'Functions[?Runtime==`python3.8`].[FunctionArn]'
なお、本コマンドでは、リストの上限数については考慮してないためご注意ください。
Lambda は呼び出しごとに最大 50 個の関数を返します。
まとめ
定期的にランタイムのお知らせは来るため、一覧を取得できる方法を知っていれば、対象を簡単に探すことができます。
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitter2021年新卒入社。インフラエンジニアです。RDBが三度の飯より好きです。 主にデータベースやAWSのサーバレスについて書く予定です。あと寒いのは苦手です。
Recommends
こちらもおすすめ
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16