AWS-Lambda-Quick
view release on metacpan or search on metacpan
- Create a zip file containing your code
- Create (or update) an AWS Lambda function with this zip file
- Create a REST API with AWS Gateway API
- Configure a resource for that REST API for this script
- Set up a method and put method response for that resource
- Manage an integration and integration response for that resource
And then debug all the above things, a lot, and google weird error
messages it generates when you inevitably make a mistake.
This module provides a way to do all of this completely transparently
just by executing your script, without having to either interact with
the AWS Management Console nor directly use the awscli utility.
Simply include this module at the top of your script containing the
handler function:
use AWS::Lambda::Quick (
name => 'random-lottery-numbers',
);
lib/AWS/Lambda/Quick.pm view on Meta::CPAN
=item Set up a method and put method response for that resource
=item Manage an integration and integration response for that resource
=back
And then debug all the above things, a lot, and google weird error
messages it generates when you inevitably make a mistake.
This module provides a way to do all of this completely transparently
just by executing your script, without having to either interact with
the AWS Management Console nor directly use the awscli utility.
Simply include this module at the top of your script containing the
handler function:
use AWS::Lambda::Quick (
name => 'random-lottery-numbers',
);
lib/AWS/Lambda/Quick/CreateZip.pm view on Meta::CPAN
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
use Path::Tiny qw( path );
has src_filename => required => 1;
has zip_filename => required => 1;
has extra_files => default => [];
has _src_path => sub { path( shift->src_filename ) };
has _src_dir => sub { shift->_src_path->parent };
has _zip_class => default => 'Archive::Zip';
has _zip => sub { shift->_zip_class->new };
has _script_src => sub { shift->_src_path->slurp_raw };
# this is the same src as in script src but the first occurance of
# "use AWS::Lambda::Quick" is prepended with
# "$INC{'AWS/Lambda/Quick.pm'}=1" to prevent it actually being loaded
# from disk. Note this happens on just one line to avoid screwing
# with line numebrs that could mess with error messages
has _converted_src => sub {
lib/AWS/Lambda/Quick/Upload.pm view on Meta::CPAN
}
);
for ( @{ $result->{items} } ) {
next unless $_->{path} eq $path;
$self->debug('found exiting resource');
return $_->{id};
}
# couldn't find it. Create a new one
$self->debug('creating new resource');
my $parent_id;
for ( @{ $result->{items} } ) {
if ( $_->{path} eq '/' ) {
$parent_id = $_->{id};
last;
}
}
unless ($parent_id) {
die q{Can't find '/' resource to create a new resource from!};
}
$result = $self->aws_do(
'apigateway',
'create-resource',
{
'rest-api-id' => $self->rest_api_id,
'parent-id' => $parent_id,
'path-part' => $self->name,
},
);
$self->debug('created new resource');
return $result->{id};
};
has greedy_resource_id => sub {
my $self = shift;
lib/AWS/Lambda/Quick/Upload.pm view on Meta::CPAN
return $_->{id};
}
# couldn't find it. Create a new one
$self->debug('creating new greedy resource');
$result = $self->aws_do(
'apigateway',
'create-resource',
{
'rest-api-id' => $self->rest_api_id,
'parent-id' => $self->resource_id,
'path-part' => '{proxy+}',
},
);
$self->debug('created new greedy resource');
return $result->{id};
};
### methods
sub upload {
( run in 0.278 second using v1.01-cache-2.11-cpan-a5abf4f5562 )