Node.js Deploy to Amazon Web Services (AWS) Tutorial (Elastic Beanstalk, Express, Git, CI/CD)

Поделиться
HTML-код
  • Опубликовано: 24 авг 2024
  • Start your software dev career - calcur.tech/de... 💯 FREE Courses (100+ hours) - calcur.tech/al...
    🐍 Python Course - calcur.tech/py...
    ✅ Data Structures & Algorithms - calcur.tech/ds...
    ~~~~~~~~~~~~~~~ CONNECT ~~~~~~~~~~~~~~~
    ✉️ Newsletter - calcur.tech/ne...
    📸 Instagram - / calebcurry
    🐦 Twitter - / calebcurry
    🔗 LinkedIn - / calebcurry
    ▶️ Subscribe - calcur.tech/sub...
    👨🏻‍🎓 Courses - www.codebreakt...
    ~~~~~~~~~~~~~~ SUPPORT ME ~~~~~~~~~~~~~~
    ↪ My Amazon Store - www.amazon.com...
    🅿 Patreon - calcur.tech/pat...
    🅖 GitHub Sponsors - github.com/spo...
    Ⓟ Paypal - paypal.me/calcur
    🅑 Bitcoin - 3HnF1SWTzo1dCU7RwFLhgk7SYiVfV37Pbq
    🅔 Eth - 0x350139af84b60d075a3a0379716040b63f6D3853
    📈 Buy Bitcoin - calcur.tech/cr...
    Reserve the Ruby Steel crypto rewards card and get a $25 bonus (use affiliate code "Caleb") - calcur.tech/cr...

