All Projects → bam-lambda → bam

bam-lambda / bam

Licence: other
Official Github repository of BAM!

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to bam

Serverless Aws Documentation
Serverless 1.0 plugin to add documentation and models to the serverless generated API Gateway
Stars: ✭ 299 (+1473.68%)
Mutual labels:  aws-apigateway
Chalice
Python Serverless Microframework for AWS
Stars: ✭ 8,513 (+44705.26%)
Mutual labels:  aws-apigateway
Awsmobile Cli
CLI experience for Frontend developers in the JavaScript ecosystem.
Stars: ✭ 147 (+673.68%)
Mutual labels:  aws-apigateway
Serverless Photo Recognition
A collection of 3 lambda functions that are invoked by Amazon S3 or Amazon API Gateway to analyze uploaded images with Amazon Rekognition and save picture labels to ElasticSearch (written in Kotlin)
Stars: ✭ 345 (+1715.79%)
Mutual labels:  aws-apigateway
Cloudmagick
CloudMagick is a serverless application which provides a dynamic image transformation like the small light module of apache2
Stars: ✭ 11 (-42.11%)
Mutual labels:  aws-apigateway
Alagarr
🦍 Alagarr is a request-response helper library that removes the boilerplate from your Node.js (AWS Lambda) serverless functions and helps make your code portable.
Stars: ✭ 58 (+205.26%)
Mutual labels:  aws-apigateway
aws-lambda-firewall
Securely and conveniently support IP address whitelists for your publicly routable services.
Stars: ✭ 16 (-15.79%)
Mutual labels:  aws-apigateway
Apilogs
Easy logging and debugging for Amazon API Gateway and AWS Lambda Serverless APIs
Stars: ✭ 216 (+1036.84%)
Mutual labels:  aws-apigateway
Aws Lambda Dotnet
Libraries, samples and tools to help .NET Core developers develop AWS Lambda functions.
Stars: ✭ 945 (+4873.68%)
Mutual labels:  aws-apigateway
Serverless Sam
Serverless framework plugin to export AWS SAM templates for a service
Stars: ✭ 143 (+652.63%)
Mutual labels:  aws-apigateway
Serverless Offline
Emulate AWS λ and API Gateway locally when developing your Serverless project
Stars: ✭ 4,330 (+22689.47%)
Mutual labels:  aws-apigateway
Aws Serverless Auth Reference App
Serverless reference app and backend API, showcasing authentication and authorization patterns using Amazon Cognito, Amazon API Gateway, AWS Lambda, and AWS IAM.
Stars: ✭ 724 (+3710.53%)
Mutual labels:  aws-apigateway
Aws Sam Golang Example
An example API and Worker written in Golang using the Amazon Serverless Application Model (AWS SAM)
Stars: ✭ 73 (+284.21%)
Mutual labels:  aws-apigateway
Aws Lambda Graphql
Use AWS Lambda + AWS API Gateway v2 for GraphQL subscriptions over WebSocket and AWS API Gateway v1 for HTTP
Stars: ✭ 313 (+1547.37%)
Mutual labels:  aws-apigateway
Archive aws Lambda Go Net
Network I/O interface for AWS Lambda Go runtime.
Stars: ✭ 151 (+694.74%)
Mutual labels:  aws-apigateway
terraform-lambda-example
Hello World example of AWS Lambda
Stars: ✭ 35 (+84.21%)
Mutual labels:  aws-apigateway
Amplify Js
A declarative JavaScript library for application development using cloud services.
Stars: ✭ 8,539 (+44842.11%)
Mutual labels:  aws-apigateway
Aws Lambda Typescript
This sample uses the Serverless Application Framework to implement an AWS Lambda function in TypeScript, deploy it via CloudFormation, publish it through API Gateway to a custom domain registered on Route53, and document it with Swagger.
Stars: ✭ 228 (+1100%)
Mutual labels:  aws-apigateway
Aws Csa Notes 2018
My AWS Certified Solutions Architect Associate Study Notes!
Stars: ✭ 167 (+778.95%)
Mutual labels:  aws-apigateway
Architect
The simplest, most powerful way to build serverless applications
Stars: ✭ 1,925 (+10031.58%)
Mutual labels:  aws-apigateway

BAM! header bam 💥 npm license

