

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# CloudFormation 指定时 AWS::Serverless::WebSocketApi 生成的资源
<a name="sam-specification-generated-resources-websocketapi"></a>

指定`AWS::Serverless::WebSocketApi`后， AWS Serverless Application Model (AWS SAM) 会生成`AWS::ApiGatewayV2::Api`基础 CloudFormation 资源。此外，它还会始终生成`AWS::ApiGatewayV2::Stage`资源，并为`Routes`属性中定义的每条路径 AWS SAM 生成`AWS::ApiGatewayV2::Route``AWS::ApiGatewayV2::Integration`、和`AWS::Lambda::Permission`资源。

**`AWS::ApiGatewayV2::Api`**  
*`LogicalId`: *`{{<websocketapi‑LogicalId>}}`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::ApiGatewayV2::Stage`**  
*`LogicalId`: *`{{<websocketapi‑LogicalId>}}{{<stage‑name>}}Stage`  
`{{<stage‑name>}}` 是 `StageName` 属性将被设置为的字符串。如果`StageName`未指定，则默认值为`default`。例如，您将 `StageName` 设置为 `prod`，`LogicalId` 是 `{{MyWebSocketApi}}prodStage`。  
*可引用属性：*`{{<websocketapi‑LogicalId>}}.Stage`

**`AWS::ApiGatewayV2::Route`**  
*`LogicalId`: *`{{<websocketapi‑LogicalId>}}{{<normalized‑route‑key>}}Route`  
`{{<normalized‑route‑key>}}`是去掉特殊字符的路径密钥。例如，对于路径密钥`$connect`，`LogicalId`为`{{MyWebSocketApi}}connectRoute`。  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::ApiGatewayV2::Integration`**  
*`LogicalId`: *`{{<websocketapi‑LogicalId>}}{{<normalized‑route‑key>}}Integration`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::Lambda::Permission`**  
*`LogicalId`: *`{{<websocketapi‑LogicalId>}}{{<normalized‑route‑key>}}Permission`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

除了这些 CloudFormation 资源之外，如果`AWS::Serverless::WebSocketApi`指定了这些资源， AWS SAM 还会为以下场景生成 CloudFormation 资源：

**Topics**
+ [指定身份验证属性时 AuthType 设置为 “自定义”](#sam-specification-generated-resources-websocketapi-auth)
+ [DomainName 属性已指定](#sam-specification-generated-resources-websocketapi-domain-name)
+ [BasePath 属性已指定](#sam-specification-generated-resources-websocketapi-basepath)
+ [指定了 Route53 属性](#sam-specification-generated-resources-websocketapi-route53)

## 指定身份验证属性时 AuthType 设置为 “自定义”
<a name="sam-specification-generated-resources-websocketapi-auth"></a>

将的`Auth`属性指定`AWS::Serverless::WebSocketApi``AuthType`为时`CUSTOM`，将 AWS SAM 生成`AWS::ApiGatewayV2::Authorizer` CloudFormation 资源。如果未指定，`InvokeRole`则 AWS SAM 还会生成一个`AWS::Lambda::Permission`资源以允许 API Gateway 调用授权器函数。

**`AWS::ApiGatewayV2::Authorizer`**  
*`LogicalId`: *`{{<websocketapi‑LogicalId>}}Authorizer`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

**`AWS::Lambda::Permission`（`InvokeRole`未指定时）**  
*`LogicalId`: *`{{<websocketapi‑LogicalId>}}AuthorizerPermission`  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

## DomainName 属性已指定
<a name="sam-specification-generated-resources-websocketapi-domain-name"></a>

指定`DomainName`属性的`Domain`属性后，将 AWS SAM 生成`AWS::ApiGatewayV2::DomainName` CloudFormation 资源。`AWS::Serverless::WebSocketApi`

**`AWS::ApiGatewayV2::DomainName`**  
*`LogicalId`: *`ApiGatewayDomainNameV2{{<sha>}}`  
`{{<sha>}}` 是在创建堆栈时生成的唯一哈希值。例如：`ApiGatewayDomainNameV2{{926eeb5ff1}}`。  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

## BasePath 属性已指定
<a name="sam-specification-generated-resources-websocketapi-basepath"></a>

指定属`BasePath`性的属性后， AWS SAM 会生成`AWS::ApiGatewayV2::ApiMapping` CloudFormation 资源，每个指定的基本路径都生成一个资源。`Domain` `AWS::Serverless::WebSocketApi`

**`AWS::ApiGatewayV2::ApiMapping`**  
*`LogicalId`: *`{{<websocketapi‑LogicalId>}}{{<basepath>}}ApiMapping`  
`{{<basepath>}}`是基本路径值。例如，如果您指定`v1`为基本路径，则`LogicalId`为`{{MyWebSocketApi}}v1ApiMapping`。  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）

## 指定了 Route53 属性
<a name="sam-specification-generated-resources-websocketapi-route53"></a>

当指定了`Domain`属性的属性`AWS::Serverless::WebSocketApi`时， AWS SAM 会生成一个`AWS::Route53::RecordSetGroup` CloudFormation 资源。`Route53`

**`AWS::Route53::RecordSetGroup`**  
*`LogicalId`: *`RecordSetGroup{{<sha>}}`  
`{{<sha>}}` 是在创建堆栈时生成的唯一哈希值。例如：`RecordSetGroup{{926eeb5ff1}}`。  
*可引用的属性：*N/A（必须使用`LogicalId`来引用此 CloudFormation 资源）