AWS::CLIWrapper - Wrapper module for aws-cli
use AWS::CLIWrapper; my $aws = AWS::CLIWrapper->new( region => 'us-west-1', ); my $res = $aws->ec2( 'describe-instances' => { instance_ids => ['i-XXXXX', 'i-YYYYY'], }, timeout => 18, # optional. default is 30 seconds ); if ($res) { for my $rs ( @{ $res->{Reservations} }) { for my $is (@{ $rs->{Instances} }) { print $is->{InstanceId},"\n"; } } } else { warn $AWS::CLIWrapper::Error->{Code}; warn $AWS::CLIWrapper::Error->{Message}; }
AWS::CLIWrapper is wrapper module for aws-cli (recommend: awscli >= 1.0.0, requires: >= 0.7.0).
AWS::CLIWrapper is a just wrapper module, so you can do everything what you can do with aws-cli.
Constructor of AWS::CLIWrapper. Acceptable param are:
region region_name:Str profile profile_name:Str endpoint_url endpoint_url:Str
AWS::CLIWrapper provides methods same as services of aws-cli. Please refer to `aws help`.
First arg "operation" is same as operation of aws-cli. Please refer to `aws SERVICE help`.
Second arg "param" is same as command line option of aws-cli. Please refer to `aws SERVICE OPERATION help`.
Key of param is string that trimmed leading "--" and replaced "-" to "_" for command line option (--instance-ids -> instance_ids). Value of param is SCALAR or ARRAYREF or HASHREF.
You can specify (boolean) parameter by $AWS::CLIWrapper::true or $AWS::CLIWrapper::false.
(boolean)
$AWS::CLIWrapper::true
$AWS::CLIWrapper::false
my $res = $aws->ec2('assign-private-ip-addresses', { network_interface_id => $eni_id, private_ip_addresses => [ $private_ip_1, $private_ip_2 ], allow_reassignment => $AWS::CLIWrapper::true, })
Special case: several OPERATIONs take a single arg. For example "aws s3api get-object ... output_file". In this case, You can specify below using output_file key:
output_file
my $res = $aws->s3api('get-object', { bucket => 'my-bucket', key => 'blahblahblah', output_file => '/path/to/output/file', })
Special case: s3 OPERATION takes one or two arguments in addition to options. For example "aws s3 cp LocalPath s3://S3Path". Pass an extra ARRAYREF to the s3 method in this case:
my $res = $aws->s3('cp', ['LocalPath', 's3://S3Path'], { exclude => '*.bak', })
Third arg "opt" is optional. Available key/values are below:
timeout => Int Maximum time the "aws" command is allowed to run before aborting. default is 30 seconds. nofork => Int (>0) Call IPC::Cmd::run vs. IPC::Cmd::run_forked (mostly useful if/when in perl debugger). Note: 'timeout', if used with 'nofork', will merely cause an alarm and return. ie. 'run' will NOT kill the awscli command like 'run_forked' will.
See documents of aws-cli.
HIROSE Masaaki <hirose31 _at_ gmail.com>
https://github.com/hirose31/AWS-CLIWrapper
git clone git://github.com/hirose31/AWS-CLIWrapper.git
patches and collaborators are welcome.
http://aws.amazon.com/cli/, https://github.com/aws/aws-cli, http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html, https://github.com/boto/botocore,
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install AWS::CLIWrapper, copy and paste the appropriate command in to your terminal.
cpanm
cpanm AWS::CLIWrapper
CPAN shell
perl -MCPAN -e shell install AWS::CLIWrapper
For more information on module installation, please visit the detailed CPAN module installation guide.