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...
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.
This 100% solved my issue with bad gateway. Thanks!
+1
@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
im also trying to return in an html page, not just a welcome message
@@garinnmorton9640 oh no! when you run "npm start" on your local machine, does it work?
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.
>"502 Bad Gateway, yeah!... so that's the end of the tutorial."
hahahaha
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
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
@@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
You, Sir, are a true hero. Not the hero we deserved, but the hero we needed.
Almost 3 years later, and this is the best tutorial i've ever seen. Thank you so much
FINALLYYYYY, a good tutorial on how to deploy with aws. THANK YOU!!!!
Yes caleb we are very interested on a tutorial on how to use mongo db with this. pls do
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!
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
Thanks a lot Caleb!
Love how you celebrate your failures/errors. That's the best attitude
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.
9:49 "Maybe it's not. I don't know. I don't know your life!" bro i died.
I am halfway to the video, the way you summed up everything. its marvellous and big thank you
The best tutorial on deployment of node project on AWS! thanks
This video is gold.
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
This was exactly what I needed to get my app up and running. Thank you for a down-to-earth, straightforward tutorial
worked first time. great tutorial. keep up the great work. thank you
That deployment reaction is one we all know all too well! 😂😂
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
const port = process.env.PORT || 3000 change to PORT instead of port.
Thanks man.....after a day of searching this helped me....god bless you
Thank you from Brazil! You helped me a lot hehe
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.
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!
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.
Outstanding! Cristal clear :)
You're the best, God bless.
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.
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!!
solve the problem Caleb, thank you very much.
Yeah! A CRUD app would be great! THanks!
20:04 an emotion felt by programmers universally
thank you , you just made my job 5X easier
Preying is a very important part of the process 20:03
I subscribed to the channel as soon as I finished the video! Awesome work Bro !
Very informative video, I appreciate you showing us the trial and error and breaking down concepts. Thank you.
Thank you!
thank you so much, I learned something new
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"
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
Your awesome dude! I already hit the subscribe button! Please do more Videos just like this one.
Great tutorial. Exactly what I needed. Thanks!
This video was exactly what I was looking for. Your the best
For any gateway issues.
const port = process.env.PORT || 3000 use PORT instead of port
Thanks, man! That worked for me.
Thanks a lot for this man. I really needed it
Thank you, great video!
Happy teacher's day bro 😌😌
Amazing video! I was so confused with all the different pieces just reading the docs 🥵
Really helped so much. Please keep doing this great work.
100% helpful mate, Could you please revert the mongodb with aws video ulr please ?
Thank you for this video!!
You can type in order to open your current directory in VS Code directly.
Thanks Caleb, you're awesome as always. Cheers
tutorial start at 10:36
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"
Great tutorial thanks! Just what I was looking for. Would love one that includes mongo too.
You saved my day. Thank you so much !!
This tutorial is amazing, thank you
Wow! great video👍
Nice video! I'll be waiting for the next vid about how to include mongo on this setup, thanks!
Great demo, provides value.
Awesome video. How do I set up staging and development environment using ELB from different branches
youre a life saver sir
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
Very helpful! Thanks for sharing!!
Cool tutorial! Thanks man!
Nice video, pretty helpful, thanks for simplifying
Brooooooo , it's a gemmmm !!!!!!!!!!!!!!! not only subbed, smashed that bell also !!!!!!!!!!!!!!!!!!!!!!!!!
Nice tutorial. Thanks a lot!
I’d be interested in the mongodb part
Oh man, thank you very much!!!, now I don’t need any help from devops 😀
Love this videos
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 🤩❤️
You are a life saver thanks a ton!
Crystal clear
Really good information !!
Awesome! Thanks for sharing! :)
helped me - thanks! in my case - port=8080
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).
you are awesome bro
you might have to use port 8080. 8081 caused 502 bad gateway for me.
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?
Thank you caleb.
it's very useful but still get the error 502! no google answer :( .. What was ur problem share plz.
Thanks this has been helpful :)
understood 100%, thanks...
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
Amazing guide!! 🙏💙
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.
Thanks a lot!
Awesome video
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].
get the same issue. did you find way to solve it?
@@xiaoyuelyu8539 any news?
Can anyone help here. I am getting same error
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...
Beanstalk URL doesn't have HTTPS enabled 😭.
Is there a way to add SSL in the load balancer without custom domain ???
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
Thank you very much man !!
very helpful. thanks. plz do one with mongodb
Great tutorial thanks. It would be great if it is enhanced to using RDS DB and React front end.
Good, Keep it up....
Gracias master, saludos Guarne-Colombia
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?