CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7

A Pulumi provider SDK for creating and managing Amazon Web Services (AWS) cloud resources in Go, providing strongly-typed resource classes and data sources for all major AWS services.

Overview
Eval results
Files

api-gateways.mddocs/reference/services/

API Gateway

Documentation for Amazon API Gateway v1 (REST APIs) and API Gateway v2 (HTTP and WebSocket APIs) Pulumi resources.

Package Information

  • Package Names: apigateway, apigatewayv2
  • Import Paths:
    • github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway
    • github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigatewayv2

Core Imports

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway"
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigatewayv2"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

Overview

  • apigateway (v1): Create and manage REST APIs. Use resources like RestApi, Resource, Method, Integration, Stage, and Deployment to define REST API behavior.
  • apigatewayv2 (v2): Create and manage HTTP APIs and WebSocket APIs. Simpler model with Api, Route, Integration, Stage, and Authorizer.

Capabilities

API Gateway v1 - REST API Management

Manages REST APIs with full control over resources, methods, integrations, and deployments. Supports OpenAPI spec import.

func NewRestApi(ctx *pulumi.Context,
    name string, args *RestApiArgs, opts ...pulumi.ResourceOption) (*RestApi, error)

func GetRestApi(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *RestApiState, opts ...pulumi.ResourceOption) (*RestApi, error)

type RestApi struct {
    pulumi.CustomResourceState

    ApiKeySource              pulumi.StringOutput                     `pulumi:"apiKeySource"`
    Arn                       pulumi.StringOutput                     `pulumi:"arn"`
    BinaryMediaTypes          pulumi.StringArrayOutput                `pulumi:"binaryMediaTypes"`
    Body                      pulumi.StringPtrOutput                  `pulumi:"body"`
    CreatedDate               pulumi.StringOutput                     `pulumi:"createdDate"`
    Description               pulumi.StringOutput                     `pulumi:"description"`
    DisableExecuteApiEndpoint pulumi.BoolOutput                       `pulumi:"disableExecuteApiEndpoint"`
    EndpointConfiguration     RestApiEndpointConfigurationOutput      `pulumi:"endpointConfiguration"`
    ExecutionArn              pulumi.StringOutput                     `pulumi:"executionArn"`
    FailOnWarnings            pulumi.BoolPtrOutput                    `pulumi:"failOnWarnings"`
    MinimumCompressionSize    pulumi.StringOutput                     `pulumi:"minimumCompressionSize"`
    Name                      pulumi.StringOutput                     `pulumi:"name"`
    Parameters                pulumi.StringMapOutput                  `pulumi:"parameters"`
    Policy                    pulumi.StringOutput                     `pulumi:"policy"`
    PutRestApiMode            pulumi.StringPtrOutput                  `pulumi:"putRestApiMode"`
    Region                    pulumi.StringOutput                     `pulumi:"region"`
    RootResourceId            pulumi.StringOutput                     `pulumi:"rootResourceId"`
    Tags                      pulumi.StringMapOutput                  `pulumi:"tags"`
    TagsAll                   pulumi.StringMapOutput                  `pulumi:"tagsAll"`
}

type RestApiArgs struct {
    // Valid values: "HEADER" (default), "AUTHORIZER"
    ApiKeySource              pulumi.StringPtrInput
    BinaryMediaTypes          pulumi.StringArrayInput
    // OpenAPI spec body. Updates replace all REST API config not overridden here.
    Body                      pulumi.StringPtrInput
    Description               pulumi.StringPtrInput
    DisableExecuteApiEndpoint pulumi.BoolPtrInput
    EndpointConfiguration     RestApiEndpointConfigurationPtrInput
    FailOnWarnings            pulumi.BoolPtrInput
    // Between -1 and 10485760 (10MB). -1 disables compression.
    MinimumCompressionSize    pulumi.StringPtrInput
    Name                      pulumi.StringPtrInput
    Parameters                pulumi.StringMapInput
    Policy                    pulumi.StringPtrInput
    // Valid values: "merge", "overwrite" (default)
    PutRestApiMode            pulumi.StringPtrInput
    Region                    pulumi.StringPtrInput
    Tags                      pulumi.StringMapInput
}

API Gateway v1 - Stage

Manages deployment stages for REST APIs. Stages can have access logging, caching, canary deployments, and X-Ray tracing.

func NewStage(ctx *pulumi.Context,
    name string, args *StageArgs, opts ...pulumi.ResourceOption) (*Stage, error)

func GetStage(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *StageState, opts ...pulumi.ResourceOption) (*Stage, error)

