dherault / dherault/serverless-offline

Golang handler confusion

Open
#1,358 5 comments 16 reactions 0 assignees View on GitHub
help wanted
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.