AWS::ApiGatewayV2::Api - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::ApiGatewayV2::Api

AWS::ApiGatewayV2::Api 资源创建一个 API。支持 WebSocket API 和 HTTP API。有关 WebSocket API 的更多信息,请参阅 API Gateway 开发人员指南中的关于 API Gateway 中的 WebSocket API。有关 HTTP API 的更多信息,请参阅 API Gateway 开发人员指南 中的 HTTP API

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::ApiGatewayV2::Api", "Properties" : { "ApiKeySelectionExpression" : String, "BasePath" : String, "Body" : Json, "BodyS3Location" : BodyS3Location, "CorsConfiguration" : Cors, "CredentialsArn" : String, "Description" : String, "DisableSchemaValidation" : Boolean, "FailOnWarnings" : Boolean, "Name" : String, "ProtocolType" : String, "RouteKey" : String, "RouteSelectionExpression" : String, "Tags" : Json, "Target" : String, "Version" : String } }

YAML

Type: AWS::ApiGatewayV2::Api Properties: ApiKeySelectionExpression: String BasePath: String Body: Json BodyS3Location: BodyS3Location CorsConfiguration: Cors CredentialsArn: String Description: String DisableSchemaValidation: Boolean FailOnWarnings: Boolean Name: String ProtocolType: String RouteKey: String RouteSelectionExpression: String Tags: Json Target: String Version: String

属性

ApiKeySelectionExpression

一个 API 键选择表达式。仅 WebSocket API 支持。请参阅 API 键选择表达式

必需:否

类型:字符串

Update requires: No interruption

BasePath

指定如何在导入过程中解释 API 的基本路径。有效值包括 ignoreprependsplit。默认值为 ignore。要了解更多信息,请参阅设置 OpenAPI basePath 属性。仅 HTTP API 支持。

必需:否

类型:字符串

Update requires: No interruption

Body

OpenAPI 定义。仅 HTTP API 支持。要导入 HTTP API,您必须指定 BodyBodyS3Location

必需:条件

类型:Json

Update requires: No interruption

BodyS3Location

OpenAPI 定义的 S3 位置。仅 HTTP API 支持。要导入 HTTP API,您必须指定 BodyBodyS3Location

必需:条件

类型BodyS3Location

Update requires: No interruption

CorsConfiguration

CORS 配置。仅 HTTP API 支持。有关更多信息,请参阅配置 CORS

必需:否

类型Cors

Update requires: No interruption

CredentialsArn

该属性是快速创建的一部分。它指定集成所需的凭证(如果有)。对于 Lambda 集成,可以使用三个选项。要指定 API Gateway 代入的 IAM 角色,请使用角色的 Amazon 资源名称 (ARN)。要让调用方的身份通过请求传递,请指定 arn:aws:iam::*:user/*。要在支持的 AWS 服务上使用基于资源的权限,请指定 null。目前,该属性不用于 HTTP 集成。仅 HTTP API 支持。

必需:否

类型:字符串

Update requires: No interruption

Description

API 的描述。

必需:否

类型:字符串

Update requires: No interruption

DisableSchemaValidation

在创建部署时避免验证模型。仅 WebSocket API 支持。

必需:否

类型:布尔值

Update requires: No interruption

FailOnWarnings

指定在遇到警告时是否回滚 API 创建。默认情况下,如果遇到警告,API 创建将继续。

必需:否

类型:布尔值

Update requires: No interruption

Name

API 的名称。除非您为 BodyS3BodyLocation 指定 OpenAPI 定义,否则,它是必需的。

必需:条件

类型:字符串

Update requires: No interruption

ProtocolType

API 协议。有效值为 WEBSOCKETHTTP。除非您为 BodyS3BodyLocation 指定 OpenAPI 定义,否则,它是必需的。

必需:条件

类型:字符串

Update requires: Replacement

RouteKey

该属性是快速创建的一部分。如果未指定 routeKey,则会创建默认路由 $default。对于特定阶段,$default 路由作为向 API 发出的任何请求的“捕获全部”路由。无法修改 $default 路由键。您可以在创建 API 后添加路由,并且您可以更新其他路由的路由键。仅 HTTP API 支持。

必需:否

类型:字符串

Update requires: No interruption

RouteSelectionExpression

API 的路由选择表达式。对于 HTTP API,routeSelectionExpression 必须为 ${request.method} ${request.path}。如果未提供,则它是 HTTP API 的默认设置。对于 WebSocket API,该属性是必需的。

必需:条件

类型:字符串

Update requires: No interruption

Tags

标签的集合。每个标签元素都与一个给定资源关联。

必需:否

类型:Json

Update requires: No interruption

Target

该属性是快速创建的一部分。快速创建生成一个 API,它具有集成、默认“捕获全部”路由以及配置为自动部署更改的默认阶段。对于 HTTP 集成,请指定完全限定的 URL。对于 Lambda 集成,请指定函数 ARN。集成类型分别为 HTTP_PROXY 或 AWS_PROXY。仅 HTTP API 支持。

必需:否

类型:字符串

Update requires: No interruption

Version

API 的版本标识符。

必需:否

类型:字符串

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 API ID,例如 a1bcdef2gh

For more information about using the Ref function, see Ref.

示例

API 创建示例

以下示例创建一个名为 MyApi 的 WebSocket Api 资源。

JSON

{ "MyApi": { "Type": "AWS::ApiGatewayV2::Api", "Properties": { "Name": "MyApi", "ProtocolType": "WEBSOCKET", "RouteSelectionExpression": "$request.body.action", "ApiKeySelectionExpression": "$request.header.x-api-key" } } }

YAML

MyApi: Type: 'AWS::ApiGatewayV2::Api' Properties: Name: MyApi ProtocolType: WEBSOCKET RouteSelectionExpression: $request.body.action ApiKeySelectionExpression: $request.header.x-api-key

快速创建 HTTP API

以下示例使用快速创建启动一个名为 HttpApi 的 HTTP API Api 资源,该资源与一个 Lambda 函数集成在一起。快速创建生成一个 HTTP API,它具有集成、默认“捕获全部”路由以及配置为自动部署更改的默认阶段。

注意

要调用 Lambda 集成,API Gateway 必须具有所需的权限。您可以使用基于资源的策略或 IAM 角色,为 API Gateway 授予权限以调用 Lambda 函数。要了解更多信息,请参阅 AWS Lambda 开发人员指南 中的 AWS Lambda 权限

JSON

"HttpApi": { "Type": "AWS::ApiGatewayV2::Api", "Properties": { "Name": "Lambda Proxy", "Description": "Lambda proxy using quick create", "ProtocolType": "HTTP", "Target": "arn:aws:apigateway:{region}:lambda:path/2015-03-31/functions/arn:aws:lambda:{region}:{account-id}:function:{function-name}/invocations" } }

YAML

HttpApi: Type: AWS::ApiGatewayV2::Api Properties: Name: Lambda Proxy Description: Lambda proxy using quick create ProtocolType: HTTP Target: arn:aws:apigateway:{region}:lambda:path/2015-03-31/functions/arn:aws:lambda:{region}:{account-id}:function:{function-name}/invocations

另请参阅

  • Amazon API Gateway 版本 2 API 参考中的 CreateApi