Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用AWS PHP SDK向Route53添加子域?_Php_Amazon Web Services_Amazon Route53_Aws Sdk - Fatal编程技术网

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

是否可以使用AWS PHP SDK向Route53添加子域?,php,amazon-web-services,amazon-route53,aws-sdk,Php,Amazon Web Services,Amazon Route53,Aws Sdk,我正在从事一个项目,我们将创建子域以及Route53中的域。我们希望有一种方法可以通过编程实现这一点。SDK for PHP文档似乎有点轻,但CreateShostedZone似乎可以用于创建域或子域记录,ChangeResourceRecordset可以用于创建必要的DNS记录。是否有人提供了如何实际实现这一点的示例?是的,正如您已经指出的,可以使用changeResourceRecordSets调用实现这一点。但这有点笨拙,因为即使您只更改/创建了一条记录,而且即使创建也是更改,您也必须像批

我正在从事一个项目,我们将创建子域以及Route53中的域。我们希望有一种方法可以通过编程实现这一点。SDK for PHP文档似乎有点轻,但CreateShostedZone似乎可以用于创建域或子域记录,ChangeResourceRecordset可以用于创建必要的DNS记录。是否有人提供了如何实际实现这一点的示例?

是的,正如您已经指出的,可以使用
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',
                        ),
                    ),
                ),
            ),
        ),
    ),
));

是的,我使用了
changeResourceRecordSets
方法

<?php
require 'vendor/autoload.php';

use Aws\Route53\Route53Client;
use Aws\Exception\CredentialsException;
use Aws\Route53\Exception\Route53Exception;

//To build connection
try {
    $client = Route53Client::factory(array(
        'region' => 'string', //eg . us-east-1
        'version' => 'date', // eg. latest or 2013-04-01
        'credentials' => [
                    'key' => 'XXXXXXXXXXXXXXXXXXX', // eg. VSDFAJH6KXE7TXXXXXXXXXX
                    'secret' => 'XXXXXXXXXXXXXXXXXXXXXXX', //eg. XYZrnl/ejPEKyiME4dff45Pds54dfgr5XXXXXX
              ]
    ));
} catch (Exception $e) {
        echo $e->getMessage();
}

/* Create sub domain */

try {

    $dns = 'yourdomainname.com';
    $HostedZoneId = 'XXXXXXXXXXXX'; // eg. A4Z9SD7DRE84I ( like 13 digit )
    $name = 'test.yourdomainname.com.'; //eg. subdomain name you want to create 
    $ip = 'XX.XXXX.XX.XXX'; // aws domain Server ip address
    $ttl = 300;
    $recordType = 'CNAME';
    $ResourceRecordsValue = array('Value' => $ip);

    $client->changeResourceRecordSets([
        'ChangeBatch'  => [
            'Changes' => [
                [
                    'Action'            => 'CREATE',
                    "ResourceRecordSet" => [
                        'Name'            => $name,
                        'Type'            => $recordType,
                        'TTL'             => $ttl,
                        'ResourceRecords' => [
                            $ResourceRecordsValue
                        ]
                    ]
                ]
            ]
        ],
        'HostedZoneId' => $HostedZoneId
    ]);
}

为了清楚起见,在路由53中,公共托管区域是一个域名。然后在HostedZone->recordset下面是单独的记录(A、CNAME、MX、DNS)etcHello@Neal你知道我们如何从弹性豆茎创建子域吗?