
Security News
The Changelog Podcast: Practical Steps to Stay Safe on npm
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.
@wanews/pulumi-apigateway-lambda-proxy
Advanced tools
Pulumi component which provisions an APIGateway v2, Lambda and optionally cloudfront to quickly be able to stand up a single lambda which handles all APIGateway requests.
Pulumi component which provisions an APIGateway v2, Lambda and optionally cloudfront to quickly be able to stand up a single lambda which handles all APIGateway requests.
Using fastify.io or similar with https://github.com/fastify/aws-lambda-fastify to host a fastify application in a lambda.
This means local dev just means you need to .listen() on your fastify app to start the server locally, and this resource will ensure it is deployed into AWS ready to go.
import { ApiGatewayLambdaProxy } from '@wanews/pulumi-apigateway-lambda-proxy'
new ApiGatewayLambdaProxy(`my-api`, {
  // Specify any Lambda options here, see https://www.pulumi.com/docs/reference/pkg/aws/lambda/function/#inputs
  lambdaOptions: {
    code: new pulumi.asset.FileArchive('path/to/code/'),
    runtime: 'nodejs12.x',
    handler: 'index.handler',
    memorySize: 512,
  },
})
import { ValidateCertificate } from '@wanews/pulumi-certificate-validation'
import { ApiGatewayLambdaProxy } from '@wanews/pulumi-apigateway-lambda-proxy'
import { Certificate } from '@pulumi/aws/acm'
const cert = new Certificate(`${name}-cert`, {
  domainName: 'my.customdomain.net',
  validationMethod: 'DNS',
})
// Get the route53 zone
const zoneId = pulumi.output(aws.route53.getZone({ name: 'customdomain.net' }))
  .zoneId
// Use @wanews/pulumi-certificate-validation to perform dns validation
const validCertificate = new ValidateCertificate(`cert-validation`, {
  cert,
  zones: [
    {
      domain: 'my.customdomain.net',
      zoneId,
    },
  ],
})
function getTags(name: string) {
    // Use whatever logic you like to construct your tags
    return {
      Name: name,
      Product: 'my-product',
      /* ... */
    }
}
new ApiGatewayLambdaProxy(`my-api`, {
  hostname: 'my.customdomain.net',
  apiGatewayCertificateArn: validCertificate.validCertificateArn,
  getTags,
  lambdaOptions: {
    code: new pulumi.asset.FileArchive('path/to/code/'),
    runtime: 'nodejs12.x',
    handler: 'index.handler',
    memorySize: 512,
  },
})
import {
  ApiGatewayLambdaProxy,
  RecommendedAlarms,
} from '@wanews/pulumi-apigateway-lambda-proxy'
const gw = new ApiGatewayLambdaProxy('apigw-prod', {
  /* ... */
})
new RecommendedAlarms('alarms', {
  snsTopicArn: 'arn:aws:sns:<region>:<account>:<topic>',
  apiGateway: {
    id: gw.apiGateway.id,
    name: httpApi.name,
    stage: gw.stage?.name,
})
You can also create alarms for APIs created elsewhere:
import * as aws from '@pulumi/aws'
import { RecommendedAlarms } from '@wanews/pulumi-apigateway-lambda-proxy'
const httpApi = new aws.apigatewayv2.Api('apigw-http', {
  /* ... */
})
new RecommendedAlarms('alarms', {
  snsTopicArn: 'arn:aws:sns:<region>:<account>:<topic>',
  apiGateway: {
    id: httpApi.id,
    name: httpApi.name,
    stage: gw.stage?.name,
  },
})
Note that the name is only used for cosmetic purposes. You should set it to a value that easily identifies the API.
By default, the following metrics are monitored:
However, if you're not happy with the defaults, you can override the default thresholds, or create individual alarms instead:
import {
  ApiGatewayLambdaProxy,
  RecommendedAlarms,
} from '@wanews/pulumi-apigateway-lambda-proxy'
const gw = new ApiGatewayLambdaProxy('apigw-prod', {
  /* ... */
})
new RecommendedAlarms('alarms', {
  snsTopicArn: 'arn:aws:sns:<region>:<account>:<topic>',
  apiGateway: {
    name: restApi.name,
    stage: gw.stage?.name,
  },
  thresholds: {
    errorRate5xxPercent: 1,
  },
})
new ErrorRate5xxAlarm('alarm', {
  snsTopicArn: 'arn:aws:sns:<region>:<account>:<topic>',
  apiGateway: {
    id: gw.apiGateway.id,
    name: httpApi.name,
    stage: gw.stage?.name,
  },
})
FAQs
Pulumi component which provisions an APIGateway v2, Lambda and optionally cloudfront to quickly be able to stand up a single lambda which handles all APIGateway requests.
We found that @wanews/pulumi-apigateway-lambda-proxy demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.

Security News
Ruby's creator Matz assumes control of RubyGems and Bundler repositories while former maintainers agree to step back and transfer all rights to end the dispute.