group resource¶
Description¶
GroupResource is an EC2 Auto Scaling group: a fleet of instances kept at a target size from a launch template. The group is keyed by name, the one field fixed at create time; everything else is reconciled in place. CreateAutoScalingGroup accepts the size, placement, health-check, and policy fields plus the structured tags inline; the suspended processes, enabled metrics, and target groups are each reconciled by their own follow-on calls in Create and Update. Because a real instance launches, Create waits for the group to reach its target capacity before returning, and Delete drains the group to zero before removing it. Not-found is an empty describe result, never a typed exception.
Several large sub-features of the CloudFormation resource are out of scope for this port and are not modeled: mixed-instances-policy and launch-configuration (so the launch-template block is required), warm-pool, instance-refresh, traffic-source, the initial-lifecycle-hook two-step create, classic-ELB load-balancers, availability-zone-distribution, and capacity-reservation-specification. The reserved context field, the deprecated launch-configuration ELB-health wait variant, and the deletion of failed scaling activities by an ignore flag are likewise omitted; the failed-activity short-circuit itself is always applied.
Source: internal/service/autoscaling/group_rsrc.go:41
Example usage:
imports: {
aws-autoscaling: 'github.com/cloudboss/unobin-library-aws//service/autoscaling'
}
resources: {
example: aws-autoscaling.group {
# Set input fields here.
}
}
Inputs¶
name
string
min-size
integer
max-size
integer
desired-capacity
optional(integer)
desired-capacity-type
optional(string)
launch-template
object
object({
id: optional(string)
name: optional(string)
version: optional(string)
})
availability-zones
optional(list(string))
vpc-zone-identifier
optional(list(string))
default-cooldown
optional(integer)
default-instance-warmup
optional(integer)
health-check-type
optional(string)
health-check-grace-period
optional(integer)
capacity-rebalance
optional(boolean)
max-instance-lifetime
optional(integer)
placement-group
optional(string)
service-linked-role-arn
optional(string)
protect-from-scale-in
optional(boolean)
termination-policies
optional(list(string))
instance-maintenance-policy
optional(object)
optional(
object({
min-healthy-percentage: integer
max-healthy-percentage: integer
})
)
tags
optional(list(object))
optional(
list(
object({
key: string
value: string
propagate-at-launch: boolean
})
)
)
suspended-processes
optional(list(string))
enabled-metrics
optional(list(string))
metrics-granularity
optional(string)
target-group-arns
optional(list(string))
force-delete
optional(boolean)
wait-for-capacity-timeout
optional(string)
Input Constraints¶
Min size rules
min-size must be zero or greater.
Rule logic
- Require
input.min-size >= 0
Max size rules
max-size must be zero or greater.
Rule logic
- Require
input.max-size >= 0
Availability zones rules
availability-zones and vpc-zone-identifier are mutually exclusive.
Rule logic
- Require
!(@core.length(input.availability-zones ?? []) >= 1)
|| !(@core.length(input.vpc-zone-identifier ?? []) >= 1)
one of availability-zones or vpc-zone-identifier is required.
Rule logic
- Require
@core.length(input.availability-zones ?? []) >= 1
|| @core.length(input.vpc-zone-identifier ?? []) >= 1
Launch template rules
At most one of launch-template.id or launch-template.name.
launch-template requires one of id or name.
Rule logic
- Require
input.launch-template.id != null
|| input.launch-template.name != null
Desired capacity type rules
desired-capacity-type must be units, vcpu, or memory-mib.
Rule logic
- When
input.desired-capacity-type != null- Require
input.desired-capacity-type == 'units'
|| input.desired-capacity-type == 'vcpu'
|| input.desired-capacity-type == 'memory-mib'
Health check type rules
health-check-type must be EC2, ELB, or VPC_LATTICE.
Rule logic
- When
input.health-check-type != null- Require
input.health-check-type == 'EC2'
|| input.health-check-type == 'ELB'
|| input.health-check-type == 'VPC_LATTICE'
Metrics granularity rules
metrics-granularity must be 1Minute.
Rule logic
- When
input.metrics-granularity != null- Require
input.metrics-granularity == '1Minute'
Outputs¶
arn
string
availability-zones
list(string)
vpc-zone-identifier
list(string)
default-cooldown
integer
health-check-type
string
desired-capacity
integer
service-linked-role-arn
string