この記事は、ニフティグループ Advent Calendar 2023 11日目の記事です。
はじめに
こんにちは。ニフティ株式会社の添野翔太です。
AWS LambdaでGoランタイムがサポートされなくなるため弊社のブログ記事を参考にカスタムランタイムに移行しようとした際にハマった問題と解決方法をお伝えします。 また、このハマったポイントはサービス固有のものではないので、見ていただいた方の助けになっていれば幸いです!
背景
AWS LambdaでGoランタイムがサポートされなくなるためカスタムランタイムに移行しようとしました。
ハマったところ
弊社のブログ記事を参考にして、実施したところ、
| 
					 1 2  | 
						INIT_REPORT Init Duration: 10009.48 ms	Phase: init	Status: timeout INIT_REPORT Init Duration: 10010.51 ms	Phase: invoke	Status: error	Error Type: Runtime.Unknown  | 
					
というエラーが出るようになりました。
原因
この問題の原因としてはaws-lambda-goモジュールのバージョンがカスタムランタイムに対応したバージョン(v1.18.0/関連PR)よりも古いもの(v1.14.0)を使っていたことでした。

そこで、アップデートをしたところエラーは出なくなりました。
| 
					 1 2  | 
						% go get github.com/aws/aws-lambda-go                go: upgraded github.com/aws/aws-lambda-go v1.14.0 => v1.41.0  | 
					
provided.al2はカスタムランタイムなので、Lambda ランタイム APIがサポートされているバージョンを使ってビルドしていない場合、カスタムランタイムがAWS Lambdaから呼び出しイベントを受信し、応答データをAWS Lambda実行環境内に送り返せない状況になります。そしてタイムアウトになるようです。
まとめ
今回は、AWS LambdaでGoランタイムからカスタムランタイムに移行した際にハマったことと解決策について紹介しました。
明日は@uyuqui1718さんの「AWSのコスト削減を試した話(CloudFront編)」です。お楽しみに!
            

