fix: Ensure AWS env vars in local invocation made with docker (#7349)

This commit is contained in:
frozenbonito 2020-02-19 09:52:33 +09:00 committed by GitHub
parent b05b934d72
commit c09f71897a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 1 deletions

View File

@ -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`],

View File

@ -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',