type Stage struct {
    pulumi.CustomResourceState

    AccessLogSettings    StageAccessLogSettingsPtrOutput  `pulumi:"accessLogSettings"`
    Arn                  pulumi.StringOutput              `pulumi:"arn"`
    CacheClusterEnabled  pulumi.BoolPtrOutput             `pulumi:"cacheClusterEnabled"`
    // Valid values: "0.5", "1.6", "6.1", "13.5", "28.4", "58.2", "118", "237"
    CacheClusterSize     pulumi.StringPtrOutput           `pulumi:"cacheClusterSize"`
    CanarySettings       StageCanarySettingsPtrOutput     `pulumi:"canarySettings"`
    ClientCertificateId  pulumi.StringPtrOutput           `pulumi:"clientCertificateId"`
    Deployment           pulumi.StringOutput              `pulumi:"deployment"`
    Description          pulumi.StringPtrOutput           `pulumi:"description"`
    DocumentationVersion pulumi.StringPtrOutput           `pulumi:"documentationVersion"`
    ExecutionArn         pulumi.StringOutput              `pulumi:"executionArn"`
    InvokeUrl            pulumi.StringOutput              `pulumi:"invokeUrl"`
    Region               pulumi.StringOutput              `pulumi:"region"`
    RestApi              pulumi.StringOutput              `pulumi:"restApi"`
    StageName            pulumi.StringOutput              `pulumi:"stageName"`
    Tags                 pulumi.StringMapOutput           `pulumi:"tags"`
    TagsAll              pulumi.StringMapOutput           `pulumi:"tagsAll"`
    Variables            pulumi.StringMapOutput           `pulumi:"variables"`
    WebAclArn            pulumi.StringOutput              `pulumi:"webAclArn"`
    XrayTracingEnabled   pulumi.BoolPtrOutput             `pulumi:"xrayTracingEnabled"`
}

API Gateway v1 - Method

Provides HTTP methods for API Gateway resources. Controls authorization, request validation, and request models.

func NewMethod(ctx *pulumi.Context,
    name string, args *MethodArgs, opts ...pulumi.ResourceOption) (*Method, error)

func GetMethod(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *MethodState, opts ...pulumi.ResourceOption) (*Method, error)

type Method struct {
    pulumi.CustomResourceState

    ApiKeyRequired      pulumi.BoolPtrOutput       `pulumi:"apiKeyRequired"`
    // Valid values: "NONE", "CUSTOM", "AWS_IAM", "COGNITO_USER_POOLS"
    Authorization       pulumi.StringOutput        `pulumi:"authorization"`
    AuthorizationScopes pulumi.StringArrayOutput   `pulumi:"authorizationScopes"`
    AuthorizerId        pulumi.StringPtrOutput     `pulumi:"authorizerId"`
    // Valid values: "GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "ANY"
    HttpMethod          pulumi.StringOutput        `pulumi:"httpMethod"`
    OperationName       pulumi.StringPtrOutput     `pulumi:"operationName"`
    Region              pulumi.StringOutput        `pulumi:"region"`
    RequestModels       pulumi.StringMapOutput     `pulumi:"requestModels"`
    RequestParameters   pulumi.BoolMapOutput       `pulumi:"requestParameters"`
    RequestValidatorId  pulumi.StringPtrOutput     `pulumi:"requestValidatorId"`
    ResourceId          pulumi.StringOutput        `pulumi:"resourceId"`
    RestApi             pulumi.StringOutput        `pulumi:"restApi"`
}

API Gateway v1 - Integration

Connects API Gateway methods to backend services (Lambda, HTTP, AWS services, or mock).

func NewIntegration(ctx *pulumi.Context,
    name string, args *IntegrationArgs, opts ...pulumi.ResourceOption) (*Integration, error)

func GetIntegration(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *IntegrationState, opts ...pulumi.ResourceOption) (*Integration, error)

