Веб-сервисы Amazon — возможно ли добавить поддомен в Route53 с помощью AWS PHP SDK?

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

4

Решение

Да, это возможно с помощью 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, и вы можете подождать несколько секунд, а затем запустить проверку, что новый / измененная запись действительно существует.

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

10

Другие решения

Других решений пока нет …