Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] Route53:#1 独自ドメインをRoute53に委任する

More than 3 years have passed since last update.

自分のドメインの権威サーバをRoute53に引き受けてもらう設定をします。

[重要] Route53には無料使用枠がないので課金が発生

  • Route53には無料使用枠がないので、下記の料金がかかります。

  • ホストゾーン

    • ホストゾーンごと (最初の25ホストゾーンまで): 0.50 USD
    • 作成から 12 時間以内に削除されたホストゾーンについては無料。
    • 1ヵ月に満たない分に対して日割り計算されず、月初に課金される。
  • クエリ(標準的クエリを選択した場合)

    • 100万クエリごと (最初の10億クエリ/月まで): 0.500 USD

前提条件

独自ドメイン

独自ドメインを保有しており、レジストラに対してWhois情報変更の依頼権限を持っている。

Route53への権限

Route53に対してフル権限があること。

AWS CLIのバージョン

以下のバージョンで動作確認済

  • AWS CLI 1.10.38
コマンド
aws --version
結果(例)
      aws-cli/1.10.38 Python/2.7.11 Darwin/15.5.0 botocore/1.4.28

0. 準備

0.1. リージョンの決定

構築するリージョンを決めます。 (カレントユーザが利用するカレントリージョンも切り変わります。)

コマンド(東京リージョンの場合)
export AWS_DEFAULT_REGION='ap-northeast-1'

0.2. 変数の確認

プロファイルが想定のものになっていることを確認します。

コマンド
aws configure list
結果(例)
            Name                    Value             Type    Location
            ----                    -----             ----    --------
         profile         administrator-prjz-mbp13        env    AWS_DEFAULT_PROFILE
      access_key     ****************XXXX shared-credentials-file
      secret_key     ****************XXXX shared-credentials-file
          region                         ap-northeast-1  env    AWS_DEFAULT_REGION

AssumeRoleを利用している場合はprofileが ''と表示されます。 それ以外のときにprofileが '' と表示される場合は、以下を実行してください。

変数の設定
export AWS_DEFAULT_PROFILE=<IAMユーザ名>

0.3. whoisコマンドの確認

コマンド
which whois

Amazon Linuxの場合、標準でwhoisコマンドがはいっていないので、ここでは日本語対応(らしい)jwhoisをインストールします。

コマンド(AmazonLinux)
sudo yum install jwhois -y

注釈: OSXやFreeBSDでは、whoisコマンドは標準で利用可能です。

1. 事前作業

登録ドメインの決定

Route53に登録するドメインを決めます。