type Integration struct {
    pulumi.CustomResourceState

    CacheKeyParameters    pulumi.StringArrayOutput         `pulumi:"cacheKeyParameters"`
    CacheNamespace        pulumi.StringOutput              `pulumi:"cacheNamespace"`
    ConnectionId          pulumi.StringPtrOutput           `pulumi:"connectionId"`
    // Valid values: "INTERNET" (default), "VPC_LINK"
    ConnectionType        pulumi.StringPtrOutput           `pulumi:"connectionType"`
    // Valid values: "CONVERT_TO_BINARY", "CONVERT_TO_TEXT"
    ContentHandling       pulumi.StringPtrOutput           `pulumi:"contentHandling"`
    Credentials           pulumi.StringPtrOutput           `pulumi:"credentials"`
    HttpMethod            pulumi.StringOutput              `pulumi:"httpMethod"`
    IntegrationHttpMethod pulumi.StringPtrOutput           `pulumi:"integrationHttpMethod"`
    IntegrationTarget     pulumi.StringPtrOutput           `pulumi:"integrationTarget"`
    // Valid values: "WHEN_NO_MATCH", "WHEN_NO_TEMPLATES", "NEVER"
    PassthroughBehavior   pulumi.StringOutput              `pulumi:"passthroughBehavior"`
    Region                pulumi.StringOutput              `pulumi:"region"`
    RequestParameters     pulumi.StringMapOutput           `pulumi:"requestParameters"`
    RequestTemplates      pulumi.StringMapOutput           `pulumi:"requestTemplates"`
    ResourceId            pulumi.StringOutput              `pulumi:"resourceId"`
    // Valid values: "BUFFERED" (default), "STREAM"
    ResponseTransferMode  pulumi.StringOutput              `pulumi:"responseTransferMode"`
    RestApi               pulumi.StringOutput              `pulumi:"restApi"`
    TimeoutMilliseconds   pulumi.IntPtrOutput              `pulumi:"timeoutMilliseconds"`
    TlsConfig             IntegrationTlsConfigPtrOutput    `pulumi:"tlsConfig"`
    // Valid values: "HTTP", "MOCK", "AWS", "AWS_PROXY", "HTTP_PROXY"
    Type                  pulumi.StringOutput              `pulumi:"type"`
    Uri                   pulumi.StringPtrOutput           `pulumi:"uri"`
}

API Gateway v1 - Authorizer

Controls access to REST API methods using Lambda functions or Cognito User Pools.

func NewAuthorizer(ctx *pulumi.Context,
    name string, args *AuthorizerArgs, opts ...pulumi.ResourceOption) (*Authorizer, error)

func GetAuthorizer(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *AuthorizerState, opts ...pulumi.ResourceOption) (*Authorizer, error)

type Authorizer struct {
    pulumi.CustomResourceState

    Arn                          pulumi.StringOutput      `pulumi:"arn"`
    AuthorizerCredentials        pulumi.StringPtrOutput   `pulumi:"authorizerCredentials"`
    // Default: 300
    AuthorizerResultTtlInSeconds pulumi.IntPtrOutput      `pulumi:"authorizerResultTtlInSeconds"`
    AuthorizerUri                pulumi.StringPtrOutput   `pulumi:"authorizerUri"`
    IdentitySource               pulumi.StringPtrOutput   `pulumi:"identitySource"`
    IdentityValidationExpression pulumi.StringPtrOutput   `pulumi:"identityValidationExpression"`
    Name                         pulumi.StringOutput      `pulumi:"name"`
    ProviderArns                 pulumi.StringArrayOutput `pulumi:"providerArns"`
    Region                       pulumi.StringOutput      `pulumi:"region"`
    RestApi                      pulumi.StringOutput      `pulumi:"restApi"`
    // Valid values: "TOKEN" (default), "REQUEST", "COGNITO_USER_POOLS"
    Type                         pulumi.StringPtrOutput   `pulumi:"type"`
}

API Gateway v1 - Data Source: API Key Lookup

Retrieves information about an existing API key.

func GetKey(ctx *pulumi.Context, args *GetKeyArgs, opts ...pulumi.InvokeOption) (*GetKeyResult, error)

type GetKeyArgs struct {
    // ID of the API key to look up.
    Id     string  `pulumi:"id"`
    Region *string `pulumi:"region"`
    Tags   map[string]string `pulumi:"tags"`
}

API Gateway v1 - Available Resources

