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 creates, deploys, and manages RESTful APIs.
Create a REST API with Lambda integration
const api = new aws.apigateway.RestApi("api", { name: "my-api" });
const resource = new aws.apigateway.Resource("resource", {
restApi: api.id,
parentId: api.rootResourceId,
pathPart: "hello",
});
const method = new aws.apigateway.Method("method", {
restApi: api.id,
resourceId: resource.id,
httpMethod: "GET",
authorization: "NONE",
});Deploy API to stage with throttling
const deployment = new aws.apigateway.Deployment("deployment", {
restApi: api.id,
}, { dependsOn: [method] });
const stage = new aws.apigateway.Stage("prod", {
restApi: api.id,
deployment: deployment.id,
stageName: "prod",
throttleSettings: {
rateLimit: 100,
burstLimit: 200,
},
});Set up API key and usage plan
const key = new aws.apigateway.ApiKey("key", {
name: "my-api-key",
enabled: true,
});
const usagePlan = new aws.apigateway.UsagePlan("plan", {
name: "basic-plan",
apiStages: [{ apiId: api.id, stage: stage.stageName }],
throttleSettings: { rateLimit: 10, burstLimit: 20 },
});API Gateway provides 26 resources for building complete REST APIs with authentication, caching, throttling, and monitoring.
class RestApi extends pulumi.CustomResource {
constructor(name: string, args?: RestApiArgs, opts?: pulumi.CustomResourceOptions);
readonly id: pulumi.Output<string>;
readonly rootResourceId: pulumi.Output<string>;
readonly executionArn: pulumi.Output<string>;
}
interface RestApiArgs {
name?: pulumi.Input<string>;
description?: pulumi.Input<string>;
endpointConfiguration?: pulumi.Input<{
types: pulumi.Input<"EDGE" | "REGIONAL" | "PRIVATE">[];
}>;
policy?: pulumi.Input<string>;
tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}class Resource extends pulumi.CustomResource {
constructor(name: string, args: ResourceArgs, opts?: pulumi.CustomResourceOptions);
readonly id: pulumi.Output<string>;
}
interface ResourceArgs {
restApi: pulumi.Input<string>;
parentId: pulumi.Input<string>;
pathPart: pulumi.Input<string>;
}class Method extends pulumi.CustomResource {
constructor(name: string, args: MethodArgs, opts?: pulumi.CustomResourceOptions);
}
interface MethodArgs {
restApi: pulumi.Input<string>;
resourceId: pulumi.Input<string>;
httpMethod: pulumi.Input<string>;
authorization: pulumi.Input<"NONE" | "AWS_IAM" | "CUSTOM" | "COGNITO_USER_POOLS">;
authorizerId?: pulumi.Input<string>;
apiKeyRequired?: pulumi.Input<boolean>;
requestParameters?: pulumi.Input<{[key: string]: pulumi.Input<boolean>}>;
}class Integration extends pulumi.CustomResource {
constructor(name: string, args: IntegrationArgs, opts?: pulumi.CustomResourceOptions);
}
interface IntegrationArgs {
restApi: pulumi.Input<string>;
resourceId: pulumi.Input<string>;
httpMethod: pulumi.Input<string>;
type: pulumi.Input<"AWS" | "AWS_PROXY" | "HTTP" | "HTTP_PROXY" | "MOCK">;
integrationHttpMethod?: pulumi.Input<string>;
uri?: pulumi.Input<string>;
credentials?: pulumi.Input<string>;
requestTemplates?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}class Deployment extends pulumi.CustomResource {
constructor(name: string, args: DeploymentArgs, opts?: pulumi.CustomResourceOptions);
readonly id: pulumi.Output<string>;
readonly invokeUrl: pulumi.Output<string>;
}
interface DeploymentArgs {
restApi: pulumi.Input<string>;
description?: pulumi.Input<string>;
stageDescription?: pulumi.Input<string>;
stageName?: pulumi.Input<string>;
}class Stage extends pulumi.CustomResource {
constructor(name: string, args: StageArgs, opts?: pulumi.CustomResourceOptions);
readonly invokeUrl: pulumi.Output<string>;
}
interface StageArgs {
restApi: pulumi.Input<string>;
deployment: pulumi.Input<string>;
stageName: pulumi.Input<string>;
description?: pulumi.Input<string>;
cacheClusterEnabled?: pulumi.Input<boolean>;
cacheClusterSize?: pulumi.Input<string>;
throttleSettings?: pulumi.Input<{
rateLimit?: pulumi.Input<number>;
burstLimit?: pulumi.Input<number>;
}>;
tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}For complete API Gateway API with detailed signatures, see All Services.
Install with Tessl CLI
npx tessl i tessl/npm-pulumi--aws