バケットの作成 (独自ドメイン)
( http://qiita.com/tcsh/items/1f707443e667b6b3c8cf )で独自ドメイン用のバケットを作成後であれば、下記のように変数にドメイン名を格納します。

変数の設定
R53_ZONE_NAME="${DOMAIN_NAME}" \
        && echo ${R53_ZONE_NAME}

2. hosted zone作成

Route53上で、登録するドメインのhosted zoneを作成します。

  • Callerは、変更リクエストのユニーク性が保証されればどんな文字列でも良いようです。

  • Commentは、任意の文字列でOKです。(オプション)

変数の設定
R53_CALLER="${R53_ZONE_NAME}-$(date +%Y%m%d-%H%M%S)"
R53_COMMENT="example zone"
変数の確認
cat << ETX

        R53_ZONE_NAME: ${R53_ZONE_NAME}
        R53_CALLER:    ${R53_CALLER}
        R53_COMMENT:  "${R53_COMMENT}"

ETX
コマンド
aws route53 create-hosted-zone \
        --name ${R53_ZONE_NAME} \
        --caller-reference ${R53_CALLER} \
        --hosted-zone-config Comment="${R53_COMMENT}"
結果(例)
      {
        "HostedZone": {
          "ResourceRecordSetCount": 2,
          "CallerReference": "example.jp-20160620-193012",
          "Config": {
              "Comment": "example zone",
              "PrivateZone": false
          },
          "Id": "/hostedzone/xxxxxxxxxxxxx",
          "Name": "example.jp."
        },
        "DelegationSet": {
          "NameServers": [
              "ns-xxx.awsdns-xx.co.uk",
              "ns-xxx.awsdns-xx.net",
              "ns-xxx.awsdns-xx.com",
              "ns-xxx.awsdns-xx.org"
          ]
        },
        "Location": "https://route53.amazonaws.com/2013-04-01/hostedzone/xxxxxxxxxxxxx",
        "ChangeInfo": {
          "Status": "PENDING",
          "SubmittedAt": "6月 19, 2016T01:23:45.678Z",
          "Id": "/change/xxxxxxxxxxxxx"
        }
      }

2. ns確認

作成したhosted zoneに割り当てられたNSレコードを確認します。

まず、作成したhosted zoneのIDを取得します。

コマンド
R53_ZONE_ID=$( \
        aws route53 list-hosted-zones \
          --query "HostedZones[?Name == \`${R53_ZONE_NAME}.\`].Id" \
          --output text \
        | sed 's/\/hostedzone\///' \
) && echo ${R53_ZONE_ID}
結果(例)
      Zxxxxxxxxxxxx

そのHosted zone IDのNS(NameServers)のリストを取得します。 ここでは、レジストラの管理画面で作業しやすいようにテーブル形式で出力してみました。

コマンド
aws route53 get-hosted-zone \
        --id /hostedzone/${R53_ZONE_ID} \
        --query DelegationSet.NameServers \
        --output table
結果(例)
      -----------------------------
      |       GetHostedZone       |
      +---------------------------+
      |  ns-xxx.awsdns-xx.co.uk   |
      |  ns-xxx.awsdns-xx.net     |
      |  ns-xxx.awsdns-xx.com     |
      |  ns-xxx.awsdns-xx.org     |
      +---------------------------+

BINDに登録する場合は、以下のように出力します。

変数の確認
cat << ETX

        R53_ZONE_NAME: ${R53_ZONE_NAME}
        R53_ZONE_ID:   ${R53_ZONE_ID}

ETX
コマンド
for i in $( \
        aws route53 get-hosted-zone \
          --id /hostedzone/${R53_ZONE_ID} \
          --query DelegationSet.NameServers \
          --output text \
); do echo "${R53_ZONE_NAME}. IN NS ${i}."; done

3. whois変更

3.1. Route53へのドメインの登録

whois変更 (ドメインをRoute53に登録する場合)

Route53に割り当てられたNSレコードのホスト名を、自分のドメインのWhois情報にName Serverとして登録します。

ドメインの管理を委託しているレジストラの管理画面などを利用します。 (各レジストラのサポートページなどを参考にがんばってください。)

ネームサーバ変更 (サブドメインをRoute53に登録する場合)

Route53に割り当てられたNSレコードのホスト名を、ドメインを管理するネームサーバに登録します。 (BINDやNSDのマニュアルを参考にがんばってください。)

3.2. whois確認 (ドメイン全体をRoute53に登録する場合のみ)

自分のドメインのWhois情報にName Server情報が反映されたか確認します。

コマンド
whois ${R53_ZONE_NAME} | grep 'Name Server'
結果(.orgの例)
      Name Server:NS-xxxx.AWSDNS-xx.ORG
      Name Server:NS-xx.AWSDNS-xx.COM
      Name Server:NS-xxx.AWSDNS-xx.NET
      Name Server:NS-xxxx.AWSDNS-xx.CO.UK
      Name Server:
      Name Server:
      Name Server:
      Name Server:
      Name Server:
      Name Server:
      Name Server:
      Name Server:
      Name Server:
結果(.jpの例)
      [Name Server]                   NS-xxxx.AWSDNS-xx.ORG
      [Name Server]                   NS-xx.AWSDNS-xx.COM
      [Name Server]                   NS-xxx.AWSDNS-xx.NET
      [Name Server]                   NS-xxxx.AWSDNS-xx.CO.UK

3. 事後作業

自分のドメインのNSレコードが、Route53の登録情報と同じであることを確認します。

コマンド
dig ns ${R53_ZONE_NAME} | grep ${R53_ZONE_NAME}
結果
      ;example.jp.                  IN      NS
      example.jp.           152631  IN      NS      ns-xxxx.awsdns-xx.org.
      example.jp.           152631  IN      NS      ns-xxxx.awsdns-xx.co.uk.
      example.jp.           152631  IN      NS      ns-xx.awsdns-xx.com.
      example.jp.           152631  IN      NS      ns-xxx.awsdns-xx.net.

完了

これ以降は、Route53上で自分のドメインを管理することができます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした