Assign domain name through CLI - AWS [duplicate] - amazon-web-services

I have got a domain registered with GoDaddy and an EC2 instance with public elastic IP and I'm trying to use Amazon "Route 53" service to map the DNS name to my instance.
In online documentation there is a very complex example of using Perl (http://aws.amazon.com/code/Amazon-Route-53?browse=1) to achieve this result.
Is there a simpler way of doing this?

The AWS team has meanwhile added complete support for Amazon Route 53 to the AWS Management Console as of November 16, 2011, which allows you to create your hosted zones and set up the appropriate records (A, CNAME, MX, and so forth) in a convenient visual environment.
This is best experienced by exploring it yourself of course, but a sneak peak is available via Amazon Route 53 and the introductory blog post AWS Management Console Now Supports Amazon Route 53 provides a walk through the entire process of registering a domain at a registrar and setting it up in Route 53, including further illustrations.

Currently there's no "Route 53" tab on AWS management console. But they've said that they'd be adding one in the future.
http://aws.typepad.com/aws/2010/12/amazon-route-53-the-aws-domain-name-service.html
So right now, the easiest way is to use third-party tools. Here's a list of tools that you can use:
http://aws.amazon.com/developertools/Amazon-Route-53/
http://aws.typepad.com/aws/2011/02/new-location-for-route-53-and-cloudfront-route-53-tool-roundup.html
https://github.com/rawswift/aws-sdk-for-php
I've also built a web-based interface for AWS Route 53. Has the basic features like creating/deleting hosted zones, adding/deleting A, AAAA, CNAME, PTR, SPF, SRV, TXT records and also supports multiple MX record value (e.g. Google MX records).
https://nsroute.com/
Thanks

I've been pretty pleased using Interstate53:
https://www.interstate53.com/
It offers a nice GUI for managing all of your Route 53 configuration.

There are several web GUIs available for creating and modifying Route 53 zones and records including https://www.interstate53.com/
More options are listed in the documentation at http://docs.amazonwebservices.com/Route53/latest/GettingStartedGuide/

Hope these links help you setup:
http://dmz.us/2010/12/amazon-route-53-dns/
Using Boto library:
http://agiletesting.blogspot.com/2011/06/managing-amazon-route-53-dns-with-boto.html
This link, gives you a straight forward flow of configuring DNS to EC2 instance:
http://support.rightscale.com/03-Tutorials/02-AWS/02-Website_Edition/2._Deployment_Setup/4._Domain_Setup/Domain_Setup_with_Amazon's_Route_53

Related

How to rename an OpenSearch domain (Elasticsearch cluster on AWS)?

The Amazon OpenSearch Service web console provides the option to Edit Cluster configuration, but there is no explicit way of changing a domain's name. Is there an alternative way (such as CLI or a classic web console hidden feature?
Not that I'm aware of. The current choice is laborious:
create a new domain with the desired new name
restore a snapshot from the old into the new one
test it
retire/delete the old one.
Hopefully AWS may add this feature in the future or the option to add a unique alias the cluster name.

API management on Google Cloud Platform

I'm new to Google Cloud Platform and looking for a solution to handle APIs to different environments.
Currently I have an API domain name (e.g. api.company.com) mapped to a GCP load balancer which then distributes requests to google computer engines. This is all setup in one GCP project which is the prod1 environment.
I want to create another prod environment called prod2 as another project. Rather than switching the DNS, I am looking for a way that I can easily reroute api.company.com to prod2 and also maintain non public endpoints for backend apis.
Can I use Google CloudEndpoints to do this? Ideally I would like to set this up in a separate project which can then access the prod1 and prod2 load balancers? If this is achievable, can I have the load balancers non public facing?
Any recommendation or best practice advice would be much appreciated.
Today, I think there is no GCP product that allows you to do this easily.
Cloud Endpoint have 2 problems:
You can't define path wild card. I mean, if you define /path -> prod 1; and you call /path/customer your query won't be routed because /path/customer is not defined. At the end, you have to define all your paths into Cloud Endpoint
Here come the second problem: You can't, for now, aggregate several API spec file. Therefore you will need to maintain 1 global file for Prod and for your tests, with the risk of wrong update and outage in production.
Optionally, you can imagine this architecture as workaround
Deploy compute engine into another project (prod2) for serving your test API
Create a VPC peering between the 2 project
Create another route into your load balancer of prod1 project for reaching the peered network of prod2
I never tried this kind of architecture, but it should work.

Is classic load balancer going to be discontinued by aws

Can some one help me with the fact is aws going to discontinue classic load balancer in future??
I have checked many documents but non of it clearly mentions about it.
As Edcel Cabrera Vista says, there's no real way to know if AWS will discontinue a product or not, until they actually tell us. They haven't told us that Classic Load Balancers are being discontinued.
They are, however, discontinuing EC2 Classic Networking, and I think that leads to some confusion. They both have "classic" in their name and load balancers are usually thought of as networking. So you'd think they were the same thing or at least related somehow.
But no, "Classic Load Balancers" are different than "EC2 Classic Networking". It's only EC2 Classic Networking that is being discontinued right now. Classic Load Balancers are not at this time being discontinued. AWS has not addressed this confusion, but from the announcement in July of this year, they say that a Classic Load Balancer in EC2 Classic will have to be migrated to a Classic Load Balancer in a VPC. If your Classic Load Balancers are already in a VPC, then they won't be affected.
AWS provides a Bash shell script you can run to find any EC2 Classic Networking resources you might have out there. To run the script you need to have AWS CLI set up, including having your credentials set. Then run the script. It'll spit out a bunch of csv files with any lingering EC2 Classic Resources you might have out there, as well as a csv file that tells you whether your account is enabled for EC2 Classic Networking. If yours is not, and you have nothing listed in the "Classic_CLBs.csv" file, then you have nothing to worry about. Hooray!
There is no exact answer if a service is going to be discontinued by aws. However there are few ways for you to have a peace of mind regarding those thoughts because it's a possible scenario in the future as well.
AWS offers documentation for you to migrate the classic load balancer to their new solutions having this document will help you think to adopt properly & more agile. And it gives more feature to your application.
https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/migrate-to-application-load-balancer.html
AWS is Retiring the EC2 Classic LB by August 2022, after the Aug 15 will they still work without any issue and is it just the support for classic LB stopped?
I can not comment this so I'm posting this here.
I couldn't find the aws official article saying "classic load balancer is discontinued or deprecated".
However, I found this aws official article "Migrate your Classic Load Balancer".
I'm not sure the article implies "classic load balancer is discontinued or deprecated". But at least I can see the article implies "You better use new load balancer". Actually, application load balancer(new) is better than classic load balancer(old) as long as I tried both.
In addition, a similar thing happens for "Launch Template"(new) and "Launch Configuration"(old) on EC2. Then, there is no aws official article saying "Launch Configuration(old) is discontinued or deprecated".
But there are aws official articles "Replacing a launch configuration with a launch template" and "Launch templates".
In both artcles, "Launch Template"(new) is recommended to use actually.
Moreover, the prices of newer instance types are cleaper than older ones.
It will implies "You better use newer instance types".
I do not believe there are any plans to discontinue it, however, it is heavily advised against using it for any new load balancer.
It was primarily targeted for EC2 Classic

S3 static website /w bluegreen deployment

I'm having difficulty providing a bluegreen for my s3 static website. I publish a version of the website in a given bucket and it is exposed at:
a Cloudfront distribution
then on a Route 53
and yet another CDN (corporate, which resolves the DNS) to reach the internet.
I've trying some "compute" solutions, like ALB, but I'm not successful.
The main issue of my difficulty is the long DNS replication time when I update CloudFront with a new address, making it difficult to rollback a future version to the old one (considering using different buckets for this publication).
Has anyone been through this or have any idea how to solve this?
AWS recommends that you create different CloudFront distributions for each
blue/green variant, each with its own DNS.
From the Hosting Static Websites on AWS prescriptive guidance:
Different CloudFront distributions can point to the same Amazon S3
bucket so there is no need to have multiple S3 buckets. Each variation
[A/B or blue/green] would store its assets under different folders in the same S3 bucket.
Configure the CloudFront behaviors to point to the respective Amazon
S3 folders for each A/B or blue/green variation.
The other key part of this strategy is an Amazon Route 53 feature
called weighted routing. Weighted routing allows you to associate
multiple resources with a single DNS name and dynamically resolve DNS
based on their relative assigned weights. So if you want to split your
traffic 70/30 for an A/B test, set the relative weights to be 70 and
30. For blue/green deployments, an automation script can call the Amazon Route 53 API to gradually shift the relative weights from blue
to green after automated tests validate that the green version is
healthy.
Hosting Static Websites on AWS - It's 2016 year whitepaper. It relies on non-working examples that don't work. You can't just setup two cloudfront distributions to serve the same CNAME for dns switching.
Another way is to do green/blue logic in lambda edge.
You can do blue/green or gradual deployment with a single Cloudfront distribution, 2 S3 buckets and Lambda#Edge.
You can find a ready-to-use cloudformation template that does this here.

Using comparative logic in AWS DNS/Route 53 records

We have a site setup in AWS. When we bring up a stack for a new release we make it available at a versioned URL. i.e.
V1 available at v1.mysite.com
V2 available at v2.mysite.com
etc
Is it possible to make a single DNS entry that will point to the latest deployed version of my site automatically? So, after I deploy V1, I would have two DNS entries:
v1.mysite.com which goes to the IP of it's stack
mysite.com which redirect to v1.mysite.com
Then when I deploy V2, mysite.com now redirects to v2.mysite.com without me manually having to edit the DNS entry.
In general, can I automatically make DNS entries or make some kind of wildcarded DNS entry that will always point to the highest numbered version of my site currently available in AWS? It should look at the digits after the V for all currently available DNS entries/stacks and make mysite.com point to the numerically highest one.
We are using CloudFormation to create our stacks and our DNS (Route 53) entries, so putting any logic in those scripts would work as well.
This isn't part of DNS itself, so it's unlikely to be supported by anything on Route53. Your best bet is a script that runs when your new instance starts or is promoted to be the production instance. It's pretty simple using boto:
Create a new boto.route53.record.Record
Create a new boto.route53.record.ResourceRecordSets
Add a change record with the action UPSERT and your record
Commit the ResourceRecordSets (with a simple retry in case it fails)
get_change() until Route53 replies INSYNC
Depending on your application you may also want to wait for all the authoritative DNS servers (dns.resolver.query('your-domain', 'NS')) at Amazon to know about your change.
We ended up must making this a manual step before deploying a new stack. If the new stack needed to be resovled at mysite.com, the deployer has to manually remove the existing mapping. Then the cloud formation scripts will create the new DNS mapping.
Not ideal but better than a ton of messy logic in cloud formation scripts I suppose.