BAM! is a serverless framework that makes it quick (hence, the name) and easy to get small applications up & running using Node.js and Amazon Web Services (AWS). It is optimized for the deployment of AWS Lambda functions integrated with Amazon API Gateway endpoints, but also allows for the creation of Amazon DynamoDB tables, which can help persist data between lambda invocations.

As long as you meet the prerequisites (see below), there is no need to perform any configuration; BAM! presumes some configuration details by default and uses AWS STS to pull in your account number. That said, there is an option to update your default configuration if you'd like to do that.

Assuming you've written a JavaScript file according to the AWS Lambda programming pattern for Node.js, only one command is needed to push it to AWS and integrate it with an API Gateway endpoint.

bam deploy

If you're new to AWS Lambda, we've included templates for common scenarios (see documentation for bam create in the command section below). These will help you handle requests made using a variety of HTTP methods and expose query/path parameters.

For those more familiar with AWS, we did our best to structure BAM! to allow you to work with existing lambdas & make changes to resources using the AWS console (or other frameworks).

Thanks for trying out BAM! We hope you'll like it! 💥

The Team

Takayoshi Sampson Software Engineer New York, NY

Jocie Moore Software Engineer San Francisco, CA

Jason Overby Software Engineer Portland, OR

Getting Started

Prerequisites

  • AWS account
  • AWS CLI
  • Node.js >= 14
  • NPM

BAM! requires that you have an account with AWS and you have set up an AWS CLI configuration on your local machine. If you have not already done so, please visit Configuring the AWS CLI for instructions. BAM! will use the default profile and region you have specified within that profile when interacting with AWS services.

Install BAM!

npm install -g bam-lambda

Commands

BAM! commands conform to the following structure:

bam <commandName> [<name>] [--<flag>]

For all commands, BAM! will look for <name> in your current directory. This can be either a file called <name>.js or a directory called <name> containing a file called <name>.js.


bam config

updates default settings


bam create <name>

creates local file (or directory) based on template

--invoker: creates a local file/directory with lambda templated to invoke another lambda

--html: creates local directory containing index.html, application.js, main.css, and [resourceName].js

--db: creates local file/directory templated to work with a DynamoDB table

--verbose: creates template with instructional comments


bam deploy <name>

deploys lambda + endpoint

--role: specifies role for this deployment

--permitDb: adds policy with scan, put, get, delete DynamoDB permissions

--methods: specifies HTTP method(s) for the endpoint

--lambdaOnly: deploys the lambda without an endpoint


bam redeploy <name>

updates existing lambda and endpoint

--role: specifies role for this deployment

--permitDb: adds policy with scan, put, get, delete DynamoDB permissions

--methods: specifies HTTP method(s) for the endpoint

--rmMethods: specifies a HTTP method or methods to remove from endpoint

--addEndpoint: connects endpoint to lambda

--revokeDb: changes role associated with lambda to role specified in user config

--runtime: changes Node runtime of the lambda


bam delete <name>

deletes existing lambda + endpoint

--dbtable: deletes DynamoDB table

--endpointOnly: deletes endpoint only


bam get <name>

pulls lambda code from AWS into a local directory


bam list

lists lambdas, endpoints, and dbtables

Lambdas and endpoints deployed from this machine using BAM!:
  nameOfLambda1
    description: a description of the lambda
    endpoint: http://associatedEndpoint/bam
    http methods: GET

  nameOfLambda2
    description: a description of the lambda
    endpoint:: http://associatedEndpoint/bam
    http methods: GET, POST, DELETE

Other lambdas on AWS
  anotherLambda
  yetAnotherLambda

DynamoDB tables deployed from this machine using BAM!:
  nameOfTable1
    partition key: id (number)

  nameOfTable2
    partition key: id (number)
    sort key: name (string)

--dbtables: lists only DynamoDB tables created with BAM!

--lambdas: lists only lambdas and associated endpoints


bam dbtable <name>

creates a DynamoDB table [tableName] on AWS


bam --man|help|h

documentation of commands

--<commandName>: logs a description of the command options

--all: logs descriptions of all command options


bam --version|v

displays version


Additional Resources

Release Notes

Version 4.0.0 (August 2021)

Version 3.0.0 (November 2019)

  • Updated the Node runtime to nodejs10.x for newly created lambda functions because Node 8.x is reaching EOL on December 31, 2019 (https://github.com/nodejs/Release).
  • Added a --runtime flag to the redeploy command so that previously created lambda functions can be updated and therefore continued to be maintained after 2019.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].