Skip to content

Commit 823a1e8

Browse files
author
Elad Ben-Israel
authored
feat(core): overrideLogicalId: override IDs of CFN elements (#1670)
Allow users to explicitly override the logical ID of a CloudFormation element (such as "Cfn" resources) by invoking `overrideLogicalId` on the resource object. For example: const bucket = new s3.CfnBucket(this, 'MyBucket'); bucket.overrideLogicalId('YourBucket'); The resulting template will use `YourBucket` as the logical ID. NOTE: the `logicalId` property will now return a stringified token instead of a concrete value. Fixes #1594
1 parent 8da9115 commit 823a1e8

File tree

48 files changed

+255
-152
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+255
-152
lines changed

packages/@aws-cdk/app-delivery/test/integ.cicd.expected.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,8 @@
239239
]
240240
},
241241
"DependsOn": [
242-
"CodePipelineRoleB3A660B4",
243-
"CodePipelineRoleDefaultPolicy8D520A8D"
242+
"CodePipelineRoleDefaultPolicy8D520A8D",
243+
"CodePipelineRoleB3A660B4"
244244
]
245245
},
246246
"DeployStackChangeSetRole4923A126": {
@@ -261,4 +261,4 @@
261261
}
262262
}
263263
}
264-
}
264+
}

packages/@aws-cdk/assets/test/test.asset.ts

+27-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ export = {
1818
// the correct information
1919
const entry = asset.node.metadata.find(m => m.type === 'aws:cdk:asset');
2020
test.ok(entry, 'found metadata entry');
21-
test.deepEqual(entry!.data, {
21+
22+
// console.error(JSON.stringify(stack.node.resolve(entry!.data)));
23+
24+
test.deepEqual(stack.node.resolve(entry!.data), {
2225
path: dirPath,
2326
id: 'MyAsset',
2427
packaging: 'zip',
@@ -34,13 +37,35 @@ export = {
3437
test.done();
3538
},
3639

40+
'verify that the app resolves tokens in metadata'(test: Test) {
41+
const app = new cdk.App();
42+
const stack = new cdk.Stack(app, 'my-stack');
43+
const dirPath = path.resolve(__dirname, 'sample-asset-directory');
44+
45+
new ZipDirectoryAsset(stack, 'MyAsset', {
46+
path: dirPath
47+
});
48+
49+
const synth = app.synthesizeStack(stack.name);
50+
51+
test.deepEqual(synth.metadata['/my-stack/MyAsset'][0].data, {
52+
path: dirPath,
53+
id: "mystackMyAssetD6B1B593",
54+
packaging: "zip",
55+
s3BucketParameter: "MyAssetS3Bucket68C9B344",
56+
s3KeyParameter: "MyAssetS3VersionKey68E1A45D"
57+
});
58+
59+
test.done();
60+
},
61+
3762
'"file" assets'(test: Test) {
3863
const stack = new cdk.Stack();
3964
const filePath = path.join(__dirname, 'file-asset.txt');
4065
const asset = new FileAsset(stack, 'MyAsset', { path: filePath });
4166
const entry = asset.node.metadata.find(m => m.type === 'aws:cdk:asset');
4267
test.ok(entry, 'found metadata entry');
43-
test.deepEqual(entry!.data, {
68+
test.deepEqual(stack.node.resolve(entry!.data), {
4469
path: filePath,
4570
packaging: 'file',
4671
id: 'MyAsset',

packages/@aws-cdk/aws-apigateway/test/integ.restapi.books.expected.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -526,12 +526,12 @@
526526
},
527527
"DependsOn": [
528528
"booksapiANYF4F0CDEB",
529-
"booksapibooks97D84727",
529+
"booksapibooksbookidDELETE214F4059",
530+
"booksapibooksbookidGETCCE21986",
531+
"booksapibooksbookid5264BCA2",
530532
"booksapibooksGETA776447A",
531533
"booksapibooksPOSTF6C6559D",
532-
"booksapibooksbookid5264BCA2",
533-
"booksapibooksbookidDELETE214F4059",
534-
"booksapibooksbookidGETCCE21986"
534+
"booksapibooks97D84727"
535535
]
536536
},
537537
"booksapiDeploymentStageprod55D8E03E": {

packages/@aws-cdk/aws-apigateway/test/integ.restapi.expected.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515
"Description": "Automatically created by the RestApi construct"
1616
},
1717
"DependsOn": [
18-
"myapiv113487378",
19-
"myapiv1appliances507FEFF4",
2018
"myapiv1appliancesGET8FE872EC",
21-
"myapiv1books1D4BE6C1",
19+
"myapiv1appliances507FEFF4",
2220
"myapiv1booksGETC6B996D0",
2321
"myapiv1booksPOST53E2832E",
24-
"myapiv1toysA55FCBC4",
22+
"myapiv1books1D4BE6C1",
23+
"myapiv113487378",
2524
"myapiv1toysGET7348114D",
2625
"myapiv1toysPOST55128058",
27-
"myapiv1toysPUT59AFBBC2"
26+
"myapiv1toysPUT59AFBBC2",
27+
"myapiv1toysA55FCBC4"
2828
],
2929
"DeletionPolicy": "Retain"
3030
},

packages/@aws-cdk/aws-apigateway/test/test.restapi.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -525,12 +525,12 @@ export = {
525525
// THEN
526526
expect(stack).to(haveResource('My::Resource', {
527527
DependsOn: [
528-
"myapiDeploymentB7EF8EB75c091a668064a3f3a1f6d68a3fb22cf9",
529-
"myapi162F20B8",
530528
"myapiAccountC3A4750C",
531529
"myapiCloudWatchRoleEB425128",
530+
"myapiDeploymentB7EF8EB75c091a668064a3f3a1f6d68a3fb22cf9",
532531
"myapiDeploymentStageprod329F21FF",
533-
"myapiGET9B7CD29E"
532+
"myapiGET9B7CD29E",
533+
"myapi162F20B8"
534534
]
535535
}, ResourcePart.CompleteDefinition));
536536

packages/@aws-cdk/aws-autoscaling/test/test.lifecyclehooks.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ export = {
3434
// Lifecycle Hook has a dependency on the policy object
3535
expect(stack).to(haveResource('AWS::AutoScaling::LifecycleHook', {
3636
DependsOn: [
37+
"ASGLifecycleHookTransitionRoleDefaultPolicy2E50C7DB",
3738
"ASGLifecycleHookTransitionRole3AAA6BB7",
38-
"ASGLifecycleHookTransitionRoleDefaultPolicy2E50C7DB"
3939
]
4040
}, ResourcePart.CompleteDefinition));
4141

packages/@aws-cdk/aws-codebuild/test/integ.docker-asset.lit.expected.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,8 @@
197197
"Timeout": 300
198198
},
199199
"DependsOn": [
200-
"AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17",
201-
"AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleDefaultPolicy6BC8737C"
200+
"AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleDefaultPolicy6BC8737C",
201+
"AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17"
202202
]
203203
},
204204
"MyProjectRole9BBE5233": {
@@ -416,4 +416,4 @@
416416
}
417417
}
418418
}
419-
}
419+
}

packages/@aws-cdk/aws-codedeploy/test/lambda/integ.deployment-group.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,8 @@
253253
"Runtime": "nodejs8.10"
254254
},
255255
"DependsOn": [
256-
"PreHookServiceRoleC724B9BA",
257-
"PreHookServiceRoleDefaultPolicy65358F76"
256+
"PreHookServiceRoleDefaultPolicy65358F76",
257+
"PreHookServiceRoleC724B9BA"
258258
]
259259
},
260260
"PostHookServiceRoleE8A6AAC2": {

packages/@aws-cdk/aws-codepipeline/test/integ.cfn-template-from-repo.lit.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,8 @@
272272
]
273273
},
274274
"DependsOn": [
275-
"PipelineRoleD68726F7",
276-
"PipelineRoleDefaultPolicyC7A05455"
275+
"PipelineRoleDefaultPolicyC7A05455",
276+
"PipelineRoleD68726F7"
277277
]
278278
},
279279
"PipelineDeployPrepareChangesRoleD28C853C": {

packages/@aws-cdk/aws-codepipeline/test/integ.lambda-pipeline.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,8 @@
184184
]
185185
},
186186
"DependsOn": [
187-
"PipelineRoleD68726F7",
188-
"PipelineRoleDefaultPolicyC7A05455"
187+
"PipelineRoleDefaultPolicyC7A05455",
188+
"PipelineRoleD68726F7"
189189
]
190190
},
191191
"PipelineEventsRole46BEEA7C": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-alexa-deploy.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@
173173
}
174174
},
175175
"DependsOn": [
176-
"PipelineRoleD68726F7",
177-
"PipelineRoleDefaultPolicyC7A05455"
176+
"PipelineRoleDefaultPolicyC7A05455",
177+
"PipelineRoleD68726F7"
178178
]
179179
},
180180
"PipelineBucketB967BD35": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-cfn-cross-region.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@
222222
]
223223
},
224224
"DependsOn": [
225-
"MyPipelineRoleC0D47CA4",
226-
"MyPipelineRoleDefaultPolicy34F09EFA"
225+
"MyPipelineRoleDefaultPolicy34F09EFA",
226+
"MyPipelineRoleC0D47CA4"
227227
]
228228
},
229229
"CFNDeployRole68D5E8D3": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-cfn-wtih-action-role.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,8 @@
238238
}
239239
},
240240
"DependsOn": [
241-
"MyPipelineRoleC0D47CA4",
242-
"MyPipelineRoleDefaultPolicy34F09EFA"
241+
"MyPipelineRoleDefaultPolicy34F09EFA",
242+
"MyPipelineRoleC0D47CA4"
243243
]
244244
},
245245
"ActionRole60B0EDF7": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-cfn.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,8 @@
224224
]
225225
},
226226
"DependsOn": [
227-
"PipelineRoleD68726F7",
228-
"PipelineRoleDefaultPolicyC7A05455"
227+
"PipelineRoleDefaultPolicyC7A05455",
228+
"PipelineRoleD68726F7"
229229
]
230230
},
231231
"PipelineBucketB967BD35": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-code-build-multiple-inputs-outputs.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -358,8 +358,8 @@
358358
]
359359
},
360360
"DependsOn": [
361-
"PipelineRoleD68726F7",
362-
"PipelineRoleDefaultPolicyC7A05455"
361+
"PipelineRoleDefaultPolicyC7A05455",
362+
"PipelineRoleD68726F7"
363363
]
364364
},
365365
"PipelineEventsRole46BEEA7C": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-code-commit-build.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@
222222
]
223223
},
224224
"DependsOn": [
225-
"PipelineRoleD68726F7",
226-
"PipelineRoleDefaultPolicyC7A05455"
225+
"PipelineRoleDefaultPolicyC7A05455",
226+
"PipelineRoleD68726F7"
227227
]
228228
},
229229
"MyBuildProjectRole6B7E2258": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-code-commit.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,8 @@
225225
]
226226
},
227227
"DependsOn": [
228-
"PipelineRoleD68726F7",
229-
"PipelineRoleDefaultPolicyC7A05455"
228+
"PipelineRoleDefaultPolicyC7A05455",
229+
"PipelineRoleD68726F7"
230230
]
231231
},
232232
"PipelineEventsRole46BEEA7C": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-code-deploy.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -330,8 +330,8 @@
330330
]
331331
},
332332
"DependsOn": [
333-
"PipelineRoleD68726F7",
334-
"PipelineRoleDefaultPolicyC7A05455"
333+
"PipelineRoleDefaultPolicyC7A05455",
334+
"PipelineRoleD68726F7"
335335
]
336336
}
337337
}

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-ecr-source.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@
141141
}
142142
},
143143
"DependsOn": [
144-
"MyPipelineRoleC0D47CA4",
145-
"MyPipelineRoleDefaultPolicy34F09EFA"
144+
"MyPipelineRoleDefaultPolicy34F09EFA",
145+
"MyPipelineRoleC0D47CA4"
146146
]
147147
},
148148
"MyPipelineEventsRoleFAB99F32": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-events.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,8 @@
180180
]
181181
},
182182
"DependsOn": [
183-
"MyPipelineRoleC0D47CA4",
184-
"MyPipelineRoleDefaultPolicy34F09EFA"
183+
"MyPipelineRoleDefaultPolicy34F09EFA",
184+
"MyPipelineRoleC0D47CA4"
185185
]
186186
},
187187
"MyPipelineOnPipelineStateChangeA017E4B1": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-jenkins.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,8 @@
217217
]
218218
},
219219
"DependsOn": [
220-
"PipelineRoleD68726F7",
221-
"PipelineRoleDefaultPolicyC7A05455"
220+
"PipelineRoleDefaultPolicyC7A05455",
221+
"PipelineRoleD68726F7"
222222
]
223223
},
224224
"JenkinsProviderJenkinsBuildProviderResourceD9231CAC": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-manual-approval.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@
175175
}
176176
},
177177
"DependsOn": [
178-
"PipelineRoleD68726F7",
179-
"PipelineRoleDefaultPolicyC7A05455"
178+
"PipelineRoleDefaultPolicyC7A05455",
179+
"PipelineRoleD68726F7"
180180
]
181181
},
182182
"ManualApprovalTopicResource300641E2": {

packages/@aws-cdk/aws-codepipeline/test/integ.pipeline-s3-deploy.expected.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,8 @@
203203
}
204204
},
205205
"DependsOn": [
206-
"PipelineRoleD68726F7",
207-
"PipelineRoleDefaultPolicyC7A05455"
206+
"PipelineRoleDefaultPolicyC7A05455",
207+
"PipelineRoleD68726F7"
208208
]
209209
},
210210
"PipelineBucketB967BD35": {

packages/@aws-cdk/aws-ecs/test/ec2/integ.event-task.lit.expected.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,8 @@
307307
}
308308
},
309309
"DependsOn": [
310-
"EcsClusterDefaultAutoScalingGroupInstanceRole3C026863",
311-
"EcsClusterDefaultAutoScalingGroupInstanceRoleDefaultPolicy04DC6C80"
310+
"EcsClusterDefaultAutoScalingGroupInstanceRoleDefaultPolicy04DC6C80",
311+
"EcsClusterDefaultAutoScalingGroupInstanceRole3C026863"
312312
]
313313
},
314314
"EcsClusterDefaultAutoScalingGroupASGC1A785DB": {
@@ -461,8 +461,8 @@
461461
"Timeout": 310
462462
},
463463
"DependsOn": [
464-
"EcsClusterDefaultAutoScalingGroupDrainECSHookFunctionServiceRole94543EDA",
465-
"EcsClusterDefaultAutoScalingGroupDrainECSHookFunctionServiceRoleDefaultPolicyA45BF396"
464+
"EcsClusterDefaultAutoScalingGroupDrainECSHookFunctionServiceRoleDefaultPolicyA45BF396",
465+
"EcsClusterDefaultAutoScalingGroupDrainECSHookFunctionServiceRole94543EDA"
466466
]
467467
},
468468
"EcsClusterDefaultAutoScalingGroupDrainECSHookFunctionTopicE6B1EBA6": {
@@ -538,8 +538,8 @@
538538
}
539539
},
540540
"DependsOn": [
541-
"EcsClusterDefaultAutoScalingGroupLifecycleHookDrainHookRoleA38EC83B",
542-
"EcsClusterDefaultAutoScalingGroupLifecycleHookDrainHookRoleDefaultPolicy75002F88"
541+
"EcsClusterDefaultAutoScalingGroupLifecycleHookDrainHookRoleDefaultPolicy75002F88",
542+
"EcsClusterDefaultAutoScalingGroupLifecycleHookDrainHookRoleA38EC83B"
543543
]
544544
},
545545
"TaskDefTaskRole1EDB4A67": {
@@ -1031,8 +1031,8 @@
10311031
"Timeout": 300
10321032
},
10331033
"DependsOn": [
1034-
"AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17",
1035-
"AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleDefaultPolicy6BC8737C"
1034+
"AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleDefaultPolicy6BC8737C",
1035+
"AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17"
10361036
]
10371037
},
10381038
"TaskLoggingLogGroupC7E938D4": {

0 commit comments

Comments
 (0)