Architect Static Asset Proxy (ASAP) - a helpful library for Lambda-based static asset delivery


Keywords
aws, lambda, amazon, serverless, cloud, cloudfunctions, apigateway, dynamodb, s3, sns, api gateway, framework
License
Apache-2.0
Install
npm install @architect/asap@7.0.8

Documentation

@architect/asap

Architect Static Asset Proxy (ASAP) - a helpful library for Lambda-based static asset delivery

GitHub CI status

Usage

Module

Call ASAP within your handler function manually like so:

let asap = require('@architect/asap')

// All config is optional!
module.exports = asap({
  // Alias assets to different filenames
  alias: {
    '/an-asset.jpg': '/a-different-filename.jpg',
    '/a-path': '/a-different-path',
  },
  // Pass your own fingerprinted static asset manifest (defaults to Arc-generated static.json)
  assets: { 'some-file.gif': 'some-file-a1b2c3.gif' },
  // Set a custom bucket configuration (defaults to Arc-generated buckets)
  bucket: {
    staging: 'staging-bucket-name',
    production: 'production-bucket-name',
    folder: 'some-bucket-subfolder',
  },
  // Override the content-aware cache-control header
  cacheControl: 'max-age=0',
  // Manually set response headers
  headers: { 'some-header': 'ok=true' },
  // Return null if asset is not found (defaults to `false`)
  passthru: true,
  // Engage SPA mode (defaults to `false`)
  spa: false,
})

Lambda handler

Use ASAP as the handler for your Lambda! If you're using Architect, this is done automatically for you when you don't define a root handler for your @http pragma.

If using ASAP with non-Architect projects, just point your Lambda's source directory to src/, and make sure you set the following two env vars:

  • ARC_ENV: staging or production
  • ARC_STATIC_BUCKET: the S3 bucket name where your assets are stored