一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • AWS LambdaをGoで実装してみよう

Lambdaといえば言わずも知れたAWSのサービスで、

その大きな特徴は「サーバーを用意せずにコードだけ書いて実行できるサービス」である。

 

もっと簡単に言えば

**「用があるときだけ出てきて働くプログラムロボット」**。

 

自分が現場でLambdaをGo言語で実装する機会があり、

その環境構築に一癖あったので書いてみようと思う。

 

◆Go言語はランタイムが無い

先ほども書いたが、LambdaでGo言語を扱うには少し難しい。

理由は「goのランタイムが無い」こと。

 

正確には以前にはあった。

ただ、2023年12月31日にAmazon Linux 1のサポート終了に伴い、 go1.x ランタイムを廃止 となった。

それにより、

Go言語でLambdaの実装するにはローカルでビルド環境を構築し、ビルドした資材をアップロードすることになる。

 

別案件でPythonでのLambda実装も携わったのだが、

やはりランタイムが容易されているPythonの場合はぱっとアップロードして、ぱっと試せるのが良いなと思った。

 

◆Go言語でLambdaを実装する方法

参考)https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/golang-package.html#golang-package-windows

→Windows での .zip ファイルの作成

前提

・Windows ローカルマシンに Go がインストールされていること

・本リポジトリを Windows ローカルマシンに git clone されていること

GitHub から Windows 用の build-lambda-zip ツールをダウンロード

go install github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest

上記を実行すると、ローカルの環境変数「GOPATH」のディレクトリに.exe ファイルがダウンロードされる。

※通常[%USERPROFILE%\Go\bin] 配下

.zip ファイルを生成

以下、コマンドプロンプトで実施

  • git clone した リポジトリの ディレクトリに移動
  • 以下のコマンドを実施し、myFunction.zip(名前はなんでもよいと思う) を生成
    • 公式手順の「x86_64 アーキテクチャの場合」を参照(※対象 Lambda 関数のランタイム設定-アーキテクチャを「x86_64」に設定している為)
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
go build -tags lambda.norpc -o bootstrap main.go
%USERPROFILE%\Go\bin\build-lambda-zip.exe -o myFunction.zip bootstrap

生成した myFunction.zip を AWS Lambda にアップロードする

  • AWS Lambda ページ->関数->対象の関数名リンクを選択->メニュー「コード」->アップロード元リストを選択し、「.zip ファイル」を選択
  • 生成した myFunction.zip を選択し、保存ボタンを押下
  • 正常に更新されたことを確認する

 

公式ドキュメントにも一応手順は載っていたが、

知識ゼロだと分かりにくかったので試行錯誤した。

無事に動いてよかった。

The following two tabs change content below.

五十嵐 優介

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア