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

apigateway.mddocs/networking/

API Gateway - RESTful APIs

Amazon API Gateway creates, deploys, and manages RESTful APIs.

Common Tasks

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 },
});

Core Resources

RestApi, Stage, Deployment, Resource, Method, Integration

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.

Related Services

  • Lambda - Backend integration for API methods
  • Cognito - User authentication and authorization
  • Route 53 - Custom domain names for APIs
  • ACM - SSL certificates for custom domains
  • CloudWatch - API monitoring and logging

Install with Tessl CLI

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

docs

index.md

quickstart.md

README.md

tile.json