// Resource management
func NewResource(ctx *pulumi.Context, name string, args *ResourceArgs, opts ...pulumi.ResourceOption) (*Resource, error)
func NewDeployment(ctx *pulumi.Context, name string, args *DeploymentArgs, opts ...pulumi.ResourceOption) (*Deployment, error)
func NewApiKey(ctx *pulumi.Context, name string, args *ApiKeyArgs, opts ...pulumi.ResourceOption) (*ApiKey, error)
func NewUsagePlan(ctx *pulumi.Context, name string, args *UsagePlanArgs, opts ...pulumi.ResourceOption) (*UsagePlan, error)
func NewUsagePlanKey(ctx *pulumi.Context, name string, args *UsagePlanKeyArgs, opts ...pulumi.ResourceOption) (*UsagePlanKey, error)
func NewBasePathMapping(ctx *pulumi.Context, name string, args *BasePathMappingArgs, opts ...pulumi.ResourceOption) (*BasePathMapping, error)
func NewDomainName(ctx *pulumi.Context, name string, args *DomainNameArgs, opts ...pulumi.ResourceOption) (*DomainName, error)
func NewVpcLink(ctx *pulumi.Context, name string, args *VpcLinkArgs, opts ...pulumi.ResourceOption) (*VpcLink, error)
func NewModel(ctx *pulumi.Context, name string, args *ModelArgs, opts ...pulumi.ResourceOption) (*Model, error)
func NewRequestValidator(ctx *pulumi.Context, name string, args *RequestValidatorArgs, opts ...pulumi.ResourceOption) (*RequestValidator, error)
func NewMethodResponse(ctx *pulumi.Context, name string, args *MethodResponseArgs, opts ...pulumi.ResourceOption) (*MethodResponse, error)
func NewIntegrationResponse(ctx *pulumi.Context, name string, args *IntegrationResponseArgs, opts ...pulumi.ResourceOption) (*IntegrationResponse, error)
func NewMethodSettings(ctx *pulumi.Context, name string, args *MethodSettingsArgs, opts ...pulumi.ResourceOption) (*MethodSettings, error)
func NewDocumentationPart(ctx *pulumi.Context, name string, args *DocumentationPartArgs, opts ...pulumi.ResourceOption) (*DocumentationPart, error)
func NewDocumentationVersion(ctx *pulumi.Context, name string, args *DocumentationVersionArgs, opts ...pulumi.ResourceOption) (*DocumentationVersion, error)
func NewAccount(ctx *pulumi.Context, name string, args *AccountArgs, opts ...pulumi.ResourceOption) (*Account, error)
func NewClientCertificate(ctx *pulumi.Context, name string, args *ClientCertificateArgs, opts ...pulumi.ResourceOption) (*ClientCertificate, error)
func NewResponse(ctx *pulumi.Context, name string, args *ResponseArgs, opts ...pulumi.ResourceOption) (*Response, error)
func NewRestApiPolicy(ctx *pulumi.Context, name string, args *RestApiPolicyArgs, opts ...pulumi.ResourceOption) (*RestApiPolicy, error)
func NewRestApiPut(ctx *pulumi.Context, name string, args *RestApiPutArgs, opts ...pulumi.ResourceOption) (*RestApiPut, error)
func NewDomainNameAccessAssociation(ctx *pulumi.Context, name string, args *DomainNameAccessAssociationArgs, opts ...pulumi.ResourceOption) (*DomainNameAccessAssociation, error)

// Data sources
func GetAccount(ctx *pulumi.Context, args *GetAccountArgs, opts ...pulumi.InvokeOption) (*GetAccountResult, error)
func GetApiKeys(ctx *pulumi.Context, args *GetApiKeysArgs, opts ...pulumi.InvokeOption) (*GetApiKeysResult, error)
func GetAuthorizer(ctx *pulumi.Context, args *GetAuthorizerArgs, opts ...pulumi.InvokeOption) (*GetAuthorizerResult, error)
func GetAuthorizers(ctx *pulumi.Context, args *GetAuthorizersArgs, opts ...pulumi.InvokeOption) (*GetAuthorizersResult, error)
func GetRestApi(ctx *pulumi.Context, args *GetRestApiArgs, opts ...pulumi.InvokeOption) (*GetRestApiResult, error)
func GetStage(ctx *pulumi.Context, args *GetStageArgs, opts ...pulumi.InvokeOption) (*GetStageResult, error)
func GetVpcLink(ctx *pulumi.Context, args *GetVpcLinkArgs, opts ...pulumi.InvokeOption) (*GetVpcLinkResult, error)
func GetUsagePlan(ctx *pulumi.Context, args *GetUsagePlanArgs, opts ...pulumi.InvokeOption) (*GetUsagePlanResult, error)
func GetDomainName(ctx *pulumi.Context, args *GetDomainNameArgs, opts ...pulumi.InvokeOption) (*GetDomainNameResult, error)

API Gateway v2

API Gateway v2 - HTTP and WebSocket API Management

Manages HTTP and WebSocket APIs with a simpler model than v1. HTTP APIs are lower-latency alternatives to REST APIs.

func NewApi(ctx *pulumi.Context,
    name string, args *ApiArgs, opts ...pulumi.ResourceOption) (*Api, error)

func GetApi(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *ApiState, opts ...pulumi.ResourceOption) (*Api, error)

