AWS Security ChangesHomeSearch

AWS AWSCloudFormation documentation change

Service: AWSCloudFormation · 2025-12-16 · Documentation low

File: AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.md

Summary

Expanded ALBRequestCountPerTarget policy example with full resource definitions

Security assessment

Adds more complete template examples showing security group configuration, but this demonstrates existing security best practices rather than introducing new security features or addressing vulnerabilities.

Diff

diff --git a/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.md b/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.md
index 9d578ea98..3594bee01 100644
--- a//AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.md
+++ b//AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-scalingpolicy.md
@@ -294,5 +294,25 @@ The following template snippet shows a predictive scaling policy configuration t
-    { "AWSTemplateFormatVersion":"2010-09-09", "Resources":{ "myPredictiveScalingPolicy":{
-        "Type":"AWS::AutoScaling::ScalingPolicy", "Properties":{ "AutoScalingGroupName":{ "Ref":"myASG" },
-        "PolicyType":"PredictiveScaling", "PredictiveScalingConfiguration":{ "MetricSpecifications":[ { "TargetValue":70,
-        "PredefinedMetricPairSpecification":{ "PredefinedMetricType":"ASGCPUUtilization" } } ], "Mode":"ForecastOnly" } } }
-        } }
+    {
+      "AWSTemplateFormatVersion":"2010-09-09",
+      "Resources":{
+        "myPredictiveScalingPolicy":{
+          "Type":"AWS::AutoScaling::ScalingPolicy",
+          "Properties":{
+            "AutoScalingGroupName":{
+              "Ref":"myASG"
+            },
+            "PolicyType":"PredictiveScaling",
+            "PredictiveScalingConfiguration":{
+              "MetricSpecifications":[
+                {
+                  "TargetValue":70,
+                  "PredefinedMetricPairSpecification":{
+                    "PredefinedMetricType":"ASGCPUUtilization"
+                  }
+                }
+              ],
+              "Mode":"ForecastOnly"
+            }
+          }
+        }
+      }
+    }
@@ -303,4 +323,13 @@ The following template snippet shows a predictive scaling policy configuration t
-    AWSTemplateFormatVersion: 2010-09-09 Resources: myPredictiveScalingPolicy: Type:
-        'AWS::AutoScaling::ScalingPolicy' Properties: AutoScalingGroupName: !Ref myASG PolicyType: PredictiveScaling
-        PredictiveScalingConfiguration: MetricSpecifications: - TargetValue: '70' PredefinedMetricPairSpecification:
-        PredefinedMetricType: ASGCPUUtilization Mode: ForecastOnly
+    AWSTemplateFormatVersion: 2010-09-09
+    Resources:
+      myPredictiveScalingPolicy:
+        Type: 'AWS::AutoScaling::ScalingPolicy'
+        Properties:
+          AutoScalingGroupName: !Ref myASG
+          PolicyType: PredictiveScaling
+          PredictiveScalingConfiguration:
+            MetricSpecifications:
+              - TargetValue: '70'
+                PredefinedMetricPairSpecification:
+                  PredefinedMetricType: ASGCPUUtilization
+            Mode: ForecastOnly
@@ -321,28 +350,147 @@ To create a scaling policy for the `ALBRequestCountPerTarget` metric and the loa
-    { "AWSTemplateFormatVersion":"2010-09-09", "Parameters":{ "AmiId":{ "Type":"String" },
-        "Subnets":{ "Type": "List<AWS::EC2::Subnet::Id>", "Description": "At least two public subnets in different
-        Availability Zones in the selected VPC" }, "VPC":{ "Type": "AWS::EC2::VPC::Id", "Description": "A VPC that allows
-        the load balancer access to the Internet" }, "InstanceSecurityGroup":{ "Type":
-        "List<AWS::EC2::SecurityGroup::Id>", "Description": "A security group in the selected VPC that allows HTTP
-        access on the inbound port" }, "CPUPolicyTargetValue":{ "Type":"String", "Description": "The target utilization for
-        the CPU metric" }, "ALBRequestCountTargetValue":{ "Type":"String", "Description": "The optimal average request count
-        per instance during any one-minute interval" } }, "Resources":{ "myLoadBalancer":{
-        "Type":"AWS::ElasticLoadBalancingV2::LoadBalancer", "Properties":{ "Subnets":{ "Ref":"Subnets" } } },
-        "myLoadBalancerListener":{ "Type":"AWS::ElasticLoadBalancingV2::Listener", "Properties":{ "DefaultActions":[ {
-        "TargetGroupArn":{ "Ref":"myTargetGroup" }, "Type":"forward" } ], "LoadBalancerArn":{ "Ref":"myLoadBalancer" },
-        "Port":80, "Protocol":"HTTP" } }, "myTargetGroup":{ "Type":"AWS::ElasticLoadBalancingV2::TargetGroup",
-        "Properties":{ "Name":"myTargetGroup", "Port":80, "Protocol":"HTTP", "VpcId":{ "Ref":"VPC" } } },
-        "myLaunchTemplate": { "Type": "AWS::EC2::LaunchTemplate", "Properties": { "LaunchTemplateName": { "Fn::Sub":
-        "${AWS::StackName}-launch-template" }, "LaunchTemplateData": { "ImageId": { "Ref": "AmiId" }, "InstanceType":
-        "t3.micro", "SecurityGroupIds": [ { "Ref":"InstanceSecurityGroup" } ], "Monitoring": { "Enabled": true } } } },
-        "myASG":{ "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "LaunchTemplate": { "LaunchTemplateId": {
-        "Ref": "myLaunchTemplate" }, "Version": { "Fn::GetAtt": [ "myLaunchTemplate", "LatestVersionNumber" ] } },
-        "MaxSize":"2", "MinSize":"1", "DefaultInstanceWarmup": 30, "VPCZoneIdentifier": { "Ref":"Subnets" },
-        "TargetGroupARNs":[ { "Ref":"myTargetGroup" } ] } }, "myCPUPolicy":{ "Type":"AWS::AutoScaling::ScalingPolicy",
-        "Properties":{ "AutoScalingGroupName":{ "Ref":"myASG" }, "PolicyType":"TargetTrackingScaling",
-        "TargetTrackingConfiguration":{ "PredefinedMetricSpecification":{ "PredefinedMetricType":"ASGAverageCPUUtilization"
-        }, "TargetValue":{ "Ref":"CPUPolicyTargetValue" } } } }, "myALBRequestCountPolicy":{
-        "Type":"AWS::AutoScaling::ScalingPolicy", "DependsOn" : "myLoadBalancerListener", "Properties":{
-        "AutoScalingGroupName":{ "Ref":"myASG" }, "PolicyType":"TargetTrackingScaling", "TargetTrackingConfiguration":{
-        "PredefinedMetricSpecification":{ "PredefinedMetricType":"ALBRequestCountPerTarget", "ResourceLabel":{ "Fn::Join":[
-        "/", [ { "Fn::GetAtt":[ "myLoadBalancer", "LoadBalancerFullName" ] }, { "Fn::GetAtt":[ "myTargetGroup",
-        "TargetGroupFullName" ] } ] ] } }, "TargetValue":{ "Ref":"ALBRequestCountTargetValue" } } } } } }
+    {
+      "AWSTemplateFormatVersion":"2010-09-09",
+      "Parameters":{
+        "AmiId":{
+          "Type":"String"
+        },
+        "Subnets":{
+          "Type": "List<AWS::EC2::Subnet::Id>",
+          "Description": "At least two public subnets in different Availability Zones in the selected VPC"
+        },
+        "VPC":{
+          "Type": "AWS::EC2::VPC::Id",
+          "Description": "A VPC that allows the load balancer access to the Internet"
+        },
+        "InstanceSecurityGroup":{
+          "Type": "List<AWS::EC2::SecurityGroup::Id>",
+          "Description": "A security group in the selected VPC that allows HTTP access on the inbound port"
+        },
+        "CPUPolicyTargetValue":{
+          "Type":"String",
+          "Description": "The target utilization for the CPU metric"
+        },
+        "ALBRequestCountTargetValue":{
+          "Type":"String",
+          "Description": "The optimal average request count per instance during any one-minute interval"
+        }
+      },
+      "Resources":{
+        "myLoadBalancer":{
+          "Type":"AWS::ElasticLoadBalancingV2::LoadBalancer",
+          "Properties":{
+            "Subnets":{
+              "Ref":"Subnets"
+            }
+          }
+        },
+        "myLoadBalancerListener":{
+          "Type":"AWS::ElasticLoadBalancingV2::Listener",
+          "Properties":{
+            "DefaultActions":[
+              {
+                "TargetGroupArn":{
+                  "Ref":"myTargetGroup"
+                },
+                "Type":"forward"
+              }
+            ],
+            "LoadBalancerArn":{
+              "Ref":"myLoadBalancer"
+            },
+            "Port":80,
+            "Protocol":"HTTP"
+          }
+        },
+        "myTargetGroup":{
+          "Type":"AWS::ElasticLoadBalancingV2::TargetGroup",
+          "Properties":{
+            "Name":"myTargetGroup",
+            "Port":80,
+            "Protocol":"HTTP",
+            "VpcId":{
+              "Ref":"VPC"
+            }
+          }
+        },
+        "myLaunchTemplate": {
+          "Type": "AWS::EC2::LaunchTemplate",
+          "Properties": {
+            "LaunchTemplateName": { "Fn::Sub": "${AWS::StackName}-launch-template" },
+            "LaunchTemplateData": {
+              "ImageId": { "Ref": "AmiId" },
+              "InstanceType": "t3.micro",
+              "SecurityGroupIds": [ { "Ref":"InstanceSecurityGroup" } ],
+              "Monitoring": { "Enabled": true }
+            }
+          }
+        },
+        "myASG":{
+          "Type":"AWS::AutoScaling::AutoScalingGroup",
+          "Properties":{
+            "LaunchTemplate": {
+              "LaunchTemplateId": { "Ref": "myLaunchTemplate" },
+              "Version": { "Fn::GetAtt": [ "myLaunchTemplate", "LatestVersionNumber" ] }
+            },      
+            "MaxSize":"2",
+            "MinSize":"1",
+            "DefaultInstanceWarmup": 30,
+            "VPCZoneIdentifier": { "Ref":"Subnets" },
+            "TargetGroupARNs":[ { "Ref":"myTargetGroup" } ]
+          }
+        },
+        "myCPUPolicy":{
+          "Type":"AWS::AutoScaling::ScalingPolicy",
+          "Properties":{
+            "AutoScalingGroupName":{
+              "Ref":"myASG"
+            },
+            "PolicyType":"TargetTrackingScaling",
+            "TargetTrackingConfiguration":{
+              "PredefinedMetricSpecification":{
+                "PredefinedMetricType":"ASGAverageCPUUtilization"
+              },
+              "TargetValue":{
+                "Ref":"CPUPolicyTargetValue"
+              }
+            }
+          }
+        },
+        "myALBRequestCountPolicy":{
+          "Type":"AWS::AutoScaling::ScalingPolicy",
+          "DependsOn" : "myLoadBalancerListener",
+          "Properties":{
+            "AutoScalingGroupName":{
+              "Ref":"myASG"
+            },
+            "PolicyType":"TargetTrackingScaling",
+            "TargetTrackingConfiguration":{
+              "PredefinedMetricSpecification":{