Skip to main content

Deploy Lambda with dependency on AWS

AWS Lambda is a server less compute service that lets you run code without provisioning or managing servers, creating workload-aware cluster scaling logic, maintaining event integrations, or managing runtimes. With Lambda, you can run code for virtually any type of application or backend service - all with zero administration. Just upload your code as a ZIP file or container image, and Lambda automatically and precisely allocates compute execution power and runs your code based on the incoming request or event, for any scale of traffic. You can set up your code to automatically trigger from 140 AWS services or call it directly from any web or mobile app.



Suppose you have written your lambda in python and trying to import you favorite packages which you have used in code then it might create problem for you. eg. like Pandas, numpy 


Although Python AWS lambda give access to all BOTO3 lib resources.


Below are the steps to Import your Lambda code into AWS.



Step 1: Start a Cloud9 Linux instance in AWS


  •    Search for Cloud9 in the AWS Services
            



  •     Click ‘Create Environment’
  •     Name your environment whatever you like (e.g. transformer ) and click next step
  •     Keep the environment default settings and click next.


  •     Click ‘Create Environment’ and you’re ready to go



Step 2: Creating dependency layer of Pandas library


Enter below steps on the terminal to create package and download dependencies.





mkdir dependency

cd dependency

virtualenv v-env

source ./v-env/bin/activate

pip install pandas

deactivate


Check for python version installed on machine


mkdir python

cd python

cp -r ../v-env/lib64/python3.7/site-packages/* .

cd ..

zip -r panda_layer.zip python

aws lambda publish-layer-version --layer-name pandas --zip-file fileb://panda_layer.zip --compatible-runtimes python3.7


Output after completion of all steps should look like this




Step 3: Adding the Pandas layer to your Lamda function


  • Go to the AWS Lambda service and click ‘Create Function’
  • Name your function, set the runtime to ‘Python 3.7’, and click ‘Create Function’
  • Click on Layers 


  • Click on ‘Layers’ in the function designer, then click ‘add a layer’










  • Choose custom layers from the layers options and on the dropdown, you should see your Pandas layer. 
  • Select that layer and choose your version as 1
  • Click ‘Add’.


 You are now good to go with your lambda having dependency of Pandas.

Comments

Popular posts from this blog

Extent report plugin for cucumber framework

Extent Reports  are the most popular  reporting  used with Selenium. ExtentReport API makes our life easy to generate interactive  report  with simple configuartions. It supports almost all Java and .NET test frameworks such as TestNG , JUnit , NUnit etc Here we are discussing about  a plugin which is build on  Extent Report specially for Cucumber. This plugin is used to simple out the implementation of  Extent Report  in  Cucumber Framework .  We are creating a maven project to implement the integration of our plugin with cucumber 1. Create new maven project in any tool eclipse/sts/intellij 2. Open pom.xml and update below entries. Step 1 : Add Cucumber Extent Reporter library to Maven Project Add  cucumber-extentsreport <dependency>      <groupId> com.vimalselvam </groupId>      <artifactId> cucumber-extentsreport </artif...

java: You aren't using a compiler supported by lombok, so lombok will not work and has been disabled.

  In order to make projects compile with the existing builds of Lombok processor, as a workaround you can use the flag -Djps.track.ap.dependencies=false which should be added to File | Settings | Build, Execution, Deployment | Compiler | Build process VM options field. This will disable collection of dependencies specified by an annotation processor when Filer methods are called

Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.2.3.RELEASE:repackage failed: Unable to find main class

Solutions:  Solution 1 : You needed to change the packaging parameter to jar from pom. Also, the repositories , pluginRepositories , the maven-compiler-plugin and the spring-boot-maven-plugin's version and executions weren't needed. Solution 2:  Try mvn install and see if it works Solution 3: Preview: <properties> <!-- The main class to start by executing java -jar --> <start-class> com.mycorp.starter.HelloWorldApplication </start-class> </properties> Solution 4: Enable the main() method in your Application.java. Configure spring-boot-maven-plugin to specify the class with the main class (Spring should find it anyway if you have one, but good to be explicit): Preview: <plugin> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-maven-plugin </artifactId> <version> ${spring-boot-version} </version>...