The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

SYNOPSIS

    use strict;
    use warnings;
    use Net::Amazon::Route53;
    my $route53 = Net::Amazon::Route53->new( id => '...', key => '...' );
    my @zones = $route53->get_hosted_zones;
    for my $zone ( @zones ) {
        # use the Net::Amazon::Route53::HostedZone object
    }

ATTRIBUTES

id

The Amazon id, needed to contact Amazon's Route 53.

key

The Amazon key, needed to contact Amazon's Route 53.

ua

Internal user agent object used to perform requests to Amazon's Route 53

METHODS

request

    my $hr_xml_response = $self->request( $method, $url );

Requests something from Amazon Route 53, signing the request. Uses LWP::UserAgent internally, and returns the hashref obtained from the request. Dies on error, showing the request's error given by the API.

get_hosted_zones

    my $route53 = Net::Amazon::Route53->new( key => '...', id => '...' );
    my @zones = $route53->get_hosted_zones();
    my $zone = $route53->get_hosted_zones( 'example.com.' );

Gets one or more Net::Amazon::Route53::HostedZone objects, representing the zones associated with the account.

Takes an optional parameter indicating the name of the wanted hosted zone.

batch_create

    my $route53 = Net::Amazon::Route53->new( key => '...', id => '...' );
    my @records = record_generating_subroutine(); # returning an array of Net::Amazon::Route53::ResourceRecordSets
    my $change = $route53->batch_create(\@records); # Or ->batch_create(\@records,1) if you want to wait

Turns an arrayref of Net::Amazon::Route53::ResourceRecordSet objects into one big create request. All records must belong to the same hosted zone.

Takes an optional boolean parameter, wait, to indicate whether the request should return straightaway (default, or when wait is 0) or it should wait until the request is INSYNC according to the Change's status.

Returns a Net::Amazon::Route53::Change object representing the change requested.

atomic_update

    my $route53 = Net::Amazon::Route53->new( key => '...', id => '...' );
    my $hosted_zone = $route_53->get_hosted_zones("example.com.");
    my $old_records = $hosted_zone->resource_record_sets;
    my $new_records = record_generating_subroutine();
    my $change = $route53->atomic_update($old_records,$new_records);
    # Or ->atomic_update($ref1,$ref2,1) if you want to wait

Be warned: this method can be destructive. Give it the arrayref of records currently in your zone and an arrayref of records representing the desired state of your zone, and it will create, change, and delete the current records in the zone to match the set you submitted.

Don't send the Amazon Route53 NS or SOA record in the set of original records.

This method discovers which records needs to be deleted/created, e.g., changed, which ones need simply to be created for the first time, and deletes records not defined in the new set. It's an "all-in-one, all-at-once" update for all the records in your zone. This, and the fact that it is destructive, is why it is called atomic_update.

Takes an optional boolean parameter, wait, to indicate whether the request should return straightaway (default, or when wait is 0) or it should wait until the request is INSYNC according to the Change's status.

Returns a Net::Amazon::Route53::Change object representing the change requested.

batch_change

    my $route53 = Net::Amazon::Route53->new( key => '...', id => '...' );
    my $hosted_zone = $route_53->get_hosted_zones("example.com.");
    my $recordset_changes = recordset_changes_generating_subroutine();
    my $change = $route53->batch_change($recordset_changes);
    # Or ->batch_change($recordset_changes,1) if you want to wait

This method takes an arrayref of Net::Amazon::Route53::ResourceRecordSet::Change objects and the optional wait argument, and makes one big request to change all the records at once.

_get_create_xml

Private method for xml templating. Takes an Net::Amazon::Route53::ResourceRecordSet::Change object and returns the xml to create that single record.

_get_delete_xml

Private method for xml templating. Takes an Net::Amazon::Route53::ResourceRecordSet object and returns the xml to delete that single record.

_get_change_xml

Private method for xml templating. Takes an Net::Amazon::Route53::ResourceRecordSet::Change object and returns the xml to change, i.e., delete and create, that single record.

_batch_request_header

Private method for xml templating. Returns a header string.

Private method for xml templating. Returns a footer string.

SEE ALSO

Net::Amazon::Route53::HostedZone http://docs.amazonwebservices.com/Route53/latest/APIReference/

AUTHOR

Marco FONTANI <mfontani@cpan.org>

CONTRIBUTORS

Daiji Hirata <hirata@uva.ne.jp> Amiri Barksdale <amiri@arisdottle.net> Chris Weyl <cweyl@alumni.drew.edu> Jason <jasonjayr+oss@gmail.com> Ulrich Kautz <ulrich.kautz@googlemail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Marco FONTANI.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.