Можно ли добавить поддомен в Route53 с помощью AWS PHP SDK?


Я работаю над проектом, в котором мы будем создавать как поддомены, так и домены в Route53. Мы надеемся, что есть способ сделать это программно. SDK для документации PHP кажется немного легким, но кажется, что createHostedZone можно использовать для создания записи домена или поддомена, а changeResourceRecordSets можно использовать для создания необходимых записей DNS. Есть ли у кого-нибудь примеры того, как это сделать на самом деле?

1 3

1 ответ:

Да, это возможно с помощью вызова changeResourceRecordSets, Как вы уже указали. Но это немного неуклюже, так как вы должны структурировать его как пакет, даже если вы изменяете/создаете только одну запись, и даже творения-это изменения. Вот полный пример, без метода учетных данных:

<?php

// Include the SDK using the Composer autoloader
require 'vendor/autoload.php';

use Aws\Route53\Route53Client;
use Aws\Common\Credentials\Credentials;

$client = Route53Client::factory(array(
    'credentials' => $credentials
));

$result = $client->changeResourceRecordSets(array(
    // HostedZoneId is required
    'HostedZoneId' => 'Z2ABCD1234EFGH',
    // ChangeBatch is required
    'ChangeBatch' => array(
        'Comment' => 'string',
        // Changes is required
        'Changes' => array(
            array(
                // Action is required
                'Action' => 'CREATE',
                // ResourceRecordSet is required
                'ResourceRecordSet' => array(
                    // Name is required
                    'Name' => 'myserver.mydomain.com.',
                    // Type is required
                    'Type' => 'A',
                    'TTL' => 600,
                    'ResourceRecords' => array(
                        array(
                            // Value is required
                            'Value' => '12.34.56.78',
                        ),
                    ),
                ),
            ),
        ),
    ),
));

Документацию по этому методу можно найтиздесь . Вам нужно будет очень тщательно запомнить необходимые поля, а также возможные значения для других. Например, поле name должно быть полным доменным именем, заканчивающимся точкой (.).

Также стоит отметить: вы не получаете ответа от API после этого вызова по умолчанию, т. е. нет подтверждения или идентификатора транзакции. (Хотя он определенно возвращает ошибки, если что-то не так.) Это означает, что если вы хотите, чтобы ваш код был пуленепробиваемым, вы должны написать обработчик ответа Guzzle, и вы можете подождать несколько секунд, а затем проверить, что новая/измененная запись действительно существует.

Надеюсь, это поможет!