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

AWS::ApiGateway::RestApi

AWS::ApiGateway::RestApi 资源创建一个 REST API。有关更多信息,请参阅 Amazon API Gateway REST API 参考中的 restapi:create

注意

2016 年 1 月 1 日,Swagger 规范提供给 OpenAPI 计划,作为 OpenAPI 规范的基础。

语法

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

JSON

{ "Type" : "AWS::ApiGateway::RestApi", "Properties" : { "ApiKeySourceType" : String, "BinaryMediaTypes" : [ String, ... ], "Body" : Json, "BodyS3Location" : S3Location, "CloneFrom" : String, "Description" : String, "EndpointConfiguration" : EndpointConfiguration, "FailOnWarnings" : Boolean, "MinimumCompressionSize" : Integer, "Name" : String, "Parameters" : {Key : Value, ...}, "Policy" : Json, "Tags" : [ Tag, ... ] } }

YAML

Type: AWS::ApiGateway::RestApi Properties: ApiKeySourceType: String BinaryMediaTypes: - String Body: Json BodyS3Location: S3Location CloneFrom: String Description: String EndpointConfiguration: EndpointConfiguration FailOnWarnings: Boolean MinimumCompressionSize: Integer Name: String Parameters: Key : Value Policy: Json Tags: - Tag

属性

ApiKeySourceType

用于根据使用计划对请求进行计量的 API 键的源。有效值为:

  • HEADER 用于从请求的 X-API-Key 标头读取 API 键。

  • AUTHORIZER,用于从 Lambda 授权方的 UsageIdentifierKey 读取 API 键。

必需:否

类型:字符串

Update requires: No interruption

BinaryMediaTypes

RestApi 资源支持的二进制媒体类型 (例如 image/pngapplication/octet-stream) 的列表。默认情况下,RestApi 只支持 UTF-8 编码的文本负载。不允许重复项。有关更多信息,请参阅 API Gateway 开发人员指南中的在 API Gateway 中启用二进制有效负载支持

必需:否

类型:字符串列表

Update requires: No interruption

Body

定义一组 JSON 格式的 RESTful API 的 OpenAPI 规范。对于 YAML 模板,您还可以提供 YAML 格式的规范。

必需:否

类型:Json

Update requires: No interruption

BodyS3Location

指向 OpenAPI 文件(此文件以 JSON 或 YAML 格式定义一组 RESTful API)的 Amazon Simple Storage Service (Amazon S3) 位置。

必需:否

类型S3Location

Update requires: No interruption

CloneFrom

要克隆的 RestApi 资源的 ID。

必需:否

类型:字符串

Update requires: No interruption

Description

RestApi 资源的描述。

必需:否

类型:字符串

Update requires: No interruption

EndpointConfiguration

API 的终端节点类型的列表。在创建 API 时使用该属性。在导入现有 API 时,使用 Parameters 属性指定终端节点配置类型。

必需:否

类型EndpointConfiguration

Update requires: No interruption

FailOnWarnings

指示是否在 API Gateway 创建 RestApi 资源时出现警告的情况下回滚资源。

必需:否

类型:布尔值

Update requires: No interruption

MinimumCompressionSize

一个可为空的整数,用于对 API 启用压缩 (使用介于 0 和 10485760 (10M) 字节之间的非负整数,包含端值) 或禁用压缩 (使用空值)。在启用压缩时,如果负载大小小于该值,则不会对负载应用压缩或解压缩。将它设置为零允许对任何负载大小进行压缩。

必需:否

类型:整数

Update requires: No interruption

Name

RestApi 资源的名称。

必需:条件

类型:字符串

Update requires: No interruption

Parameters

自定义请求的标头参数。

必需:否

类型:字符串的映射

Update requires: No interruption

Policy

一个 JSON 格式的策略文档,其中包含 RestApi 资源的权限。要设置策略的 ARN,请使用 !Join 内部函数("" 作为分隔符)以及值 "execute-api:/""*"

必需:否

类型:Json

Update requires: No interruption

Tags

与 API 关联的任意标签(键值对)的数组。

必需:否

类型Tag 的列表

Update requires: No interruption

返回值

Ref

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

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

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

RootResourceId

RestApi 资源的根资源 ID,例如 a0bc123d4e

示例

基于 OpenAPI 规范

以下示例根据 OpenAPI 规范创建一个 API Gateway RestApi 资源。

JSON

{ "MyRestApi": { "Type": "AWS::ApiGateway::RestApi", "Properties": { "Body": { "OpenAPI specification": null }, "Description": "A test API", "Name": "MyRestAPI" } } }

YAML

MyRestApi: Type: 'AWS::ApiGateway::RestApi' Properties: Body: OpenAPI specification: null Description: A test API Name: MyRestAPI

利用终端节点类型

以下示例使用终端节点类型创建一个 API Gateway RestApi 资源。

JSON

{ "Parameters": { "apiName": { "Type": "String" }, "type": { "Type": "String" } }, "Resources": { "MyRestApi": { "Type": "AWS::ApiGateway::RestApi", "Properties": { "EndpointConfiguration": { "Types": [ { "Ref": "type" } ] }, "Name": { "Ref": "apiName" } } } } }

YAML

Parameters: apiName: Type: String type: Type: String Resources: MyRestApi: Type: AWS::ApiGateway::RestApi Properties: EndpointConfiguration: Types: - !Ref type Name: !Ref apiName

利用 REGIONAL 终端节点类型

以下示例使用终端节点类型 REGIONAL 导入 API Gateway RestApi 资源。

JSON

{ "Resources": { "RestApi": { "Type": "AWS::ApiGateway::RestApi", "Properties": { "Body": { "swagger": 2, "info": { "version": "0.0.1", "title": "test" }, "basePath": "/pete", "schemes": [ "https" ], "definitions": { "Empty": { "type": "object" } } }, "Name": "myApi", "Parameters": { "endpointConfigurationTypes": "REGIONAL" } } } } }

YAML

Resources : RestApi : Type : AWS::ApiGateway::RestApi Properties : Body : swagger : 2.0 info : version : 0.0.1 title : test basePath : /pete schemes : - https definitions: Empty : type : object Name : myApi Parameters: endpointConfigurationTypes: REGIONAL

利用 ApiKeySourceType

以下示例使用 ApiKeySourceType、BinaryMediaTypes 和 MinimumCompressionSize 创建 API Gateway RestApi 资源。

JSON

{ "Parameters": { "apiKeySourceType": { "Type": "String" }, "apiName": { "Type": "String" }, "binaryMediaType1": { "Type": "String" }, "binaryMediaType2": { "Type": "String" }, "minimumCompressionSize": { "Type": "String" } }, "Resources": { "MyRestApi": { "Type": "AWS::ApiGateway::RestApi", "Properties": { "ApiKeySourceType": { "Ref": "apiKeySourceType" }, "BinaryMediaTypes": [ { "Ref": "binaryMediaType1" }, { "Ref": "binaryMediaType2" } ], "MinimumCompressionSize": { "Ref": "minimumCompressionSize" }, "Name": { "Ref": "apiName" } } } } }

YAML

Parameters: apiKeySourceType: Type: String apiName: Type: String binaryMediaType1: Type: String binaryMediaType2: Type: String minimumCompressionSize: Type: String Resources: MyRestApi: Type: AWS::ApiGateway::RestApi Properties: ApiKeySourceType: !Ref apiKeySourceType BinaryMediaTypes: - !Ref binaryMediaType1 - !Ref binaryMediaType2 MinimumCompressionSize: !Ref minimumCompressionSize Name: !Ref apiName

另请参阅