Marno vN
Marno vN

Reputation: 155

AWS Elastic Beanstalk Go File Permission Problem

I am currently deploying a Go application to AWS Elastic Beanstalk.

In the application, I create a file for logging.

When the application deploys, I get an error depending on what I did.

When I os.Create("/var/log/golang/golang-server.log"). I get the following error message back open /var/log/golang/golang-server.log: no such file or directory

But when I os.Create("/var/log/golang-server.log"). I get the following error message back open /var/log/golang-server.log: permission denied

I am currently deploying the example go.zip application they provide on their website to make sure that none of my implementation/code is the problem. https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/go-getstarted.html

In there code, they also create a file for logging, but they are ignoring the error from os.Create, and thus the file never gets created.

I have a .ebextension folder that I could use should I need to fix something.

Thank you.

Upvotes: 1

Views: 485

Answers (1)

Marcin
Marcin

Reputation: 238279

It seems that you are executing the os.Create commands from your application.

Your application executes under webapp user, while /var/log is owned by root. Subsequently you get those errors.

To recitfy the issue, in your .ebextension you could have commands (or files) section which will create a log config file for your application by adding it to /opt/elasticbeanstalk/config/private/logtasks/bundle.

For example, you can just create:

/opt/elasticbeanstalk/config/private/logtasks/bundle/my-go-app.conf

with the content of

/var/app/current/log/*.log

where /var/app/current/log/*.log would be location of your custom application logs. It can be other location. This is just an example of the config file.

Upvotes: 1

Related Questions