dherault/serverless-offline

Golang handler confusion

Open

#1358 aperta il 28 mar 2022

Vedi su GitHub
 (5 commenti) (16 reazioni) (0 assegnatari)JavaScript (792 fork)batch import
help wanted

Metriche repository

Star
 (5072 star)
Metriche merge PR
 (Merge medio 1g 11h) (6 PR mergiate in 30 g)

Descrizione

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):

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:

$ 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:

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:

$ 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:

$ 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!

Guida contributor