是否可以使用AWS PHP SDK将子域添加到Route53?

Nat*_*ney 5 php amazon-web-services amazon-route53 aws-sdk

我正在开发一个项目,我们将在Route53中创建子域和域.我们希望有一种方法可以以编程方式执行此操作.用于PHP文档的SDK似乎有点轻松,但似乎createHostedZone可用于创建域或子域记录,而changeResourceRecordSets可用于创建必要的DNS记录.有没有人有如何实际完成这个的例子?

Nea*_*gee 12

是的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',
                        ),
                    ),
                ),
            ),
        ),
    ),
));
Run Code Online (Sandbox Code Playgroud)

可以在此处找到此方法的文档.您需要非常仔细地记下必填字段以及其他字段的可能值.例如,该name字段必须是以点(.)结尾的FQDN.

另外值得注意的是:默认情况下,此调用后您没有得到API的响应,即没有确认或事务ID.(虽然如果出现问题,它肯定会给出错误.)这意味着如果你希望你的代码是防弹的,你应该编写一个Guzzle响应处理程序,你可能要等几秒钟,然后检查新的/改变的记录确实存在.

希望这可以帮助!