È ansible aggiungere un sottodominio a Route53 utilizzando AWS PHP SDK?

Sto lavorando a un progetto in cui creeremo sia sottodomini sia domini in Route53. Speriamo che ci sia un modo per farlo a livello di programmazione. La documentazione dell'SDK per PHP sembra un po 'leggera, ma sembra che createHostedZone possa essere utilizzato per creare un dominio o un sottodominio e che sia ansible modificare i setResourceRecordSet per creare i record DNS necessari. Qualcuno ha esempi di come effettivamente realizzare questo?

Sì, questo è ansible usando la chiamata changeResourceRecordSets , come hai già indicato. Ma è un po 'maldestro visto che devi strutturarlo come un batch anche se stai cambiando / creando solo un record, e anche le creazioni sono cambiamenti. Ecco un esempio completo, senza un metodo di credenziali:

 <?php // Include the SDK using the Composer autoloader require 'vendor/autoload.php'; use Aws\Route53\Route53Client; use Aws\Common\Credentials\Credentials; $client = Route53Client::factory(arrays( 'credentials' => $credentials )); $result = $client->changeResourceRecordSets(arrays( // HostedZoneId is required 'HostedZoneId' => 'Z2ABCD1234EFGH', // ChangeBatch is required 'ChangeBatch' => arrays( 'Comment' => 'string', // Changes is required 'Changes' => arrays( arrays( // Action is required 'Action' => 'CREATE', // ResourceRecordSet is required 'ResourceRecordSet' => arrays( // Name is required 'Name' => 'myserver.mydomain.com.', // Type is required 'Type' => 'A', 'TTL' => 600, 'ResourceRecords' => arrays( arrays( // Value is required 'Value' => '12.34.56.78', ), ), ), ), ), ), )); 

La documentazione di questo metodo può essere trovata qui . Ti consigliamo di prendere nota dei campi obbligatori e dei possibili valori per gli altri. Ad esempio, il field del name deve essere un FQDN che termina con un punto (.).

Vale anche la pena notare: non ottieni alcuna risposta dall'API dopo questa chiamata per impostazione predefinita, ovvero non vi è alcuna conferma o ID transazione. (Anche se restituisce degli errori se qualcosa non va.) Questo significa che se vuoi che il tuo codice sia a prova di proiettile, dovresti scrivere un gestore di risposta di Guzzle E potresti voler aspettare qualche secondo e poi eseguire un controllo che il nuovo / il record modificato esiste davvero.

Spero che questo ti aiuti!