AWS Route 53 DNS does not resolve - amazon-web-services

I am developing Mycroft Nutrition and am attempting to switch my domain from pointing at Heroku to an AWS endpoint because I just switched to AWS Lambda for a serverless architecture. My new endpoint is https://usfqa3q0sg.execute-api.us-east-1.amazonaws.com/dev/, which is working fine, and I have set my DNS accordingly:
However, mycroftnutrition.com still is not working. Can anyone point me in the right direction to getting my domain working?
Update
I created a custom domain for my API as per #matt-healy's recommendation and now have this:
I set my DNS to be this but still have no luck:

You've set your DNS entry to point to:
usfqa3q0sg.execute-api.us-east-1.amazonaws.com/dev
which is not a valid domain.
What you want to do is set up a Custom Domain Name in API Gateway which will map the domain name address to the "dev" stage of your API endpoint.
For more information you can view the documentation.

Related

How to create route53 record for AWS Gateway API

I have existing hosted zone and A record in AWS route 53. The A record is pointing to cloudfront distribution.
lets say the hosted zone name is abcd.ci.example.io. The A record name is same as hosted zone. I can access the web site at abcd.ci.example.io without any issue.
I also have AWS Gateway API with invoke url https://xxxxx.execute-api.us-west-2.amazonaws.com/dev I can access a particular API route from the browser using invoke url https://xxxxx.execute-api.us-west-2.amazonaws.com/dev/v1/healthcheck
I want to assign a custom domain name to invoke url. So I created a new CNAME record in the hosted zone as api.abcd.ci.example.io and set the value to https://xxxxx.execute-api.us-west-2.amazonaws.com/dev
But then when I try to access a route using https://api.abcd.ci.example.io/v1/healthcheck I get error This site can’t be reached
A simple command line ping to api.abcd.ci.example.io also returns error as Ping request could not find host api.abcd.ci.example.io. Please check the name and try again.
Below is list of records in hosted. There are couple of acm validation records as well for both the domains.
Before API Gateway will let you point your custom domain to it, you first have to setup the custom domain in API Gateway, which includes setting up the SSL certificate API Gateway will use for that custom domain.

AWS API Gateway HTTP API custom domain with VPC Link to ALB

I'm trying to set up an API using a REGIONAL custom domain that routes HTTP requests to ALB.
The domain is registered with another DNS provider so I will not be using Route53.
Concept:
/path/to/service --> ALB (Listener: /path/*) --> ECS
I first tried with the original invoke URL https://cuxxxxmvk0.execute-api.ap-east-1.amazonaws.com/stage/path/to/service, it returns ALB context path error (It's expected because ALB gets /stage/path/to/service which doesn't hit any prefix).
Then I created a custom domain with API mapping (no base path) that maps to the stage, and try invoking it with the provided "API Gateway domain name" (The one generated by custom domain). Full URL: https://d-yjexxxds3.execute-api.ap-east-1.amazonaws.com/path/to/service
However, it returns {"message":"Not Found"}
API Gateway domain name
So my question here is:
How does the "API Gateway domain name" generated by custom domain works? Can I directly invoke the API with it?
Is it a must to CNAME it (i.e. CAME api.mydomain.com d-yjexxxds3.execute-api.ap-east-1.amazonaws.com)?
Can I make my final endpoint to be api.mydomain.com/path/to/service without the stage in path?
From the question I can see that you're trying to use CNAME to resolve to URL/some/path but that's not how it works. DNS service will only map your CNAME to some other URL only. The path (/some/path) part will remain same from your domain or API-GW URL.
Other thing to note here is that since you're not using Route53, you do not need Custom Domain Name of API-GW. Create a CNAME which is something like
example.com CNAME d-yjexxxds3.execute-api.ap-east-1.amazonaws.com
I would suggest you add /stage in your ALB prefix so that it can be accessed by API-GW and your own domain.
How does the "API Gateway domain name" generated by custom domain works? Can I directly invoke the API with it?
Yes, you can
Is it a must to CNAME it (i.e. CAME api.mydomain.com d-yjexxxds3.execute-api.ap-east-1.amazonaws.com)?
It is either CNAME (when the DNS is managed by an external provider) or it can be ALIAS (directly returning A records if you manage the DNS in Route53). Please note you need a validated certificate in the certificate manager.
Can I make my final endpoint to be api.mydomain.com/path/to/service without the stage in path?
https://d-xxxxxxds3.execute-api...
As far I know you should invoke the API by defined custom domain name (api.mydomain.com). If calling the d-.. domain will work, I'm not sure
https://api.mydomain.com/path/to/api
I'm not sure what is not working in your setup. Indeed in the custom domain mapping you can have a mapping directly to certain stage, so you may invoke the API as https://customdomain/path/to/api We have it working this way.
Long story short, your setup / idea is generally good. You may enable logging on the API Gateway or stage to find out what is not working (if the NOT FOUND is retuned by the API GW or backend ELB)

Domain name not connecting to node.js express web app

I have an issue, or perhaps an understanding problem with linking my domain with AWS. I will use the xy.ro domain as an example.
I have the xy.ro domain registered with easyhost.com. On AWS I have a node.js express web app.
My xy.ro domain is not working as it does not point to anything.
I tried to create a hosted zone on AWS with the xy.ro domain and tried to create a dataset for this domain but it does not work.
I tried to find step by step instructions also on AWS and other providers but I did not find anything.
Can someone point me into the right direction?
If your domain xy.ro is registered with easyhost.com then it would presumably also be using their DNS hosting service to serve your DNS records.
Creating a public hosted zone in AWS won't affect the DNS resolution unless you can migrate your name servers to use Route 53.
I was not able to see steps from easyhost.com website, however from the AWS side take a look at this documentation.
You should be able to copy the name servers and update within easyhost so that it will use Route 53 as your DNS provider instead.

Unable to map custom domain to API Gateway (from Godaddy)

I'm trying to set up a custom domain (say, myapi.com) for my API Gateway but am running into problems. The domain is currently registered on GoDaddy. So far, I've followed this tutorial and done the following:
Obtained a certificate for myapi.com and *.myapi.com from the AWS Certificate Manager.
Mapped the domain myapi.com (not *.myapi.com as I don't need it yet) to an API in the API Gateway.
Added a CNAME entry for the resulting "target domain name" in GoDaddy.
Here are the screenshots:
Now here's the problem: When I do ping myapi.com I get: No address associated with hostname. I'm not sure what's causing this, so would really appreciate some help. And while we're at it, are there any other steps I need to perform before this works as expected?
You cannot use a CNAME record at the apex or domain root with standard DNS services. I suggest you try using a hostname for your endpoint and using the CNAME there eg api.example.com.
Alternatively, you can move your DNS to Route 53. The Route 53 system does support aliases at the root domain level, using the Alias record type.
For more information on Alias records in Route 53 see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html

AWS API Gateway Custom Domain

I am trying to map my api to custom domain. Let's say I have a website hosted through route 53 (example.com ), then I want my the api to be at api.example.com. So, I am following this link, I did everything as it said. But, when I do https://api.example.com/apiresource ,it says cannot resolve DNS. So, I am not sure if I have to setup another hosted zone for api.example.com and create NS record set ? The documentation doesn't say about it. I would appreciate any help.
I solved it by creating host zone for api.example.com.