![[小ネタ] Go言語のAWS SAMアプリケーションでAmazon Linux 2023カスタムランタイムを使おうとしてちょっとだけハマった話](https://devio2023-media.developers.io/wp-content/uploads/2019/11/aws-sam.png)
[小ネタ] Go言語のAWS SAMアプリケーションでAmazon Linux 2023カスタムランタイムを使おうとしてちょっとだけハマった話
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
小ネタです。
先日LambdaでAmazon Linux 2023ベースのカスタムランタイムがサポートされたのを受け、私の手持ちのGo言語SAMアプリケーションのランタイムを更新することにしました。
対象アプリケーションについてはこちらの記事をご覧ください。
Go 1.xランタイムのサポート終了に備えAmazon Linux 2022ベースのカスタムランタイムに切り替え済みのアプリケーションです。
ハマったポイント
SAM CLIでAmazon Linux 2023ベースのカスタムランタイム(provided.al2023)をサポートするのはVer.1.101.0以降となります。
最初にSAM CLIのバージョンをVer.1.101.0に上げ、template.yamlのランタイム指定をprovided.al2からprovided.al2023に更新するだけで作業は終わりです。
diff --git a/template.yaml b/template.yaml
index 91043f6..c25afb2 100644
--- a/template.yaml
+++ b/template.yaml
@@ -22,7 +22,7 @@ Resources:
FunctionName: cloudwatch-ojichat-widget
CodeUri: function/
Handler: bootstrap
- Runtime: provided.al2
+ Runtime: provided.al2023
Architectures: [arm64]
Tracing: PassThrough
Metadata:
あとはsam buildしてやるだけですが
Error: GoModulesBuilder:Validation - Runtime provided023 is not supported
という割と謎なメッセージと共にエラーになってしまいました。

原因と対応策
原因を調査してみたところSAM CLIの不具合であることが分かりました。
template.yamlに記載されたランタイム名からaws-lambda-buildersに引き渡す情報を解析する処理がAmazon Linux 2023環境に対応できなかったため「provided023というランタイムは無い」旨のエラーとなっています。
ちょうど本日この不具合を修正したVer.1.102.0がリリースされたのでバージョンアップしてやれば解消できます。
SAM CLIのバージョンアップ後は下図のとおりsam buildが正常終了します。

あとは動作確認してデプロイしてやればOKです。
最後に
以上となります。
ちょっとした不具合でしたが丁度良い?タイミングで遭遇したのでブログにしてみました。
Go言語のSAMアプリケーションの場合はSAM CLI Ver.1.101.0ではなくVer.102.0から実用可能な点だけ覚えて頂ければ幸いです。






