serverless/docs/deprecations.md

9.6 KiB

Serverless Framework Deprecations

How to disable specific deprecation logs

To disable specific deprecations set SLS_DEPRECATION_DISABLE environment variable. Setting SLS_DEPRECATION_DISABLE=* will disable all deprecations. If you want to disable specific deprecations set SLS_DEPRECATION_DISABLE=CODE1,CODE2. Alternatively, you can also use disabledDeprecations in your serverless.yml in the following manner:

service: myService
disabledDeprecations:
  - CODE_1 # To disable specific deprecation with code "CODE_1"
  - '*' # To disable all deprecation messages

Serverless constructor config.configurationPath requirement

Deprecation code: MISSING_SERVICE_CONFIGURATION_PATH

Serverless constructor was refactored to depend on service configuration path being resolved externally and passed to its constructor with config.configurationPath. Starting from v3.0.0 this path will not be resolved internally.

Erroring on unresolved variable references

Deprecation code: VARIABLES_ERROR_ON_UNRESOLVED

Starting with v3.0.0, references to variables that cannot be resolved will result in an error being thrown.

Adapt to this behaviour now by adding unresolvedVariablesNotificationMode: error to service configuration.

API Gateway specific configuration

Deprecation code: AWS_API_GATEWAY_SPECIFIC_KEYS

Please use provider.apiGateway.apiKeys instead of provider.apiKeys. Please use provider.apiGateway.resourcePolicy instead of provider.resourcePolicy. Please use provider.apiGateway.usagePlan instead of provider.usagePlan.

Starting with v3.0.0, API Gateway-specific configuration keys apiKeys, resourcePolicy and usagePlan will be relocated from provider to provider.apiGateway.

Parameterized org, app, service, stage, and region usage

Org, app, service, stage, and region are required to resolve variables when logged in, variable resolution will not function without plaintext value. You may override values in serverless.yml for stage and region with command line arguments --stage and --region. The rest must be plain text.

Default provider.lambdaHashingVersion

Deprecation code: LAMBDA_HASHING_VERSION_V2

Starting with v3.0.0, the default value of lambdaHashingVersion will be equal to 20201221. You can adapt to this behavior now, by setting provider.lambdaHashingVersion to 20201221.

When trying to sls deploy for the first time after migration to new lambdaHashingVersion, you might encounter an error, similar to the one below:

  Serverless Error ---------------------------------------

  An error occurred: FooLambdaVersion3IV5NZ3sE5T2UFimCOai2Tc6eCaW7yIYOP786U0Oc - A version for this Lambda function exists ( 11 ). Modify the function to create a new version..

It is an expected behavior, to avoid it, you need to modify your function(s) code and try to redeploy it again. One common approach is to modify an utility function that is used by all/most of your Lambda functions.

Automatic loading environment variables from .env and .env.{stage} files

Deprecation code: LOAD_VARIABLES_FROM_ENV_FILES

Starting with v3.0.0, environment variables will be automatically loaded from .env and .env.{stage} files if they're present. In addition, .env files will be excluded from package in order to avoid uploading sensitive data as a part of the package by mistake.

Adapt to this behavior now by adding useDotenv: true to service configuration.

Note that env vars are handled differently than with serverless-dotenv-plugin, check documentation for more info.

service property object notation

Deprecation code: SERVICE_OBJECT_NOTATION

Starting with v3.0.0, object notation for service property will no longer be recognized. Set service property directly with service name.

cloudFront event behavior.ForwardedValues property

Deprecation code: CLOUDFRONT_CACHE_BEHAVIOR_FORWARDED_VALUES_AND_TTL

Cloudfront cache behavior ForwardedValues, MinTTL, MaxTTL and DefaultTTL fields are deprecated. We recommend that you use a cache policy instead of this field. Please follow cache policy documentation for implementation details.

API Gateway naming will be changed to ${service}-${stage}

Deprecation code: AWS_API_GATEWAY_NAME_STARTING_WITH_SERVICE

Starting with v3.0.0, API Gateway naming will be changed from ${stage}-${service} to ${service}-${stage}.

Adapt to this convention now by setting provider.apiGateway.shouldStartNameWithService to true.

Eventually if you have a strong reason to stick to current convention, you may ensure it's kept after upgrading by setting: provider.apiName: ${opt:stage, self:provider.stage, 'dev'}

Support for alexaSkill event without appId is to be removed

Deprecation code: ALEXA_SKILL_EVENT_WITHOUT_APP_ID

Starting with v3.0.0, support for alexaSkill event without appId provided will be removed.

awsKmsKeyArn references

Deprecation code: AWS_KMS_KEY_ARN

Please use provider.kmsKeyArn and functions[].kmsKeyArn. service.awsKmsKeyArn and functions[].awsKmsKeyArn will be removed with v3.0.0

Defining extensions to nonexistent resources in resources.extensions

Deprecation code: RESOURCES_EXTENSIONS_REFERENCE_TO_NONEXISTENT_RESOURCE

Starting with v3.0.0, extensions to nonexistent resources in resources.extensions will throw an error instead of passing silently.

Support for enableLocalInstallationFallback setting is to be removed

Deprecation code: DISABLE_LOCAL_INSTALLATION_FALLBACK_SETTING

Starting with v3.0.0, framework will unconditionally run service local installation of serverless if it's found.

Fallback to a service local serverless installation

Deprecation code: LOCAL_INSTALLATION_FALLBACK

Starting with v2.0.0, globally installed CLI will by default run (fallback to) service local installation of serverless if it's found.

Adapt to this behavior now by adding enableLocalInstallationFallback: true to service configuration. Alternatively you may opt-out by setting it to false (note that'll be ineffective starting from v3.0.0, where support for this setting will be dropped, and CLI will unconditionally favor locally installed serverless installations when found)

AWS HTTP API timeout

Deprecation code: AWS_HTTP_API_TIMEOUT

provider.httpApi.timeout and functions[].events[].httpApi.timeout settings will no longer be recognized with v2.0.0.

Endpoints are configured to automatically follow timeout setting as configured on functions (with extra margin needed to process HTTP request on AWS side)

slss alias

Deprecation code: SLSS_CLI_ALIAS

Support for slss command will be removed with v2.0.0. Use sls or serverless instead.

AWS Lambda Function Destinations maximumEventAge & maximumRetryAttempts

Deprecation code: AWS_FUNCTION_DESTINATIONS_ASYNC_CONFIG

maximumEventAge and maximumRetryAttempts should be defined directly at function level. Support for those settings on destinations level, will be removed with v2.0.0

AWS HTTP API payload format

Deprecation code: AWS_HTTP_API_VERSION

Default HTTP API Payload version will be switched to 2.0 with next major release (For more details see payload format documentation)

Configure httpApi.payload explicitly to ensure seamless migration.

Outdated Node.js version

Deprecation code: OUTDATED_NODEJS

Support for Node.js v6 and v8 will be dropped with v2.0.0 release

Ensure to rely on at least Node.js v10 (It's recommended to use LTS version, as listed at https://nodejs.org/en/)

AWS ALB allowUnauthenticated

Deprecation code: AWS_ALB_ALLOW_UNAUTHENTICATED

Please use onUnauthenticatedRequest instead. allowUnauthenticated will be removed with v2.0.0

bin/serverless

Deprecation code: BIN_SERVERLESS

Please use bin/serverless.js instead. bin/serverless will be removed with v2.0.0