Go 1.x ランタイムでデプロイしたLambdaがあるとこういうメールが来る。
Amazon Linux AMI のメンテナンスサポートが 2023 年 12 月 31 日に終了するのに合わせて、AWS Lambda での Go 1.x ランタイムのサポートを終了します [1]。
Lambda は、provided.al2 ランタイムを使用して Go プログラミング言語を引き続きサポートします。
provided.al2 ランタイムを使用すると、AWS Graviton2 プロセッサのサポートや、より小さなデプロイパッケージとより高速な関数呼び出しパスによる効率的な実装など、go1.x ランタイムに比べていくつかの利点があります。
詳細については、ブログ記事 [2] を参照してください。
Q:「Go対応のプライオリティが下げられたのか」
ちょっとニュアンスが違う。
Lambdaランタイム 一覧にあるとうりLambdaはarm64やAmazon Linux 2サポートが進行していて、Javaや.NET、スクリプト言語などのシステム依存の割合が比較的大きい環境のが優先されている。
Goはカスタムランタイム以前にサポートされたので専用ランタイムが存在しているが、たとえばシステム依存の少ないワンバイナリを作れるRustなども専用ランタイムはない*1。
なのでより正確な文脈としてはFaaSやサーバーレスサービス全般の(Dockerに限らない)コンテナネイティブなアーキテクチャへの移行という意味になると思う。
現在はウェブアプリケーション向けのソースコードからAmazon Linuxベースのイメージを生成するApp Runnerの基盤もあるし、GoogleのCloud Functions も2nd genになってCloud Runが基盤になっている。
時系列
2017年末にAmazon Linux 2 LTS Candidateが公開。
2018年1月にAWS LambdaのGoサポートが追加。
2018年11月にAmazon Linux 2を使ったカスタムランタイムが公開。
2020年1月にAmazon Linux AMI(2じゃないやつ)のサポート期間が2020年6月30日から2023年6月30日まで延長。
2020年1月のBuilding enterprise applications using Amazon DynamoDB, AWS Lambda, and Go | AWS Database Blogが書かれた時点ではサンプルコードにGo 1.x ランタイムが指定されている*2。
2020年6月のコミットでカスタムランタイムを指定してaws-lambda-goで書いた関数をデプロイ可能になった。
https://github.com/aws/aws-lambda-go/pull/298
2020年9月の公式ドキュメントGo の AWS Lambda デプロイパッケージ - AWS LambdaではGo 1.x ランタイムが指定されている。
2022年4月頃のドキュメント.zip ファイルアーカイブを使用して Go Lambda 関数をデプロイする - AWS Lambdaの最後にprovided.al2 ランタイムのオプションが登場。
これ以降英語ドキュメントの方の経過を見ていった方がいいのではと思ったので切り換え。
2023年1月のBuilding Lambda functions with Go - AWS LambdaではまだGo 1.x ランタイムのみが記述。
2023年6月 Building Lambda functions with Go - AWS Lambda になかった
Go is implemented differently than other managed runtimes. Because Go compiles to native code, Lambda treats Go as a custom runtime. We recommend that you use the provided.al2 runtime to deploy Go functions to Lambda.
2023年8月には追加されている。
まとめ
- Go 1.x ランタイムはAmazon Linux AMIと共にしばらく延命されていたが最近までドキュメントから流入は起きていた
- アクションが必要