NAME WebService::Amazon::Route53 - Perl interface to Amazon Route 53 API VERSION Version 0.01 SYNOPSIS WebService::Amazon::Route53 provides an interface to Amazon Route 53 DNS service. use WebService::Amazon::Route53; my $r53 = WebService::Amazon::Route53->new(id => 'ROUTE53ID', key => 'SECRETKEY'); # Create a new zone $r53->create_hosted_zone(name => 'example.com.', caller_reference => 'example.com_migration_01'); # Get zone information my $zone = $r53->find_hosted_zone(name => 'example.com.'); # Create a new record $r53->change_resource_record_sets(zone_id => $zone->{id}, action => 'create', name => 'www.example.com.', type => 'A', ttl => 86400, value => '12.34.56.78'); # Modify records $r53->change_resource_record_sets(zone_id => $zone->{id}, changes => [ { action => 'delete', name => 'www.example.com.', type => 'A', ttl => 86400, value => '12.34.56.78' }, { action => 'create', name => 'www.example.com.', type => 'A', ttl => 86400, records => [ '34.56.78.90', '56.78.90.12' ] } ]); METHODS Required parameters are marked as such, other parameters are optional. Instance methods return "undef" on failure. More detailed error information can be obtained by calling "error". new Creates a new instance of WebService::Amazon::Route53. my $r53 = WebService::Amazon::Route53->new(id => 'ROUTE53ID', key => 'SECRETKEY'); Parameters: * id (Required) AWS access key ID. * key (Required) Secret access key. list_hosted_zones Gets a list of hosted zones. Called in scalar context: $zones = $r53->list_hosted_zones(max_items => 15); Called in list context: ($zones, $next_marker) = $r53->list_hosted_zones(marker => '456ZONEID', max_items => 15); Parameters: * marker Indicates where to begin the result set. This is the ID of the last hosted zone which will not be included in the results. * max_items The maximum number of hosted zones to retrieve. Returns: A reference to an array of hash references, containing zone data. Example: $zones = [ { 'id' => '/hostedzone/123ZONEID', 'name' => 'example.com.', 'caller_reference' => 'ExampleZone', 'config' => { 'comment' => 'This is my first hosted zone' } }, { 'id' => '/hostedzone/456ZONEID', 'name' => 'example2.com.', 'caller_reference' => 'ExampleZone2', 'config' => { 'comment' => 'This is my second hosted zone' } } ]; When called in list context, it also returns the next marker to pass to a subsequent call to "list_hosted_zones" to get the next set of results. If this is the last set of results, next marker will be "undef". get_hosted_zone Gets hosted zone data. $zone = get_hosted_zone(zone_id => '123ZONEID'); Parameters: * zone_id (Required) Hosted zone ID. Returns: A reference to a hash containing zone data. Example: $zone = { 'id' => '/hostedzone/123ZONEID' 'name' => 'example.com.', 'caller_reference' => 'ExampleZone', 'config' => { 'comment' => 'This is my first hosted zone' } }; find_hosted_zone Finds the first hosted zone with the given name. $zone = $r53->find_hosted_zone(name => 'example.com.'); Parameters: * name (Required) Hosted zone name. Returns: A reference to a hash containing zone data (see "get_hosted_zone"), or 0 if there is no hosted zone with the given name. create_hosted_zone Creates a new hosted zone. $response = $r53->create_hosted_zone(name => 'example.com.', caller_reference => 'example.com_01'); Parameters: * name (Required) New hosted zone name. * caller_reference (Required) A unique string that identifies the request. Returns: A reference to a hash containing new zone data, change description, and name servers information. Example: $response = { 'zone' => { 'id' => '/hostedzone/123ZONEID' 'name' => 'example.com.', 'caller_reference' => 'example.com_01', 'config' => {} }, 'change_info' => { 'id' => '/change/123CHANGEID' 'submitted_at' => '2011-08-30T23:54:53.221Z', 'status' => 'PENDING' }, 'delegation_set' => { 'name_servers' => [ 'ns-001.awsdns-01.net', 'ns-002.awsdns-02.net', 'ns-003.awsdns-03.net', 'ns-004.awsdns-04.net' ] }, }; delete_hosted_zone Deletes a hosted zone. $change_info = $r53->delete_hosted_zone(zone_id => '123ZONEID'); Parameters: * zone_id (Required) Hosted zone ID. Returns: A reference to a hash containing change information. Example: $change_info = { 'id' => '/change/123CHANGEID' 'submitted_at' => '2011-08-31T00:04:37.456Z', 'status' => 'PENDING' }; list_resource_record_sets Lists resource record sets for a hosted zone. Called in scalar context: $record_sets = $r53->list_resource_record_sets(zone_id => '123ZONEID'); Called in list context: ($record_sets, $next_record) = $r53->list_resource_record_sets; Parameters: * zone_id (Required) Hosted zone ID. * name The first domain name (in lexicographic order) to retrieve. * type DNS record type of the next resource record set to retrieve. * identifier Set identifier for the next source record set to retrieve. This is needed when the previous set of results has been truncated for a given DNS name and type. * max_items The maximum number of records to be retrieved. The default is 100, and it's the maximum allowed value. Returns: A reference to an array of hash references, containing record set data. Example: $record_sets = [ { name => 'example.com.', type => 'MX' ttl => 86400, records => [ '10 mail.example.com' ] }, { name => 'example.com.', type => 'NS', ttl => 172800, records => [ 'ns-001.awsdns-01.net.', 'ns-002.awsdns-02.net.', 'ns-003.awsdns-03.net.', 'ns-004.awsdns-04.net.' ] } ]; When called in list context, it also returns a reference to a hash, containing information on the next record which can be passed to a subsequent call to "list_resource_record_sets" to get the next set of records (using the "name" and "type" parameters). Example: $next_record = { name => 'www.example.com.', type => 'A' }; If this is the last set of records, next record will be "undef". change_resource_record_sets Makes changes to DNS record sets. $change_info = $r53->change_resource_record_sets(zone_id => '123ZONEID', changes => [ # Delete the current A record { action => 'delete', name => 'www.example.com.', type => 'A', ttl => 86400, value => '12.34.56.78' }, # Create a new A record with a different value { action => 'create', name => 'www.example.com.', type => 'A', ttl => 86400, value => '34.56.78.90' }, # Create two new MX records { action => 'create', name => 'example.com.', type => 'MX', ttl => 86400, records => [ '10 mail.example.com', '20 mail2.example.com' ] } ]); If there is just one change to be made, you can use the simplified call syntax, and pass the change parameters immediately, instead of using the "changes" parameter: $change_info = $r53->change_resource_record_sets(zone_id => '123ZONEID', action => 'delete', name => 'www.example.com.', type => 'A', ttl => 86400, value => '12.34.56.78'); Parameters: * zone_id (Required) Hosted zone ID. * changes (Required) A reference to an array of hashes, describing the changes to be made. If there is just one change, it may be omitted and ... Change parameters: * action The action to perform ("create" or "delete"). * name The name of the domain to perform the action on. * type The DNS record type. * ttl The DNS record time to live (TTL), in seconds. * records An array of strings that represent the current or new record values. If there is just one value, you can use the "value" parameter instead. * value Current or new DNS record value. For multiple record values, use the "records" parameter. Returns: A reference to a hash containing change information. Example: $change_info = { 'id' => '/change/123CHANGEID' 'submitted_at' => '2011-08-31T00:04:37.456Z', 'status' => 'PENDING' }; error Returns the last error. $error = $r53->error; Returns: A reference to a hash containing the type, code, and message of the last error. Example: $error = { 'type' => 'Sender', 'message' => 'FATAL problem: UnsupportedCharacter encountered at ', 'code' => 'InvalidDomainName' }; AUTHOR Michal Wojciechowski, "" BUGS Please report any bugs or feature requests to "bug-webservice-amazon-route53 at rt.cpan.org", or through the web interface at . I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. SUPPORT You can find documentation for this module with the perldoc command. perldoc WebService::Amazon::Route53 You can also look for information at: * RT: CPAN's request tracker * AnnoCPAN: Annotated CPAN documentation * CPAN Ratings * Search CPAN SEE ALSO * Amazon Route 53 API Reference ACKNOWLEDGEMENTS LICENSE AND COPYRIGHT Copyright 2011 Michal Wojciechowski. This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License. See http://dev.perl.org/licenses/ for more information.