AWS-Lambda-Quick
view release on metacpan or search on metacpan
lib/AWS/Lambda/Quick/Upload.pm view on Meta::CPAN
# "lambda:path/2015-03-31/functions" is the {subdomain.service|service}:path|action for lambda functions
my $uri
= "arn:aws:apigateway:@{[ $self->region ]}:lambda:path/2015-03-31/functions/$function_arn/invocations";
$self->debug('checking for existing integration');
# get the current method response
my $result = $self->aws->apigateway(
'get-integration', $identifiers,
);
if ($result) {
$self->debug('found existing integration');
return ();
}
$self->debug('putting new integration');
$self->aws_do(
'apigateway',
'put-integration',
{
%{$identifiers},
type => 'AWS_PROXY',
'integration-http-method' => 'POST',
'credential' => $self->_role_arn,
uri => $uri,
}
);
$self->debug('new integration put');
return ();
}
sub _create_integration_response {
my $self = shift;
my $resource_id = shift;
my $identifiers = {
'rest-api-id' => $self->rest_api_id,
'resource-id' => $resource_id,
'http-method' => 'ANY',
'status-code' => 200,
};
$self->debug('checking for existing integration response');
# get the current method response
my $result = $self->aws->apigateway(
'get-integration-response', $identifiers,
);
if ($result) {
$self->debug('found existing integration response');
return ();
}
$self->debug('putting new integration');
$self->aws_do(
'apigateway',
'put-integration-response',
{
%{$identifiers},
'selection-pattern' => q{},
}
);
$self->debug('new integration put');
return ();
}
sub _upload_function {
my $self = shift;
my $update_type = $self->update_type;
my $region = $self->region;
# compute the arn based on the list in the AWS::Lambda 0.0.11
# documentation
my $v = $region eq 'me-south-1' ? 3 : 5;
my $layers = [
"arn:aws:lambda:$region:445285296882:layer:perl-5-30-runtime:$v",
];
for my $layer ( @{ $self->extra_layers } ) {
if ( $layer
=~ /(arn:[a-zA-Z0-9-]+:lambda:[a-zA-Z0-9-]+:\d{12}:layer:[a-zA-Z0-9-_]+)/aa
) {
push @{$layers}, $layer;
next;
}
if ( $layer eq 'paws' ) {
# compute the arn based on the list in the AWS::Lambda 0.0.11
# documentation
my $pv = $region eq 'me-south-1' ? 3 : 4;
push @{$layers},
"arn:aws:lambda:$region:445285296882:layer:perl-5-30-paws:$pv";
next;
}
die "Layer '$layer' is neither a known named layer nor a layer arn";
}
if ( $update_type eq 'create-function' ) {
$self->debug('creating new function');
my $result = $self->aws_do(
'lambda',
'create-function',
{
'function-name' => $self->name,
'role' => $self->_role_arn,
'region' => $region,
'runtime' => 'provided',
'zip-file' => $self->zip_file_blob,
'handler' => 'handler.handler',
'layers' => $layers,
'timeout' => $self->timeout,
'memory-size' => $self->memory_size,
}
);
$self->debug('new function created');
return $result->{FunctionArn};
( run in 2.636 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )