AWS-Networks
view release on metacpan or search on metacpan
NAME
AWS::Networks - Parse and query official AWS network ranges
SYNOPSIS
use AWS::Networks;
my $nets = AWS::Networks->new();
say $nets->sync_token->iso8601;
foreach my $cidr (@{ $nets->cidrs }){
say $cidr
}
DESCRIPTION
This module parses the official public IP network information published
by Amazon Web Services at https://ip-ranges.amazonaws.com/ip-ranges.json
Please read and understand the information can be found at
http://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html to make
sense of the data retured by this module.
appear
services
Returns an ArrayRef of the different services present in the current
dataset
regions
Returns an ArrayRef of the different regions present in the current
dataset
cidrs
Returns an ArrayRef with the CIDR blocks in the dataset
by_region($region)
Returns a new AWS::Networks object with the data filtered to only the
objects in the specified region
by_service($service)
Returns a new AWS::Networks object with the data filtered to only the
services specified
bin/aws_ips_for_service view on Meta::CPAN
#!/usr/bin/env perl
use AWS::Networks;
use Net::CIDR::Set;
my $service = $ARGV[0] or die "Usage $0 AMAZON|CLOUDFRONT|...|ROUTE53\n";
my $nets = AWS::Networks->new;
my $cidrs = $nets->by_service(uc($service))->cidrs;
my $set = Net::CIDR::Set->new(@$cidrs);
my $count = 0;
my $iter = $set->iterate_cidr;
while ( my $cidr = $iter->() ) {
my ($net, $bits) = split /\//, $cidr;
if ($bits == 32) {
$count += 1;
} elsif ($bits == 31) {
$count += 2;
} else {
$count += (( 2 ** (32 - $bits) ) - 2);
}
}
print "AWS has $count IP Addresses\n";
lib/AWS/Networks.pm view on Meta::CPAN
sub by_service {
my ($self, $service) = @_;
return AWS::Networks->new(
url => undef,
sync_token => $self->sync_token,
networks => [ grep { $_->{ service } eq $service } @{ $self->networks } ]
);
}
has cidrs => (
is => 'ro',
isa => 'ArrayRef',
default => sub {
my ($self) = @_;
return [ map { $_->{ ip_prefix } } @{ $self->networks } ];
},
lazy => 1,
);
1;
lib/AWS/Networks.pm view on Meta::CPAN
AWS::Networks - Parse and query official AWS network ranges
=head1 SYNOPSIS
use AWS::Networks;
my $nets = AWS::Networks->new();
say $nets->sync_token->iso8601;
foreach my $cidr (@{ $nets->cidrs }){
say $cidr
}
=head1 DESCRIPTION
This module parses the official public IP network information published by Amazon Web Services at https://ip-ranges.amazonaws.com/ip-ranges.json
Please read and understand the information can be found at http://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html to make sense of the data retured by this module.
=head1 USAGE
lib/AWS/Networks.pm view on Meta::CPAN
region can be one of: ap-northeast-1 | ap-southeast-1 | ap-southeast-2 | cn-north-1 | eu-central-1 | eu-west-1 | sa-east-1 | us-east-1 | us-gov-west-1 | us-west-1 | us-west-2 | GLOBAL, but expect new values to appear
=head2 services
Returns an ArrayRef of the different services present in the current dataset
=head2 regions
Returns an ArrayRef of the different regions present in the current dataset
=head2 cidrs
Returns an ArrayRef with the CIDR blocks in the dataset
=head2 by_region($region)
Returns a new AWS::Networks object with the data filtered to only the objects in the
specified region
=head2 by_service($service)
( run in 1.175 second using v1.01-cache-2.11-cpan-4505f990765 )