dherault / dherault/serverless-offline
Golang handler confusion
- Dominant language
- JavaScript
- Stars
- 5.3k
- Forks
- 811
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 3
Description
There doesn't seem to be a way to make the project runnable in both AWS and offline.
## Attempt 1 (from `aws-go`)
So I have this config (from `aws-go` template):
```yaml
functions:
hello:
handler: bin/hello
events:
- httpApi:
path: /hello
method: get
world:
handler: bin/world
events:
- httpApi:
path: /world
method: get
```
This works on AWS and with `--useDocker`, but fails locally with an error:
```sh
$ curl 127.0.0.1:5555/hello
{"errorMessage":"ENOENT: no such file or directory, open '/home/anderson/src/serverlessapp.go'","errorType":"Error","stackTrace":[]}
```
Please note the path above: it's pointing to an unexisting `serverlessapp.go` file (which in fact is a folder of my project, `serverlessapp`)
## Attempt 2 (from PR #1320)
I've checked #1320 and that PR contains a different config, so I've rewritten my config by changing `handler` string:
```yaml
functions:
hello:
handler: hello/main.go # <-------
events:
- httpApi:
path: /hello
method: get
world:
handler: world/main.go # <-------
events:
- httpApi:
path: /world
method: get
```
Now, local execution succeeds:
```sh
$ curl 127.0.0.1:5555/hello
{"message":"Go Serverless v1.0! Your function executed successfully!"}
```
However, now the code does not work when deployed to AWS:
```sh
$ curl https://XXXXXXXXXX.execute-api.us-east-1.amazonaws.com/hello
{"message":"Internal Server Error"}
$ serverless logs --function hello
Running "serverless" from node_modules
START
fork/exec /var/task/hello/main.go: no such file or directory: PathError
null
END Duration: 2.96 ms (init: 19.76 ms) Memory Used: 19 MB
START
fork/exec /var/task/hello/main.go: no such file or directory: PathError
null
END Duration: 2.62 ms (init: 19.52 ms) Memory Used: 19 MB
```
**Question:** What is the correct way to configure my project? I cannot seem to find a way to run a project with the same config both locally and on AWS. Config 1 works on AWS only, config 2 works locally only...
Thanks in advance!
Contributor guide
Assessment
This issue has not been assessed yet.