diff --git a/lib/plugins/aws/invokeLocal/index.js b/lib/plugins/aws/invokeLocal/index.js index 7bae1e1195d..123e8e18e06 100644 --- a/lib/plugins/aws/invokeLocal/index.js +++ b/lib/plugins/aws/invokeLocal/index.js @@ -183,26 +183,24 @@ class AwsInvokeLocal { const configuredEnvVars = this.getConfiguredEnvVars(); - const promises = Object.entries(configuredEnvVars).map(([name, value]) => { - let resolver; - if (value['Fn::ImportValue']) { - resolver = resolveCfImportValue(this.provider, value['Fn::ImportValue']); - } else if (value.Ref) { - resolver = resolveCfRefValue(this.provider, value.Ref); - } else { - resolver = BbPromise.resolve(value); - } - - return resolver.then( - resolvedValue => { - configuredEnvVars[name] = resolvedValue; - }, - error => { - throw new this.serverless.classes.Error( - `Could not resolve ${name} environment variable. ${error.message}` + const promises = Object.entries(configuredEnvVars).map(async ([name, value]) => { + if (!_.isObject(value)) return; + try { + if (value['Fn::ImportValue']) { + configuredEnvVars[name] = await resolveCfImportValue( + this.provider, + value['Fn::ImportValue'] ); + } else if (value.Ref) { + configuredEnvVars[name] = await resolveCfRefValue(this.provider, value.Ref); + } else { + throw new Error(`Unsupported format: ${inspect(value)}`); } - ); + } catch (error) { + throw new this.serverless.classes.Error( + `Could not resolve "${name}" environment variable: ${error.message}` + ); + } }); return BbPromise.all(promises).then(() => { diff --git a/lib/plugins/aws/provider/awsProvider.js b/lib/plugins/aws/provider/awsProvider.js index aefc85d6755..f4eb5921d06 100644 --- a/lib/plugins/aws/provider/awsProvider.js +++ b/lib/plugins/aws/provider/awsProvider.js @@ -285,13 +285,7 @@ class AwsProvider { awsLambdaEnvironment: { type: 'object', patternProperties: { - '^[A-Za-z_][a-zA-Z0-9_]*$': { - anyOf: [ - { type: 'string' }, - { $ref: '#/definitions/awsCfImport' }, - { $ref: '#/definitions/awsCfRef' }, - ], - }, + '^[A-Za-z_][a-zA-Z0-9_]*$': { $ref: '#/definitions/awsCfInstruction' }, }, additionalProperties: false, },