Skip to content

Latest commit

 

History

History
93 lines (67 loc) · 3.68 KB

README.md

File metadata and controls

93 lines (67 loc) · 3.68 KB

Lambda w/ Lambda Layers using Pulumi

This repository is purely for reference and is illustrative in it is purpose.

This project illustrates basic lambda deployment with lambda layers. While lambda integration with Pulumi is very simple when integrating with other managed services, standalone lambda deployment is much like AWS CDK deployment prior to @aws-cdk/aws-lambda-nodejs module.

Prerequisites

Before continuing, ensure you have met the following requirements:

  • Pulumi should be installed Pulumi Getting Started w/ AWS
  • an AWS profile configured in ~/.aws/config and ~/.aws/credentials
    • there are instructions to set up an Access Key Credential Type here.
  • an Environment Variable set for the Pulumi Config Passphrase (any of the following methods will work using a passphrase you choose)
    • export PULUMI_CONFIG_PASSPHRASE=<your passphrase> in ~/.zshrc
    • export PULUMI_CONFIG_PASSPHRASE_FILE=<location to file> in ~/.zshrc where the file contains the passphrase
    • add one of the above environment variables inline to the beginning of the up and destroy scripts

Installation

  • clone this repository into a directory of your choosing
  • run npm install in that directory

Pre-Deployment

  • create a stack running the following command pulumi stack init <your stack name>
  • choose the region to deploy to using the following command pulumi config set aws:region <your aws region>

Deployment

This project does not use the standard environment in code solution seen often and opts for AWS profiles instead.

  • run npm run up -profile=<your profile name> if you have defined a non default profile in the ~/.aws files
  • run npm run up if you have defined a default profile, or have AWS environment variables set

Verifying Deployment

Assuming everything runs smoothly during deployment, it is fairly easy to verify that the solution is working. Upon the deployment finishing create a test for the PersonByChance lambda and use the following json as the input for the test.

{
   "id" : 12345
}
  • The response on success should be a random person record provided by the Chance library

Success Response Example

{
  "_id": "e3ab0728-b451-4cc8-85b8-9aea3a4f2e3f",
  "firstName": "Victoria",
  "lastName": "Ghini",
  "phoneNumbers": [
    "(759) 884-6945",
    "(325) 214-7348",
    "(620) 264-5700"
  ]
}

Error Response when id not present

{
  "errorMessage": "An id must be supplied to perform a person search."
}

Error Response when id is less than 0

{
  "errorMessage": "Ids must be greater than 0 to perform a person search."
}

Destroy

This project does not use the standard environment in code solution seen often and opts for AWS profiles instead.

  • run npm run destroy -profile=<your profile name> if you have defined a non default profile in the ~/.aws files
  • run npm run destroy if you have defined a default profile, or have AWS environment variables set

Notes

  • This example uses npm scripts in lieu of proper a proper CICD pipeline to aid with illustration via simple commands
    • Ideally, each individual script may be added as tasks in sequence in a CICD pipeline
  • This repository is heavily commented to provide context as to what and why, if in VS Code feel free to collapse all comments if they are obtrusive
    • On Mac -> Press + K then + /
    • On Windows & Linux -> Press Ctrl + K then Ctrl + /