Api

Manages an Amazon API Gateway Version 2 API.

Note: Amazon API Gateway Version 2 resources are used for creating and deploying WebSocket and HTTP APIs. To create and deploy REST APIs, use Amazon API Gateway Version 1.

Example Usage

Basic WebSocket API

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
    public MyStack()
    {
        var example = new Aws.ApiGatewayV2.Api("example", new Aws.ApiGatewayV2.ApiArgs
        {
            ProtocolType = "WEBSOCKET",
            RouteSelectionExpression = "$request.body.action",
        });
    }

}
package main

import (
    "fmt"

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

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        _, err := apigatewayv2.NewApi(ctx, "example", &apigatewayv2.ApiArgs{
            ProtocolType:             pulumi.String("WEBSOCKET"),
            RouteSelectionExpression: pulumi.String(fmt.Sprintf("%v%v", "$", "request.body.action")),
        })
        if err != nil {
            return err
        }
        return nil
    })
}
import pulumi
import pulumi_aws as aws

example = aws.apigatewayv2.Api("example",
    protocol_type="WEBSOCKET",
    route_selection_expression="$request.body.action")
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const example = new aws.apigatewayv2.Api("example", {
    protocolType: "WEBSOCKET",
    routeSelectionExpression: "$request.body.action",
});

Basic HTTP API

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
    public MyStack()
    {
        var example = new Aws.ApiGatewayV2.Api("example", new Aws.ApiGatewayV2.ApiArgs
        {
            ProtocolType = "HTTP",
        });
    }

}
package main

import (
    "github.com/pulumi/pulumi-aws/sdk/v2/go/aws/apigatewayv2"
    "github.com/pulumi/pulumi/sdk/v2/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        _, err := apigatewayv2.NewApi(ctx, "example", &apigatewayv2.ApiArgs{
            ProtocolType: pulumi.String("HTTP"),
        })
        if err != nil {
            return err
        }
        return nil
    })
}
import pulumi
import pulumi_aws as aws

example = aws.apigatewayv2.Api("example", protocol_type="HTTP")
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const example = new aws.apigatewayv2.Api("example", {
    protocolType: "HTTP",
});

Create a Api Resource

new Api(name: string, args: ApiArgs, opts?: CustomResourceOptions);
def Api(resource_name, opts=None, api_key_selection_expression=None, cors_configuration=None, credentials_arn=None, description=None, name=None, protocol_type=None, route_key=None, route_selection_expression=None, tags=None, target=None, version=None, __props__=None);
func NewApi(ctx *Context, name string, args ApiArgs, opts ...ResourceOption) (*Api, error)
public Api(string name, ApiArgs args, CustomResourceOptions? opts = null)
name string
The unique name of the resource.
args ApiArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name str
The unique name of the resource.
opts ResourceOptions
A bag of options that control this resource's behavior.
ctx Context
Context object for the current deployment.
name string
The unique name of the resource.
args ApiArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name string
The unique name of the resource.
args ApiArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.

Api Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Programming Model docs.

Inputs

The Api resource accepts the following input properties:

ProtocolType string

The API protocol. Valid values: HTTP, WEBSOCKET.

ApiKeySelectionExpression string

An API key selection expression. Valid values: $context.authorizer.usageIdentifierKey, $request.header.x-api-key. Defaults to $request.header.x-api-key. Applicable for WebSocket APIs.

CorsConfiguration ApiCorsConfigurationArgs

The cross-origin resource sharing (CORS) configuration. Applicable for HTTP APIs.

CredentialsArn string

Part of quick create. Specifies any credentials required for the integration. Applicable for HTTP APIs.

Description string

The description of the API.

Name string

The name of the API.

RouteKey string

Part of quick create. Specifies any route key. Applicable for HTTP APIs.

RouteSelectionExpression string

The route selection expression for the API. Defaults to $request.method $request.path.

Tags Dictionary<string, string>

