After showing how easy it is to write aws lambda functions in ruby we will work on a way to build layers with external dependencies or shared data in this post.
Aws lambda ruby layer.
For ruby we can use both gem path opt ruby gems 2 5 0 and ruby lib opt ruby lib to distribute common dependencies and shared code via gem path and ruby lib respectively.
Layer dir required path to layer contents on disk name.
After the deployment completes the new lambda layer is available to use.
Aws lambda update function configuration function name my function layers your function can access the content of the layer during execution in the opt directory.
Lambda provides runtimes for ruby that execute your code to process events.
Each runtime then looks for a language specific folder under the opt directory.
Configuration all of the lambda layers in your serverless service can be found in serverless yml under the layers property.
Lambda has been offering layers since the end of 2018 which allows you to create libraries of shared code.
Ruby layers with serverless.
When a lambda function configured with a lambda layer is executed aws downloads any specified layers and extracts them to the opt directory on the function execution environment.
For the stack name enter aws sdk layer.
Each time we publish layer it will be versioned.
After adding a layer to a function you can use console log to log out the aws sdk version.
If you are using aws as a provider all layers inside the service are aws lambda layers.
To build a functional lambda layer we will need to package our dependencies and shared code in a zip file with a folder structure as follows.
You can run ruby code in aws lambda.
Aws lambda ruby layers is a sample project that explores aws lambda layers and lambda support for ruby both introduced at re invent 2018.
Zip r gem layer zip ruby x ruby 2 5 0 cache aws lambda publish layer version layer name ruby gem region us west 1 compatible runtimes ruby2 5 zip file fileb gem layer zip.
Layers are applied in the order that s specified merging any folders with the same name.
As it will consume too much connections very quickly.
Enter your preferred aws region and accept the other defaults.
Your code runs in an environment that includes the aws sdk for ruby with credentials from an aws identity and access management iam role that you manage.
It is generally a bad practice using api directly in the aws lambda.
Exploring aws lambda layers and ruby support.
Lambda layers can come from multiple sources.
To get started clone this repository.