Contents

Работа с записями route53 с помощью утилиты aws.

Для начала опишу установку. Скачиваем, распаковываем и устанавливаем утилиту aws:

1
2
3
$ curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip
$ unzip awscliv2.zip
$ sudo ./aws/install

Проверим версию - убедимся что утилита работает:

1
2
$ aws --version
aws-cli/2.2.23 Python/3.8.8 Linux/5.8.0-63-generic exe/x86_64.ubuntu.20 prompt/off

Более подробно об установке / удалении / обновлении на сайте docs.aws.amazon.com

Создадим профиль:

1
$ aws configure --profile myaws

Посмотрим список профилей:

1
2
3
4
5
6
7
$ aws configure list --profile myaws
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                    myaws           manual    --profile
access_key     ****************4VMU shared-credentials-file
secret_key     ****************utju shared-credentials-file
    region             eu-central-1      config-file    ~/.aws/config

Если профилей несколько, то профиль по-умолчанию можно выбрать, установив переменную окружения:

1
$ export AWS_DEFAULT_PROFILE=<profile name>

Так же можно наполнять файл конфигурации ~/.aws/config следующим образом:

1
$ aws configure set varname value [--profile profile-name]

С помощью этих команд можно так же изменить файлы конфигурации aws.

Например, если есть пустой файл конфигурации, то эти команды:

1
2
3
4
5
6
7
$ aws configure set aws_access_key_id default_access_key
$ aws configure set aws_secret_access_key default_secret_key
$ aws configure set default.region us-west-2
$ aws configure set default.ca_bundle /path/to/ca-bundle.pem
$ aws configure set region us-west-1 --profile testing
$ aws configure set profile.testing2.region eu-west-1
$ aws configure set preview.cloudsearch true

приведут его с следующему виду:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[default]
region = us-west-2
ca_bundle = /path/to/ca-bundle.pem

[profile testing]
region = us-west-1

[profile testing2]
region = eu-west-1

[preview]
cloudsearch = true

и файл ~/.aws/credentials примет вид:

1
2
3
[default]
aws_access_key_id = default_access_key
aws_secret_access_key = default_secret_key

Так же можно вручную отредактировать эти файлы.

Теперь посмотрим, какие dns-зоны доступны:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ aws route53 list-hosted-zones --profile myaws
{
    "HostedZones": [
        {
            "Id": "/hostedzone/LCDKBBJ8UMH0Y",
            "Name": "test1.dodcaf.ru.",
            "CallerReference": "44BFH85B-6745-AF06-BECE-5769C81HHDFH",
            "Config": {
                "PrivateZone": false
            },
            "ResourceRecordSetCount": 340
        }
    ]
}

В качестве примера удалим запись nginx01.test1.dodcaf.ru., для этого нужно создать следующий файл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
$ cat delete.json
{
    "Comment": "CREATE/DELETE/UPSERT a record" ,
    "Changes": [
        {
            "Action": "DELETE",
            "ResourceRecordSet": {
                "Name": "nginx01.test1.dodcaf.ru.",
                "Type": "A",
                "TTL": 300,
                "ResourceRecords": [
                    {
                        "Value": "95.217.153.145"
                    }
                ]                
            }
        }
    ]
}

Теперь остаётся только применить:

1
$ aws route53 change-resource-record-sets --hosted-zone-id LCDKBBJ8UMH0Y --change-batch file://delete.json --profile myaws

Полезные ссылки: