diff --git a/packages/@aws-cdk/aws-lambda/lib/code.ts b/packages/@aws-cdk/aws-lambda/lib/code.ts index c6a17f1848708..8c17ac82d246e 100644 --- a/packages/@aws-cdk/aws-lambda/lib/code.ts +++ b/packages/@aws-cdk/aws-lambda/lib/code.ts @@ -260,6 +260,13 @@ export interface DockerRunOptions { * @default - no additional volumes are mounted */ readonly volumes?: DockerVolume[]; + + /** + * The environment variables to pass to the container. + * + * @default - No environment variables. + */ + readonly environment?: { [key: string]: string; }; } /** @@ -282,11 +289,13 @@ export class DockerImageCode extends AssetCode { } const volumes = options.volumes || []; + const environment = options.environment || {}; const dockerArgs: string[] = [ 'run', '--rm', '-v', `${options.assetPath}:/asset`, ...flatten(volumes.map(v => ['-v', `${v.hostPath}:${v.containerPath}`])), + ...flatten(Object.entries(environment).map(([k, v]) => ['--env', `${k}=${v}`])), options.image, ...options.command, ]; diff --git a/packages/@aws-cdk/aws-lambda/test/integ.docker.expected.json b/packages/@aws-cdk/aws-lambda/test/integ.docker.expected.json index ed1b35fd53888..9816dcb18319f 100644 --- a/packages/@aws-cdk/aws-lambda/test/integ.docker.expected.json +++ b/packages/@aws-cdk/aws-lambda/test/integ.docker.expected.json @@ -36,7 +36,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParametersb30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8S3BucketB1206B28" + "Ref": "AssetParameters567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9S3BucketDED3100C" }, "S3Key": { "Fn::Join": [ @@ -49,7 +49,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersb30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8S3VersionKeyDD15AE2C" + "Ref": "AssetParameters567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9S3VersionKeyB85BA10F" } ] } @@ -62,7 +62,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersb30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8S3VersionKeyDD15AE2C" + "Ref": "AssetParameters567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9S3VersionKeyB85BA10F" } ] } @@ -87,17 +87,17 @@ } }, "Parameters": { - "AssetParametersb30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8S3BucketB1206B28": { + "AssetParameters567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9S3BucketDED3100C": { "Type": "String", - "Description": "S3 bucket for asset \"b30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8\"" + "Description": "S3 bucket for asset \"567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9\"" }, - "AssetParametersb30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8S3VersionKeyDD15AE2C": { + "AssetParameters567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9S3VersionKeyB85BA10F": { "Type": "String", - "Description": "S3 key for asset version \"b30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8\"" + "Description": "S3 key for asset version \"567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9\"" }, - "AssetParametersb30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8ArtifactHash9F155131": { + "AssetParameters567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9ArtifactHash5913CC34": { "Type": "String", - "Description": "Artifact hash for asset \"b30f71084d0e75786c0a52e418612bc916c98f85291d24847aa53400a0c735e8\"" + "Description": "Artifact hash for asset \"567c99719fe54bd90e4a5f05163782b41e552ba606dbf49929efb314d18938d9\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-lambda/test/test.code.ts b/packages/@aws-cdk/aws-lambda/test/test.code.ts index d7cb353eadc2e..9d797e44b0cc9 100644 --- a/packages/@aws-cdk/aws-lambda/test/test.code.ts +++ b/packages/@aws-cdk/aws-lambda/test/test.code.ts @@ -213,6 +213,10 @@ export = { containerPath: '/src', }, ], + environment: { + VAR1: 'value1', + VAR2: 'value2', + }, command, }); @@ -220,6 +224,8 @@ export = { 'run', '--rm', '-v', `${dockerAssetPath}:/asset`, '-v', `${srcPath}:/src`, + '--env', 'VAR1=value1', + '--env', 'VAR2=value2', 'alpine', ...command, ]));