Serverless Framework + SAM CLI + Golangで開発を始める準備をした時のメモ

Serverless Framework利用時のローカル開発、GolangのWAF利用について調べたのでメモを残しておきます

はじめに

を使ってGolangのウェブアプリを開発する準備をした時のメモです。

主に

  • ローカルで開発する時どうするのか
  • GolangのWAF(chiとか)を動かすにはどうすれば良いか

がイマイチわかってなかったでそのあたりを中心調べました。

オフライン開発

オフライン開発にはserverless-offlineというプラグインがあるらしいので試してみましたが、Golangに対応していないようなので違う方法を探すことにしました。

色々と調べてるとAWSが出しているSAM CLIというローカル開発用のツールが提供されているようだったのでとりあえずこれを使ってみることにしました。

Python2系だとインストールに失敗するようなので、Macを使っている人はpyenvなどで3を入れておきましょう。

pip install --user aws-sam-cli

さらに調べていると

Running Go AWS Lambdas locally with SLS framework and SAM

というちょうど良い記事があったのでこちらを参考に諸々セットアップしてオフライン開発のほうは準備完了です。

Golangのウェブアプリケーションフレームワーク対応

これもちょっと調べたらライブラリがあって、こちらを使うと一瞬で終わりました。

https://github.com/akrylysov/algnhsa

lambda.Start(Handler)

となっている箇所を消してalgnhsa.ListenAndServeを使えば完了です。

すべてリクエストを受けて内部のルータで処理するために、serverless.yml template.yml共にpathとmethodを下記のように書き換えておいてください。

path: /{proxy+}
method: ANY

/アクセス時のみmissing tokenとか出て正常処理できないのはバグみたいです。

https://github.com/awslabs/aws-sam-cli/issues/437

APIサーバとして利用したいので特に問題なかったです。

まとめ

  • Serverless FrameworkでLambda+Golangの組み合わせを選択する時はオフライン開発にSAM CLIを使うと楽
  • Lambda上でGolang製のウェブアプリを動かしたい時はalgnhsaを使うと楽

もうちょっと色々触ると問題点も色々と出てきそうですが、とりあえずこれで開発準備が整いました。

このエントリーをはてなブックマークに追加
Comments