日: 2023年12月22日

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

    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 ランタイムには対応してないようで細心にする必要があったようです。