2015-04-23 55 views
2

我正在創建一個項目,我們將在Route53中創建子域以及域。我們希望有一種方法可以通過編程來實現。 PHP文檔SDK似乎有點亮,但似乎createHostedZone可用於創建域或子域記錄,並且changeResourceRecordSets可用於創建必要的DNS記錄。有沒有人有如何實際完成這個例子?是否可以使用AWS PHP SDK將子域添加到Route53?

+1

對於Route53中的清晰度,公共託管區域是一個域名。然後在該HostedZone-> RecordSets是個人記錄(A,CNAME,MX,DNS)等 –

回答

7

是的,這可以使用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', 
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
)); 

這種方法的文檔可以發現here。您需要非常小心地注意所需的字段以及其他可能的值。例如,name字段必須是以點(。)結尾的FQDN。

另外值得注意的是:默認情況下,在此調用之後,您無法從API返回響應,即沒有確認或事務標識。 (儘管如果出現錯誤,它肯定會返回錯誤。)所以這意味着如果你希望你的代碼是防彈的,你應該寫一個Guzzle響應處理程序,並且你可能想等幾秒鐘,然後運行一個檢查/更改記錄確實存在。

希望這有助於!

+1

這是非常感謝 – MYNE

相關問題