目次
ごあいさつ
こんばんは。まだまだたまごエンジニアのもに倉です。
今回は、最近私がハマっているAWS CLIを使って、Route53のホストゾーン作成から、
レコードの追加・削除、最後にホストゾーンの削除までを
行っていこうと思います。
Amazon CLIを使う利点
「コンソールからぽちぽちでできるからわざわざCLI使わなくてもいいんじゃない?」
と思う方もいらっしゃるかもしれません。
実際、コンソールから作業するのは直感的でとてもやりやすいです。
しかし、誰かに作業のやり方を教えるとき、「右端のボタンを押して~」と伝えるよりも、
CLIのコマンドを教えるほうがミスがないと思います。
「使えなくても大丈夫だけど、使えると便利」
これが、CLIを使う理由です。
環境
今回は、すぐにAWS CLIを使うことができて便利なCloud Shellを使います。
[cloudshell-user@ip-10-0-81-97 ~]$ aws --version
aws-cli/2.2.15 Python/3.8.8 Linux/4.14.238-182.422.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off
ホストゾーン作成
作成
それでは、早速ホストゾーンを作っていきます。
ホストゾーンネーム:hogemoni.com
aws route53 create-hosted-zone --name hogemoni.com --caller-reference `date +%Y-%m-%d_%H-%M-%S`
これだけでOKです。
確認
できたかどうか確認します。
aws route53 list-hosted-zones
このコマンドでRoute53にあるホストゾーンの一覧を見ることができます。
いっぱいあるよって人は、さっき作ったはずのホストゾーンネームで検索しましょう。
{
"HostedZones": [
{
(略)
{
"Id": "/hostedzone/Z01363732OJ20G9YLROAW",
"Name": "hogemoni.com.",
"CallerReference": "2021-09-01_01-52-27",
"Config": {
"PrivateZone": false
},
"ResourceRecordSetCount": 2
}
(略)
ばっちりできています。
ここで、ホストゾーンIDを控えておきましょう(後で使います)。
hogemoni.comのホストゾーンIDは
"Id": "/hostedzone/Z01363732OJ20G9YLROAW"
これです。
レコードをいじる
レコードの作成・削除は、
jsonファイルを作成し、それを読み込む形になっています。
同一のjsonファイルに記述すれば
新しいレコードの作成・既存のレコードの削除を
まとめて行うことができますが、今回はひとつずつ紹介していきます。
レコード作成
jsonファイル作成
レコード作成用のjsonファイルを作ります。
今回作るレコードは以下の通りです。
レコード名:somosan.hogemoni.com
レコードタイプ:CNAME
TTL:3600
値:seppa.monihoge.com
{
"Comment": "CREATE a record ",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "somosan.hogemoni.com.",
"Type": "CNAME",
"TTL": 3600,
"ResourceRecords": [
{
"Value": "seppa.monihoge.com."
}
]
}
}
]
}
上記の内容が書かれたファイルを、任意の名前&任意の場所で保存します。
今回は「create.json」という名前で保存しました。
jsonファイルを読み込ませる
では、作成したjsonファイルを読み込んでもらって、レコードを作りましょう。
aws route53 change-resource-record-sets --hosted-zone-id /hostedzone/Z01363732OJ20G9YLROAW --change-batch file://create.json
※--hosted-zone-idは上のほうで出したホストゾーンIDです。
※/hostedzone/ は記述しなくても動作は同じです。
このコマンドを打った後、
{
"ChangeInfo": {
"Id": "/change/C0787101355N5JJZGK56R",
"Status": "PENDING",
"SubmittedAt": "2021-09-01T07:09:04.347000+00:00",
"Comment": "CREATE a record "
}
}
こんなかんじでレコード変更IDが生成されれば成功です。
なにも返ってこないときはどこかでミスってます。
aws route53 get-change --id /change/C0787101355N5JJZGK56R
このコマンドで、レコード変更の進捗確認ができます。
※--id はレコード変更IDです。
※/change/ は記述しなくても動作は同じです。
{
"ChangeInfo": {
"Id": "/change/C0787101355N5JJZGK56R",
"Status": "INSYNC",
"SubmittedAt": "2021-09-01T07:09:04.347000+00:00",
"Comment": "CREATE a record "
}
}
ステータスがPENDINGからINSYNCに変われば完了。レコードが無事作成されました。
作成されたレコードの確認
aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/Z01363732OJ20G9YLROAW
このコマンドでレコード一覧が見れます。
(略)
{
"Name": "somosan.hogemoni.com.",
"Type": "CNAME",
"TTL": 3600,
"ResourceRecords": [
{
"Value": "seppa.moni.hoge.com."
}
]
}
]
}
ばっちりできていますね。
レコードの削除
では、この出来立てほやほやのレコードを削除していきます。
ほとんど作成時と手順は一緒です(jsonファイルの一部が違うだけ)。
jsonファイル作成
レコード削除用のjsonファイルを作ります。
{
"Comment": "DELETE a record ",
"Changes": [
{
"Action": "DELETE",
"ResourceRecordSet": {
"Name": "somosan.hogemoni.com.",
"Type": "CNAME",
"TTL": 3600,
"ResourceRecords": [
{
"Value": "seppa.monihoge.com."
}
]
}
}
]
}
上記の内容が書かれたファイルを、任意の名前&任意の場所で保存します。
今回は例によって「delete.json」という名前で保存しました。
jsonファイルを読み込ませる
では、作成したjsonファイルを読み込んでもらって、レコードを消しましょう。
aws route53 change-resource-record-sets --hosted-zone-id /hostedzone/Z01363732OJ20G9YLROAW --change-batch file://delete.json
このコマンドを打った後、
{
"ChangeInfo": {
"Id": "/change/C01782873VL70O40JNZNU",
"Status": "PENDING",
"SubmittedAt": "2021-09-01T07:25:03.741000+00:00",
"Comment": "DELETE a record "
}
}
こんなかんじでレコード変更IDが生成されれば成功です。
aws route53 get-change --id /change/C01782873VL70O40JNZNU
このコマンドで確認して、
{
"ChangeInfo": {
"Id": "/change/C01782873VL70O40JNZNU",
"Status": "INSYNC",
"SubmittedAt": "2021-09-01T07:25:03.741000+00:00",
"Comment": "DELETE a record "
}
}
ステータスがPENDINGからINSYNCに変われば完了。レコードが無事削除されました。
削除されたレコードの確認
aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/Z01363732OJ20G9YLROAW
削除したレコードがなければOKです。
ちゃんとレコードが削除されていることが確認できました。
ホストゾーン削除
では、最後の後片付けです。
aws route53 delete-hosted-zone --id /hostedzone/Z01363732OJ20G9YLROAW
このコマンドでホストゾーンを消しちゃいます。
{
"ChangeInfo": {
"Id": "/change/C09321923KLU6A370XSPW",
"Status": "PENDING",
"SubmittedAt": "2021-09-01T07:29:57.670000+00:00"
}
}
レコードを変更したときと同じように、変更IDが返ってきますので
aws route53 get-change --id /change/C09321923KLU6A370XSPW
これまた同じようにこのコマンドでステータスを確認。
{
"ChangeInfo": {
"Id": "/change/C09321923KLU6A370XSPW",
"Status": "INSYNC",
"SubmittedAt": "2021-09-01T07:29:57.670000+00:00"
}
}
ステータスがPENDINGからINSYNCに変われば無事削除完了です。
削除されたか確認
aws route53 list-hosted-zones
ちゃちゃっと確認。
無事削除されていました!
あとがき
できなくてもいいけど、できると便利なCLIでの作業でした。
やっぱりCLIをいじれるとかっこいい気がするので、これからもバンバン使っていきたいと思います。
たまごのひび割れから身が見え始めたエンジニア。