[小ネタ] Go言語のAWS SAMアプリケーションでAmazon Linux 2023カスタムランタイムを使おうとしてちょっとだけハマった話

[小ネタ] Go言語のAWS SAMアプリケーションでAmazon Linux 2023カスタムランタイムを使おうとしてちょっとだけハマった話

Clock Icon2023.11.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

小ネタです。

先日LambdaでAmazon Linux 2023ベースのカスタムランタイムがサポートされたのを受け、私の手持ちのGo言語SAMアプリケーションのランタイムを更新することにしました。

https://dev.classmethod.jp/articles/relase-provided-amazon-linux-2023-on-lambda/

対象アプリケーションについてはこちらの記事をご覧ください。

https://dev.classmethod.jp/articles/how-to-migrate-aws-sam-go-lambda-application/

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に更新するだけで作業は終わりです。

template.yamlの変更点
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の不具合であることが分かりました。

https://github.com/aws/aws-sam-cli/pull/6247

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から実用可能な点だけ覚えて頂ければ幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.