当前位置: 首页 > 软件库 > 云计算 > Serverless 系统 >

lambda-packs

Precompiled packages for AWS Lambda
授权协议 MIT License
开发语言 JavaScript
所属分类 云计算、 Serverless 系统
软件类型 开源软件
地区 不详
投 递 者 白高超
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

lambda-packs

Precompiled packages for AWS lambda

How to start

  1. https://aws.amazon.com/lambda/ and create/sign in into account
  2. Lambda > Functions - Create lambda function
  3. Blank function
  4. Configure triggers - Next
  5. Configure function
  • Runtime - Python 2.7
  1. Lambda function handler and role
  • Handler - service.handler
  • Role - Create new role from template(s)
  • Role name - test
  • Policy templates - Simple Microservice Permissions
  1. Advanced settings
  • Memory (MB) 128
  • Timeout 1 min 0 sec
  1. Code entry type - Upload a .ZIP file - choose Pack.zip from rep
  2. Test -> Save and test

How to modify

  1. Modify service.py file from sources folder
  2. Choose all files in sources folder when compressing, don't put it in one folder
  3. Upload zip file on function page

Current packs

Selenium PhantomJS

Intro

Selenium on PhantomJS. In fact - a ready-made tool for web scraping. For example, the demo now opens a random page in Wikipedia and sends its header. (PhantomJS at the same time disguises itself as a normal browser, knows how to log in, click and fill out forms) Also added requests, so you can do API requests for different resources to discard / take away the information.

Useful for web testing and scraping.

Demo

