AWS code-library documentation change
Summary
Updated Auto Scaling example to use direct configuration instead of CloudFormation, simplified VPC handling, and modified region/parameter usage
Security assessment
Changes focus on simplifying the example by removing CloudFormation dependencies and hardcoding values. No security vulnerabilities or security feature enhancements are addressed. The removal of dynamic VPC/subnet resolution could impact network security configuration practices but doesn't directly indicate a security fix.
Diff
diff --git a/code-library/latest/ug/auto-scaling_example_auto-scaling_Scenario_GroupsAndInstances_section.md b/code-library/latest/ug/auto-scaling_example_auto-scaling_Scenario_GroupsAndInstances_section.md index d98b25d1a..fec4f31e3 100644 --- a//code-library/latest/ug/auto-scaling_example_auto-scaling_Scenario_GroupsAndInstances_section.md +++ b//code-library/latest/ug/auto-scaling_example_auto-scaling_Scenario_GroupsAndInstances_section.md @@ -7 +7 @@ There are more AWS SDK examples available in the [AWS Doc SDK Examples](https:// -# Learn the basics of Auto Scaling with an AWS SDK +# Learn the basics of Amazon EC2 Auto Scaling with an AWS SDK @@ -384 +384 @@ There's more on GitHub. Find the complete example and learn how to set up and ru -Define functions that are called by the scenario to manage launch templates and metrics. These functions wrap Auto Scaling, Amazon EC2, and CloudWatch actions. +Define functions that are called by the scenario to manage launch templates and metrics. These functions wrap Amazon EC2 Auto Scaling, Amazon EC2, and CloudWatch actions. @@ -1684 +1684 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - private static final String ROLES_STACK = "MyCdkAutoScaleStack"; + @@ -1689 +1689 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - <groupName> + <groupName> <launchTemplateName> <vpcZoneId> @@ -1692,0 +1693,2 @@ There's more on GitHub. Find the complete example and learn how to set up and ru + launchTemplateName - The name of the launch template.\s + vpcZoneId - A subnet Id for a virtual private cloud (VPC) where instances in the Auto Scaling group can be created. @@ -1695 +1697,9 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - String groupName = "MyAutoScalingGroup2"; + //if (args.length != 3) { + // System.out.println(usage); + // System.exit(1); + // } + + String groupName = "Scott250" ; //rgs[0]; + String launchTemplateName = "MyTemplate5" ;//args[1]; + String vpcZoneId = "subnet-0ddc451b8a8a1aa44" ; //args[2]; + @@ -1697 +1707 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - .region(Region.US_WEST_2) + .region(Region.US_EAST_1) @@ -1700,3 +1710 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - Ec2Client ec2 = Ec2Client.builder() - .region(Region.US_WEST_2) - .build(); + Ec2Client ec2 = Ec2Client.create(); @@ -1709,8 +1716,0 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - System.out.println("First, we will create a launch template using a CloudFormation script"); - CloudFormationHelper.deployCloudFormationStack(ROLES_STACK); - Map<String, String> stackOutputs = CloudFormationHelper.getStackOutputsAsync(ROLES_STACK).join(); - String launchTemplateName = stackOutputs.get("LaunchTemplateNameOutput"); - String vpcZoneId = getVPC(ec2); - updateTemlate(ec2, launchTemplateName ); - System.out.println("The VPC zone id created by the CloudFormation stack is"+vpcZoneId); - @@ -1718,2 +1718 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - createAutoScalingGroup(autoScalingClient, ec2, groupName, launchTemplateName, vpcZoneId); - + createAutoScalingGroup(autoScalingClient, groupName, launchTemplateName, vpcZoneId); @@ -1790,2 +1789 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - System.out.println("13. Delete the Auto Scaling group and cloud formation resources"); - CloudFormationHelper.destroyCloudFormationStack(ROLES_STACK); + System.out.println("13. Delete the Auto Scaling group"); @@ -1802,50 +1799,0 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - public static String getVPC(Ec2Client ec2) { - try { - DescribeVpcsRequest request = DescribeVpcsRequest.builder() - .filters(f -> f.name("isDefault").values("true")) - .build(); - - DescribeVpcsResponse response = ec2.describeVpcs(request); - - if (!response.vpcs().isEmpty()) { - Vpc defaultVpc = response.vpcs().get(0); - System.out.println("Default VPC ID: " + defaultVpc.vpcId()); - return defaultVpc.vpcId(); - } else { - System.out.println("No default VPC found."); - return null; // Return null if no default VPC is found - } - - } catch (Ec2Exception e) { - System.err.println("EC2 error: " + e.awsErrorDetails().errorMessage()); - return null; // Return null in case of an error - } - } - - - public static void updateTemlate(Ec2Client ec2, String launchTemplateName ) { - // Step 1: Create new launch template version - String newAmiId = "ami-0025f0db847eb6254"; - RequestLaunchTemplateData launchTemplateData = RequestLaunchTemplateData.builder() - .imageId(newAmiId) - .build(); - - CreateLaunchTemplateVersionRequest createVersionRequest = CreateLaunchTemplateVersionRequest.builder() - .launchTemplateName(launchTemplateName) - .versionDescription("Updated with valid AMI") - .sourceVersion("1") - .launchTemplateData(launchTemplateData) - .build(); - - CreateLaunchTemplateVersionResponse createResponse = ec2.createLaunchTemplateVersion(createVersionRequest); - int newVersionNumber = createResponse.launchTemplateVersion().versionNumber().intValue(); - - // Step 2: Modify default version - ModifyLaunchTemplateRequest modifyRequest = ModifyLaunchTemplateRequest.builder() - .launchTemplateName(launchTemplateName) - .defaultVersion(String.valueOf(newVersionNumber)) - .build(); - - ec2.modifyLaunchTemplate(modifyRequest); - System.out.println("Updated launch template to version " + newVersionNumber + " with AMI " + newAmiId); - } @@ -1892 +1839,0 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - Ec2Client ec2Client, @@ -1895 +1842 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - String vpcId) { + String vpcZoneId) { @@ -1897,15 +1844 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - // Step 1: Get one subnet ID in the given VPC - DescribeSubnetsRequest subnetRequest = DescribeSubnetsRequest.builder() - .filters(Filter.builder().name("vpc-id").values(vpcId).build()) - .build(); - - DescribeSubnetsResponse subnetResponse = ec2Client.describeSubnets(subnetRequest); - - if (subnetResponse.subnets().isEmpty()) { - throw new RuntimeException("No subnets found in VPC: " + vpcId); - } - - String subnetId = subnetResponse.subnets().get(0).subnetId(); // Use first subnet - System.out.println("Using subnet: " + subnetId); - - // Step 2: Create launch template reference + AutoScalingWaiter waiter = autoScalingClient.waiter(); @@ -1916 +1848,0 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - // Step 3: Create Auto Scaling group @@ -1918,0 +1851 @@ There's more on GitHub. Find the complete example and learn how to set up and ru + .availabilityZones("us-east-1a") @@ -1920 +1852,0 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - .minSize(1) @@ -1922 +1854,2 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - .vpcZoneIdentifier(subnetId) // Correct: subnet ID, not VPC ID + .minSize(1) + .vpcZoneIdentifier(vpcZoneId) @@ -1926,3 +1858,0 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - - // Step 4: Wait until group is created - AutoScalingWaiter waiter = autoScalingClient.waiter(); @@ -1933,3 +1863,2 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - WaiterResponse<DescribeAutoScalingGroupsResponse> waiterResponse = - waiter.waitUntilGroupExists(groupsRequest); - + WaiterResponse<DescribeAutoScalingGroupsResponse> waiterResponse = waiter + .waitUntilGroupExists(groupsRequest); @@ -1939,2 +1868,2 @@ There's more on GitHub. Find the complete example and learn how to set up and ru - } catch (Ec2Exception | AutoScalingException e) { - System.err.println("Error: " + e.awsErrorDetails().errorMessage()); + } catch (AutoScalingException e) { + System.err.println(e.awsErrorDetails().errorMessage()); @@ -4194 +4123 @@ To use the Amazon Web Services Documentation, Javascript must be enabled. Please -Hello Auto Scaling +Hello Amazon EC2 Auto Scaling