From c09f71897a67fe8ec98d460075f0f02b397f8ee5 Mon Sep 17 00:00:00 2001 From: frozenbonito Date: Wed, 19 Feb 2020 09:52:33 +0900 Subject: [PATCH] fix: Ensure AWS env vars in local invocation made with docker (#7349) --- lib/plugins/aws/invokeLocal/index.js | 16 +++++++++++++++- lib/plugins/aws/invokeLocal/index.test.js | 10 ++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/plugins/aws/invokeLocal/index.js b/lib/plugins/aws/invokeLocal/index.js index b695bea1d..ea219cb5f 100644 --- a/lib/plugins/aws/invokeLocal/index.js +++ b/lib/plugins/aws/invokeLocal/index.js @@ -434,13 +434,27 @@ class AwsInvokeLocal { ]).then(results => { const imageName = results[1]; const artifactPath = results[2]; + + const lambdaName = this.options.functionObj.name; + const memorySize = + Number(this.options.functionObj.memorySize) || + Number(this.serverless.service.provider.memorySize) || + 1024; + const lambdaDefaultEnvVars = { + AWS_REGION: this.provider.getRegion(), + AWS_DEFAULT_REGION: this.provider.getRegion(), + AWS_LAMBDA_LOG_GROUP_NAME: this.provider.naming.getLogGroupName(lambdaName), + AWS_LAMBDA_FUNCTION_NAME: lambdaName, + AWS_LAMBDA_FUNCTION_MEMORY_SIZE: memorySize, + }; const configuredEnvVars = this.getConfiguredEnvVars(); const envVarsFromOptions = this.getEnvVarsFromOptions(); - const envVars = _.merge(configuredEnvVars, envVarsFromOptions); + const envVars = _.merge(lambdaDefaultEnvVars, configuredEnvVars, envVarsFromOptions); const envVarsDockerArgs = _.flatMap(envVars, (value, key) => [ '--env', `${key}=${value}`, ]); + const dockerArgsFromOptions = this.getDockerArgsFromOptions(); const dockerArgs = _.concat( ['run', '--rm', '-v', `${artifactPath}:/var/task`], diff --git a/lib/plugins/aws/invokeLocal/index.test.js b/lib/plugins/aws/invokeLocal/index.test.js index bdfa3dc97..49c882178 100644 --- a/lib/plugins/aws/invokeLocal/index.test.js +++ b/lib/plugins/aws/invokeLocal/index.test.js @@ -1164,6 +1164,16 @@ describe('AwsInvokeLocal', () => { '-v', 'servicePath:/var/task', '--env', + 'AWS_REGION=us-east-1', + '--env', + 'AWS_DEFAULT_REGION=us-east-1', + '--env', + 'AWS_LAMBDA_LOG_GROUP_NAME=/aws/lambda/hello', + '--env', + 'AWS_LAMBDA_FUNCTION_NAME=hello', + '--env', + 'AWS_LAMBDA_FUNCTION_MEMORY_SIZE=1024', + '--env', 'providerVar=providerValue', '--env', 'functionVar=functionValue',