type Api struct {
    pulumi.CustomResourceState

    ApiEndpoint               pulumi.StringOutput          `pulumi:"apiEndpoint"`
    ApiKeySelectionExpression pulumi.StringPtrOutput       `pulumi:"apiKeySelectionExpression"`
    Arn                       pulumi.StringOutput          `pulumi:"arn"`
    Body                      pulumi.StringPtrOutput       `pulumi:"body"`
    CorsConfiguration         ApiCorsConfigurationPtrOutput `pulumi:"corsConfiguration"`
    CredentialsArn            pulumi.StringPtrOutput       `pulumi:"credentialsArn"`
    Description               pulumi.StringPtrOutput       `pulumi:"description"`
    DisableExecuteApiEndpoint pulumi.BoolPtrOutput         `pulumi:"disableExecuteApiEndpoint"`
    ExecutionArn              pulumi.StringOutput          `pulumi:"executionArn"`
    FailOnWarnings            pulumi.BoolPtrOutput         `pulumi:"failOnWarnings"`
    // Valid values: "ipv4" (default), "dualstack"
    IpAddressType             pulumi.StringOutput          `pulumi:"ipAddressType"`
    Name                      pulumi.StringOutput          `pulumi:"name"`
    // Valid values: "HTTP", "WEBSOCKET"
    ProtocolType              pulumi.StringOutput          `pulumi:"protocolType"`
    Region                    pulumi.StringOutput          `pulumi:"region"`
    RouteKey                  pulumi.StringPtrOutput       `pulumi:"routeKey"`
    RouteSelectionExpression  pulumi.StringPtrOutput       `pulumi:"routeSelectionExpression"`
    Tags                      pulumi.StringMapOutput       `pulumi:"tags"`
    TagsAll                   pulumi.StringMapOutput       `pulumi:"tagsAll"`
    Target                    pulumi.StringPtrOutput       `pulumi:"target"`
    Version                   pulumi.StringPtrOutput       `pulumi:"version"`
}

type ApiArgs struct {
    ApiKeySelectionExpression pulumi.StringPtrInput
    Body                      pulumi.StringPtrInput
    CorsConfiguration         ApiCorsConfigurationPtrInput
    CredentialsArn            pulumi.StringPtrInput
    Description               pulumi.StringPtrInput
    DisableExecuteApiEndpoint pulumi.BoolPtrInput
    FailOnWarnings            pulumi.BoolPtrInput
    // Valid values: "ipv4", "dualstack"
    IpAddressType             pulumi.StringPtrInput
    Name                      pulumi.StringPtrInput
    // Required. Valid values: "HTTP", "WEBSOCKET"
    ProtocolType              pulumi.StringInput
    Region                    pulumi.StringPtrInput
    RouteKey                  pulumi.StringPtrInput
    RouteSelectionExpression  pulumi.StringPtrInput
    Tags                      pulumi.StringMapInput
    Target                    pulumi.StringPtrInput
    Version                   pulumi.StringPtrInput
}

API Gateway v2 - Stage

Manages deployment stages for HTTP and WebSocket APIs. Supports auto-deploy for HTTP APIs.

func NewStage(ctx *pulumi.Context,
    name string, args *StageArgs, opts ...pulumi.ResourceOption) (*Stage, error)

func GetStage(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *StageState, opts ...pulumi.ResourceOption) (*Stage, error)

type Stage struct {
    pulumi.CustomResourceState

    AccessLogSettings    StageAccessLogSettingsPtrOutput    `pulumi:"accessLogSettings"`
    ApiId                pulumi.StringOutput                `pulumi:"apiId"`
    Arn                  pulumi.StringOutput                `pulumi:"arn"`
    // HTTP APIs only: auto-trigger new deployments on updates
    AutoDeploy           pulumi.BoolPtrOutput               `pulumi:"autoDeploy"`
    ClientCertificateId  pulumi.StringPtrOutput             `pulumi:"clientCertificateId"`
    DefaultRouteSettings StageDefaultRouteSettingsPtrOutput `pulumi:"defaultRouteSettings"`
    DeploymentId         pulumi.StringOutput                `pulumi:"deploymentId"`
    Description          pulumi.StringPtrOutput             `pulumi:"description"`
    ExecutionArn         pulumi.StringOutput                `pulumi:"executionArn"`
    InvokeUrl            pulumi.StringOutput                `pulumi:"invokeUrl"`
    Name                 pulumi.StringOutput                `pulumi:"name"`
    Region               pulumi.StringOutput                `pulumi:"region"`
    RouteSettings        StageRouteSettingArrayOutput       `pulumi:"routeSettings"`
    StageVariables       pulumi.StringMapOutput             `pulumi:"stageVariables"`
    Tags                 pulumi.StringMapOutput             `pulumi:"tags"`
    TagsAll              pulumi.StringMapOutput             `pulumi:"tagsAll"`
}

API Gateway v2 - Integration

Connects API routes to backend services (Lambda, HTTP endpoints, AWS services, or VPC resources).

func NewIntegration(ctx *pulumi.Context,
    name string, args *IntegrationArgs, opts ...pulumi.ResourceOption) (*Integration, error)

func GetIntegration(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *IntegrationState, opts ...pulumi.ResourceOption) (*Integration, error)

