AUTOSCALING

AttachInstances

valid {
    input.Body.InstanceIds[_] == STRING
    input.Body.AutoScalingGroupName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AttachLoadBalancerTargetGroups

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.TargetGroupARNs[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AttachLoadBalancers

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.LoadBalancerNames[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AttachTrafficSources

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.TrafficSources[_].Identifier == STRING
    input.Body.TrafficSources[_].Type == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchDeleteScheduledAction

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ScheduledActionNames[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchPutScheduledUpdateGroupAction

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ScheduledUpdateGroupActions[_].ScheduledActionName == STRING
    input.Body.ScheduledUpdateGroupActions[_].StartTime == TIMESTAMP
    input.Body.ScheduledUpdateGroupActions[_].EndTime == TIMESTAMP
    input.Body.ScheduledUpdateGroupActions[_].Recurrence == STRING
    input.Body.ScheduledUpdateGroupActions[_].MinSize == INTEGER
    input.Body.ScheduledUpdateGroupActions[_].MaxSize == INTEGER
    input.Body.ScheduledUpdateGroupActions[_].DesiredCapacity == INTEGER
    input.Body.ScheduledUpdateGroupActions[_].TimeZone == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CancelInstanceRefresh

valid {
    input.Body.AutoScalingGroupName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CompleteLifecycleAction

valid {
    input.Body.LifecycleHookName == STRING
    input.Body.AutoScalingGroupName == STRING
    input.Body.LifecycleActionToken == STRING
    input.Body.LifecycleActionResult == STRING
    input.Body.InstanceId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAutoScalingGroup

enum_AcceleratorManufacturer := [ "nvidia", "amd", "amazon-web-services", "xilinx" ]
enum_AcceleratorName := [ "a100", "v100", "k80", "t4", "m60", "radeon-pro-v520", "vu9p" ]
enum_AcceleratorType := [ "gpu", "fpga", "inference" ]
enum_BareMetal := [ "included", "excluded", "required" ]
enum_BurstablePerformance := [ "included", "excluded", "required" ]
enum_CpuManufacturer := [ "intel", "amd", "amazon-web-services" ]
enum_InstanceGeneration := [ "current", "previous" ]
enum_LocalStorage := [ "included", "excluded", "required" ]
enum_LocalStorageType := [ "hdd", "ssd" ]

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.LaunchConfigurationName == STRING
    input.Body.LaunchTemplate.LaunchTemplateId == STRING
    input.Body.LaunchTemplate.LaunchTemplateName == STRING
    input.Body.LaunchTemplate.Version == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.LaunchTemplateId == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.LaunchTemplateName == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.Version == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceType == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].WeightedCapacity == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.LaunchTemplateId == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.LaunchTemplateName == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.Version == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.VCpuCount.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.VCpuCount.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryMiB.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryMiB.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.CpuManufacturers[_] == enum_CpuManufacturer[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryGiBPerVCpu.Min == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryGiBPerVCpu.Max == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.ExcludedInstanceTypes[_] == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.InstanceGenerations[_] == enum_InstanceGeneration[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.SpotMaxPricePercentageOverLowestPrice == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MaxSpotPriceAsPercentageOfOptimalOnDemandPrice == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.OnDemandMaxPricePercentageOverLowestPrice == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BareMetal == enum_BareMetal[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BurstablePerformance == enum_BurstablePerformance[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.RequireHibernateSupport == BOOLEAN
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkInterfaceCount.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkInterfaceCount.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.LocalStorage == enum_LocalStorage[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.LocalStorageTypes[_] == enum_LocalStorageType[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.TotalLocalStorageGB.Min == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.TotalLocalStorageGB.Max == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BaselineEbsBandwidthMbps.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BaselineEbsBandwidthMbps.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTypes[_] == enum_AcceleratorType[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorCount.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorCount.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorManufacturers[_] == enum_AcceleratorManufacturer[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorNames[_] == enum_AcceleratorName[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTotalMemoryMiB.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTotalMemoryMiB.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkBandwidthGbps.Min == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkBandwidthGbps.Max == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AllowedInstanceTypes[_] == STRING
    input.Body.MixedInstancesPolicy.InstancesDistribution.OnDemandAllocationStrategy == STRING
    input.Body.MixedInstancesPolicy.InstancesDistribution.OnDemandBaseCapacity == INTEGER
    input.Body.MixedInstancesPolicy.InstancesDistribution.OnDemandPercentageAboveBaseCapacity == INTEGER
    input.Body.MixedInstancesPolicy.InstancesDistribution.SpotAllocationStrategy == STRING
    input.Body.MixedInstancesPolicy.InstancesDistribution.SpotInstancePools == INTEGER
    input.Body.MixedInstancesPolicy.InstancesDistribution.SpotMaxPrice == STRING
    input.Body.InstanceId == STRING
    input.Body.MinSize == INTEGER
    input.Body.MaxSize == INTEGER
    input.Body.DesiredCapacity == INTEGER
    input.Body.DefaultCooldown == INTEGER
    input.Body.AvailabilityZones[_] == STRING
    input.Body.LoadBalancerNames[_] == STRING
    input.Body.TargetGroupARNs[_] == STRING
    input.Body.HealthCheckType == STRING
    input.Body.HealthCheckGracePeriod == INTEGER
    input.Body.PlacementGroup == STRING
    input.Body.VPCZoneIdentifier == STRING
    input.Body.TerminationPolicies[_] == STRING
    input.Body.NewInstancesProtectedFromScaleIn == BOOLEAN
    input.Body.CapacityRebalance == BOOLEAN
    input.Body.LifecycleHookSpecificationList[_].LifecycleHookName == STRING
    input.Body.LifecycleHookSpecificationList[_].LifecycleTransition == STRING
    input.Body.LifecycleHookSpecificationList[_].NotificationMetadata == STRING
    input.Body.LifecycleHookSpecificationList[_].HeartbeatTimeout == INTEGER
    input.Body.LifecycleHookSpecificationList[_].DefaultResult == STRING
    input.Body.LifecycleHookSpecificationList[_].NotificationTargetARN == STRING
    input.Body.LifecycleHookSpecificationList[_].RoleARN == STRING
    input.Body.Tags[_].ResourceId == STRING
    input.Body.Tags[_].ResourceType == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.Tags[_].PropagateAtLaunch == BOOLEAN
    input.Body.ServiceLinkedRoleARN == STRING
    input.Body.MaxInstanceLifetime == INTEGER
    input.Body.Context == STRING
    input.Body.DesiredCapacityType == STRING
    input.Body.DefaultInstanceWarmup == INTEGER
    input.Body.TrafficSources[_].Identifier == STRING
    input.Body.TrafficSources[_].Type == STRING
    input.Body.InstanceMaintenancePolicy.MinHealthyPercentage == INTEGER
    input.Body.InstanceMaintenancePolicy.MaxHealthyPercentage == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateLaunchConfiguration

enum_InstanceMetadataEndpointState := [ "disabled", "enabled" ]
enum_InstanceMetadataHttpTokensState := [ "optional", "required" ]

valid {
    input.Body.LaunchConfigurationName == STRING
    input.Body.ImageId == STRING
    input.Body.KeyName == STRING
    input.Body.SecurityGroups[_] == STRING
    input.Body.ClassicLinkVPCId == STRING
    input.Body.ClassicLinkVPCSecurityGroups[_] == STRING
    input.Body.UserData == STRING
    input.Body.InstanceId == STRING
    input.Body.InstanceType == STRING
    input.Body.KernelId == STRING
    input.Body.RamdiskId == STRING
    input.Body.BlockDeviceMappings[_].VirtualName == STRING
    input.Body.BlockDeviceMappings[_].DeviceName == STRING
    input.Body.BlockDeviceMappings[_].Ebs.SnapshotId == STRING
    input.Body.BlockDeviceMappings[_].Ebs.VolumeSize == INTEGER
    input.Body.BlockDeviceMappings[_].Ebs.VolumeType == STRING
    input.Body.BlockDeviceMappings[_].Ebs.DeleteOnTermination == BOOLEAN
    input.Body.BlockDeviceMappings[_].Ebs.Iops == INTEGER
    input.Body.BlockDeviceMappings[_].Ebs.Encrypted == BOOLEAN
    input.Body.BlockDeviceMappings[_].Ebs.Throughput == INTEGER
    input.Body.BlockDeviceMappings[_].NoDevice == BOOLEAN
    input.Body.InstanceMonitoring.Enabled == BOOLEAN
    input.Body.SpotPrice == STRING
    input.Body.IamInstanceProfile == STRING
    input.Body.EbsOptimized == BOOLEAN
    input.Body.AssociatePublicIpAddress == BOOLEAN
    input.Body.PlacementTenancy == STRING
    input.Body.MetadataOptions.HttpTokens == enum_InstanceMetadataHttpTokensState[_]
    input.Body.MetadataOptions.HttpPutResponseHopLimit == INTEGER
    input.Body.MetadataOptions.HttpEndpoint == enum_InstanceMetadataEndpointState[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateOrUpdateTags

valid {
    input.Body.Tags[_].ResourceId == STRING
    input.Body.Tags[_].ResourceType == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.Tags[_].PropagateAtLaunch == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAutoScalingGroup

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ForceDelete == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteLaunchConfiguration

valid {
    input.Body.LaunchConfigurationName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteLifecycleHook

valid {
    input.Body.LifecycleHookName == STRING
    input.Body.AutoScalingGroupName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteNotificationConfiguration

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.TopicARN == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeletePolicy

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.PolicyName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteScheduledAction

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ScheduledActionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteTags

valid {
    input.Body.Tags[_].ResourceId == STRING
    input.Body.Tags[_].ResourceType == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.Tags[_].PropagateAtLaunch == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteWarmPool

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ForceDelete == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAccountLimits

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ForceDelete == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAdjustmentTypes

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ForceDelete == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAutoScalingGroups

valid {
    input.Body.AutoScalingGroupNames[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAutoScalingInstances

valid {
    input.Body.InstanceIds[_] == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAutoScalingNotificationTypes

valid {
    input.Body.InstanceIds[_] == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeInstanceRefreshes

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.InstanceRefreshIds[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeLaunchConfigurations

valid {
    input.Body.LaunchConfigurationNames[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeLifecycleHookTypes

valid {
    input.Body.LaunchConfigurationNames[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeLifecycleHooks

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.LifecycleHookNames[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeLoadBalancerTargetGroups

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeLoadBalancers

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeMetricCollectionTypes

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeNotificationConfigurations

valid {
    input.Body.AutoScalingGroupNames[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribePolicies

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.PolicyNames[_] == STRING
    input.Body.PolicyTypes[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeScalingActivities

valid {
    input.Body.ActivityIds[_] == STRING
    input.Body.AutoScalingGroupName == STRING
    input.Body.IncludeDeletedGroups == BOOLEAN
    input.Body.MaxRecords == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeScalingProcessTypes

valid {
    input.Body.ActivityIds[_] == STRING
    input.Body.AutoScalingGroupName == STRING
    input.Body.IncludeDeletedGroups == BOOLEAN
    input.Body.MaxRecords == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeScheduledActions

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ScheduledActionNames[_] == STRING
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTags

valid {
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTerminationPolicyTypes

valid {
    input.Body.Filters[_].Name == STRING
    input.Body.Filters[_].Values[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTrafficSources

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.TrafficSourceType == STRING
    input.Body.NextToken == STRING
    input.Body.MaxRecords == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeWarmPool

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.MaxRecords == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetachInstances

valid {
    input.Body.InstanceIds[_] == STRING
    input.Body.AutoScalingGroupName == STRING
    input.Body.ShouldDecrementDesiredCapacity == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetachLoadBalancerTargetGroups

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.TargetGroupARNs[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetachLoadBalancers

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.LoadBalancerNames[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DetachTrafficSources

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.TrafficSources[_].Identifier == STRING
    input.Body.TrafficSources[_].Type == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisableMetricsCollection

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.Metrics[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

EnableMetricsCollection

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.Metrics[_] == STRING
    input.Body.Granularity == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

EnterStandby

valid {
    input.Body.InstanceIds[_] == STRING
    input.Body.AutoScalingGroupName == STRING
    input.Body.ShouldDecrementDesiredCapacity == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExecutePolicy

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.PolicyName == STRING
    input.Body.HonorCooldown == BOOLEAN
    input.Body.MetricValue == DOUBLE
    input.Body.BreachThreshold == DOUBLE
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExitStandby

valid {
    input.Body.InstanceIds[_] == STRING
    input.Body.AutoScalingGroupName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetPredictiveScalingForecast

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.PolicyName == STRING
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutLifecycleHook

valid {
    input.Body.LifecycleHookName == STRING
    input.Body.AutoScalingGroupName == STRING
    input.Body.LifecycleTransition == STRING
    input.Body.RoleARN == STRING
    input.Body.NotificationTargetARN == STRING
    input.Body.NotificationMetadata == STRING
    input.Body.HeartbeatTimeout == INTEGER
    input.Body.DefaultResult == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutNotificationConfiguration

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.TopicARN == STRING
    input.Body.NotificationTypes[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutScalingPolicy

enum_MetricStatistic := [ "Average", "Minimum", "Maximum", "SampleCount", "Sum" ]
enum_MetricType := [ "ASGAverageCPUUtilization", "ASGAverageNetworkIn", "ASGAverageNetworkOut", "ALBRequestCountPerTarget" ]
enum_PredefinedLoadMetricType := [ "ASGTotalCPUUtilization", "ASGTotalNetworkIn", "ASGTotalNetworkOut", "ALBTargetGroupRequestCount" ]
enum_PredefinedMetricPairType := [ "ASGCPUUtilization", "ASGNetworkIn", "ASGNetworkOut", "ALBRequestCount" ]
enum_PredefinedScalingMetricType := [ "ASGAverageCPUUtilization", "ASGAverageNetworkIn", "ASGAverageNetworkOut", "ALBRequestCountPerTarget" ]
enum_PredictiveScalingMaxCapacityBreachBehavior := [ "HonorMaxCapacity", "IncreaseMaxCapacity" ]
enum_PredictiveScalingMode := [ "ForecastAndScale", "ForecastOnly" ]

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.PolicyName == STRING
    input.Body.PolicyType == STRING
    input.Body.AdjustmentType == STRING
    input.Body.MinAdjustmentStep == INTEGER
    input.Body.MinAdjustmentMagnitude == INTEGER
    input.Body.ScalingAdjustment == INTEGER
    input.Body.Cooldown == INTEGER
    input.Body.MetricAggregationType == STRING
    input.Body.StepAdjustments[_].MetricIntervalLowerBound == DOUBLE
    input.Body.StepAdjustments[_].MetricIntervalUpperBound == DOUBLE
    input.Body.StepAdjustments[_].ScalingAdjustment == INTEGER
    input.Body.EstimatedInstanceWarmup == INTEGER
    input.Body.TargetTrackingConfiguration.PredefinedMetricSpecification.PredefinedMetricType == enum_MetricType[_]
    input.Body.TargetTrackingConfiguration.PredefinedMetricSpecification.ResourceLabel == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.MetricName == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Namespace == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Dimensions[_].Name == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Dimensions[_].Value == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Statistic == enum_MetricStatistic[_]
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Unit == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].Id == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].Expression == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].MetricStat.Metric.Namespace == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].MetricStat.Metric.MetricName == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].MetricStat.Metric.Dimensions[_].Name == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].MetricStat.Metric.Dimensions[_].Value == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].MetricStat.Stat == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].MetricStat.Unit == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].Label == STRING
    input.Body.TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics[_].ReturnData == BOOLEAN
    input.Body.TargetTrackingConfiguration.TargetValue == DOUBLE
    input.Body.TargetTrackingConfiguration.DisableScaleIn == BOOLEAN
    input.Body.Enabled == BOOLEAN
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].TargetValue == DOUBLE
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].PredefinedMetricPairSpecification.PredefinedMetricType == enum_PredefinedMetricPairType[_]
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].PredefinedMetricPairSpecification.ResourceLabel == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].PredefinedScalingMetricSpecification.PredefinedMetricType == enum_PredefinedScalingMetricType[_]
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].PredefinedScalingMetricSpecification.ResourceLabel == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].PredefinedLoadMetricSpecification.PredefinedMetricType == enum_PredefinedLoadMetricType[_]
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].PredefinedLoadMetricSpecification.ResourceLabel == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].Id == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].Expression == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Namespace == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].MetricStat.Metric.MetricName == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Dimensions[_].Name == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Dimensions[_].Value == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].MetricStat.Stat == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].MetricStat.Unit == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].Label == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedScalingMetricSpecification.MetricDataQueries[_].ReturnData == BOOLEAN
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].Id == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].Expression == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Namespace == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].MetricStat.Metric.MetricName == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Dimensions[_].Name == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Dimensions[_].Value == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].MetricStat.Stat == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].MetricStat.Unit == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].Label == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedLoadMetricSpecification.MetricDataQueries[_].ReturnData == BOOLEAN
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].Id == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].Expression == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Namespace == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].MetricStat.Metric.MetricName == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Dimensions[_].Name == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].MetricStat.Metric.Dimensions[_].Value == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].MetricStat.Stat == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].MetricStat.Unit == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].Label == STRING
    input.Body.PredictiveScalingConfiguration.MetricSpecifications[_].CustomizedCapacityMetricSpecification.MetricDataQueries[_].ReturnData == BOOLEAN
    input.Body.PredictiveScalingConfiguration.Mode == enum_PredictiveScalingMode[_]
    input.Body.PredictiveScalingConfiguration.SchedulingBufferTime == INTEGER
    input.Body.PredictiveScalingConfiguration.MaxCapacityBreachBehavior == enum_PredictiveScalingMaxCapacityBreachBehavior[_]
    input.Body.PredictiveScalingConfiguration.MaxCapacityBuffer == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutScheduledUpdateGroupAction

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ScheduledActionName == STRING
    input.Body.Time == TIMESTAMP
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.Recurrence == STRING
    input.Body.MinSize == INTEGER
    input.Body.MaxSize == INTEGER
    input.Body.DesiredCapacity == INTEGER
    input.Body.TimeZone == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutWarmPool

enum_WarmPoolState := [ "Stopped", "Running", "Hibernated" ]

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.MaxGroupPreparedCapacity == INTEGER
    input.Body.MinSize == INTEGER
    input.Body.PoolState == enum_WarmPoolState[_]
    input.Body.InstanceReusePolicy.ReuseOnScaleIn == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RecordLifecycleActionHeartbeat

valid {
    input.Body.LifecycleHookName == STRING
    input.Body.AutoScalingGroupName == STRING
    input.Body.LifecycleActionToken == STRING
    input.Body.InstanceId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ResumeProcesses

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ScalingProcesses[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RollbackInstanceRefresh

valid {
    input.Body.AutoScalingGroupName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetDesiredCapacity

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.DesiredCapacity == INTEGER
    input.Body.HonorCooldown == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetInstanceHealth

valid {
    input.Body.InstanceId == STRING
    input.Body.HealthStatus == STRING
    input.Body.ShouldRespectGracePeriod == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SetInstanceProtection

valid {
    input.Body.InstanceIds[_] == STRING
    input.Body.AutoScalingGroupName == STRING
    input.Body.ProtectedFromScaleIn == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartInstanceRefresh

enum_AcceleratorManufacturer := [ "nvidia", "amd", "amazon-web-services", "xilinx" ]
enum_AcceleratorName := [ "a100", "v100", "k80", "t4", "m60", "radeon-pro-v520", "vu9p" ]
enum_AcceleratorType := [ "gpu", "fpga", "inference" ]
enum_BareMetal := [ "included", "excluded", "required" ]
enum_BurstablePerformance := [ "included", "excluded", "required" ]
enum_CpuManufacturer := [ "intel", "amd", "amazon-web-services" ]
enum_InstanceGeneration := [ "current", "previous" ]
enum_LocalStorage := [ "included", "excluded", "required" ]
enum_LocalStorageType := [ "hdd", "ssd" ]
enum_RefreshStrategy := [ "Rolling" ]
enum_ScaleInProtectedInstances := [ "Refresh", "Ignore", "Wait" ]
enum_StandbyInstances := [ "Terminate", "Ignore", "Wait" ]

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.Strategy == enum_RefreshStrategy[_]
    input.Body.DesiredConfiguration.LaunchTemplate.LaunchTemplateId == STRING
    input.Body.DesiredConfiguration.LaunchTemplate.LaunchTemplateName == STRING
    input.Body.DesiredConfiguration.LaunchTemplate.Version == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.LaunchTemplateId == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.LaunchTemplateName == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.Version == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceType == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].WeightedCapacity == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.LaunchTemplateId == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.LaunchTemplateName == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.Version == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.VCpuCount.Min == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.VCpuCount.Max == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryMiB.Min == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryMiB.Max == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.CpuManufacturers[_] == enum_CpuManufacturer[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryGiBPerVCpu.Min == DOUBLE
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryGiBPerVCpu.Max == DOUBLE
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.ExcludedInstanceTypes[_] == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.InstanceGenerations[_] == enum_InstanceGeneration[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.SpotMaxPricePercentageOverLowestPrice == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MaxSpotPriceAsPercentageOfOptimalOnDemandPrice == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.OnDemandMaxPricePercentageOverLowestPrice == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BareMetal == enum_BareMetal[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BurstablePerformance == enum_BurstablePerformance[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.RequireHibernateSupport == BOOLEAN
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkInterfaceCount.Min == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkInterfaceCount.Max == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.LocalStorage == enum_LocalStorage[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.LocalStorageTypes[_] == enum_LocalStorageType[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.TotalLocalStorageGB.Min == DOUBLE
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.TotalLocalStorageGB.Max == DOUBLE
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BaselineEbsBandwidthMbps.Min == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BaselineEbsBandwidthMbps.Max == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTypes[_] == enum_AcceleratorType[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorCount.Min == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorCount.Max == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorManufacturers[_] == enum_AcceleratorManufacturer[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorNames[_] == enum_AcceleratorName[_]
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTotalMemoryMiB.Min == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTotalMemoryMiB.Max == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkBandwidthGbps.Min == DOUBLE
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkBandwidthGbps.Max == DOUBLE
    input.Body.DesiredConfiguration.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AllowedInstanceTypes[_] == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.InstancesDistribution.OnDemandAllocationStrategy == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.InstancesDistribution.OnDemandBaseCapacity == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.InstancesDistribution.OnDemandPercentageAboveBaseCapacity == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.InstancesDistribution.SpotAllocationStrategy == STRING
    input.Body.DesiredConfiguration.MixedInstancesPolicy.InstancesDistribution.SpotInstancePools == INTEGER
    input.Body.DesiredConfiguration.MixedInstancesPolicy.InstancesDistribution.SpotMaxPrice == STRING
    input.Body.Preferences.MinHealthyPercentage == INTEGER
    input.Body.Preferences.InstanceWarmup == INTEGER
    input.Body.Preferences.CheckpointPercentages[_] == INTEGER
    input.Body.Preferences.CheckpointDelay == INTEGER
    input.Body.Preferences.SkipMatching == BOOLEAN
    input.Body.Preferences.AutoRollback == BOOLEAN
    input.Body.Preferences.ScaleInProtectedInstances == enum_ScaleInProtectedInstances[_]
    input.Body.Preferences.StandbyInstances == enum_StandbyInstances[_]
    input.Body.Preferences.AlarmSpecification.Alarms[_] == STRING
    input.Body.Preferences.MaxHealthyPercentage == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SuspendProcesses

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.ScalingProcesses[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TerminateInstanceInAutoScalingGroup

valid {
    input.Body.InstanceId == STRING
    input.Body.ShouldDecrementDesiredCapacity == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAutoScalingGroup

enum_AcceleratorManufacturer := [ "nvidia", "amd", "amazon-web-services", "xilinx" ]
enum_AcceleratorName := [ "a100", "v100", "k80", "t4", "m60", "radeon-pro-v520", "vu9p" ]
enum_AcceleratorType := [ "gpu", "fpga", "inference" ]
enum_BareMetal := [ "included", "excluded", "required" ]
enum_BurstablePerformance := [ "included", "excluded", "required" ]
enum_CpuManufacturer := [ "intel", "amd", "amazon-web-services" ]
enum_InstanceGeneration := [ "current", "previous" ]
enum_LocalStorage := [ "included", "excluded", "required" ]
enum_LocalStorageType := [ "hdd", "ssd" ]

valid {
    input.Body.AutoScalingGroupName == STRING
    input.Body.LaunchConfigurationName == STRING
    input.Body.LaunchTemplate.LaunchTemplateId == STRING
    input.Body.LaunchTemplate.LaunchTemplateName == STRING
    input.Body.LaunchTemplate.Version == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.LaunchTemplateId == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.LaunchTemplateName == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.Version == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceType == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].WeightedCapacity == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.LaunchTemplateId == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.LaunchTemplateName == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].LaunchTemplateSpecification.Version == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.VCpuCount.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.VCpuCount.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryMiB.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryMiB.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.CpuManufacturers[_] == enum_CpuManufacturer[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryGiBPerVCpu.Min == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MemoryGiBPerVCpu.Max == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.ExcludedInstanceTypes[_] == STRING
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.InstanceGenerations[_] == enum_InstanceGeneration[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.SpotMaxPricePercentageOverLowestPrice == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.MaxSpotPriceAsPercentageOfOptimalOnDemandPrice == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.OnDemandMaxPricePercentageOverLowestPrice == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BareMetal == enum_BareMetal[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BurstablePerformance == enum_BurstablePerformance[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.RequireHibernateSupport == BOOLEAN
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkInterfaceCount.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkInterfaceCount.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.LocalStorage == enum_LocalStorage[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.LocalStorageTypes[_] == enum_LocalStorageType[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.TotalLocalStorageGB.Min == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.TotalLocalStorageGB.Max == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BaselineEbsBandwidthMbps.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.BaselineEbsBandwidthMbps.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTypes[_] == enum_AcceleratorType[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorCount.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorCount.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorManufacturers[_] == enum_AcceleratorManufacturer[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorNames[_] == enum_AcceleratorName[_]
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTotalMemoryMiB.Min == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AcceleratorTotalMemoryMiB.Max == INTEGER
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkBandwidthGbps.Min == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.NetworkBandwidthGbps.Max == DOUBLE
    input.Body.MixedInstancesPolicy.LaunchTemplate.Overrides[_].InstanceRequirements.AllowedInstanceTypes[_] == STRING
    input.Body.MixedInstancesPolicy.InstancesDistribution.OnDemandAllocationStrategy == STRING
    input.Body.MixedInstancesPolicy.InstancesDistribution.OnDemandBaseCapacity == INTEGER
    input.Body.MixedInstancesPolicy.InstancesDistribution.OnDemandPercentageAboveBaseCapacity == INTEGER
    input.Body.MixedInstancesPolicy.InstancesDistribution.SpotAllocationStrategy == STRING
    input.Body.MixedInstancesPolicy.InstancesDistribution.SpotInstancePools == INTEGER
    input.Body.MixedInstancesPolicy.InstancesDistribution.SpotMaxPrice == STRING
    input.Body.MinSize == INTEGER
    input.Body.MaxSize == INTEGER
    input.Body.DesiredCapacity == INTEGER
    input.Body.DefaultCooldown == INTEGER
    input.Body.AvailabilityZones[_] == STRING
    input.Body.HealthCheckType == STRING
    input.Body.HealthCheckGracePeriod == INTEGER
    input.Body.PlacementGroup == STRING
    input.Body.VPCZoneIdentifier == STRING
    input.Body.TerminationPolicies[_] == STRING
    input.Body.NewInstancesProtectedFromScaleIn == BOOLEAN
    input.Body.ServiceLinkedRoleARN == STRING
    input.Body.MaxInstanceLifetime == INTEGER
    input.Body.CapacityRebalance == BOOLEAN
    input.Body.Context == STRING
    input.Body.DesiredCapacityType == STRING
    input.Body.DefaultInstanceWarmup == INTEGER
    input.Body.InstanceMaintenancePolicy.MinHealthyPercentage == INTEGER
    input.Body.InstanceMaintenancePolicy.MaxHealthyPercentage == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}