Комментарии • 185

  • @ThatsPety
    @ThatsPety 4 года назад +83

    If you're watching this, here's whats going on with the 502 error:
    Don't make a new variable in elastic beanstalk called "port"! Amazon already sets the environment variable for you...but they set the variable "PORT", not "port". So in your app.js code change "process.env.port" to "process.env.PORT" and things will work properly...
    Except they won't. For a lot of you, you're still getting a 502 error. But that isn't because of the port; your application simply can't start, with or without AWS. The issue is that AWS is trying to run a command like "npm start" but it isnt working. On your local machine navigate to the project directory in your terminal and try "npm start". If that fails, then you've found the problem. Here's how you fix it...
    npm start, by default, looks for a file called "server.js", not "app.js" like he told you to name your file. There are two solutions. The first is to change the settings in your project to make it look for "app.js" instead. The second solution is to simply change "app.js" file name to "server.js". I recommend the second option.
    Repush after making these changes and you should be good to go.

    • @valiant7057
      @valiant7057 3 года назад

      This 100% solved my issue with bad gateway. Thanks!

    • @andrewradulescu
      @andrewradulescu 3 года назад +1

      +1

    • @garinnmorton9640
      @garinnmorton9640 3 года назад

      @Pety im still getting the 502 error :( any other suggestions? Im getting both connections just fine, it just won't let me open up the web app

    • @garinnmorton9640
      @garinnmorton9640 3 года назад

      im also trying to return in an html page, not just a welcome message

    • @ThatsPety
      @ThatsPety 3 года назад

      @@garinnmorton9640 oh no! when you run "npm start" on your local machine, does it work?

  • @robertgioeli3211
    @robertgioeli3211 2 года назад +13

    Caleb I know it's 2 years later but thanks for this video bro. You've always had down to earth explanations that people from all learning styles can understand.

  • @richie-bonilla
    @richie-bonilla 4 года назад +38

    >"502 Bad Gateway, yeah!... so that's the end of the tutorial."
    hahahaha

  • @Chrrxs
    @Chrrxs 4 года назад +39

    For anyone watching and still getting a 502 error make sure to define a "start" script in your package.json, in my case I did:
    "start":"node app.js"
    Also make sure to define your port in env config and look in the logs to see which port your environment is running on

    • @Heliotropeeee
      @Heliotropeeee 3 года назад

      god bless you man, the problem was the json file.
      people, be careful even if the "start":"nodemon server.js" looks like this.
      it will BE WRONG because of nodemon, just use node server.js as well or app.js if thats the case

    • @reesharper7506
      @reesharper7506 2 года назад +1

      @@Heliotropeeee I wish I read the comments earlier, I just found it in the logs that nodemon was the issue. then I came to the comments and immediately saw this hahaha

  • @sebastianraab4887
    @sebastianraab4887 4 года назад +4

    You, Sir, are a true hero. Not the hero we deserved, but the hero we needed.

  • @datacationx
    @datacationx Год назад

    Almost 3 years later, and this is the best tutorial i've ever seen. Thank you so much

  • @omerlev7776
    @omerlev7776 4 года назад +7

    FINALLYYYYY, a good tutorial on how to deploy with aws. THANK YOU!!!!

  • @jonjon4796
    @jonjon4796 4 года назад +20

    Yes caleb we are very interested on a tutorial on how to use mongo db with this. pls do

  • @cliffvbajo
    @cliffvbajo 2 года назад +1

    I like that you showed even the errors you encountered so that it can help us debug/fix it. Thank you buddy! I will slap the "like" button and subscribe too!

  • @jaydave791
    @jaydave791 3 года назад +8

    instead of adding port as env variable you should use PORT(all caps) in your code for it to work also it is a good practice to have environment variables in all caps

  • @josephwong2832
    @josephwong2832 4 года назад +3

    Thanks a lot Caleb!
    Love how you celebrate your failures/errors. That's the best attitude

  • @SrRunsis
    @SrRunsis 4 года назад

    Man just what I needed! Thanks!
    If any of you guys is having trouble trying to connect to a RDS Database from an Elastic Beanstalk Node.JS app check the SECURITY GROUP POLICY of the DB to accept traffic from Custom > Your Beanstalk Instance (this must be done manually) . Also check if you have a NPM RUN script in your package.json (it wont work otherwise) and your ENVIRONMENT VARIABLES set in the Beanstalk environment section.

  • @gavinhatch9991
    @gavinhatch9991 3 года назад

    9:49 "Maybe it's not. I don't know. I don't know your life!" bro i died.

  • @nishantsethi6625
    @nishantsethi6625 Год назад

    I am halfway to the video, the way you summed up everything. its marvellous and big thank you

  • @sohailb1894
    @sohailb1894 2 года назад

    The best tutorial on deployment of node project on AWS! thanks

  • @suhaib404
    @suhaib404 4 года назад +1

    This video is gold.

  • @jameschhun6200
    @jameschhun6200 3 года назад +1

    Hey man thanks for this video, I used to watch you alot during my senior year of university for DBMS. Glad to see that 3 years later you're still producing content that is completely relevant to me haha

  • @alexandermichaud957
    @alexandermichaud957 2 года назад +1

    This was exactly what I needed to get my app up and running. Thank you for a down-to-earth, straightforward tutorial

  • @runningfox4049
    @runningfox4049 2 года назад

    worked first time. great tutorial. keep up the great work. thank you

  • @GabeSegura94
    @GabeSegura94 4 года назад +2

    That deployment reaction is one we all know all too well! 😂😂

  • @luisantos1986
    @luisantos1986 4 года назад +2

    well after a whole day of researching looks like the Proxy server: nginx doesn't recognize my process.env.port so i hardcoded to 8080 and it worked.... not the best practices but it's a start.
    For anyone following this tutorial, wich is very good BTW just change this line of code and i'll be fine.
    const port = process.env.port || 8080

    • @taofeekolalekan3399
      @taofeekolalekan3399 4 года назад +1

      const port = process.env.PORT || 3000 change to PORT instead of port.

    • @boddulasrikanth6047
      @boddulasrikanth6047 3 года назад +1

      Thanks man.....after a day of searching this helped me....god bless you

  • @lucasmazaron718
    @lucasmazaron718 2 года назад

    Thank you from Brazil! You helped me a lot hehe

  • @adrianfittolani5001
    @adrianfittolani5001 4 года назад +4

    So good. Thank you. This worked great for me (had been trying to figure it out for a while). Site up and going , until it's time to hit the DB on Atlas! Would be great to see the Mongo DB part you were going to do.

  • @noobminer3136
    @noobminer3136 4 года назад +1

    I had a local env with mongoDB/atlas but it was impossible to find a tutorial on how to bring everything live. Your tutorial nailed it thanks!

  • @nicholasdaniel-richards1309
    @nicholasdaniel-richards1309 2 года назад

    Bloomin eck Caleb - nicely done. I needed a very simple start for my first was deploy - I feel like I learned all the steps waaay beyond this and was missing this critical step. Subscribed. Thank you.

  • @nicolasportu
    @nicolasportu 2 года назад

    Outstanding! Cristal clear :)

  • @QuakerRaze
    @QuakerRaze 4 года назад +7

    You're the best, God bless.

  • @ThomasFaller
    @ThomasFaller 4 года назад +1

    Love the video and your attitude! Keep it up!
    When you see the kind of videos AWS Solution Architects make you're happy that they're not the only ones.

  • @joeyjohnson4153
    @joeyjohnson4153 4 года назад

    haven't finished watching this but already loving it. Subscribed straight away. I am in the process of making a complete career re-direction aka "CHANGE" and will need easy-to-follow videos like this one here. Nice one Caleb!!

  • @tanaiudomtanapaiboon7207
    @tanaiudomtanapaiboon7207 Год назад

    solve the problem Caleb, thank you very much.

  • @nikmanzo8569
    @nikmanzo8569 4 года назад +2

    Yeah! A CRUD app would be great! THanks!

  • @Justin-te2kg
    @Justin-te2kg 2 года назад

    20:04 an emotion felt by programmers universally

  • @aryankathawale9269
    @aryankathawale9269 Год назад

    thank you , you just made my job 5X easier

  • @KM-zd6dq
    @KM-zd6dq Год назад

    Preying is a very important part of the process 20:03

  • @vivekmankar5823
    @vivekmankar5823 4 года назад

    I subscribed to the channel as soon as I finished the video! Awesome work Bro !

  • @MrCoolieification
    @MrCoolieification 4 года назад +1

    Very informative video, I appreciate you showing us the trial and error and breaking down concepts. Thank you.

  • @azamsharp
    @azamsharp 3 года назад +1

    Thank you!

  • @bryanoliverosperez8827
    @bryanoliverosperez8827 2 года назад

    thank you so much, I learned something new

  • @visvm747
    @visvm747 4 года назад

    Cool Caleb. Tip for beginners, AWS EB considers app.js as default start script. If different, explicitly mention in package.json. "start": "src/app-main.js"

  • @valiant7057
    @valiant7057 3 года назад +1

    Edit: Solution at the bottom of this comment
    Everything went perfect for me besides the part 2 deploy on the CodePipeline. This was my error: "Deployment completed, but with errors: During an aborted deployment, some instances may have deployed the new application version. To ensure all instances are running the same version, re-deploy the appropriate application version. " I did everything the same as the video (will review again) - any advice?
    EDIT: The error in the AWS logs (download by going to environment -> logs) was that my package.json file did not specify a node version. I added "engines":{"node":"12.18.3"}, to my package.json top-level (inside the first {}, right after "name": "project0",). Then I got an error in the logs saying that it couldn't get my dependencies... so then, in my .gitignore, I put a # (comment symbol) in front of the node_modules line under dependencies. Boom problem fixed. Now I'm just dealing with the 502 issue with the help of the comments
    Cheers

  • @juliuspetre4704
    @juliuspetre4704 2 года назад

    Your awesome dude! I already hit the subscribe button! Please do more Videos just like this one.

  • @eddiehernandez70
    @eddiehernandez70 4 года назад +1

    Great tutorial. Exactly what I needed. Thanks!

  • @tolu-john
    @tolu-john 2 года назад

    This video was exactly what I was looking for. Your the best

  • @taofeekolalekan3399
    @taofeekolalekan3399 4 года назад +1

    For any gateway issues.
    const port = process.env.PORT || 3000 use PORT instead of port

  • @eniolotero8808
    @eniolotero8808 3 года назад

    Thanks a lot for this man. I really needed it

  • @andreyklepikov7084
    @andreyklepikov7084 3 года назад

    Thank you, great video!

  • @November17th
    @November17th 3 года назад

    Happy teacher's day bro 😌😌

  • @mathiusjordan97
    @mathiusjordan97 3 года назад

    Amazing video! I was so confused with all the different pieces just reading the docs 🥵

  • @canadasistersforchrist8656
    @canadasistersforchrist8656 4 года назад

    Really helped so much. Please keep doing this great work.

  • @anillip1
    @anillip1 4 года назад +3

    100% helpful mate, Could you please revert the mongodb with aws video ulr please ?

  • @harshajethani6877
    @harshajethani6877 Год назад

    Thank you for this video!!

  • @bobaashenvale3968
    @bobaashenvale3968 3 года назад

    You can type in order to open your current directory in VS Code directly.

  • @sondaika12
    @sondaika12 3 года назад

    Thanks Caleb, you're awesome as always. Cheers

  • @jgvidotto
    @jgvidotto 4 года назад +3

    tutorial start at 10:36

  • @hack2crack929
    @hack2crack929 3 года назад

    you missed to create buildspec.yml , might be that's one failed to deploy
    To update your application to use Express
    On your local computer, create an .ebextensions directory in the top-level directory of your source bundle. In this example, we use node-express/.ebextensions.
    Add a configuration file that sets the Node Command to "npm start":
    node-express/.ebextensions/nodecommand.config
    option_settings:
    aws:elasticbeanstalk:container:nodejs:
    NodeCommand: "npm start"

  • @louleg23
    @louleg23 3 года назад

    Great tutorial thanks! Just what I was looking for. Would love one that includes mongo too.

  • @HuyLe-pm9tk
    @HuyLe-pm9tk 2 года назад

    You saved my day. Thank you so much !!

  • @miguelbas
    @miguelbas 3 года назад

    This tutorial is amazing, thank you

  • @abdur-rakib
    @abdur-rakib 3 года назад

    Wow! great video👍

  • @circulgaming
    @circulgaming 4 года назад +2

    Nice video! I'll be waiting for the next vid about how to include mongo on this setup, thanks!

  • @bitsiot
    @bitsiot 3 года назад

    Great demo, provides value.

  • @tolu-john
    @tolu-john 2 года назад

    Awesome video. How do I set up staging and development environment using ELB from different branches

  • @redvalley99
    @redvalley99 3 года назад

    youre a life saver sir

  • @salmankazi5308
    @salmankazi5308 3 года назад

    Thank So So So So Sooooo Much Brother... Was Watching and Doing The work at 3:43AM ..And Yes It Worked Perfectly..!!! LIKED + SUBSCRIBED!!1

  • @rk_nyra
    @rk_nyra 4 года назад

    Very helpful! Thanks for sharing!!

  • @spencerjin8370
    @spencerjin8370 4 года назад

    Cool tutorial! Thanks man!

  • @WanhedaPY
    @WanhedaPY 4 года назад

    Nice video, pretty helpful, thanks for simplifying

  • @md.mehrabhaque2223
    @md.mehrabhaque2223 4 года назад

    Brooooooo , it's a gemmmm !!!!!!!!!!!!!!! not only subbed, smashed that bell also !!!!!!!!!!!!!!!!!!!!!!!!!

  • @mustafatosun3508
    @mustafatosun3508 3 года назад

    Nice tutorial. Thanks a lot!

  • @deian85
    @deian85 2 года назад

    I’d be interested in the mongodb part

  • @user-go4qu3gv3v
    @user-go4qu3gv3v 2 года назад

    Oh man, thank you very much!!!, now I don’t need any help from devops 😀

  • @frankellyguzman4297
    @frankellyguzman4297 2 года назад

    Love this videos

  • @kavindumadushanka9802
    @kavindumadushanka9802 3 года назад

    Thank you so much! btw some differences were there when running this in my case. By the help of the comment section I was able to deploy my app. Great Explanation 🤩❤️

  • @websidevteam3046
    @websidevteam3046 3 года назад

    You are a life saver thanks a ton!

  • @faisalkhan-gy5ef
    @faisalkhan-gy5ef 3 года назад

    Crystal clear

  • @slal
    @slal 3 года назад

    Really good information !!

  • @ramirodiazortiz
    @ramirodiazortiz 3 года назад

    Awesome! Thanks for sharing! :)

  • @stasstas206
    @stasstas206 3 года назад

    helped me - thanks! in my case - port=8080

  • @alexlindgren1
    @alexlindgren1 3 года назад

    Really cool man thanks for the tutorial, just what I needed. I had to open port "8080" in my settings, so guess they are distributed differently, maybe you should put that into the description if someone has the same issue (you find it in the log if anyone missed that).

  • @mariorodriguez8613
    @mariorodriguez8613 Год назад

    you are awesome bro

  • @brendanmoran1166
    @brendanmoran1166 3 года назад

    you might have to use port 8080. 8081 caused 502 bad gateway for me.

  • @AbhilashKhuntia
    @AbhilashKhuntia 5 месяцев назад

    I have created a express app with around 10 api endpoints and hosted on elastic beanstalk server, how do I check how much compute resource each endpoint is taking?

  • @titaniumwolf2
    @titaniumwolf2 4 года назад

    Thank you caleb.

  • @hjab
    @hjab 4 года назад +1

    it's very useful but still get the error 502! no google answer :( .. What was ur problem share plz.

  • @sanketss84
    @sanketss84 4 года назад

    Thanks this has been helpful :)

  • @shankarasam8205
    @shankarasam8205 3 года назад

    understood 100%, thanks...

  • @user-xv3yz6nx4o
    @user-xv3yz6nx4o Год назад

    Hi Caleb!
    Could you please help me with deployment my NodeJS application?
    I did everything according to your tutorial, but for some reason only the deploy to the AWS EB does not work

  • @CodingJourney
    @CodingJourney 4 года назад

    Amazing guide!! 🙏💙

  • @rahulshimpi8914
    @rahulshimpi8914 3 года назад

    Thank You So.............................Much Sir. Finally, deploy my node application on AWS and it's working fine. One more time thanks and also subscribe to your channel.

  • @AshCarnov
    @AshCarnov 2 года назад

    Thanks a lot!

  • @ajayioluwafemi806
    @ajayioluwafemi806 3 года назад

    Awesome video

  • @PierreAndNick
    @PierreAndNick 4 года назад +4

    Hey man, I keep getting this error when I try deploy the pipeline, do you know what the issue could be?
    Action execution failed
    Deployment completed, but with errors: During an aborted deployment, some instances may have deployed the new application version. To ensure all instances are running the same version, re-deploy the appropriate application version. Failed to deploy application. Unsuccessful command execution on instance id(s) 'i-08cb1ec6aa6770914'. Aborting the operation. [Instance: i-08cb1ec6aa6770914] Command failed on instance. An unexpected error has occurred [ErrorCode: 0000000001].

    • @xiaoyuelyu8539
      @xiaoyuelyu8539 4 года назад +1

      get the same issue. did you find way to solve it?

    • @caloski
      @caloski 4 года назад +1

      @@xiaoyuelyu8539 any news?

    • @manuh8860
      @manuh8860 3 года назад

      Can anyone help here. I am getting same error

    • @mustkeemk5506
      @mustkeemk5506 3 года назад

      For someone who is getting this error - the solution is you might have defined node version in your package.json file. Correct it or remove details of node version from your package.json file. Cheers...

  • @kumarvishalben
    @kumarvishalben 3 года назад

    Beanstalk URL doesn't have HTTPS enabled 😭.
    Is there a way to add SSL in the load balancer without custom domain ???

  • @Naniy55462
    @Naniy55462 2 года назад

    it works but its not free, internally load balance is used with t2.small instance type which is not free and there is no way of stopping application, only termination of application is available. pls suggest some free instance

  • @vineethavvaru6058
    @vineethavvaru6058 4 года назад

    Thank you very much man !!

  • @DavisTibbz
    @DavisTibbz 3 года назад

    very helpful. thanks. plz do one with mongodb

  • @derekmab7734
    @derekmab7734 3 года назад

    Great tutorial thanks. It would be great if it is enhanced to using RDS DB and React front end.

  • @kumarandtechie9558
    @kumarandtechie9558 2 года назад

    Good, Keep it up....

  • @4dagi01
    @4dagi01 4 года назад

    Gracias master, saludos Guarne-Colombia

  • @MikeTillman55
    @MikeTillman55 Год назад

    I know this is later but im having this problem still with the 502 nginx error and the port fix doesnt work but im also using a Postgres db thats on RDS and i think that may be causing the issue as well. any suggestions?