CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-pulumi--aws

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

apigatewayv2.mddocs/networking/

API Gateway v2 - HTTP and WebSocket APIs

Amazon API Gateway v2 creates HTTP and WebSocket APIs with lower latency and cost.

Common Tasks

Create HTTP API with Lambda integration

const api = new aws.apigatewayv2.Api("http-api", {
    protocolType: "HTTP",
    name: "my-http-api",
});
const integration = new aws.apigatewayv2.Integration("lambda-integration", {
    apiId: api.id,
    integrationType: "AWS_PROXY",
    integrationUri: lambda.arn,
    payloadFormatVersion: "2.0",
});
const route = new aws.apigatewayv2.Route("route", {
    apiId: api.id,
    routeKey: "GET /hello",
    target: pulumi.interpolate`integrations/${integration.id}`,
});

Deploy HTTP API to stage with auto-deploy

const stage = new aws.apigatewayv2.Stage("prod", {
    apiId: api.id,
    name: "prod",
    autoDeploy: true,
    accessLogSettings: {
        destinationArn: logGroup.arn,
        format: "$context.requestId",
    },
});

Create WebSocket API for real-time communication

const wsApi = new aws.apigatewayv2.Api("websocket-api", {
    protocolType: "WEBSOCKET",
    name: "my-websocket-api",
    routeSelectionExpression: "$request.body.action",
});
const connectRoute = new aws.apigatewayv2.Route("connect", {
    apiId: wsApi.id,
    routeKey: "$connect",
    target: pulumi.interpolate`integrations/${connectIntegration.id}`,
});

Core Resources

Api, Stage, Route, Integration

API Gateway v2 provides 12 resources for HTTP and WebSocket APIs.

class Api extends pulumi.CustomResource {
    constructor(name: string, args?: ApiArgs, opts?: pulumi.CustomResourceOptions);

    readonly id: pulumi.Output<string>;
    readonly apiEndpoint: pulumi.Output<string>;
    readonly executionArn: pulumi.Output<string>;
}

interface ApiArgs {
    name?: pulumi.Input<string>;
    protocolType: pulumi.Input<"HTTP" | "WEBSOCKET">;
    description?: pulumi.Input<string>;
    routeSelectionExpression?: pulumi.Input<string>;
    corsConfiguration?: pulumi.Input<{
        allowOrigins?: pulumi.Input<pulumi.Input<string>[]>;
        allowMethods?: pulumi.Input<pulumi.Input<string>[]>;
        allowHeaders?: pulumi.Input<pulumi.Input<string>[]>;
        maxAge?: pulumi.Input<number>;
    }>;
    tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}
class Stage extends pulumi.CustomResource {
    constructor(name: string, args: StageArgs, opts?: pulumi.CustomResourceOptions);

    readonly id: pulumi.Output<string>;
    readonly invokeUrl: pulumi.Output<string>;
}

interface StageArgs {
    apiId: pulumi.Input<string>;
    name: pulumi.Input<string>;
    autoDeploy?: pulumi.Input<boolean>;
    deploymentId?: pulumi.Input<string>;
    description?: pulumi.Input<string>;
    accessLogSettings?: pulumi.Input<{
        destinationArn: pulumi.Input<string>;
        format: pulumi.Input<string>;
    }>;
    defaultRouteSettings?: pulumi.Input<{
        throttlingRateLimit?: pulumi.Input<number>;
        throttlingBurstLimit?: pulumi.Input<number>;
        dataTraceEnabled?: pulumi.Input<boolean>;
    }>;
    tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}
class Route extends pulumi.CustomResource {
    constructor(name: string, args: RouteArgs, opts?: pulumi.CustomResourceOptions);

    readonly id: pulumi.Output<string>;
}

interface RouteArgs {
    apiId: pulumi.Input<string>;
    routeKey: pulumi.Input<string>;
    target?: pulumi.Input<string>;
    authorizationType?: pulumi.Input<"NONE" | "AWS_IAM" | "CUSTOM" | "JWT">;
    authorizerId?: pulumi.Input<string>;
    apiKeyRequired?: pulumi.Input<boolean>;
}
class Integration extends pulumi.CustomResource {
    constructor(name: string, args: IntegrationArgs, opts?: pulumi.CustomResourceOptions);

    readonly id: pulumi.Output<string>;
}

interface IntegrationArgs {
    apiId: pulumi.Input<string>;
    integrationType: pulumi.Input<"AWS_PROXY" | "HTTP_PROXY" | "MOCK" | "AWS">;
    integrationUri?: pulumi.Input<string>;
    integrationMethod?: pulumi.Input<string>;
    payloadFormatVersion?: pulumi.Input<"1.0" | "2.0">;
    timeoutMilliseconds?: pulumi.Input<number>;
    requestParameters?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}

For complete API Gateway v2 API, see All Services.

Related Services

  • Lambda - Backend integration for HTTP and WebSocket APIs
  • Route 53 - Custom domain names for APIs
  • ACM - SSL certificates for custom domains
  • CloudWatch - API monitoring and access logs
  • DynamoDB - State storage for WebSocket connections

Install with Tessl CLI

npx tessl i tessl/npm-pulumi--aws@7.16.0

docs

index.md

quickstart.md

README.md

tile.json