# AWS ROUTE53 設定
###### tags: `AWS 功能`
### 第一部分 : 購買 or 託管域名
* <b>直接購買</b> : 已註冊網域 -> 註冊網域 -> 選擇網域名稱 -> 購買 -> 顯示在 "託管區域"

* <b>託管</b> : 建立託管區域 -> 填寫網域資訊 -> 建立


### 第二部分 : 簡單路由設定
> * 配置標準 DNS 記錄
* A record ( – IPv4 地址 )

* CNAME record ( – 域名 )

* TXT record ( – 文字)

### 第三部分 : 地理位置路由設定
> * 根據使用者的地理位置 (DNS 查詢的來源位置) 選擇服務流量的資源
> * 要先設定預設
* A record ( – IPv4 地址 )

* CNAME record ( – 域名 )

* EXAMPLE
> 會優先倒到 "較近的位置"

### 第四部分 : 容錯移轉路由設定
> * 可以讓資源出現錯誤時將流量路由到正確的資源
> * 如果選擇主要則要選擇運作狀態檢查ID,次要可以不用
> * 需要設定 Healthchecks
* A record ( – IPv4 地址 )

* CNAME record ( – 域名 )

* EXAMPLE
> 會優先倒到 "主要" 設定,如果失敗才會倒到 "次要" 設定

### 第五部分 : 延遲路由設定
> * 選擇延遲最低的 AWS 區域處理使用者的請求,來幫助使用者提高效能
* A record ( – IPv4 地址 )

* CNAME record ( – 域名 )

* EXAMPLE
> 會優先倒到最接近的區域,已達到最低延遲

### 第六部分 : 頂級域名
* A record ( – IPv4 地址 )

* CNAME record ( – 域名 )
> 因為DNS協議不允許在頂級域名處定義CNAME,因此Route 53 也不允許給頂級域名創建CNAME。但是可以創建一個子域名指向頂級域名。
> 例如:www.wise-cdn.com CNAME wise-cdn.com
### 第七部分 : 萬用解析
* A record ( – IPv4 地址 )

* CNAME record ( – 域名 )

## 腳本
### 託管域名
* `aws route53 create-hosted-zone --name <DomainName> --caller-reference <Caller_Reference> --hosted-zone-config Comment="test version"`
```
#!/bin/bash
DomainName="www.example.com"
Caller_Reference="00000000"
Hosted_zone_ID=$(aws route53 create-hosted-zone --name "$DomainName" --caller-reference "$Caller_Reference" --hosted-zone-config Comment="test version" | jq -r '.HostedZone.Id' | cut -c 13-33)
echo "$Hosted_zone_ID"
```
### 設定紀錄
* `aws route53 change-resource-record-sets --hosted-zone-id <hosted-zone-id> --change-batch file://<file_name>`
```
aws route53 change-resource-record-sets --hosted-zone-id Z051163617Q7R1OCQQL9M --change-batch file://record.json
```
### 簡單路由設定文件
* 規則
```
{
"Comment": "SIMPLE",
"Changes": [ {
"Action": "CREATE"|"DELETE"|"UPSERT",
"ResourceRecordSet": {
"Name": "DNS domain name",
"Type": "SOA"|"A"|"TXT"|"NS"|"CNAME"|"MX"|"PTR"|"SRV"|"SPF"|"AAAA",
"TTL": time to live in seconds,
"SetIdentifier": "string",
"ResourceRecords": [{"Value": "<IP>"}]
}
}
]
}
```
* 範例
```
{
"Comment": "SIMPLE",
"Changes": [ {
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "a.wise-cdn.com",
"Type": "A",
"TTL": 300,
"SetIdentifier": "string",
"ResourceRecords": [{"Value": "192.169.0.108"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "b.wise-cdn.com",
"Type": "CNAME",
"TTL": 300,
"ResourceRecords": [{"Value": "123.wise-cdn.com"}]
}
}
]
}
```
### 地理位置路由設定文件
* 規則
```
{
"Comment": "GEOLOCATION",
"Changes": [
{
"Action": "CREATE"|"DELETE"|"UPSERT",
"ResourceRecordSet": {
"Name": "DNS domain name",
"Type": "SOA"|"A"|"TXT"|"NS"|"CNAME"|"MX"|"PTR"|"SRV"|"SPF"|"AAAA",
"SetIdentifier": "string",
"GeoLocation": {"CountryCode": "<CountryCode>"},
"TTL": time to live in seconds,
"ResourceRecords": [{"Value": "<IP>"}],
"HealthCheckId": "<HealthCheckId>"
}
}
]
}
```
* 範例
```
{
"Comment": "GEOLOCATION",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "testcli.wise-cdn.com",
"Type": "A",
"SetIdentifier": "test",
"GeoLocation": {"CountryCode": "TW"},
"TTL": 300,
"ResourceRecords": [{"Value": "192.169.0.108"}],
"HealthCheckId": "e4dbb08f-8e39-4d3f-940a-75d219608897"
}
}
]
}
```
### 容錯移轉路由設定文件
* 規則
```
{
"Comment": "FAILOVER",
"Changes": [
{
"Action": "CREATE"|"DELETE"|"UPSERT",
"ResourceRecordSet": {
"Name": "DNS domain name",
"Type": "SOA"|"A"|"TXT"|"NS"|"CNAME"|"MX"|"PTR"|"SRV"|"SPF"|"AAAA",
"TTL": time to live in seconds,
"SetIdentifier": "test-primary",
"Failover": "PRIMARY" | "SECONDARY" ,
"ResourceRecords": [{"Value": "<IP>"}],
"HealthCheckId": "<HealthCheckId>"
}
}
]
}
```
* 範例
```
{
"Comment": "FAILOVER",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "testcli.wise-cdn.com.",
"Type": "A",
"TTL": 300,
"SetIdentifier": "test-primary",
"Failover": "PRIMARY",
"ResourceRecords": [{"Value": "192.169.0.108"}],
"HealthCheckId": "e4dbb08f-8e39-4d3f-940a-75d219608897"
}
}
]
}
```
### 延遲路由設定
* 規則
```
{
"Comment": "LATENCY",
"Changes": [
{
"Action": "CREATE"|"DELETE"|"UPSERT",
"ResourceRecordSet": {
"Name": "DNS domain name",
"Type": "SOA"|"A"|"TXT"|"NS"|"CNAME"|"MX"|"PTR"|"SRV"|"SPF"|"AAAA",
"SetIdentifier": "test",
"Region": "Region name",
"TTL": time to live in seconds,
"ResourceRecords": [{"Value": "<IP>"}],
"HealthCheckId": "<HealthCheckId>"
}
}
]
}
```
* 範例
```
{
"Comment": "LATENCY",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "testcli.wise-cdn.com",
"Type": "A",
"SetIdentifier": "test",
"Region": "ap-northeast-1",
"TTL": 300,
"ResourceRecords": [{"Value": "192.169.0.108"}],
"HealthCheckId": "e4dbb08f-8e39-4d3f-940a-75d219608897"
}
}
]
}
```