Website Hosting with Amazon Web Services - amazon-web-services

I have developed a website with Jsp and Servlets. I want to make it live on a domain that I have purchased already. How can I do that. I would like to prefer Aws. Please guide me with the process.

Have a look at Elastic Beanstalk as it supports Tomcat.
If you did not buy your domain through AWS/Route 53 you also need to point your domain to the nameservers of Route 53
Within AWS you generally use Route 53 to configure domain names, have a look at pointing it at your Elastic Beanstalk application
There are other alternatives for hosting your application on AWS but I believe Elastic Beanstalk is good if you are new to AWS. You could package your application into a Docker container and run it on Elastic Beanstalk that way or on ECS (Elastic Container Service).

Related

Do I need to upgrade our hosting plan if I just use it for domain but hosting the files on AWS?

The current setup was the application is load-balanced at AWS. The domain(www.Example.com) we are using is registered at GoDaddy.com.
My concern is that, do we need to upgrade our GoDaddy hosting even if the files are load-balance at AWS?
Let's say that we have had a 50K concurrent users.
Thanks for the insight in-advanced.
When you say "the application is load-balanced at AWS", it suggests that there is the following setup on AWS:
One or more Amazon EC2 instances running a web application, and
An Elastic Load Balancer that is directing incoming traffic to those instances
Your GoDaddy account probably has a Domain Name with a CNAME record that points to the DNS Name of the Load Balancer on AWS.
If this is true, then you do not need a "hosting plan" on GoDaddy, since it would just be managing your Domain Name. Scaling is not necessary for Domain Names.
Increasing the load would possibly require creating additional EC2 instances on AWS, but you might have an Auto Scaling group doing this for you automatically.
You should investigate what you actually have on GoDaddy and on AWS.

Automatically Blocking Suspicious IPs on Elastic Beanstalk instance

I have an Elastic Beanstalk instance that is running a Flask app. I want to know if there is any way through AWS to automatically block IP addresses that are doing unusual activity on my site.
This could be a range of things, for example:
Send several GET requests over and over
Trying to POST without a CSRF
And more. Any ideas? Thanks.
Generally, for that you would front your EB with application load balancer and AWS Web Application Firewall.
This setup is documented in the recent AWS blog and other sources:
How do I protect my Elastic Beanstalk environment against attacks from known unwanted hosts?
Setting up AWS Web Application Firewall (WAF) with Elastic Beanstalk
Guidelines for Implementing AWS WAF

How to get SSL certificate

I have purchased a domain from godaddy provider and I launched an application with AWS route 53 service.
My questions:
Where to get a SSL certificate? GoDaddy or AWS
How to setup SSL certificate?
Please tell me
This depends upon your use case or where are you running your application like ECS or EC2 or some static website over s3?
If you are using load balancer on the top of your application then the certificate from AWS is best. you don't need to worry about renewal etc and any other configuration just create load balancer with AWS Certificate Manager.
https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html
CloudFront:
Here is the link how you can configure with CloudFront.
If you to configure directly on your EC2 instance then it's not possible.
Although you install your website on an Amazon EC2 instance, you
cannot directly deploy an ACM Certificate on that instance source AWS Doc
Here is the list on which you can AWS certificate.
Elastic Load Balancing
Amazon CloudFront
AWS Elastic Beanstalk
Amazon API Gateway
AWS CloudFormation
Services Integrated with AWS Certificate Manager
You mention that you launched application with Route53 so want to clear one thing
Amazon Route 53 is a highly available and scalable cloud Domain Name
System (DNS) web service.
So Route 53 in DNS and it can be configured with
Amazon Route 53 effectively connects user requests to infrastructure
running in AWS – such as Amazon EC2 instances, Elastic Load Balancing
load balancers, or Amazon S3 buckets – and can also be used to route
users to infrastructure outside of AWS.
Amazon Route 53
As we are using AWS certificate and we feel good with AWS services, far better than any other service provider in our case.
Let me know if you need further details.

Adding HTTPS/SSL to domain pointing to AWS instance

I have a Java/Tomcat application hosted in AWS ElasticBeanstalk and bought a domain from GoDaddy and the domain points to the IP of the EC2 instance. So when I hit, for example www.abc.com, it points to the AWS IP and the application opens.
I haven't used Route 53, as I am in free tier, I added the EC2 IP in GoDaddy.
Now I want to add HTTPS/SSL to the domain using Let's Encrypt.
I searched for the solution but I found that it is also done using GoDaddy cPanel, as I have hosted the application in AWS and just registered domain from GoDaddy, I cannot do this.
How can I achieve this ?
You will want to use an Elastic Load Balancer (also known as Classic Load Balancer). I know you don’t want to use a Load Balancer but this is free and the AWS best practice. Here’s more detail - https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html

How to forward existing domain name to AWS application?

I have deployed an application with Amazon's Elastic Beanstalk service, now it runs in http://sample-env-1.abcde.us-east-1.elasticbeanstalk.com/home, and now I want to point my domain name (registered with name.com) to this application. I created a hosted zone with Route 53, which gives me 4 namespaces, is it enough to add these records in my domain registrar's console?
I feel like I'm missing something since I didn't tell which application should this hosted zone be relevant to (since I can have multiple applications). How do I do that?
Thanks,
Your way of doing it is right.
Type the domain name in Hosted Zone of Amazon Route 53 Management console.
And from your domain provider console point your domain to your Elastic Beanstalk environment namespace. Amazon will handle the rest, if the setup is done correctly.
As stated in the manual:
When an Amazon Route 53 DNS server receives a name request for your
custom domain name, it resolves to the elasticbeanstalk.com subdomain,
which resolves to the public DNS name of your Elastic Load Balancing
load balancer, which relays requests to the instances in your
environment.
Please refer to the Elastic Beanstalk manual for more information: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customdomains.html