infer-lambda-api

module
v0.0.0-...-58abd92 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 8, 2018 License: MIT

README

infer-lambda-api

An example image recognition API using infer and AWS Lambda + API Gateway.

Overview

This project serves as an example for how to quickly deploy a Go Image Recognition API using Terraform and AWS. It uses infer, a Go package that provides abstractions for interacting with TensorFlow models.

Setup

Build

Lambda functions require a zipped application containing the executable and any supporting assets. A Dockerfile has been provided to make the build step easy.

$ make build

Once executed, a deployment.zip file will be included in the root of the project. The zip includes:

  • Lambda Function as a Go binary
  • TensorFlow bindings
  • Model file
  • Labels file
Deploy

Once the application has been built, it's ready to be deployed. The application is deployed as a Lambda function and uses API Gateway to provide HTTP access. Terraform config has been included to make setup easy.

For an in-depth tutorial for using Terraform and Lambda/API Gateway, see here.

First, make sure you have a valid AWS account and have installed Terraform.

From there, initialize the Terraform build and apply. Note: This will incur fees.

$ cd terraform
$ terraform init
$ terraform apply

This creates the following

  • S3 Bucket and Object containing deployment zip
  • Lambda Function
  • IAM Role
  • API Gateway Rest API
  • API Gateway Methods + Integrations into Lambda

Together, this results in a Lambda function that is accessible via HTTP over API Gateway.

Teardown
$ terraform destroy

A version number will be required. Any semver value works.

Usage

Locate the API Gateway Endpoint.

$ cd terraform
$ terraform output endpoint

Execute a request, example using curl below.

$ curl --upload-file "/path/to/img.png" "ENDPOINT" -H "Content-Type: image/png"
[
    {
        "Class": "thing",
        "Score": 0.875
    },
    ...
]

Notes

  • Lambda Function memory size set to 512mb. Any lower and the TF model could not execute.
  • Startup time on first request can often be slow.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL