air-verse / air

☁️ Live reload for Go apps

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Continuous processes in cmd do not trigger subsequent builds

andrehoong-pixieset opened this issue · comments

Hello, I am trying to set up air for an AWS Lambda development environment. I have this cmd defined in the .air.toml file:
cmd = "go build -o ./tmp/main . ; ~/.aws-lambda-rie/aws-lambda-rie ./go/main main.handle

The idea is whenever air rebuilds the executable we launch aws-lambda-rie with that new executable. My issue is when using this command, air does not rebuild any changes. In the logs I will only get main.go has changed , but no build is triggered after that.

I suspect this is because ~/.aws-lambda-rie/aws-lambda-rie ./go/main main.handle starts an ongoing process and as a result running cmd does not return an exit code. I was considering running the aws-lambda-rie through the post_cmd, but it looks like that isn't implemented at all.

Any suggestions are greatly appreciated!

commented

Hello ! You might be trying to locally run your lambda, maybe this setup can help you 🤷

I use public.ecr.aws/lambda/provided:al2023 as base image for my local-dev image, install go from sources, then add this as ENTRYPOINT:

ENTRYPOINT ["air", "-c", "config/.air-local.toml"]

Here is a relevant part of air-local.toml

[build]
cmd = "go build -o /var/runtime/bootstrap ./cmd/${GO_MAIN_FILE_DIR}"
bin = "/lambda-entrypoint.sh"
args_bin = ["whatever"]

Doing so, editing my Go files triggers a build and re-runs aws-lambda-rie as needed (this is handled by default in the image's /lambda-entrypoint.sh)

You can find a bit of help in the official doc