A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Amazon API Gateway v2 creates HTTP and WebSocket APIs with lower latency and cost.
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}`,
});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.
Install with Tessl CLI
npx tessl i tessl/npm-pulumi--aws