type Integration struct {
    pulumi.CustomResourceState

    ApiId                                  pulumi.StringOutput                       `pulumi:"apiId"`
    ConnectionId                           pulumi.StringPtrOutput                    `pulumi:"connectionId"`
    // Valid values: "INTERNET" (default), "VPC_LINK"
    ConnectionType                         pulumi.StringPtrOutput                    `pulumi:"connectionType"`
    // WebSocket only. Valid values: "CONVERT_TO_BINARY", "CONVERT_TO_TEXT"
    ContentHandlingStrategy                pulumi.StringPtrOutput                    `pulumi:"contentHandlingStrategy"`
    CredentialsArn                         pulumi.StringPtrOutput                    `pulumi:"credentialsArn"`
    Description                            pulumi.StringPtrOutput                    `pulumi:"description"`
    IntegrationMethod                      pulumi.StringPtrOutput                    `pulumi:"integrationMethod"`
    IntegrationResponseSelectionExpression pulumi.StringOutput                       `pulumi:"integrationResponseSelectionExpression"`
    IntegrationSubtype                     pulumi.StringPtrOutput                    `pulumi:"integrationSubtype"`
    // Valid values: "AWS" (WebSocket), "AWS_PROXY", "HTTP" (WebSocket), "HTTP_PROXY", "MOCK" (WebSocket)
    IntegrationType                        pulumi.StringOutput                       `pulumi:"integrationType"`
    IntegrationUri                         pulumi.StringPtrOutput                    `pulumi:"integrationUri"`
    // WebSocket only. Valid values: "WHEN_NO_MATCH", "WHEN_NO_TEMPLATES", "NEVER"
    PassthroughBehavior                    pulumi.StringPtrOutput                    `pulumi:"passthroughBehavior"`
    // Valid values: "1.0" (default), "2.0"
    PayloadFormatVersion                   pulumi.StringPtrOutput                    `pulumi:"payloadFormatVersion"`
    Region                                 pulumi.StringOutput                       `pulumi:"region"`
    RequestParameters                      pulumi.StringMapOutput                    `pulumi:"requestParameters"`
    RequestTemplates                       pulumi.StringMapOutput                    `pulumi:"requestTemplates"`
    ResponseParameters                     IntegrationResponseParameterArrayOutput   `pulumi:"responseParameters"`
    TemplateSelectionExpression            pulumi.StringPtrOutput                    `pulumi:"templateSelectionExpression"`
    // Default: 29000ms for WebSocket, 30000ms for HTTP
    TimeoutMilliseconds                    pulumi.IntOutput                          `pulumi:"timeoutMilliseconds"`
    TlsConfig                             IntegrationTlsConfigPtrOutput             `pulumi:"tlsConfig"`
}

API Gateway v2 - Route

Defines how incoming requests are matched and forwarded to integrations.

func NewRoute(ctx *pulumi.Context,
    name string, args *RouteArgs, opts ...pulumi.ResourceOption) (*Route, error)

func GetRoute(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *RouteState, opts ...pulumi.ResourceOption) (*Route, error)

type Route struct {
    pulumi.CustomResourceState

    ApiId                            pulumi.StringOutput                `pulumi:"apiId"`
    ApiKeyRequired                   pulumi.BoolPtrOutput               `pulumi:"apiKeyRequired"`
    AuthorizationScopes              pulumi.StringArrayOutput           `pulumi:"authorizationScopes"`
    // WebSocket: "NONE", "AWS_IAM", "CUSTOM". HTTP: "NONE", "JWT", "AWS_IAM", "CUSTOM"
    AuthorizationType                pulumi.StringPtrOutput             `pulumi:"authorizationType"`
    AuthorizerId                     pulumi.StringPtrOutput             `pulumi:"authorizerId"`
    ModelSelectionExpression         pulumi.StringPtrOutput             `pulumi:"modelSelectionExpression"`
    OperationName                    pulumi.StringPtrOutput             `pulumi:"operationName"`
    Region                           pulumi.StringOutput                `pulumi:"region"`
    RequestModels                    pulumi.StringMapOutput             `pulumi:"requestModels"`
    RequestParameters                RouteRequestParameterArrayOutput   `pulumi:"requestParameters"`
    // e.g., "$default", "GET /pets", "ANY /example/{proxy+}"
    RouteKey                         pulumi.StringOutput                `pulumi:"routeKey"`
    RouteResponseSelectionExpression pulumi.StringPtrOutput             `pulumi:"routeResponseSelectionExpression"`
    // Format: "integrations/{IntegrationID}"
    Target                           pulumi.StringPtrOutput             `pulumi:"target"`
}

