-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
(aws-autoscaling): AutoScalingGroup.requireImdsv2 throws error with LaunchTemplates #27586
Comments
Hi @patlougheed , thanks for reaching out. I tried to reproduce the error with this updated code -
I can confirm the error. Here is a similiar non-responsive issue created in the past as well. Marking this as P1. |
…unchTemplates (#27648) This PR fixes the bug that AutoScalingGroup.requireImdsv2 throws error with LaunchTemplates. This handles `LaunchTemplate` in `AutoScalingGroupRequireImdsv2Aspect` when a feature flag `AUTOSCALING_GENERATE_LAUNCH_TEMPLATE` is true. Closes #27586. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
|
…unchTemplates (#27648) This PR fixes the bug that AutoScalingGroup.requireImdsv2 throws error with LaunchTemplates. This handles `LaunchTemplate` in `AutoScalingGroupRequireImdsv2Aspect` when a feature flag `AUTOSCALING_GENERATE_LAUNCH_TEMPLATE` is true. Closes #27586. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Hi folks - this problem appears to also exist when using A LaunchTemplate with a MixedInstancesPolicy and |
Going to see if I can get a PR on the go for the above issue |
I also get the above error, but was able to solve it by setting
|
Made a pull request adding a check for |
…e or mixedInstancesPolicy throws unclear error (#32220) ### Issue #27586 Fixes #27586 The above issue is already marked as closed, but there is some discussion in it about an additional edge case that this pull request fixes. ### Reason for this change When defining an AutoScalingGroup with both the `requireImdsv2` prop and the `launchTemplate` prop, the error message is not clear about the problem. ``` // example asg definition const asg = new AutoScalingGroup(this, "myasg", { vpc, launchTemplate: lt, requireImdsv2: true, }); ``` ``` TypeError: Cannot read properties of undefined (reading 'node') at AutoScalingGroupRequireImdsv2Aspect.visit (~/git/cdkApp2/node_modules/aws-cdk-lib/aws-autoscaling/lib/aspects/require-imdsv2-aspect.js:1:715) at recurse (~/git/cdkApp2/node_modules/aws-cdk-lib/core/lib/private/synthesis.js:2:2236) at recurse (~/git/cdkApp2/node_modules/aws-cdk-lib/core/lib/private/synthesis.js:2:2600) at recurse (~/git/cdkApp2/node_modules/aws-cdk-lib/core/lib/private/synthesis.js:2:2600) at invokeAspects (~/git/cdkApp2/node_modules/aws-cdk-lib/core/lib/private/synthesis.js:2:1860) at synthesize (~/git/cdkApp2/node_modules/aws-cdk-lib/core/lib/private/synthesis.js:1:1473) at App.synth (~/git/cdkApp2/node_modules/aws-cdk-lib/core/lib/stage.js:1:2382) at process.<anonymous> (~/git/cdkApp2/node_modules/aws-cdk-lib/core/lib/app.js:1:1767) at Object.onceWrapper (node:events:632:26) at process.emit (node:events:517:28) ``` It is not clear from the error that `requireImdsv2` should be set in the provided launchTemplate itself rather than the AutoScalingGroup. The error occurs because setting `requireImdsv2` on the AutoScalingGroup adds the aspect AutoScalingGroupRequireImdsv2Aspect to it, which expects there to be a child node called either `'LaunchConfig'` or `'LaunchTemplate'` depending on a feature flag. This child node is only set in the AutoScalingGroup when neither `launchTemplate` nor `mixedInstancesPolicy` props are provided. ### Description of changes Add the `requireImdsv2` prop to the `verifyNoLaunchConfigPropIsGiven` method, which throws errors when certains props are set at the same time as `launchTemplate` or `mixedInstancesPolicy`. ### Description of how you validated changes - Added a unit test - Confirmed the new error message works in a sample cdk app ``` Error: Setting 'requireImdsv2' must not be set when 'launchTemplate' or 'mixedInstancesPolicy' is set at AutoScalingGroup.verifyNoLaunchConfigPropIsGiven (~/git/aws-cdk/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts:1762:13) at new AutoScalingGroup (~/git/aws-cdk/packages/aws-cdk-lib/aws-autoscaling/lib/auto-scaling-group.ts:1333:12) at new CdkAppStack (~/git/cdkApp/lib/cdk_app-stack.ts:31:17) at Object.<anonymous> (~/git/cdkApp/bin/cdk_app.ts:6:1) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module.m._compile (~/git/cdkApp/node_modules/ts-node/src/index.ts:1618:23) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Object.require.extensions.<computed> [as .ts] (~/git/cdkApp/node_modules/ts-node/src/index.ts:1621:12) at Module.load (node:internal/modules/cjs/loader:1119:32) at Function.Module._load (node:internal/modules/cjs/loader:960:12) ``` ### Checklist - [X] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Describe the bug
When configuring an AutoScalingGroup with
requireImdsv2
set to true and thegenerateLaunchTemplateInsteadOfLaunchConfig
context flag set to true,cdk synth
throws an error:Expected Behavior
No error; launch template should have
LaunchTemplateData.MetadataOptions.HttpTokens
set to "required" in resulting CloudFormation output.Current Behavior
cdk synth
yields:Reproduction Steps
In stack.py:
In cdk.json:
Then run
cdk synth
.Possible Solution
aws-autoscaling/lib/aspects/require-imdsv2-aspect.ts appears to target
LaunchConfiguration
s only, notLaunchTemplate
s.It similar aspect in (aws-ec2)[https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/aws-ec2/lib/aspects/require-imdsv2-aspect.ts] has similar code that appears to support
LaunchTemplate
s.Additional Information/Context
No response
CDK CLI Version
2.101.1
Framework Version
2.101.1
Node.js Version
v20.7.0
OS
MacOS 14
Language
Python
Language Version
Python 3.10.9
Other information
No response
The text was updated successfully, but these errors were encountered: