AWS::Lambda - It's Perl support for AWS Lambda Custom Runtime.
Save the following Perl script as handler.pl.
sub handle {
my ($payload, $context) = @_;
return $payload;
}
and then, zip the script.
zip handler.zip handler.pl
Finally, create new function using awscli.
aws --region "$REGION" --profile "$PROFILE" lambda create-function \
--function-name "hello-perl" \
--zip-file "fileb://handler.zip" \
--handler "handler.handle" \
--runtime provided.al2 \
--role arn:aws:iam::xxxxxxxxxxxx:role/service-role/lambda-custom-runtime-perl-role \
--layers "arn:aws:lambda:$REGION:445285296882:layer:perl-5-32-runtime-al2:1"
This package makes it easy to run AWS Lambda Functions written in Perl.
You can get the layer ARN in your script by using get_layer_info.
use AWS::Lambda;
my $info = AWS::Lambda::get_layer_info_al2(
"5.32", # Perl Version
"us-east-1", # Region
);
say $info->{runtime_arn}; # arn:aws:lambda:us-east-1:445285296882:layer:perl-5-32-runtime-al2:1
say $info->{runtime_version}; # 1
say $info->{paws_arn} # arn:aws:lambda:us-east-1:445285296882:layer:perl-5-32-paws-al2:1
say $info->{paws_version} # 1,
Or, you can use following one-liner.
perl -MAWS::Lambda -e 'AWS::Lambda::print_runtime_arn_al2("5.32", "us-east-1")'
perl -MAWS::Lambda -e 'AWS::Lambda::print_paws_arn_al2("5.32", "us-east-1")'
The list of all available layer ARN is here:
arn:aws:lambda:af-south-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:me-south-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:us-east-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:us-east-2:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:us-west-1:445285296882:layer:perl-5-32-runtime-al2:1arn:aws:lambda:us-west-2:445285296882:layer:perl-5-32-runtime-al2:1URLs for Zip archives are here.
https://shogo82148-lambda-perl-runtime-$REGION.s3.amazonaws.com/perl-$VERSION-runtime-al2.zip
https://hub.docker.com/r/shogo82148/p5-aws-lambda is pre-built docker image based on https://hub.docker.com/r/lambci/lambda/
# Install the dependency.
docker run --rm -v $(PWD):/var/task shogo82148/p5-aws-lambda:build-5.32.al2 \
cpanm --notest --local-lib extlocal --no-man-pages --installdeps .
# run an event.
docker run --rm -v $(PWD):/var/task shogo82148/p5-aws-lambda:5.32.al2 \
handler.handle '{"some":"event"}'
AWS X-Ray is a service that collects data about requests that your application serves. You can trace AWS Lambda requests and sends segment data with pre-install module AWS::XRay.
use utf8;
use warnings;
use strict;
use AWS::XRay qw/ capture /;
sub handle {
my ($payload, $context) = @_;
capture "myApp" => sub {
capture "nested" => sub {
# do something ...
};
};
capture "another" => sub {
# do something ...
};
return;
}
1;
If you want to call AWS API from your Lambda function, you can use a pre-built Lambda Layer for Paws - A Perl SDK for AWS (Amazon Web Services) APIs.
Add the perl-runtime layer and the perl-paws layer into your lambda function.
aws --region "$REGION" --profile "$PROFILE" lambda create-function \
--function-name "hello-perl" \
--zip-file "fileb://handler.zip" \
--handler "handler.handle" \
--runtime provided.al2 \
--role arn:aws:iam::xxxxxxxxxxxx:role/service-role/lambda-custom-runtime-perl-role \
--layers \
"arn:aws:lambda:$REGION:445285296882:layer:perl-5-32-runtime-al2:1" \
"arn:aws:lambda:$REGION:445285296882:layer:perl-5-32-paws-al2:1"
Now, you can use Paws to call AWS API from your Lambda function.
use Paws;
my $obj = Paws->service('...');
my $res = $obj->MethodCall(Arg1 => $val1, Arg2 => $val2);
print $res->AttributeFromResult;
The list of all available layer ARN is here:
arn:aws:lambda:af-south-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:me-south-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:us-east-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:us-east-2:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:us-west-1:445285296882:layer:perl-5-32-paws-al2:1arn:aws:lambda:us-west-2:445285296882:layer:perl-5-32-paws-al2:1URLs for Zip archive are here.
https://shogo82148-lambda-perl-runtime-$REGION.s3.amazonaws.com/perl-$VERSION-paws-al2.zip
https://hub.docker.com/r/shogo82148/p5-aws-lambda is pre-build docker image based on https://hub.docker.com/r/lambci/lambda/
# Install the dependency.
docker run --rm -v $(PWD):/var/task shogo82148/p5-aws-lambda:build-5.32-paws.al2 \
cpanm --notest --local-lib extlocal --no-man-pages --installdeps .
# run an event.
docker run --rm -v $(PWD):/var/task shogo82148/p5-aws-lambda:5.32-paws.al2 \
handler.handle '{"some":"event"}'
To create custom module layer such as the Paws Layer,
install the modules into /opt/lib/perl5/site_perl in the layer.
# Create Some::Module Layer
docker run --rm \
-v $(PWD):/var/task \
-v $(PATH_TO_LAYER_DIR)/lib/perl5/site_perl:/opt/lib/perl5/site_perl \
shogo82148/p5-aws-lambda:build-5.32.al2 \
cpanm --notest --no-man-pages Some::Module
cd $(PATH_TO_LAYER_DIR) && zip -9 -r $(PATH_TO_DIST)/some-module.zip .
We also provide the layers for legacy custom runtime as known as "provided".
The list of all available layer ARN is here:
arn:aws:lambda:af-south-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:me-south-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:us-east-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:us-east-2:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:us-west-1:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:us-west-2:445285296882:layer:perl-5-32-runtime:1arn:aws:lambda:af-south-1:445285296882:layer:perl-5-30-runtime:2arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-30-runtime:2arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:me-south-1:445285296882:layer:perl-5-30-runtime:7arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:us-east-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:us-east-2:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:us-west-1:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:us-west-2:445285296882:layer:perl-5-30-runtime:9arn:aws:lambda:af-south-1:445285296882:layer:perl-5-28-runtime:2arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-28-runtime:8arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-28-runtime:2arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:me-south-1:445285296882:layer:perl-5-28-runtime:6arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:us-east-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:us-east-2:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:us-west-1:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:us-west-2:445285296882:layer:perl-5-28-runtime:15arn:aws:lambda:af-south-1:445285296882:layer:perl-5-26-runtime:2arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-26-runtime:9arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-26-runtime:16arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-26-runtime:16arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-26-runtime:16arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-26-runtime:16arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-26-runtime:16arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-26-runtime:16arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-26-runtime:16arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-26-runtime:2arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-26-runtime:16arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-26-runtime:15arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-26-runtime:15arn:aws:lambda:me-south-1:445285296882:layer:perl-5-26-runtime:6arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-26-runtime:15arn:aws:lambda:us-east-1:445285296882:layer:perl-5-26-runtime:15arn:aws:lambda:us-east-2:445285296882:layer:perl-5-26-runtime:15arn:aws:lambda:us-west-1:445285296882:layer:perl-5-26-runtime:15arn:aws:lambda:us-west-2:445285296882:layer:perl-5-26-runtime:15And Paws layers:
arn:aws:lambda:af-south-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:me-south-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:us-east-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:us-east-2:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:us-west-1:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:us-west-2:445285296882:layer:perl-5-32-paws:1arn:aws:lambda:af-south-1:445285296882:layer:perl-5-30-paws:2arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-30-paws:2arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:me-south-1:445285296882:layer:perl-5-30-paws:5arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:us-east-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:us-east-2:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:us-west-1:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:us-west-2:445285296882:layer:perl-5-30-paws:6arn:aws:lambda:af-south-1:445285296882:layer:perl-5-28-paws:2arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-28-paws:2arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:me-south-1:445285296882:layer:perl-5-28-paws:4arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:us-east-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:us-east-2:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:us-west-1:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:us-west-2:445285296882:layer:perl-5-28-paws:5arn:aws:lambda:af-south-1:445285296882:layer:perl-5-26-paws:2arn:aws:lambda:ap-east-1:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:ap-northeast-1:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:ap-northeast-2:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:ap-south-1:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:ap-southeast-1:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:ap-southeast-2:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:ca-central-1:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:eu-central-1:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:eu-south-1:445285296882:layer:perl-5-26-paws:2arn:aws:lambda:eu-west-1:445285296882:layer:perl-5-26-paws:6arn:aws:lambda:eu-west-2:445285296882:layer:perl-5-26-paws:5arn:aws:lambda:eu-west-3:445285296882:layer:perl-5-26-paws:5arn:aws:lambda:me-south-1:445285296882:layer:perl-5-26-paws:4arn:aws:lambda:sa-east-1:445285296882:layer:perl-5-26-paws:5arn:aws:lambda:us-east-1:445285296882:layer:perl-5-26-paws:5arn:aws:lambda:us-east-2:445285296882:layer:perl-5-26-paws:5arn:aws:lambda:us-west-1:445285296882:layer:perl-5-26-paws:5arn:aws:lambda:us-west-2:445285296882:layer:perl-5-26-paws:5URLs of zip archives are here:
https://shogo82148-lambda-perl-runtime-$REGION.s3.amazonaws.com/perl-$VERSION-runtime.zip
And Paws:
https://shogo82148-lambda-perl-runtime-$REGION.s3.amazonaws.com/perl-$VERSION-paws.zip
The MIT License (MIT)
Copyright (C) Ichinose Shogo.
Ichinose Shogo [email protected]
Content type
Image
Digest
sha256:e2e37c0a4…
Size
73.8 MB
Last updated
about 1 hour ago
docker pull shogo82148/p5-aws-lambda:5.42-paws.al2023-2026.09.27