- Home
- Integration and extensions
- Drivers
- DNS Drivers
- AWS Route53
-
- Overview
-
- Overview
- Deploy your Application
- Manage your Java application
- Migrate an Application
- Provision Amazon S3 Buckets
- Deploy an Amazon S3 Resource to production
- Set up the reference architecture in your cloud
- Scaffold a new Workload and create staging and prod Environments
- Update Resource Definitions for related Applications
- Provision a Redis cluster on AWS using Terraform
- Perform daily developer activities (debug, rollback, diffs, logs)
- Deploy ephemeral Environments
-
-
AWS Route53
This Driver generates a new subdomain for a domain that is managed in a Route53 Hosted Zone.
Property | Description |
---|---|
Resource type | dns |
Account type | aws |
Inputs #
Values #
Name | Type | Description |
---|---|---|
domain |
string | The domain under which to specify the subdomain. For example, staging.example.com |
hosted_zone_id |
string | The AWS hosted zone for the domain. |
Secrets #
None
Notes #
This Driver adds records to a Route53 Hosted Zone pointing at the Load Balancer for the relevant cluster. The Driver will generate new unique subdomains.
This Driver can be used with environments running on different clusters.
AWS credentials #
As Route53 is a service of AWS, AWS credentials are required to use the service.
Example #
Use the humanitec/dns-aws-route53
Driver to provision a new subdomain under staging.route53-hosted-domain.com
for an app called route53-dns-example-app
.
First, the Cloud Account containing the AWS Access Key and Secret must be created:
curl https://api.humanitec.io/orgs/my-org/resources/accounts \
-X POST \
-H "Authorization: Bearer ${HUMANITEC_TOKEN}" \
-H "Content-Type: application/json" \
--data-binary '{
"id": "aws-example-account",
"name": "AWS Example Account",
"type": "aws",
"credentials": {
"aws_access_key_id": "AAABBBCCCDDDEEEFFFGGG",
"aws_secret_access_key": "zZxXyY123456789aAbBcCdD"
}
}'
Then the following dynamic Resource Definition should be added. Apply the following modifications as needed:
- Adjust the
criteria
to the Matching Criteria to fit your setup. - Decide whether you need to co-provision an
ingress
resource as shown, and remove theprovision
section if not. See Routes for a discussion on how the networking Resource Types work together.
cat <<EOF > dynamic-dns-route53.yaml
apiVersion: entity.humanitec.io/v1b1
kind: Definition
metadata:
id: dynamic-dns-route53
entity:
driver_account: aws-example-account
driver_type: humanitec/dns-aws-route53
name: "Dynamic DNS via Route53"
type: dns
driver_inputs:
values:
domain: staging.route53-hosted-domain.com
hosted_zone_id: HKAV28SSA
criteria:
- app_id: route53-dns-example-app
provision:
ingress:
is_dependent: false
EOF
humctl create -f dynamic-dns-route53.yaml
curl https://api.humanitec.io/orgs/my-org/resources/defs \
-X POST \
-H "Authorization: Bearer ${HUMANITEC_TOKEN}" \
-H "Content-Type: application/json" \
--data-binary '{
"id": "dynamic-dns-route53",
"name": "Dynamic DNS via Route53",
"type": "dns",
"driver_account": "aws-example-account",
"driver_type": "humanitec/dns-aws-route53",
"driver_inputs": {
"values": {
"domain": "staging.route53-hosted-domain.com",
"hosted_zone_id": "HKAV28SSA"
}
},
"criteria": [
{
"app_id": "route53-dns-example-app"
}
],
"provision": {
"ingress": {
"is_dependent": false
}
}
}'
Use this Resource Definition for the Humanitec Terraform Provider:
resource "humanitec_resource_definition" "dns-route53" {
id = "dynamic-dns-route53"
name = "Dynamic DNS via Route53"
type = "dns"
driver_account = "aws-example-account"
driver_type = "humanitec/dns-aws-route53"
driver_inputs = {
values_string = jsonencode({
"domain": "staging.route53-hosted-domain.com",
"hosted_zone_id": "HKAV28SSA"
})
}
provision = {
ingress = {
is_dependent = false
}
}
}
resource "humanitec_resource_definition_criteria" "dns-route53" {
resource_definition_id = humanitec_resource_definition.dns-route53.id
app_id = "route53-dns-example-app"
}