A map of tags to assign to the API.

Target string

Part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Applicable for HTTP APIs.

Version string

A version identifier for the API.

ProtocolType string

The API protocol. Valid values: HTTP, WEBSOCKET.

ApiKeySelectionExpression string

An API key selection expression. Valid values: $context.authorizer.usageIdentifierKey, $request.header.x-api-key. Defaults to $request.header.x-api-key. Applicable for WebSocket APIs.

CorsConfiguration ApiCorsConfiguration

The cross-origin resource sharing (CORS) configuration. Applicable for HTTP APIs.

CredentialsArn string

Part of quick create. Specifies any credentials required for the integration. Applicable for HTTP APIs.

Description string

The description of the API.

Name string

The name of the API.

RouteKey string

Part of quick create. Specifies any route key. Applicable for HTTP APIs.

RouteSelectionExpression string

The route selection expression for the API. Defaults to $request.method $request.path.

Tags map[string]string

A map of tags to assign to the API.

Target string

Part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Applicable for HTTP APIs.

Version string

A version identifier for the API.

protocolType string

The API protocol. Valid values: HTTP, WEBSOCKET.

apiKeySelectionExpression string

An API key selection expression. Valid values: $context.authorizer.usageIdentifierKey, $request.header.x-api-key. Defaults to $request.header.x-api-key. Applicable for WebSocket APIs.

corsConfiguration ApiCorsConfiguration

The cross-origin resource sharing (CORS) configuration. Applicable for HTTP APIs.

credentialsArn string

Part of quick create. Specifies any credentials required for the integration. Applicable for HTTP APIs.

description string

The description of the API.

name string

The name of the API.

routeKey string

Part of quick create. Specifies any route key. Applicable for HTTP APIs.

routeSelectionExpression string

The route selection expression for the API. Defaults to $request.method $request.path.

tags {[key: string]: string}

A map of tags to assign to the API.

target string

Part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Applicable for HTTP APIs.

version string

A version identifier for the API.

protocol_type str

The API protocol. Valid values: HTTP, WEBSOCKET.

api_key_selection_expression str

An API key selection expression. Valid values: $context.authorizer.usageIdentifierKey, $request.header.x-api-key. Defaults to $request.header.x-api-key. Applicable for WebSocket APIs.

cors_configuration Dict[ApiCorsConfiguration]

The cross-origin resource sharing (CORS) configuration. Applicable for HTTP APIs.

credentials_arn str

Part of quick create. Specifies any credentials required for the integration. Applicable for HTTP APIs.

description str

The description of the API.

name str

The name of the API.

route_key str

Part of quick create. Specifies any route key. Applicable for HTTP APIs.

route_selection_expression str

The route selection expression for the API. Defaults to $request.method $request.path.

tags Dict[str, str]

A map of tags to assign to the API.

target str

Part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Applicable for HTTP APIs.

version str

A version identifier for the API.

Outputs

All input properties are implicitly available as output properties. Additionally, the Api resource produces the following output properties:

ApiEndpoint string

The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com.

Arn string

The ARN of the API.

ExecutionArn string

The ARN prefix to be used in an aws.lambda.Permission’s source_arn attribute or in an aws.iam.Policy to authorize access to the @connections API. See the Amazon API Gateway Developer Guide for details.

Id string
The provider-assigned unique ID for this managed resource.
ApiEndpoint string

The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com.

Arn string

The ARN of the API.

ExecutionArn string

The ARN prefix to be used in an aws.lambda.Permission’s source_arn attribute or in an aws.iam.Policy to authorize access to the @connections API. See the Amazon API Gateway Developer Guide for details.

Id string
The provider-assigned unique ID for this managed resource.
apiEndpoint string

The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com.

arn string

The ARN of the API.

executionArn string

The ARN prefix to be used in an aws.lambda.Permission’s source_arn attribute or in an aws.iam.Policy to authorize access to the @connections API. See the Amazon API Gateway Developer Guide for details.

