Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS::Serverless::WebSocketApi
Crea una API de Amazon WebSocket API Gateway, que le permite crear aplicaciones de comunicación interactiva bidireccional. WebSocket APIs permite que el servidor envíe mensajes a los clientes sin que el cliente tenga que solicitarlos. Para obtener más información, consulte Cómo trabajar con WebSocket APIs en la Guía para desarrolladores de API Gateway.
Te recomendamos que utilices CloudFormation enlaces o políticas de IAM para comprobar que los recursos de API Gateway tienen autorizadores adjuntos para controlar el acceso a ellos.
Para obtener más información sobre el uso de CloudFormation ganchos, consulte Registrar ganchos en la guía del usuario de la CloudFormation CLI y en el apigw-enforce-authorizer
Para obtener más información sobre el uso de las políticas de IAM, consulta Exigir que las rutas de API tengan autorización en la Guía para desarrolladores de API Gateway.
nota
Al realizar la implementación en AWS CloudFormation, AWS SAM transforma AWS SAM los recursos en CloudFormation recursos. Para obtener más información, consulte CloudFormation Recursos generados para AWS SAM.
Sintaxis
Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.
YAML
Type: AWS::Serverless::WebSocketApi Properties: ApiKeySelectionExpression:StringAccessLogSettings:AccessLogSettingsAuth:WebSocketApiAuthDefaultRouteSettings:RouteSettingsDescription:StringDisableExecuteApiEndpoint:BooleanDisableSchemaValidation:BooleanDomain:WebSocketApiDomainConfigurationIpAddressType:StringName:StringPropagateTags:BooleanRoutes:RouteConfigurationRouteSelectionExpression:StringRouteSettings:RouteSettingsStageName:StringStageVariables:JsonTags:Map
Propiedades
-
ApiKeySelectionExpression -
Es una expresión de selección de clave de API. Para obtener más información, consulte Expresiones de selección de claves de API en la Guía para desarrolladores de API Gateway.
Tipo: cadena
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se transfiere directamente a la
ApiKeySelectionExpressionpropiedad de unAWS::ApiGatewayV2::Apirecurso. -
AccessLogSettings -
Configuración del registro de acceso en una etapa.
Tipo: AccessLogSettings
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
AccessLogSettingspropiedad de unAWS::ApiGatewayV2::Stagerecurso. -
Auth -
Configura la autorización para controlar el acceso a tu WebSocket API. La autorización se aplica a la
$connectruta.Para obtener más información, consulte Controlar el acceso a WebSocket APIs en la Guía para desarrolladores de API Gateway.
Tipo: WebSocketApiAuth
Obligatorio: no
CloudFormation compatibilidad: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.
-
DefaultRouteSettings -
La configuración de ruta predeterminada para esta WebSocket API. Esta configuración se aplica a todas las rutas, a menos que la propiedad
RouteSettingsla anula para determinadas rutas.Tipo: RouteSettings
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
DefaultRouteSettingspropiedad de unAWS::ApiGatewayV2::Stagerecurso. -
Description -
Una descripción de la WebSocket API.
Tipo: cadena
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
Descriptionpropiedad de unAWS::ApiGatewayV2::Apirecurso. -
DisableExecuteApiEndpoint -
Especifica si los clientes pueden invocar la API mediante el punto de conexión
execute-apipredeterminado. Para exigir que los clientes utilicen un nombre de dominio personalizado para invocar la API, desactive el punto de enlace predeterminado.Tipo: Booleano
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
DisableExecuteApiEndpointpropiedad de unAWS::ApiGatewayV2::Apirecurso. -
DisableSchemaValidation -
Evite validar modelos al crear una implementación.
Tipo: Booleano
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
DisableSchemaValidationpropiedad de unAWS::ApiGatewayV2::Apirecurso. -
Domain -
Configura un dominio personalizado para esta WebSocket API.
nota
WebSocket APIs no admiten la autenticación TLS mutua (MTLS). Si especifica
MutualTlsAuthenticationoOwnershipVerificationCertificateArn, AWS SAM devolverá un error.Tipo: WebSocketApiDomainConfiguration
Obligatorio: no
CloudFormation compatibilidad: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.
-
IpAddressType -
El tipo de dirección IP de la API. Los valores válidos son IPv4 solo
ipv4para IPv4 ydualstackpara IPv6.Tipo: cadena
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
IpAddressTypepropiedad de unAWS::ApiGatewayV2::Apirecurso. -
Name -
Un nombre para la WebSocket API. Si no especificas un nombre, AWS SAM generará uno para ti.
Tipo: cadena
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
Namepropiedad de unAWS::ApiGatewayV2::Apirecurso. -
Si
true, AWS SAM agrega laTagspropiedad a losAWS::ApiGatewayV2::DomainNamerecursosAWS::ApiGatewayV2::Stagey que AWS SAM genera.Tipo: Booleano
Obligatorio: no
CloudFormation compatibilidad: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.
-
Routes -
Las configuraciones de ruta para esta WebSocket API. Las rutas definen cómo se enrutan los mensajes a las funciones Lambda. Cada ruta consta de una clave de ruta y un ARN de función Lambda.
WebSocket APIs admiten tres rutas predefinidas:
$connect$disconnect, y.$defaultTambién puede definir rutas personalizadas.Tipo: RouteConfiguration
Obligatorio: sí
CloudFormation compatibilidad: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.
-
RouteSelectionExpression -
La expresión de selección de rutas de la WebSocket API. Para obtener más información, consulte Expresiones de selección de rutas en la Guía para desarrolladores de API Gateway.
Un valor común es
$request.body.actionque enruta los mensajes en función de unactioncampo del cuerpo del mensaje.Tipo: cadena
Obligatorio: sí
CloudFormation compatibilidad: esta propiedad se transfiere directamente a la
RouteSelectionExpressionpropiedad de unAWS::ApiGatewayV2::Apirecurso. -
RouteSettings -
La configuración de ruta de esta WebSocket API. Esta configuración anula la
DefaultRouteSettingsde rutas específicas.Tipo: RouteSettings
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
RouteSettingspropiedad de unAWS::ApiGatewayV2::Stagerecurso. -
StageName -
Es el nombre de la fase de la API. Si no especificas un nombre, se AWS SAM usa
defaultcomo nombre artístico.Tipo: cadena
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se pasa directamente a la
StageNamepropiedad de unAWS::ApiGatewayV2::Stagerecurso. -
StageVariables -
Una asignación que define las variables de la fase. Los nombres de las variables pueden tener caracteres alfanuméricos y de subrayado, y los valores deben coincidir.
[A-Za-z0-9-._~:/?#&=,]+Type: Json
Obligatorio: no
CloudFormation compatibilidad: esta propiedad se transfiere directamente a la
StageVariablespropiedad de unAWS::ApiGatewayV2::Stagerecurso. -
Un mapa (cadena a cadena) que especifica las etiquetas que se van a añadir a esta WebSocket API. Para obtener más información sobre las claves y los valores válidos de las etiquetas, consulta la etiqueta de recursos en la Guía del usuario de CloudFormation .
Tipo: mapa
Obligatorio: no
CloudFormation compatibilidad: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.
Ejemplos
WebSocket API simple
En el siguiente ejemplo, se crea una WebSocket API con tres rutas.
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
En el siguiente ejemplo, se crea una WebSocket API con un autorizador 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