Current demo opens random page from wiki (https://en.wikipedia.org/wiki/Special:Random) and prints title.

Serverless start

git clone https://github.com/ryfeus/lambda-packs.git
cd lambda-packs/Selenium_PhantomJS/source/
serverless deploy
serverless invoke --function main --log

You can also see the results from the API Gateway endpoint in a web browser.

Documentation

https://selenium-python.readthedocs.io/


Pyresttest + WRK

Intro

What does the lambda have to do with it? In a nutshell on AWS in one region you can simultaneously run 200 lambdas (more if you write to support). Lambda works in 11 regions. So you can run in parallel more than 2000 lambdas, each of which will conduct load testing of your service. Five minutes of such testing will cost just one dollar.

Demo

Demo in this package tries to send requests to github.com for 5 seconds with 1 connection and also conduct pyresttest dummy test.

Tools

  1. WRK (https://github.com/wg/wrk) - the main tool for load testing. It works with multiple threads, you can specify the number of connections and length of the load. For more fine-tuning, you can use LuaJIT scripts (https://www.lua.org/).
  2. Pyrestest (https://github.com/svanoort/pyresttest) is a handy tool for testing the full pipeline of the API. For example, the user registers, then uses the api key to create tasks / make notes / downloads files, then reads them, then deletes them.

Documentation

https://github.com/wg/wrk

https://github.com/svanoort/pyresttest


Lxml + requests

Intro

Package for parsing static HTML pages. Difference here is that it works faster and consumes less memory than PhantomJS but is limited in terms websites it can parse and other features.

Serverless start

serverless install -u https://github.com/ryfeus/lambda-packs/tree/master/Lxml_requests/source -n lxml-requests
cd lxml-requests
serverless deploy
serverless invoke --function main --log

Build pack

wget https://github.com/ryfeus/lambda-packs/blob/master/Lxml_requests/buildPack.sh
docker pull amazonlinux:latest
docker run -v $(pwd):/outputs --name lambdapackgen -d amazonlinux:latest tail -f /dev/null
docker exec -i -t lambdapackgen /bin/bash /outputs/buildPack.sh

Tools

Lxml 3.7.1

Documentation

http://lxml.de/


Tensorflow

Intro

Open source library for Machine Intelligence. Basically revolutionized AI and made it more accessible. Using tensorflow on lambda is not as bad as it may sound - for some simple models it is the simplest and the cheapest way to deploy.

Demo

As hello world code I used recognition of images trained on imagenet (https://www.tensorflow.org/tutorials/image_recognition). Given the price tag lambda one run (recognition of one picture) will cost $0.00005. Therefore for a dollar you can recognize 20,000 images. It is much cheaper than almost any alternatives, though completely scalable (200 functions can be run in parallel), and can be easily integrated into cloud infrastructure. Current demo downloads image from link 'imagelink' from event source ( if empty - then downloads https://s3.amazonaws.com/ryfeuslambda/tensorflow/imagenet/cropped_panda.jpg)

Tools

Tensorflow 1.4.0

Documentation

https://www.tensorflow.org/tutorials/image_recognition

Nightly version

Nightly version archive is more than 50 MB in size but it is still eligible for using with AWS Lambda (though you need to upload pack through S3). For more read here:

https://hackernoon.com/exploring-the-aws-lambda-deployment-limits-9a8384b0bec3

Serverless start

serverless install -u https://github.com/ryfeus/lambda-packs/tree/master/tensorflow/source -n tensorflow
cd tensorflow
serverless deploy
serverless invoke --function main --log

Build pack

for Python2:

wget https://raw.githubusercontent.com/ryfeus/lambda-packs/master/Tensorflow/buildPack.sh
wget https://raw.githubusercontent.com/ryfeus/lambda-packs/master/Tensorflow/index.py
docker pull amazonlinux:latest
docker run -v $(pwd):/outputs --name lambdapackgen -d amazonlinux:latest tail -f /dev/null
docker exec -i -t lambdapackgen /bin/bash /outputs/buildPack.sh

for Python3:

wget https://raw.githubusercontent.com/ryfeus/lambda-packs/master/Tensorflow/buildPack_py3.sh
wget https://raw.githubusercontent.com/ryfeus/lambda-packs/master/Tensorflow/index_py3.py
docker pull amazonlinux:latest
docker run -v $(pwd):/outputs --name lambdapackgen -d amazonlinux:latest tail -f /dev/null
docker exec -i -t lambdapackgen /bin/bash /outputs/buildPack_py3.sh

Note: Remember You should set python3.6 for AWS Lambda function environment.

Layer ARN

arn:aws:lambda:us-east-1:339543757547:layer:tensorflow-pack


Sklearn

Intro

Package for fans of machine learning, building models and the like. I doubt that there is a more convenient way to deploy model to the real world.

Tools

  1. Scikit-learn 0.17.1
  2. Scipy 0.17.0

Documentation

http://scikit-learn.org/


Skimage

Intro

Package of image processing tools, and not only to style image, but also a large set of computer vision algorithms.

There are currently two zipped packs available, Pack.zip and Pack_nomatplotlib.zip, you probably want to use Pack_nomatplotlib.zip. See https://github.com/ryfeus/lambda-packs/issues/5 for more information.

Tools

Scikit-image 0.12.3

Documentation

http://scikit-image.org/


OpenCV + PIL

Intro

Another package of image processing tools, and not only to style image, but also a large set of Computer vision algorithms.

Tools

  1. OpenCV 3.1.0
  2. PIL 4.0.0

Documentation

https://pillow.readthedocs.io/

http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html


Pandas

Intro

Package for fans of statistics, data scientists and data engineers. RAM at lambda is 1.5 gigabytes, and the maximum operating time - 5 minutes. I am sure that will be enough for most tasks.

Tools

Pandas 0.19.0

Documentation

http://pandas.pydata.org/


Spacy

Intro

Opensource library for Natural Language Processing in python.

Tools

  1. Spacy 2.0.11

Documentation

https://spacy.io/

Example

Example code loads language model from S3 and uses it to analyze sentence.


Tesseract

Intro

OCR (optical character recognition) library for text recognition from the image.

Documentation

https://github.com/tesseract-ocr/tesseract


PDF generator + Microsoft office file generator (docx, xlsx, pptx) + image generator (jpg, png) + book generator (epub)

Intro

"Hello world" code in package creates example of every document. Basically these libs are low memory (less than 128MB) and high speed (less than 0.5 seconds) so it's something like ~1m documents generated per 1$ in terms of AWS Lambda pricing.

Tools


Satellite imagery processing (rasterio + OSGEO + pyproj + shapely + PIL)

Intro

AWS Lambda pack in Python for processing satellite imagery. Basically it enables to deploy python code in an easy and cheap way for processing satellite imagery or polygons. In “hello world” code of the pack I download red, green, blue Landsat 8 bands from AWS, make True Color image out of it and upload it to S3. It takes 35 seconds and 824MB of RAM for it so ~2500 scenes can be processed for 1$.

Tools


PyTorch

Python 3.6 based PyTorch

Tools

  • PyTorch 1.0.1 (CPU)
  • torchvision 0.2.1

Installed Packages (deps)

  • numpy-1.16.1
  • pillow-5.4.1
  • six-1.12.0
  • torchvision-0.2.1

Build Pack

# You need `docker` before run
./build-with-docker.sh
 相关资料
  • 问题内容: 我正在尝试执行新的JDK 8函数式编程领域中似乎是相对基本的事情,但是我无法使其工作。我有这个工作代码: 它接受一个数字列表,并产生可以打印出来的功能列表。但是,显式强制转换为Callable似乎是多余的。在我和IntelliJ中看来。我们都同意这也应该起作用: 但是我得到一个错误: 问题答案: 您遇到了Java 8目标类型的限制,该限制适用于方法调用的 接收者 。尽管目标类型在大多数

  • 我正试图做一件在新JDK似乎是相对基本的事情 它获取一个数字列表并生成一个可以将它们打印出来的函数列表。然而,Callable的显式强制执行似乎是多余的。对我和IntelliJ来说似乎是这样。我们都同意这也应该有效: 但是,我收到一个错误:

  • 有时您可能只需要在程序中的一个位置使用一个函数,并且该函数非常简单,您可能不会给它命名,或者可能不想将它存储在符号表中,而宁愿编写一个未命名或匿名的函数。 LISP允许您编写仅在程序中遇到它们时才计算的匿名函数。 这些函数称为Lambda functions. 您可以使用lambda表达式创建此类函数。 lambda表达式的语法如下 - (lambda (parameters) body) 无法

  • 头文件: "boost/lambda/lambda.hpp" 它包括了本库的核心部分。 "boost/lambda/bind.hpp" 它定义了 bind 函数。 "boost/lambda/if.hpp" 它定义了相当于 if 的 lambda ,以及条件操作符。 "boost/lambda/loops.hpp" 它定义了循环结构(例如,while_loop 和 for_loop)。 "b

  • AWS Lambda是一种响应式云服务,可检查应用程序中的操作,并通过部署用户定义的代码(称为functions响应。 它可以自动管理多个可用区域中的计算资源,并在触发新操作时对其进行扩展。 AWS Lambda支持使用Java,Python和Node.js编写的代码,该服务可以使用Amazon Linux支持的语言(包括Bash,Go和Ruby)启动流程。 以下是使用AWS Lambda时的一些

  • Lambda表达式在Java 8中引入,并被吹捧为Java 8的最大特性.Lambda表达式有助于函数式编程,并简化了很多开发。 语法 (Syntax) lambda表达式的特征在于以下语法。 parameter -> expression body 以下是lambda表达式的重要特征。 Optional type declaration - 无需声明参数类型。 编译器可以从参数的值推断出相同的

  • The extraordinary simple, performant, and extensible custom AWS Lambda runtime for Clojure. Holy Lambda supports multiple backends Babashka, Native Clojure (GraalVM compiled), Clojure (much faster tha

  • Python-lambda is a toolset for developing and deploying serverless Python code in AWS Lambda. A call for contributors With python-lambda and pytube both continuing to gain momentum, I'm calling forcon