API Gateway v2 - Authorizer

Controls access to API routes using JWT tokens or Lambda functions.

func NewAuthorizer(ctx *pulumi.Context,
    name string, args *AuthorizerArgs, opts ...pulumi.ResourceOption) (*Authorizer, error)

func GetAuthorizer(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *AuthorizerState, opts ...pulumi.ResourceOption) (*Authorizer, error)

type Authorizer struct {
    pulumi.CustomResourceState

    ApiId                          pulumi.StringOutput                     `pulumi:"apiId"`
    AuthorizerCredentialsArn       pulumi.StringPtrOutput                  `pulumi:"authorizerCredentialsArn"`
    // HTTP Lambda authorizers only. Valid values: "1.0", "2.0"
    AuthorizerPayloadFormatVersion pulumi.StringPtrOutput                  `pulumi:"authorizerPayloadFormatVersion"`
    // Default: 300. Range: 0-3600
    AuthorizerResultTtlInSeconds   pulumi.IntOutput                        `pulumi:"authorizerResultTtlInSeconds"`
    // Valid values: "JWT", "REQUEST"
    AuthorizerType                 pulumi.StringOutput                     `pulumi:"authorizerType"`
    AuthorizerUri                  pulumi.StringPtrOutput                  `pulumi:"authorizerUri"`
    EnableSimpleResponses          pulumi.BoolPtrOutput                    `pulumi:"enableSimpleResponses"`
    IdentitySources                pulumi.StringArrayOutput                `pulumi:"identitySources"`
    JwtConfiguration               AuthorizerJwtConfigurationPtrOutput     `pulumi:"jwtConfiguration"`
    Name                           pulumi.StringOutput                     `pulumi:"name"`
    Region                         pulumi.StringOutput                     `pulumi:"region"`
}

API Gateway v2 - Custom Domain Name

Associates a custom domain name with API Gateway v2 APIs using ACM certificates.

func NewDomainName(ctx *pulumi.Context,
    name string, args *DomainNameArgs, opts ...pulumi.ResourceOption) (*DomainName, error)

func GetDomainName(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *DomainNameState, opts ...pulumi.ResourceOption) (*DomainName, error)

type DomainName struct {
    pulumi.CustomResourceState

    ApiMappingSelectionExpression pulumi.StringOutput                            `pulumi:"apiMappingSelectionExpression"`
    Arn                           pulumi.StringOutput                            `pulumi:"arn"`
    DomainName                    pulumi.StringOutput                            `pulumi:"domainName"`
    // Contains TargetDomainName and HostedZoneId for Route 53 alias records
    DomainNameConfiguration       DomainNameDomainNameConfigurationOutput        `pulumi:"domainNameConfiguration"`
    MutualTlsAuthentication       DomainNameMutualTlsAuthenticationPtrOutput     `pulumi:"mutualTlsAuthentication"`
    Region                        pulumi.StringOutput                            `pulumi:"region"`
    Tags                          pulumi.StringMapOutput                         `pulumi:"tags"`
    TagsAll                       pulumi.StringMapOutput                         `pulumi:"tagsAll"`
}

API Gateway v2 - Available Resources

// Resources
func NewApi(ctx *pulumi.Context, name string, args *ApiArgs, opts ...pulumi.ResourceOption) (*Api, error)
func NewApiMapping(ctx *pulumi.Context, name string, args *ApiMappingArgs, opts ...pulumi.ResourceOption) (*ApiMapping, error)
func NewAuthorizer(ctx *pulumi.Context, name string, args *AuthorizerArgs, opts ...pulumi.ResourceOption) (*Authorizer, error)
func NewDeployment(ctx *pulumi.Context, name string, args *DeploymentArgs, opts ...pulumi.ResourceOption) (*Deployment, error)
func NewDomainName(ctx *pulumi.Context, name string, args *DomainNameArgs, opts ...pulumi.ResourceOption) (*DomainName, error)
func NewIntegration(ctx *pulumi.Context, name string, args *IntegrationArgs, opts ...pulumi.ResourceOption) (*Integration, error)
func NewIntegrationResponse(ctx *pulumi.Context, name string, args *IntegrationResponseArgs, opts ...pulumi.ResourceOption) (*IntegrationResponse, error)
func NewModel(ctx *pulumi.Context, name string, args *ModelArgs, opts ...pulumi.ResourceOption) (*Model, error)
func NewRoute(ctx *pulumi.Context, name string, args *RouteArgs, opts ...pulumi.ResourceOption) (*Route, error)
func NewRouteResponse(ctx *pulumi.Context, name string, args *RouteResponseArgs, opts ...pulumi.ResourceOption) (*RouteResponse, error)
func NewStage(ctx *pulumi.Context, name string, args *StageArgs, opts ...pulumi.ResourceOption) (*Stage, error)
func NewVpcLink(ctx *pulumi.Context, name string, args *VpcLinkArgs, opts ...pulumi.ResourceOption) (*VpcLink, error)

