AWS Serverless中的环境变量验证错误



当我尝试在AWS上部署我的服务时。它显示了环境变量中的Validation错误。但我的所有变量都是正确的格式,因为以前它工作得很好。

An error occurred: AuthenticateUserLambdaFunction - Resource handler returned message: "1 validation error detected: Value at 'environment.variables' failed to satisfy constraint: Map 
keys must satisfy constraint: [Member must satisfy regular expression pattern: [a-zA-Z]([a-zA-Z0-9_])+] (Service: Lambda, Status Code: 400, Request ID: 91e93afc-3abc-49c7-b38b-c0ef7832022e, Extended Request ID: null)" (RequestToken: e0b9e74e-629f-1ce8-f0a9-f718e67fb974, HandlerErrorCode: InvalidRequest).

我的Serverless.yml文件内容如下。

frameworkVersion: "2.35.0"
useDotenv: true
unresolvedVariablesNotificationMode: error
configValidationMode: error
plugins:
- serverless-offline
- serverless-plugin-git-variables
- serverless-dotenv-plugin
- serverless-domain-manager
custom:
domains:
local: local-api.carierx.app
develop: develop-api.carierx.app
staging: staging-api.carierx.app
prod: api.carierx.app
stageVariables:
gitBranch: ${opt:stage, git:branch}
customDomain:
domainName: ${self:custom.domains.${self:provider.stage}}
basePath: "administration"
stage: ${self:provider.stage}
createRoute53Record: true
package:
excludeDevDependencies: true
exclude:
- /node_modules/** # no need to add this yourself, this plugin does it for you
provider:
stage: ${opt:stage, git:branch}
name: aws
runtime: nodejs12.x
region: ${env:AWS_REGION_CRED, 'us-east-1'}
versionFunctions: false
tags:
project: rxd-administration
lambdaHashingVersion: 20201221
functions:
- ${file(./tenant/serverless.yml)}
- ${file(./auth/serverless.yml)}
resources:
Outputs:
AuthorizeUserLambdaFuncExport:
Value:
# Ref: SharedLambdaLayer
Ref: AuthorizeUserLambdaFunction
Export:
Name: AuthorizeUserLambdaFunction

我运行这个命令sls-deploy-s-local,它的完整输出如下。

Serverless: Running "serverless" installed locally (in service node_modules)
Serverless: DOTENV: Loading environment variables from .env.local, .env.local:
Serverless:      - STAGE
Serverless:      - SLA_DROPOFF_AFTER_MINS
Serverless:      - AWS_ACCOUNT_CRED
Serverless:      - AWS_ACCESS_KEY_ID_CRED
Serverless:      - AWS_SECRET_ACCESS_KEY_CRED
Serverless:      - AWS_REGION_CRED
Serverless:      - LOGLEVEL
Serverless:      - LYFT_REFRESH_TOKEN
Serverless:      - LYFT_ACCESS_TOKEN
Serverless:      - LYFT_CLIENT_ID
Serverless:      - LYFT_CLIENT_SECRET
Serverless:      - LYFT_WEBHOOK_VERIFICATION_KEY
Serverless:      - SMS_APPLICATION_ID
Serverless:      - SMS_REGISTERED_KEY_WORD
Serverless:      - CLIENT_APP_URL
Serverless:      - SECRET_NAME_FOR_LYFT_REFRESH_TOKEN
Serverless:      - SECRET_NAME_FOR_LYFT_ACCESS_TOKEN
Serverless:      - LYFT_ACCESS_TOKEN_ROTATION
Serverless:      - AWS_XRAY_CONTEXT_MISSING
Serverless:      - _X_AMZN_TRACE_ID
Serverless:      - PHARMACY_LOGO_URL
Serverless: Deprecation warning: CLI options definitions were upgraded with "type" property (which could be one of "string", "boolean", "multiple"). Below listed plugins do not predefine type for introduced options:
- ServerlessOffline for "apiKey", "corsAllowHeaders", "corsAllowOrigin", "corsDisallowCredentials", "corsExposedHeaders", "disableCookieValidation", "enforceSecureCookies", "hideStackTraces", "host", "httpPort", "httpsProtocol", "lambdaPort", "noPrependStageInUrl", "noAuth", "ignoreJWTSignature", "noTimeout", "prefix", "printOutput", "resourceRoutes", "useChildProcesses", "useWorkerThreads", "websocketPort", "webSocketHardTimeout", "webSocketIdleTimeout", "useDocker", "layersDir", "dockerReadOnly", "functionCleanupIdleTimeSeconds", "allowCache", "dockerHost", "dockerHostServicePath", "dockerNetwork"
Please report this issue in plugin issue tracker.
Starting with next major release, this will be communicated with a thrown error.
More Info: https://www.serverless.com/framework/docs/deprecations/#CLI_OPTIONS_SCHEMA
Serverless: Deprecation warning: Support for "package.include" and "package.exclude" will be removed with next major release. Please use "package.patterns" instead            More Info: https://www.serverless.com/framework/docs/deprecations/#NEW_PACKAGE_PATTERNS
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service rxd-administration.zip file to S3 (127.64 KB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
..............................
Serverless: Operation failed!
Serverless: View the full error output: https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stack/detail?stackId=arn%3Aaws%3Acloudformation%3Aus-east-1%3A212556752574%3Astack%2Frxd-administration-local%2F51d7b540-9dd8-11eb-a5b7-0e706f74ed45
Serverless Error ----------------------------------------
An error occurred: AuthenticateUserLambdaFunction - Resource handler returned message: "1 validation error detected: Value at 'environment.variables' failed to satisfy constraint: Map 
keys must satisfy constraint: [Member must satisfy regular expression pattern: [a-zA-Z]([a-zA-Z0-9_])+] (Service: Lambda, Status Code: 400, Request ID: 91e93afc-3abc-49c7-b38b-c0ef7832022e, Extended Request ID: null)" (RequestToken: e0b9e74e-629f-1ce8-f0a9-f718e67fb974, HandlerErrorCode: InvalidRequest).
Get Support --------------------------------------------
Docs:          docs.serverless.com
Bugs:          github.com/serverless/serverless/issues
Issues:        forum.serverless.com
Your Environment Information ---------------------------
Operating System:          win32
Node Version:              12.19.0
Framework Version:         2.35.0 (local)
Plugin Version:            4.6.0
SDK Version:               4.2.2
Components Version:        3.9.2

我的无服务器安装版本详细信息

Framework Core: 2.41.2
Plugin: 5.0.0
SDK: 4.2.2
Components: 3.9.2

基本上在我的环境变量中,有一个名为_X_AMZN_TRACE_ID的错误格式。它与此模式[a-zA-Z]([a-zA-Z0-9_])+不匹配。在那之后,我更改了变量名,现在它工作得很好。