

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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**
+ [Auth 屬性指定為 AuthType 設定為 CUSTOM](#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)

## Auth 屬性指定為 AuthType 設定為 CUSTOM
<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>

`AWS::Serverless::WebSocketApi` 指定 `DomainName`的 `Domain` 屬性時， AWS SAM 會產生 `AWS::ApiGatewayV2::DomainName` CloudFormation 資源。

**`AWS::ApiGatewayV2::DomainName`**  
*`LogicalId`: *`ApiGatewayDomainNameV2{{<sha>}}`  
`{{<sha>}}` 是建立堆疊時產生的唯一雜湊值。例如：`ApiGatewayDomainNameV2{{926eeb5ff1}}`。  
*可參考屬性：*N/A （您必須使用 `LogicalId`來參考此 CloudFormation 資源）

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

`AWS::Serverless::WebSocketApi` 指定 `BasePath`的 `Domain` 屬性時， AWS SAM 會產生 `AWS::ApiGatewayV2::ApiMapping` CloudFormation 資源，每個指定的基礎路徑各一個。

**`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` 指定 屬性的 `Route53` 屬性時， AWS SAM 會產生 `AWS::Route53::RecordSetGroup` CloudFormation 資源。

**`AWS::Route53::RecordSetGroup`**  
*`LogicalId`: *`RecordSetGroup{{<sha>}}`  
`{{<sha>}}` 是建立堆疊時產生的唯一雜湊值。例如：`RecordSetGroup{{926eeb5ff1}}`。  
*可參考屬性：*N/A （您必須使用 `LogicalId`來參考此 CloudFormation 資源）