id string
The provider-assigned unique ID for this managed resource.
api_endpoint str

The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com.

arn str

The ARN of the API.

execution_arn str

The ARN prefix to be used in an aws.lambda.Permission’s source_arn attribute or in an aws.iam.Policy to authorize access to the @connections API. See the Amazon API Gateway Developer Guide for details.

id str
The provider-assigned unique ID for this managed resource.

Look up an Existing Api Resource

Get an existing Api resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

public static get(name: string, id: Input<ID>, state?: ApiState, opts?: CustomResourceOptions): Api
static get(resource_name, id, opts=None, api_endpoint=None, api_key_selection_expression=None, arn=None, cors_configuration=None, credentials_arn=None, description=None, execution_arn=None, name=None, protocol_type=None, route_key=None, route_selection_expression=None, tags=None, target=None, version=None, __props__=None);
func GetApi(ctx *Context, name string, id IDInput, state *ApiState, opts ...ResourceOption) (*Api, error)
public static Api Get(string name, Input<string> id, ApiState? state, CustomResourceOptions? opts = null)
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
resource_name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.

The following state arguments are supported:

ApiEndpoint string

The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com.

ApiKeySelectionExpression string

An API key selection expression. Valid values: $context.authorizer.usageIdentifierKey, $request.header.x-api-key. Defaults to $request.header.x-api-key. Applicable for WebSocket APIs.

Arn string

The ARN of the API.

CorsConfiguration ApiCorsConfigurationArgs

The cross-origin resource sharing (CORS) configuration. Applicable for HTTP APIs.

CredentialsArn string

Part of quick create. Specifies any credentials required for the integration. Applicable for HTTP APIs.

Description string

The description of the API.

ExecutionArn string

The ARN prefix to be used in an aws.lambda.Permission’s source_arn attribute or in an aws.iam.Policy to authorize access to the @connections API. See the Amazon API Gateway Developer Guide for details.

Name string

The name of the API.

ProtocolType string

The API protocol. Valid values: HTTP, WEBSOCKET.

RouteKey string

Part of quick create. Specifies any route key. Applicable for HTTP APIs.

RouteSelectionExpression string

The route selection expression for the API. Defaults to $request.method $request.path.

Tags Dictionary<string, string>

A map of tags to assign to the API.

Target string

Part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Applicable for HTTP APIs.

Version string

A version identifier for the API.

ApiEndpoint string

The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com.

ApiKeySelectionExpression string

An API key selection expression. Valid values: $context.authorizer.usageIdentifierKey, $request.header.x-api-key. Defaults to $request.header.x-api-key. Applicable for WebSocket APIs.

Arn string

The ARN of the API.

CorsConfiguration ApiCorsConfiguration

The cross-origin resource sharing (CORS) configuration. Applicable for HTTP APIs.

CredentialsArn string

Part of quick create. Specifies any credentials required for the integration. Applicable for HTTP APIs.

Description string

The description of the API.

ExecutionArn string

The ARN prefix to be used in an aws.lambda.Permission’s source_arn attribute or in an aws.iam.Policy to authorize access to the @connections API. See the Amazon API Gateway Developer Guide for details.

Name string

The name of the API.

ProtocolType string

The API protocol. Valid values: HTTP, WEBSOCKET.

RouteKey string

Part of quick create. Specifies any route key. Applicable for HTTP APIs.

RouteSelectionExpression string

The route selection expression for the API. Defaults to $request.method $request.path.

Tags map[string]string

A map of tags to assign to the API.

Target string

Part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Applicable for HTTP APIs.

Version string

A version identifier for the API.

apiEndpoint string

The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com.

apiKeySelectionExpression string

An API key selection expression. Valid values: $context.authorizer.usageIdentifierKey, $request.header.x-api-key. Defaults to $request.header.x-api-key. Applicable for WebSocket APIs.

arn string

