diff --git a/packages/@aws-cdk/aws-ec2/lib/cfn-init-elements.ts b/packages/@aws-cdk/aws-ec2/lib/cfn-init-elements.ts index 73153cd1025a3..ed2aef6fb14ed 100644 --- a/packages/@aws-cdk/aws-ec2/lib/cfn-init-elements.ts +++ b/packages/@aws-cdk/aws-ec2/lib/cfn-init-elements.ts @@ -489,7 +489,9 @@ export abstract class InitFile extends InitElement { if (fileOptions.group || fileOptions.owner || fileOptions.mode) { throw new Error('Owner, group, and mode options not supported for Windows.'); } - return {}; + return { + [this.fileName]: { ...contentVars }, + }; } return { diff --git a/packages/@aws-cdk/aws-ec2/test/cfn-init-element.test.ts b/packages/@aws-cdk/aws-ec2/test/cfn-init-element.test.ts index 1fc7399f63c60..2f81ff04acbbe 100644 --- a/packages/@aws-cdk/aws-ec2/test/cfn-init-element.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/cfn-init-element.test.ts @@ -177,6 +177,22 @@ describe('InitFile', () => { }).toThrow('Owner, group, and mode options not supported for Windows.'); }); + test('file renders properly on Windows', () => { + // GIVEN + const file = ec2.InitFile.fromString('/tmp/foo', 'My content'); + + // WHEN + const rendered = getElementConfig(file, InitPlatform.WINDOWS); + + // THEN + expect(rendered).toEqual({ + '/tmp/foo': { + content: 'My content', + encoding: 'plain', + }, + }); + }); + test('symlink throws an error if mode is set incorrectly', () => { expect(() => { ec2.InitFile.symlink('/tmp/foo', '/tmp/bar', {