Search code examples
node.jsamazon-web-servicesamazon-elastic-beanstalkamazon-linux-2

AWS Elastic Beanstalk Amazon Linux 2 - How to set a custom NodeCommand


Migrating your Elastic Beanstalk Linux application to Amazon Linux 2 - AWS Elastic Beanstalk

According to the docs, the aws:elasticbeanstalk:container:nodejs namespace is no longer supported and the new way to set NodeCommand is to "Use a Procfile or the scripts keyword in a package.json file to specify the start script.".

I've never dealt with Procfiles and the part "the scripts keyword in a package.json file" isn't very clear, are they going to execute the scripts in order, until something sticks or what?

Did anyone figure out how exactly to set a custom NodeCommand in Amazon Linux 2?


Solution

  • you can use script option in your package.json. For example, if you start sample node.js application that EB provides, the file is:

    package.json

    {
      "name": "Elastic-Beanstalk-Sample-App",
      "version": "0.0.1",
      "private": true,
      "dependencies": {},
      "scripts": {
        "start": "node app.js"
      }
    }
    

    Update

    Docs have example how to use Procfile:

    You can add a Procfile to your source bundle to specify the command that starts your application, as the following example shows. This feature replaces the legacy NodeCommand option in the aws:elasticbeanstalk:container:nodejs namespace.

    web: node index.js
    

    When you don't provide a Procfile, Elastic Beanstalk runs npm start if you provide a package.json file. If you don't provide that either, Elastic Beanstalk looks for the file app.js or server.js, in this order, and runs it.