

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# AWS::Serverless::WebSocketApi
<a name="sam-resource-websocketapi"></a>

Crea un'API Amazon WebSocket API Gateway, che consente di creare applicazioni di comunicazione interattive bidirezionali. WebSocket APIs consente al server di inviare messaggi ai client senza che il client debba richiederli. Per ulteriori informazioni, consulta [Working with WebSocket APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html) nella *API Gateway Developer Guide*.

Ti consigliamo di utilizzare CloudFormation hook o policy IAM per verificare che alle risorse API Gateway siano associate autorizzazioni per controllarne l'accesso.

Per ulteriori informazioni sull'uso degli CloudFormation hook, consulta [Registrazione degli hook](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/registering-hook-python.html) nella guida per l'*utente della CloudFormation CLI* e nel repository. [apigw-enforce-authorizer](https://github.com/aws-cloudformation/aws-cloudformation-samples/tree/main/hooks/python-hooks/apigw-enforce-authorizer/) GitHub 

Per ulteriori informazioni sull'utilizzo delle policy IAM, consulta [Require che le route API abbiano l'autorizzazione](https://docs.aws.amazon.com/apigateway/latest/developerguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-require-authorization) nella *API Gateway Developer Guide*.

**Nota**  
Quando esegui la distribuzione a AWS CloudFormation, AWS SAM trasforma le tue AWS SAM risorse in CloudFormation risorse. Per ulteriori informazioni, consulta [CloudFormation Risorse generate per AWS SAM](sam-specification-generated-resources.md).

## Sintassi
<a name="sam-resource-websocketapi-syntax"></a>

Per dichiarare questa entità nel tuo modello AWS Serverless Application Model (AWS SAM), usa la seguente sintassi.

### YAML
<a name="sam-resource-websocketapi-syntax.yaml"></a>

```
Type: AWS::Serverless::WebSocketApi
Properties:
  [ApiKeySelectionExpression](#sam-websocketapi-apikeyselectionexpression): {{String}}
  [AccessLogSettings](#sam-websocketapi-accesslogsettings): {{[AccessLogSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-accesslogsettings)}}
  [Auth](#sam-websocketapi-auth): {{WebSocketApiAuth}}
  [DefaultRouteSettings](#sam-websocketapi-defaultroutesettings): {{[RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings)}}
  [Description](#sam-websocketapi-description): {{String}}
  [DisableExecuteApiEndpoint](#sam-websocketapi-disableexecuteapiendpoint): {{Boolean}}
  [DisableSchemaValidation](#sam-websocketapi-disableschemavalidation): {{Boolean}}
  [Domain](#sam-websocketapi-domain): {{WebSocketApiDomainConfiguration}}
  [IpAddressType](#sam-websocketapi-ipaddresstype): {{String}}
  [Name](#sam-websocketapi-name): {{String}}
  [PropagateTags](#sam-websocketapi-propagatetags): {{Boolean}}
  [Routes](#sam-websocketapi-routes): {{RouteConfiguration}}
  [RouteSelectionExpression](#sam-websocketapi-routeselectionexpression): {{String}}
  [RouteSettings](#sam-websocketapi-routesettings): {{[RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings)}}
  [StageName](#sam-websocketapi-stagename): {{String}}
  [StageVariables](#sam-websocketapi-stagevariables): {{[Json](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-stagevariables)}}
  [Tags](#sam-websocketapi-tags): {{Map}}
```

## Properties
<a name="sam-resource-websocketapi-properties"></a>

 `ApiKeySelectionExpression`   <a name="sam-websocketapi-apikeyselectionexpression"></a>
Un'espressione di selezione della chiave API. Per ulteriori informazioni, consulta [API Key Selection Expressions](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions) nella *API Gateway Developer Guide*.  
▬*Tipo:* stringa  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[ApiKeySelectionExpression](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-apikeyselectionexpression)` proprietà di una `AWS::ApiGatewayV2::Api` risorsa.

 `AccessLogSettings`   <a name="sam-websocketapi-accesslogsettings"></a>
Le impostazioni per la registrazione degli accessi in una fase.  
*Tipo:* [AccessLogSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-accesslogsettings)  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[AccessLogSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-accesslogsettings)` proprietà di una `AWS::ApiGatewayV2::Stage` risorsa.

 `Auth`   <a name="sam-websocketapi-auth"></a>
Configura l'autorizzazione per il controllo dell'accesso alla tua WebSocket API. L'autorizzazione viene applicata al `$connect` percorso.  
Per ulteriori informazioni, consulta [Controlling access to WebSocket APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-control-access.html) nella *API Gateway Developer Guide*.  
*Tipo:* [WebSocketApiAuth](sam-property-websocketapi-websocketapiauth.md)  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

 `DefaultRouteSettings`   <a name="sam-websocketapi-defaultroutesettings"></a>
Le impostazioni di routing predefinite per questa WebSocket API. Queste impostazioni si applicano a tutti i percorsi a meno che non vengano sovrascritte dalla `RouteSettings` proprietà per determinati percorsi.  
*Tipo:* [RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings)  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[DefaultRouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-defaultroutesettings)` proprietà di una `AWS::ApiGatewayV2::Stage` risorsa.

 `Description`   <a name="sam-websocketapi-description"></a>
Una descrizione dell' WebSocket API.  
▬*Tipo:* stringa  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-description)` proprietà di una `AWS::ApiGatewayV2::Api` risorsa.

 `DisableExecuteApiEndpoint`   <a name="sam-websocketapi-disableexecuteapiendpoint"></a>
Specifica se i client possono richiamare l'API utilizzando l'endpoint `execute-api` predefinito. Per richiedere che i client utilizzino un nome di dominio personalizzato per richiamare l'API, disabilitare l'endpoint predefinito.  
*Tipo*: Booleano  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[DisableExecuteApiEndpoint](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-disableexecuteapiendpoint)` proprietà di una `AWS::ApiGatewayV2::Api` risorsa.

 `DisableSchemaValidation`   <a name="sam-websocketapi-disableschemavalidation"></a>
Esclude la convalida dei modelli durante la creazione di una distribuzione.  
*Tipo*: Booleano  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[DisableSchemaValidation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-disableschemavalidation)` proprietà di una `AWS::ApiGatewayV2::Api` risorsa.

 `Domain`   <a name="sam-websocketapi-domain"></a>
Configura un dominio personalizzato per questa WebSocket API.  
WebSocket APIs non supportano l'autenticazione TLS reciproca (MTLS). Se si specifica `MutualTlsAuthentication` o`OwnershipVerificationCertificateArn`, AWS SAM verrà restituito un errore.
*Tipo:* [WebSocketApiDomainConfiguration](sam-property-websocketapi-websocketapidomainconfiguration.md)  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

 `IpAddressType`   <a name="sam-websocketapi-ipaddresstype"></a>
Il tipo di indirizzo IP per l'API. I valori validi sono IPv4 solo `ipv4` `dualstack` per IPv4 e IPv6.  
▬*Tipo:* stringa  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[IpAddressType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-ipaddresstype)` proprietà di una `AWS::ApiGatewayV2::Api` risorsa.

 `Name`   <a name="sam-websocketapi-name"></a>
Un nome per l' WebSocket API. Se non specifichi un nome, AWS SAM genera un nome per te.  
▬*Tipo:* stringa  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-name)` proprietà di una `AWS::ApiGatewayV2::Api` risorsa.

 `PropagateTags`   <a name="sam-websocketapi-propagatetags"></a>
If`true`, AWS SAM aggiunge la `Tags` proprietà alle `AWS::ApiGatewayV2::DomainName` risorse `AWS::ApiGatewayV2::Stage` e alle risorse che AWS SAM genera.  
*Tipo*: Booleano  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

 `Routes`   <a name="sam-websocketapi-routes"></a>
Le configurazioni delle rotte per questa WebSocket API. Le route definiscono il modo in cui i messaggi vengono instradati alle funzioni Lambda. Ogni percorso è composto da una chiave di percorso e da una funzione Lambda ARN.  
WebSocket APIs supporta tre percorsi predefiniti:`$connect`,, e`$disconnect`. `$default` Puoi anche definire percorsi personalizzati.  
*Tipo:* [RouteConfiguration](sam-property-websocketapi-routeconfiguration.md)  
*Obbligatorio:* sì  
*CloudFormation compatibilità*: Questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

 `RouteSelectionExpression`   <a name="sam-websocketapi-routeselectionexpression"></a>
L'espressione di selezione del percorso per l' WebSocket API. Per ulteriori informazioni, consulta [Route Selection Expressions](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-route-selection-expressions) nella *Guida per sviluppatori di API Gateway*.  
Un valore comune è`$request.body.action`, che indirizza i messaggi in base a un `action` campo nel corpo del messaggio.  
▬*Tipo:* stringa  
*Obbligatorio:* sì  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[RouteSelectionExpression](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-api.html#cfn-apigatewayv2-api-routeselectionexpression)` proprietà di una `AWS::ApiGatewayV2::Api` risorsa.

 `RouteSettings`   <a name="sam-websocketapi-routesettings"></a>
Le impostazioni del percorso per questa WebSocket API. Queste impostazioni hanno la precedenza su quelle `DefaultRouteSettings` relative a percorsi specifici.  
*Tipo:* [RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings)  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[RouteSettings](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-routesettings)` proprietà di una `AWS::ApiGatewayV2::Stage` risorsa.

 `StageName`   <a name="sam-websocketapi-stagename"></a>
Il nome della fase API. Se non specificate un nome, AWS SAM lo usa `default` come nome dello stage.  
▬*Tipo:* stringa  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[StageName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-stagename)` proprietà di una `AWS::ApiGatewayV2::Stage` risorsa.

 `StageVariables`   <a name="sam-websocketapi-stagevariables"></a>
Mappa che definisce le variabili delle fasi. I nomi delle variabili possono contenere caratteri alfanumerici e caratteri di sottolineatura e i valori devono corrispondere. `[A-Za-z0-9-._~:/?#&=,]+`  
*Type*: [Json](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-stagevariables)  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà viene passata direttamente alla `[StageVariables](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-stage.html#cfn-apigatewayv2-stage-stagevariables)` proprietà di una risorsa. `AWS::ApiGatewayV2::Stage`

 `Tags`   <a name="sam-websocketapi-tags"></a>
Una mappa (da stringa a stringa) che specifica i tag da aggiungere a questa WebSocket API. Per informazioni dettagliate sulle chiavi e i valori validi per i tag, consulta [Resource tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) nella *Guida per l'CloudFormation utente*.  
*Tipo*: Mappa  
*Obbligatorio:* no  
*CloudFormation compatibilità*: questa proprietà è unica AWS SAM e non ha un CloudFormation equivalente.

## Esempi
<a name="sam-resource-websocketapi-examples"></a>

### WebSocket API semplice
<a name="sam-resource-websocketapi-examples-simple"></a>

L'esempio seguente crea un' WebSocket API con tre percorsi.

```
Resources:
  MyWebSocketApi:
    Type: AWS::Serverless::WebSocketApi
    Properties:
      RouteSelectionExpression: $request.body.action
      Routes:
        $connect:
          FunctionArn: !GetAtt ConnectFunction.Arn
        $disconnect:
          FunctionArn: !GetAtt DisconnectFunction.Arn
        sendMessage:
          FunctionArn: !GetAtt SendMessageFunction.Arn

  ConnectFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.connect
      Runtime: nodejs20.x
      CodeUri: ./src

  DisconnectFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.disconnect
      Runtime: nodejs20.x
      CodeUri: ./src

  SendMessageFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.sendMessage
      Runtime: nodejs20.x
      CodeUri: ./src
```

### WebSocket API con Lambda Authorizer
<a name="sam-resource-websocketapi-examples-auth"></a>

L'esempio seguente crea un' WebSocket API con un autorizzatore Lambda.

```
Resources:
  MyWebSocketApi:
    Type: AWS::Serverless::WebSocketApi
    Properties:
      RouteSelectionExpression: $request.body.action
      Auth:
        AuthType: CUSTOM
        AuthArn: !GetAtt AuthorizerFunction.Arn
        IdentitySource:
          - route.request.header.Authorization
      Routes:
        $connect:
          FunctionArn: !GetAtt ConnectFunction.Arn
        sendMessage:
          FunctionArn: !GetAtt SendMessageFunction.Arn

  AuthorizerFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.authorize
      Runtime: nodejs20.x
      CodeUri: ./src

  ConnectFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.connect
      Runtime: nodejs20.x
      CodeUri: ./src

  SendMessageFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.sendMessage
      Runtime: nodejs20.x
      CodeUri: ./src
```