From 272f197fc9ef6837117df52192d016bb6bc55ae2 Mon Sep 17 00:00:00 2001 From: James Kennedy Date: Tue, 1 Dec 2020 16:58:39 -0800 Subject: [PATCH 1/3] Remove restriction on environment files --- packages/@aws-cdk/aws-ecs/lib/container-definition.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/@aws-cdk/aws-ecs/lib/container-definition.ts b/packages/@aws-cdk/aws-ecs/lib/container-definition.ts index 341ffe5237b4c..1ac4ec541df85 100644 --- a/packages/@aws-cdk/aws-ecs/lib/container-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/container-definition.ts @@ -420,10 +420,6 @@ export class ContainerDefinition extends cdk.Construct { } } - if (this.taskDefinition.isFargateCompatible && props.environmentFiles) { - throw new Error(`Cannot specify environment files for a task using the FARGATE launch type in container '${this.node.id}'.`); - } - if (props.environmentFiles) { this.environmentFiles = []; From cbe2ee6838f381f848835f381606e6ef956e79d6 Mon Sep 17 00:00:00 2001 From: James Kennedy Date: Tue, 1 Dec 2020 17:00:43 -0800 Subject: [PATCH 2/3] Update tests --- .../aws-ecs/test/test.container-definition.ts | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts b/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts index 1fe5faa9bb520..054380f82aec0 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts +++ b/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts @@ -804,20 +804,6 @@ export = { ], })); - test.done(); - }, - 'throws when using environment files for a Fargate task'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef'); - - // THEN - test.throws(() => taskDefinition.addContainer('cont', { - image: ecs.ContainerImage.fromRegistry('test'), - memoryLimitMiB: 1024, - environmentFiles: [ecs.EnvironmentFile.fromAsset(path.join(__dirname, 'demo-envfiles/test-envfile.env'))], - }), /Cannot specify environment files for a task using the FARGATE launch type in container/); - test.done(); }, }, From 9da67a863f6bfc1c159f0f19e615df35a9898ca6 Mon Sep 17 00:00:00 2001 From: jkenn99 Date: Thu, 10 Dec 2020 19:45:37 +0000 Subject: [PATCH 3/3] Add requested tests for Fargate taskdef --- .../aws-ecs/test/test.container-definition.ts | 293 ++++++++++++------ 1 file changed, 200 insertions(+), 93 deletions(-) diff --git a/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts b/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts index 054380f82aec0..e994a9174f51d 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts +++ b/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts @@ -703,108 +703,215 @@ export = { }, 'Environment Files': { - 'can add asset environment file to the container definition'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); + 'with EC2 task definitions': { + 'can add asset environment file to the container definition'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); - // WHEN - taskDefinition.addContainer('cont', { - image: ecs.ContainerImage.fromRegistry('test'), - memoryLimitMiB: 1024, - environmentFiles: [ecs.EnvironmentFile.fromAsset(path.join(__dirname, 'demo-envfiles/test-envfile.env'))], - }); + // WHEN + taskDefinition.addContainer('cont', { + image: ecs.ContainerImage.fromRegistry('test'), + memoryLimitMiB: 1024, + environmentFiles: [ecs.EnvironmentFile.fromAsset(path.join(__dirname, 'demo-envfiles/test-envfile.env'))], + }); - // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { - ContainerDefinitions: [ - { - EnvironmentFiles: [{ - Type: 's3', - Value: { - 'Fn::Join': [ - '', - [ - 'arn:aws:s3:::', - { - Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3Bucket7B2069B7', - }, - '/', - { - 'Fn::Select': [ - 0, - { - 'Fn::Split': [ - '||', - { - Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3VersionKey40E12C15', - }, - ], - }, - ], - }, - { - 'Fn::Select': [ - 1, - { - 'Fn::Split': [ - '||', - { - Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3VersionKey40E12C15', - }, - ], - }, - ], - }, + // THEN + expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + ContainerDefinitions: [ + { + EnvironmentFiles: [{ + Type: 's3', + Value: { + 'Fn::Join': [ + '', + [ + 'arn:aws:s3:::', + { + Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3Bucket7B2069B7', + }, + '/', + { + 'Fn::Select': [ + 0, + { + 'Fn::Split': [ + '||', + { + Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3VersionKey40E12C15', + }, + ], + }, + ], + }, + { + 'Fn::Select': [ + 1, + { + 'Fn::Split': [ + '||', + { + Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3VersionKey40E12C15', + }, + ], + }, + ], + }, + ], ], - ], - }, - }], - }, - ], - })); + }, + }], + }, + ], + })); - test.done(); + test.done(); + }, + 'can add s3 bucket environment file to the container definition'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + const bucket = new s3.Bucket(stack, 'Bucket', { + bucketName: 'test-bucket', + }); + const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); + + // WHEN + taskDefinition.addContainer('cont', { + image: ecs.ContainerImage.fromRegistry('test'), + memoryLimitMiB: 1024, + environmentFiles: [ecs.EnvironmentFile.fromBucket(bucket, 'test-key')], + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + ContainerDefinitions: [ + { + EnvironmentFiles: [{ + Type: 's3', + Value: { + 'Fn::Join': [ + '', + [ + 'arn:aws:s3:::', + { + Ref: 'Bucket83908E77', + }, + '/test-key', + ], + ], + }, + }], + }, + ], + })); + + test.done(); + }, }, - 'can add s3 bucket environment file to the container definition'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - const bucket = new s3.Bucket(stack, 'Bucket', { - bucketName: 'test-bucket', - }); - const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); + 'with Fargate task definitions': { + 'can add asset environment file to the container definition'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef'); - // WHEN - taskDefinition.addContainer('cont', { - image: ecs.ContainerImage.fromRegistry('test'), - memoryLimitMiB: 1024, - environmentFiles: [ecs.EnvironmentFile.fromBucket(bucket, 'test-key')], - }); + // WHEN + taskDefinition.addContainer('cont', { + image: ecs.ContainerImage.fromRegistry('test'), + memoryLimitMiB: 1024, + environmentFiles: [ecs.EnvironmentFile.fromAsset(path.join(__dirname, 'demo-envfiles/test-envfile.env'))], + }); - // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { - ContainerDefinitions: [ - { - EnvironmentFiles: [{ - Type: 's3', - Value: { - 'Fn::Join': [ - '', - [ - 'arn:aws:s3:::', - { - Ref: 'Bucket83908E77', - }, - '/test-key', + // THEN + expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + ContainerDefinitions: [ + { + EnvironmentFiles: [{ + Type: 's3', + Value: { + 'Fn::Join': [ + '', + [ + 'arn:aws:s3:::', + { + Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3Bucket7B2069B7', + }, + '/', + { + 'Fn::Select': [ + 0, + { + 'Fn::Split': [ + '||', + { + Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3VersionKey40E12C15', + }, + ], + }, + ], + }, + { + 'Fn::Select': [ + 1, + { + 'Fn::Split': [ + '||', + { + Ref: 'AssetParameters872561bf078edd1685d50c9ff821cdd60d2b2ddfb0013c4087e79bf2bb50724dS3VersionKey40E12C15', + }, + ], + }, + ], + }, + ], ], - ], - }, - }], - }, - ], - })); + }, + }], + }, + ], + })); - test.done(); + test.done(); + }, + 'can add s3 bucket environment file to the container definition'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + const bucket = new s3.Bucket(stack, 'Bucket', { + bucketName: 'test-bucket', + }); + const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef'); + + // WHEN + taskDefinition.addContainer('cont', { + image: ecs.ContainerImage.fromRegistry('test'), + memoryLimitMiB: 1024, + environmentFiles: [ecs.EnvironmentFile.fromBucket(bucket, 'test-key')], + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + ContainerDefinitions: [ + { + EnvironmentFiles: [{ + Type: 's3', + Value: { + 'Fn::Join': [ + '', + [ + 'arn:aws:s3:::', + { + Ref: 'Bucket83908E77', + }, + '/test-key', + ], + ], + }, + }], + }, + ], + })); + + test.done(); + }, }, },