This slide is for YAPC::Tokyo 2019 LT
Perl meets AWS LambdaYAPC::Tokyo 2019@moznion
View Slide
͜Εӕʂʂʂʂ
AWS Lambdaͷ͓
AWS Lambda- ͍ϫϯγϣοτͷίϯϐϡʔςΟϯάϦιʔεΛఏڙ (࠷ۙ5͔Β15ʹ)- αʔόϨεͱ͔ݺΕͯΔͭͰ͢ʢࡶʣ
͍ͭʹAWS LambdaʹΞϨ͕དྷ·ͨ͠Ͷ
͍ͭʹAWS LambdaʹΞϨ͕དྷ·ͨ͠ͶRuby
YAPCͩͧʂʂʂ
AWS Lambda Layers
AWS Lambda Layers- ҙͷϥϯλΠϜΛLambda্Ͱಈ͔ͤΔΈ- ϥϯλΠϜͱbootstrapΛzipʹΞʔΧΠϒͯ͠Ξοϓϩʔυ- See Also https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html
bootstrap- LayerͷίΞίϯϙʔωϯτ- Lambda FunctionͰLayerΛ༗ޮʹ͢Δͱ ͜ͷbootstrap͕ୟ͔ΕΔ
3. Do functionbootstrapbootstrap AWSplatform1. Next Invocation API2. Event4. Invocation Response/Error
γϯϓϧͰ͢Ͷ
AWS Lambda Layers- ҙͷϥϯλΠϜΛLambda্Ͱಈ͔ͤΔΈ- ϥϯλΠϜͱbootstrapΛzipʹΞʔΧΠϒͯ͠Ξοϓϩʔυ- See Also https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.htmlPerl
aws-lambda-perl5-layer
Perl Lambda Layer- Repository: https://github.com/moznion/aws-lambda-perl5-layer- Blog: aws-lambda-perl5-layer ॻ͍ͨ-
Perl Lambda Layer- Ϟνϕʔγϣϯ- ੜ͖͍ͯΔͱ͍Ζ͍Ζ͋Δ- తح৺- ੜ͖͍ͯΔͱ͍Ζ͍Ζ͋Δ
Perl Lambda Layer- Layerͷ࡞Γํ- bootstrapΛॻ͘- LambdaͷϕʔεDockerίϯςφʹperlΛΠϯετʔϧ- Πϯετʔϧͨ͠PerlϥϯλΠϜͱbootstrapΛzipʹݻΊΔ- Ξοϓϩʔυʂʂ
؆୯Ͱ͢Ͷ
Perl Lambda Layer- ಛ- carton friendly- ϏϧυࡁΈLayerఏڙ͋Γ- arn:aws:lambda:${REGION}:652718333417:layer:perl-5_26-layer:1- arn:aws:lambda:${REGION}:652718333417:layer:perl-5_28-layer:1- શAWSϦʔδϣϯαϙʔτ
Perl Lambda Layer- ap-northeast-1- ap-northeast-2- ap-south-1- ap-southeast-1- ap-southeast-2- ca-central-1- eu-central-1- eu-west-1- eu-west-2- eu-west-3- sa-east-1- us-east-1- us-east-2- us-west-1- us-west-2
Perl Lambda Layer- FunctionͷσϓϩΠํ๏- (dependencyΛlocalҎԼʹvendoring͢Δ)- σΟϨΫτϦશମΛzipʹ·ͱΊΔ
؆୯Ͱ͢Ͷʁ
͍ʔΊΜͲ͘Ͷʁ
͍……
……
App::Perlambda
App::Perlambda- aws-lambda-perl5-layer͚ͷϚωδϝϯτ CLIπʔϧ- dist, create, updateʹରԠ- https://github.com/moznion/p5-App-Perlambda
DEMO
·ͱΊ- Ruby͕AWS LambdaʹରԠ͠·ͨ͠- AWS LambdaʹLayers͕͖ͬͯ·ͨ͠- Perl͕LayerͷྗͰAWS LambdaʹରԠ͠·ͨ͠- App::Perlambdaͱ͍͏ˢͷϚωδϝϯτπʔϧΛॻ͖·ͨ͠
ॴײ- ࣮ࡍLambdaॻ͘ͳΒඇಉظॲཧ͍͢͠ݴޠΛ બΜͩ΄͏͕͍͍ͱࢥ͏……- go- node- ͳͲ- ͳ͓ fork(2) Ͳ͏Βಈ͘……
ͦͷଞ- ศརͦ͏ͳͷ͕ग़ͨ- https://github.com/awslabs/aws-lambda-container-image-converter
͓ΘΓ