go-lambda-practice

module
v0.0.0-...-dcad391 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2021 License: MIT

README

go-lambda-practice

これをもとにやってみる。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/go-image.html

はまったところ

  • ディレクトリ構成がよくわからない
    • 想定ではルートフォルダに lambda handler としたいプログラムが置かれそうな気がする
  • alpineでのビルド
    • 一応ドキュメントの後の方には書いてある
    • 先に書いてある方法でやると lambda のエミュレーターとか含まれたイメージがビルドされる
    • これが結構ファイルサイズある(100MBくらい)ので、ローカルデバッグ用にしておき本格デプロイ時のみ alpine かなという感じ
      • ECRには利用制限があるため、それを考えても image サイズは小さいほうが良い
    • 手元ではどうすべきか悩んだ結果、Dockerfileごと分けてみることにした
  • WORKDIRが空になる問題
    • lambda上で設定するか、Dockerfile上で設定する必要がある
    • Dockerfile上に書いておいて、必要なら lambda 上で上書きする運用が無難かなという感想
  • alpine 利用時に rie Runtime Interface Emulatorのこと使ってデバッグするところ
    • サンプルに書いてある entry.sh の指定パスが Dockerfile 上に書くパスと異なる
    • /usr/local/bin/aws-lambda-rie に rie を入れるよう Dockerfile 側を書き換えるとよさそう
  • デバッグ用の curl コマンド
    • 最後のコンマはいらないと思う(誤植?)

使い方とか

ローカルで動かす

docker build -f ./build/development/Dockerfile -t hello-world-lambda-local .
docker run -p 9000:8080 hello-world-lambda:latest /main

この状態で例の curl コマンド(ドキュメント参照)を打つと動くはず

デプロイ用の Dockerfile は分けることにした。

docker build -f ./build/production/Dockerfile -t hello-world-lambda .

あとは tag を打って ECR に push する(ドキュメント参照)

lambda との紐づけ方もドキュメント参照

参考

Directories

Path Synopsis
refer: https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/golang-handler.html
refer: https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/golang-handler.html

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL