AWS LambdaでGo1.xランタイムからAmazon Linux 2へスムーズに移行する方法

はじめに

AWS Lambdaは、サーバーレスコンピューティングを可能にするAWSの重要なサービスですが、Lambda はGo1.xランタイムの廃止とprovided.al2ランタイムへの移行を予定しています​​。

この記事では実際に変更した際に修正した箇所についてまとめます。

変更内容

公式ブログと、クラメソさんの記事を参考に以下の通り変更しました

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Metadata:
      BuildMethod: go1.x 
    Properties:
      CodeUri: hello-world/ # folder where your main program resides
      Handler: bootstrap
      Runtime: provided.al2
      Architectures:
        - x86_64

sam deploy 後

以下のようなエラーが発生しました

Phase: invoke Status: error Error Type: Runtime.Unknown

問題への対処

調べたところ、 github.com/aws/aws-lambda-goが古いとal2 runtimeに対応してないことがわかりました。 そのため、以下の対処を行いました。

go get github.com/aws/aws-lambda-go
go mod download gopkg.in/yaml.v3 

古い aws-lambda-go は provided.ai2 ランタイムには対応してないようで細心にする必要があったようです。