// Data sources
func GetApi(ctx *pulumi.Context, args *GetApiArgs, opts ...pulumi.InvokeOption) (*GetApiResult, error)
func GetApis(ctx *pulumi.Context, args *GetApisArgs, opts ...pulumi.InvokeOption) (*GetApisResult, error)
func GetApiMapping(ctx *pulumi.Context, args *GetApiMappingArgs, opts ...pulumi.InvokeOption) (*GetApiMappingResult, error)
func GetAuthorizer(ctx *pulumi.Context, args *GetAuthorizerArgs, opts ...pulumi.InvokeOption) (*GetAuthorizerResult, error)
func GetDeployment(ctx *pulumi.Context, args *GetDeploymentArgs, opts ...pulumi.InvokeOption) (*GetDeploymentResult, error)
func GetDomainName(ctx *pulumi.Context, args *GetDomainNameArgs, opts ...pulumi.InvokeOption) (*GetDomainNameResult, error)
func GetIntegration(ctx *pulumi.Context, args *GetIntegrationArgs, opts ...pulumi.InvokeOption) (*GetIntegrationResult, error)
func GetRoute(ctx *pulumi.Context, args *GetRouteArgs, opts ...pulumi.InvokeOption) (*GetRouteResult, error)
func GetStage(ctx *pulumi.Context, args *GetStageArgs, opts ...pulumi.InvokeOption) (*GetStageResult, error)
func GetVpcLink(ctx *pulumi.Context, args *GetVpcLinkArgs, opts ...pulumi.InvokeOption) (*GetVpcLinkResult, error)

Usage Examples

REST API with Lambda Integration (v1)

package main

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigateway"
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        api, err := apigateway.NewRestApi(ctx, "api", &apigateway.RestApiArgs{
            Name:        pulumi.String("myapi"),
            Description: pulumi.String("My REST API"),
        })
        if err != nil {
            return err
        }

        resource, err := apigateway.NewResource(ctx, "resource", &apigateway.ResourceArgs{
            PathPart: pulumi.String("items"),
            ParentId: api.RootResourceId,
            RestApi:  api.ID(),
        })
        if err != nil {
            return err
        }

        method, err := apigateway.NewMethod(ctx, "method", &apigateway.MethodArgs{
            RestApi:       api.ID(),
            ResourceId:    resource.ID(),
            HttpMethod:    pulumi.String("GET"),
            Authorization: pulumi.String("NONE"),
        })
        if err != nil {
            return err
        }

        _, err = apigateway.NewIntegration(ctx, "integration", &apigateway.IntegrationArgs{
            RestApi:               api.ID(),
            ResourceId:            resource.ID(),
            HttpMethod:            method.HttpMethod,
            IntegrationHttpMethod: pulumi.String("POST"),
            Type:                  pulumi.String("AWS_PROXY"),
            Uri:                   myLambda.InvokeArn,
        })
        return err
    })
}

HTTP API with Lambda Integration (v2)

package main

import (
    "fmt"

    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/apigatewayv2"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        api, err := apigatewayv2.NewApi(ctx, "api", &apigatewayv2.ApiArgs{
            Name:         pulumi.String("my-http-api"),
            ProtocolType: pulumi.String("HTTP"),
        })
        if err != nil {
            return err
        }

        integration, err := apigatewayv2.NewIntegration(ctx, "integration", &apigatewayv2.IntegrationArgs{
            ApiId:             api.ID(),
            IntegrationType:   pulumi.String("AWS_PROXY"),
            IntegrationMethod: pulumi.String("POST"),
            IntegrationUri:    myLambda.InvokeArn,
        })
        if err != nil {
            return err
        }

        _, err = apigatewayv2.NewRoute(ctx, "route", &apigatewayv2.RouteArgs{
            ApiId:    api.ID(),
            RouteKey: pulumi.String("GET /items"),
            Target: integration.ID().ApplyT(func(id string) (string, error) {
                return fmt.Sprintf("integrations/%v", id), nil
            }).(pulumi.StringOutput),
        })
        if err != nil {
            return err
        }

        _, err = apigatewayv2.NewStage(ctx, "stage", &apigatewayv2.StageArgs{
            ApiId:      api.ID(),
            Name:       pulumi.String("$default"),
            AutoDeploy: pulumi.Bool(true),
        })
        return err
    })
}

Install with Tessl CLI

npx tessl i tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7

docs

index.md

tile.json