diff --git a/aws/validators.go b/aws/validators.go index 27d78008712c..e1c436ec3a6a 100644 --- a/aws/validators.go +++ b/aws/validators.go @@ -9,6 +9,7 @@ import ( "time" "github.com/aws/aws-sdk-go/service/apigateway" + "github.com/aws/aws-sdk-go/service/applicationautoscaling" "github.com/aws/aws-sdk-go/service/cognitoidentity" "github.com/aws/aws-sdk-go/service/cognitoidentityprovider" "github.com/aws/aws-sdk-go/service/s3" @@ -1125,8 +1126,16 @@ func validateAppautoscalingCustomizedMetricSpecificationStatistic(v interface{}, func validateAppautoscalingPredefinedMetricSpecification(v interface{}, k string) (ws []string, errors []error) { validMetrics := []string{ - "DynamoDBReadCapacityUtilization", - "DynamoDBWriteCapacityUtilization", + applicationautoscaling.MetricTypeAlbrequestCountPerTarget, + applicationautoscaling.MetricTypeDynamoDbreadCapacityUtilization, + applicationautoscaling.MetricTypeDynamoDbwriteCapacityUtilization, + applicationautoscaling.MetricTypeEc2spotFleetRequestAverageCpuutilization, + applicationautoscaling.MetricTypeEc2spotFleetRequestAverageNetworkIn, + applicationautoscaling.MetricTypeEc2spotFleetRequestAverageNetworkOut, + applicationautoscaling.MetricTypeEcsserviceAverageCpuutilization, + applicationautoscaling.MetricTypeEcsserviceAverageMemoryUtilization, + applicationautoscaling.MetricTypeRdsreaderAverageCpuutilization, + applicationautoscaling.MetricTypeRdsreaderAverageDatabaseConnections, } metric := v.(string) for _, o := range validMetrics { diff --git a/aws/validators_test.go b/aws/validators_test.go index 17a89aa14140..8904a6248a73 100644 --- a/aws/validators_test.go +++ b/aws/validators_test.go @@ -2864,6 +2864,65 @@ func TestResourceAWSElastiCacheReplicationGroupAuthTokenValidation(t *testing.T) } } +func TestValidateAppautoscalingPredefinedMetricSpecification(t *testing.T) { + cases := []struct { + Value string + ErrCount int + }{ + { + Value: "ALBRequestCountPerTarget", + ErrCount: 0, + }, + { + Value: "DynamoDBReadCapacityUtilization", + ErrCount: 0, + }, + { + Value: "DynamoDBWriteCapacityUtilization", + ErrCount: 0, + }, + { + Value: "EC2SpotFleetRequestAverageCPUUtilization", + ErrCount: 0, + }, + { + Value: "EC2SpotFleetRequestAverageNetworkIn", + ErrCount: 0, + }, + { + Value: "EC2SpotFleetRequestAverageNetworkOut", + ErrCount: 0, + }, + { + Value: "ECSServiceAverageCPUUtilization", + ErrCount: 0, + }, + { + Value: "ECSServiceAverageMemoryUtilization", + ErrCount: 0, + }, + { + Value: "RDSReaderAverageCPUUtilization", + ErrCount: 0, + }, + { + Value: "RDSReaderAverageDatabaseConnections", + ErrCount: 0, + }, + { + Value: "NotValid", + ErrCount: 1, + }, + } + for _, tc := range cases { + _, errors := validateAppautoscalingPredefinedMetricSpecification(tc.Value, "predefined_metric_type") + + if len(errors) != tc.ErrCount { + t.Fatalf("Expected %d errors, got %d: %s", tc.ErrCount, len(errors), errors) + } + } +} + func TestValidateCognitoUserPoolDomain(t *testing.T) { validTypes := []string{ "valid-domain",