diff --git a/docs/deprecations.md b/docs/deprecations.md
index 086a97d7c5f..3c3c10e7087 100644
--- a/docs/deprecations.md
+++ b/docs/deprecations.md
@@ -36,6 +36,22 @@ Note:
- The `serverless.yml` setting is ineffective for deprecations reported before the configuration is read.
- `SLS_DEPRECATION_DISABLE` and `disabledDeprecations` remain respected, and no errors will be thrown for mentioned deprecation codes.
+
+
+## Grouping websockets settings under `provider.websockets`
+
+Deprecation code: `PROVIDER_WEBSOCKETS_SETTINGS_v3`
+
+Websockets-related settings of _provider_ including `websocketsApiName`, `websocketsApiRouteSelectionExpression` and `websocketsDescription` are also now supported at `websockets` property. Refer to the [Websocket Guide](/docs/providers/aws/events/websocket.md).
+
+- `provider.websocketsApiName` -> `provider.iam.role`
+- `provider.websocketsApiRouteSelectionExpression` -> `provider.websockets.apiRouteSelectionExpression`
+- `provider.websocketsDescription` -> `provider.websockets.description`
+
+In addition `iam.role.permissionBoundary` can also be set at `iam.role.permissionsBoundary` (which matches CloudFormation property name).
+
+Starting with v4.0.0 old versions of settings will no longer be supported
+
## Property `variablesResolutionMode`
diff --git a/docs/providers/aws/guide/serverless.yml.md b/docs/providers/aws/guide/serverless.yml.md
index b40a0028956..ca658e79895 100644
--- a/docs/providers/aws/guide/serverless.yml.md
+++ b/docs/providers/aws/guide/serverless.yml.md
@@ -237,13 +237,6 @@ provider:
apiName: custom-api-name
# Endpoint type for API Gateway REST API: edge or regional (default: edge)
endpointType: regional
- # Use a custom name for the websockets API
- websockets:
- apiName: custom-websockets-api-name
- # custom route selection expression
- apiRouteSelectionExpression: $request.body.route
- # Use a custom description for the websockets API
- description: Custom Serverless Websockets
# Optional API Gateway REST API global config
apiGateway:
# Attach to an externally created REST API via its ID:
@@ -311,6 +304,13 @@ provider:
name: GlobalModel
# Optional: Description of the API Gateway model
description: 'A global model that can be referenced in functions'
+ # Use a custom name for the websockets API
+ websockets:
+ apiName: custom-websockets-api-name
+ # custom route selection expression
+ apiRouteSelectionExpression: $request.body.route
+ # Use a custom description for the websockets API
+ description: Custom Serverless Websockets
```
### ALB
diff --git a/lib/plugins/aws/lib/naming.js b/lib/plugins/aws/lib/naming.js
index 24711b5409d..feb6696a615 100644
--- a/lib/plugins/aws/lib/naming.js
+++ b/lib/plugins/aws/lib/naming.js
@@ -208,7 +208,10 @@ module.exports = {
// Websockets API
getWebsocketsApiName() {
if (_.get(this.provider.serverless.service.provider.websockets)) {
- return `${this.provider.serverless.service.provider.websockets.apiName}`;
+ return (
+ `${this.provider.serverless.service.provider.websockets.apiName}` ||
+ `${this.provider.getStage()}-${this.provider.serverless.service.service}-websockets`
+ );
}
if (
this.provider.serverless.service.provider.websocketsApiName &&
diff --git a/lib/plugins/aws/package/compile/events/websockets/lib/api.js b/lib/plugins/aws/package/compile/events/websockets/lib/api.js
index 4e34697d86b..dd54f262f88 100644
--- a/lib/plugins/aws/package/compile/events/websockets/lib/api.js
+++ b/lib/plugins/aws/package/compile/events/websockets/lib/api.js
@@ -29,7 +29,7 @@ module.exports = {
Name: this.provider.naming.getWebsocketsApiName(),
RouteSelectionExpression,
Description: this.serverless.service.provider.websockets
- ? this.serverless.service.provider.websockets.description
+ ? this.serverless.service.provider.websockets.description || 'Serverless Websockets'
: this.serverless.service.provider.websocketsDescription || 'Serverless Websockets',
ProtocolType: 'WEBSOCKET',
},
diff --git a/lib/plugins/aws/package/compile/events/websockets/lib/stage.js b/lib/plugins/aws/package/compile/events/websockets/lib/stage.js
index 43e4af05dad..f83e03fc84b 100644
--- a/lib/plugins/aws/package/compile/events/websockets/lib/stage.js
+++ b/lib/plugins/aws/package/compile/events/websockets/lib/stage.js
@@ -31,7 +31,7 @@ module.exports = {
// DeploymentId is generated at deployment.js file
StageName: this.provider.getStage(),
Description: this.serverless.service.provider.websockets
- ? this.serverless.service.provider.websockets.description
+ ? this.serverless.service.provider.websockets.description || 'Serverless Websockets'
: this.serverless.service.provider.websocketsDescription || 'Serverless Websockets',
},
};