The ARN of the API.

corsConfiguration ApiCorsConfiguration

The cross-origin resource sharing (CORS) configuration. Applicable for HTTP APIs.

credentialsArn string

Part of quick create. Specifies any credentials required for the integration. Applicable for HTTP APIs.

description string

The description of the API.

executionArn string

The ARN prefix to be used in an aws.lambda.Permission’s source_arn attribute or in an aws.iam.Policy to authorize access to the @connections API. See the Amazon API Gateway Developer Guide for details.

name string

The name of the API.

protocolType string

The API protocol. Valid values: HTTP, WEBSOCKET.

routeKey string

Part of quick create. Specifies any route key. Applicable for HTTP APIs.

routeSelectionExpression string

The route selection expression for the API. Defaults to $request.method $request.path.

tags {[key: string]: string}

A map of tags to assign to the API.

target string

Part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Applicable for HTTP APIs.

version string

A version identifier for the API.

api_endpoint str

The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com.

api_key_selection_expression str

An API key selection expression. Valid values: $context.authorizer.usageIdentifierKey, $request.header.x-api-key. Defaults to $request.header.x-api-key. Applicable for WebSocket APIs.

arn str

The ARN of the API.

cors_configuration Dict[ApiCorsConfiguration]

The cross-origin resource sharing (CORS) configuration. Applicable for HTTP APIs.

credentials_arn str

Part of quick create. Specifies any credentials required for the integration. Applicable for HTTP APIs.

description str

The description of the API.

execution_arn str

The ARN prefix to be used in an aws.lambda.Permission’s source_arn attribute or in an aws.iam.Policy to authorize access to the @connections API. See the Amazon API Gateway Developer Guide for details.

name str

The name of the API.

protocol_type str

The API protocol. Valid values: HTTP, WEBSOCKET.

route_key str

Part of quick create. Specifies any route key. Applicable for HTTP APIs.

route_selection_expression str

The route selection expression for the API. Defaults to $request.method $request.path.

tags Dict[str, str]

A map of tags to assign to the API.

target str

Part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Applicable for HTTP APIs.

version str

A version identifier for the API.

Supporting Types

ApiCorsConfiguration

See the input and output API doc for this type.

See the input and output API doc for this type.

See the input and output API doc for this type.

AllowCredentials bool

Whether credentials are included in the CORS request.

AllowHeaders List<string>

The set of allowed HTTP headers.

AllowMethods List<string>

The set of allowed HTTP methods.

AllowOrigins List<string>

The set of allowed origins.

ExposeHeaders List<string>

The set of exposed HTTP headers.

MaxAge int

The number of seconds that the browser should cache preflight request results.

AllowCredentials bool

Whether credentials are included in the CORS request.

AllowHeaders []string

The set of allowed HTTP headers.

AllowMethods []string

The set of allowed HTTP methods.

AllowOrigins []string

The set of allowed origins.

ExposeHeaders []string

The set of exposed HTTP headers.

MaxAge int

The number of seconds that the browser should cache preflight request results.

allowCredentials boolean

Whether credentials are included in the CORS request.

allowHeaders string[]

The set of allowed HTTP headers.

allowMethods string[]

The set of allowed HTTP methods.

allowOrigins string[]

The set of allowed origins.

exposeHeaders string[]

The set of exposed HTTP headers.

maxAge number

The number of seconds that the browser should cache preflight request results.

allowCredentials bool

Whether credentials are included in the CORS request.

allowHeaders List[str]

The set of allowed HTTP headers.

allowMethods List[str]

The set of allowed HTTP methods.

allowOrigins List[str]

The set of allowed origins.

exposeHeaders List[str]

The set of exposed HTTP headers.

maxAge float

The number of seconds that the browser should cache preflight request results.

Package Details

Repository
https://github.com/pulumi/pulumi-aws
License
Apache-2.0
Notes
This Pulumi package is based on the aws Terraform Provider.