COMPUTE-OPTIMIZER

DeleteRecommendationPreferences

enum_RecommendationPreferenceName := [ "EnhancedInfrastructureMetrics", "InferredWorkloadTypes", "ExternalMetricsPreference", "LookBackPeriodPreference", "PreferredResources", "UtilizationPreferences" ]
enum_ResourceType := [ "Ec2Instance", "AutoScalingGroup", "EbsVolume", "LambdaFunction", "NotApplicable", "EcsService", "License", "RdsDBInstance", "Idle" ]
enum_ScopeName := [ "Organization", "AccountId", "ResourceArn" ]

valid {
    input.Body.resourceType == enum_ResourceType[_]
    input.Body.scope.name == enum_ScopeName[_]
    input.Body.scope.value == STRING
    input.Body.recommendationPreferenceNames[_] == enum_RecommendationPreferenceName[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeRecommendationExportJobs

enum_JobFilterName := [ "ResourceType", "JobStatus" ]

valid {
    input.Body.jobIds[_] == STRING
    input.Body.filters[_].name == enum_JobFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportAutoScalingGroupRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_ExportableAutoScalingGroupField := [ "AccountId", "AutoScalingGroupArn", "AutoScalingGroupName", "Finding", "UtilizationMetricsCpuMaximum", "UtilizationMetricsMemoryMaximum", "UtilizationMetricsEbsReadOpsPerSecondMaximum", "UtilizationMetricsEbsWriteOpsPerSecondMaximum", "UtilizationMetricsEbsReadBytesPerSecondMaximum", "UtilizationMetricsEbsWriteBytesPerSecondMaximum", "UtilizationMetricsDiskReadOpsPerSecondMaximum", "UtilizationMetricsDiskWriteOpsPerSecondMaximum", "UtilizationMetricsDiskReadBytesPerSecondMaximum", "UtilizationMetricsDiskWriteBytesPerSecondMaximum", "UtilizationMetricsNetworkInBytesPerSecondMaximum", "UtilizationMetricsNetworkOutBytesPerSecondMaximum", "UtilizationMetricsNetworkPacketsInPerSecondMaximum", "UtilizationMetricsNetworkPacketsOutPerSecondMaximum", "LookbackPeriodInDays", "CurrentConfigurationInstanceType", "CurrentConfigurationDesiredCapacity", "CurrentConfigurationMinSize", "CurrentConfigurationMaxSize", "CurrentOnDemandPrice", "CurrentStandardOneYearNoUpfrontReservedPrice", "CurrentStandardThreeYearNoUpfrontReservedPrice", "CurrentVCpus", "CurrentMemory", "CurrentStorage", "CurrentNetwork", "RecommendationOptionsConfigurationInstanceType", "RecommendationOptionsConfigurationDesiredCapacity", "RecommendationOptionsConfigurationMinSize", "RecommendationOptionsConfigurationMaxSize", "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum", "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum", "RecommendationOptionsPerformanceRisk", "RecommendationOptionsOnDemandPrice", "RecommendationOptionsStandardOneYearNoUpfrontReservedPrice", "RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice", "RecommendationOptionsVcpus", "RecommendationOptionsMemory", "RecommendationOptionsStorage", "RecommendationOptionsNetwork", "LastRefreshTimestamp", "CurrentPerformanceRisk", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "EffectiveRecommendationPreferencesCpuVendorArchitectures", "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics", "EffectiveRecommendationPreferencesInferredWorkloadTypes", "EffectiveRecommendationPreferencesPreferredResources", "EffectiveRecommendationPreferencesLookBackPeriod", "InferredWorkloadTypes", "RecommendationOptionsMigrationEffort", "CurrentInstanceGpuInfo", "RecommendationOptionsInstanceGpuInfo", "UtilizationMetricsGpuPercentageMaximum", "UtilizationMetricsGpuMemoryPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]
enum_FilterName := [ "Finding", "FindingReasonCodes", "RecommendationSourceType", "InferredWorkloadTypes" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_FilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableAutoScalingGroupField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportEBSVolumeRecommendations

enum_EBSFilterName := [ "Finding" ]
enum_ExportableVolumeField := [ "AccountId", "VolumeArn", "Finding", "UtilizationMetricsVolumeReadOpsPerSecondMaximum", "UtilizationMetricsVolumeWriteOpsPerSecondMaximum", "UtilizationMetricsVolumeReadBytesPerSecondMaximum", "UtilizationMetricsVolumeWriteBytesPerSecondMaximum", "LookbackPeriodInDays", "CurrentConfigurationVolumeType", "CurrentConfigurationVolumeBaselineIOPS", "CurrentConfigurationVolumeBaselineThroughput", "CurrentConfigurationVolumeBurstIOPS", "CurrentConfigurationVolumeBurstThroughput", "CurrentConfigurationVolumeSize", "CurrentMonthlyPrice", "RecommendationOptionsConfigurationVolumeType", "RecommendationOptionsConfigurationVolumeBaselineIOPS", "RecommendationOptionsConfigurationVolumeBaselineThroughput", "RecommendationOptionsConfigurationVolumeBurstIOPS", "RecommendationOptionsConfigurationVolumeBurstThroughput", "RecommendationOptionsConfigurationVolumeSize", "RecommendationOptionsMonthlyPrice", "RecommendationOptionsPerformanceRisk", "LastRefreshTimestamp", "CurrentPerformanceRisk", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "Tags", "RootVolume", "CurrentConfigurationRootVolume", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_EBSFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableVolumeField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportEC2InstanceRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_ExportableInstanceField := [ "AccountId", "InstanceArn", "InstanceName", "Finding", "FindingReasonCodes", "LookbackPeriodInDays", "CurrentInstanceType", "UtilizationMetricsCpuMaximum", "UtilizationMetricsMemoryMaximum", "UtilizationMetricsEbsReadOpsPerSecondMaximum", "UtilizationMetricsEbsWriteOpsPerSecondMaximum", "UtilizationMetricsEbsReadBytesPerSecondMaximum", "UtilizationMetricsEbsWriteBytesPerSecondMaximum", "UtilizationMetricsDiskReadOpsPerSecondMaximum", "UtilizationMetricsDiskWriteOpsPerSecondMaximum", "UtilizationMetricsDiskReadBytesPerSecondMaximum", "UtilizationMetricsDiskWriteBytesPerSecondMaximum", "UtilizationMetricsNetworkInBytesPerSecondMaximum", "UtilizationMetricsNetworkOutBytesPerSecondMaximum", "UtilizationMetricsNetworkPacketsInPerSecondMaximum", "UtilizationMetricsNetworkPacketsOutPerSecondMaximum", "CurrentOnDemandPrice", "CurrentStandardOneYearNoUpfrontReservedPrice", "CurrentStandardThreeYearNoUpfrontReservedPrice", "CurrentVCpus", "CurrentMemory", "CurrentStorage", "CurrentNetwork", "RecommendationOptionsInstanceType", "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum", "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum", "RecommendationOptionsPlatformDifferences", "RecommendationOptionsPerformanceRisk", "RecommendationOptionsVcpus", "RecommendationOptionsMemory", "RecommendationOptionsStorage", "RecommendationOptionsNetwork", "RecommendationOptionsOnDemandPrice", "RecommendationOptionsStandardOneYearNoUpfrontReservedPrice", "RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice", "RecommendationsSourcesRecommendationSourceArn", "RecommendationsSourcesRecommendationSourceType", "LastRefreshTimestamp", "CurrentPerformanceRisk", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "EffectiveRecommendationPreferencesCpuVendorArchitectures", "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics", "EffectiveRecommendationPreferencesInferredWorkloadTypes", "InferredWorkloadTypes", "RecommendationOptionsMigrationEffort", "EffectiveRecommendationPreferencesExternalMetricsSource", "Tags", "InstanceState", "ExternalMetricStatusCode", "ExternalMetricStatusReason", "CurrentInstanceGpuInfo", "RecommendationOptionsInstanceGpuInfo", "UtilizationMetricsGpuPercentageMaximum", "UtilizationMetricsGpuMemoryPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum", "Idle", "EffectiveRecommendationPreferencesPreferredResources", "EffectiveRecommendationPreferencesLookBackPeriod", "EffectiveRecommendationPreferencesUtilizationPreferences", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]
enum_FilterName := [ "Finding", "FindingReasonCodes", "RecommendationSourceType", "InferredWorkloadTypes" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_FilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableInstanceField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportECSServiceRecommendations

enum_ECSServiceRecommendationFilterName := [ "Finding", "FindingReasonCode" ]
enum_ExportableECSServiceField := [ "AccountId", "ServiceArn", "LookbackPeriodInDays", "LastRefreshTimestamp", "LaunchType", "CurrentPerformanceRisk", "CurrentServiceConfigurationMemory", "CurrentServiceConfigurationCpu", "CurrentServiceConfigurationTaskDefinitionArn", "CurrentServiceConfigurationAutoScalingConfiguration", "CurrentServiceContainerConfigurations", "UtilizationMetricsCpuMaximum", "UtilizationMetricsMemoryMaximum", "Finding", "FindingReasonCodes", "RecommendationOptionsMemory", "RecommendationOptionsCpu", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "RecommendationOptionsContainerRecommendations", "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum", "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum", "Tags", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_ECSServiceRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableECSServiceField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportIdleRecommendations

enum_ExportableIdleField := [ "AccountId", "ResourceArn", "ResourceId", "ResourceType", "LastRefreshTimestamp", "LookbackPeriodInDays", "SavingsOpportunity", "SavingsOpportunityAfterDiscount", "UtilizationMetricsCpuMaximum", "UtilizationMetricsMemoryMaximum", "UtilizationMetricsNetworkOutBytesPerSecondMaximum", "UtilizationMetricsNetworkInBytesPerSecondMaximum", "UtilizationMetricsDatabaseConnectionsMaximum", "UtilizationMetricsEBSVolumeReadIOPSMaximum", "UtilizationMetricsEBSVolumeWriteIOPSMaximum", "UtilizationMetricsVolumeReadOpsPerSecondMaximum", "UtilizationMetricsVolumeWriteOpsPerSecondMaximum", "Finding", "FindingDescription", "Tags" ]
enum_FileFormat := [ "Csv" ]
enum_IdleRecommendationFilterName := [ "Finding", "ResourceType" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_IdleRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableIdleField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportLambdaFunctionRecommendations

enum_ExportableLambdaFunctionField := [ "AccountId", "FunctionArn", "FunctionVersion", "Finding", "FindingReasonCodes", "NumberOfInvocations", "UtilizationMetricsDurationMaximum", "UtilizationMetricsDurationAverage", "UtilizationMetricsMemoryMaximum", "UtilizationMetricsMemoryAverage", "LookbackPeriodInDays", "CurrentConfigurationMemorySize", "CurrentConfigurationTimeout", "CurrentCostTotal", "CurrentCostAverage", "RecommendationOptionsConfigurationMemorySize", "RecommendationOptionsCostLow", "RecommendationOptionsCostHigh", "RecommendationOptionsProjectedUtilizationMetricsDurationLowerBound", "RecommendationOptionsProjectedUtilizationMetricsDurationUpperBound", "RecommendationOptionsProjectedUtilizationMetricsDurationExpected", "LastRefreshTimestamp", "CurrentPerformanceRisk", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "Tags", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]
enum_LambdaFunctionRecommendationFilterName := [ "Finding", "FindingReasonCode" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_LambdaFunctionRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableLambdaFunctionField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportLicenseRecommendations

enum_ExportableLicenseField := [ "AccountId", "ResourceArn", "LookbackPeriodInDays", "LastRefreshTimestamp", "Finding", "FindingReasonCodes", "CurrentLicenseConfigurationNumberOfCores", "CurrentLicenseConfigurationInstanceType", "CurrentLicenseConfigurationOperatingSystem", "CurrentLicenseConfigurationLicenseName", "CurrentLicenseConfigurationLicenseEdition", "CurrentLicenseConfigurationLicenseModel", "CurrentLicenseConfigurationLicenseVersion", "CurrentLicenseConfigurationMetricsSource", "RecommendationOptionsOperatingSystem", "RecommendationOptionsLicenseEdition", "RecommendationOptionsLicenseModel", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "Tags" ]
enum_FileFormat := [ "Csv" ]
enum_LicenseRecommendationFilterName := [ "Finding", "FindingReasonCode", "LicenseName" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_LicenseRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableLicenseField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportRDSDatabaseRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_ExportableRDSDBField := [ "ResourceArn", "AccountId", "Engine", "EngineVersion", "Idle", "MultiAZDBInstance", "CurrentDBInstanceClass", "CurrentStorageConfigurationStorageType", "CurrentStorageConfigurationAllocatedStorage", "CurrentStorageConfigurationMaxAllocatedStorage", "CurrentStorageConfigurationIOPS", "CurrentStorageConfigurationStorageThroughput", "CurrentInstanceOnDemandHourlyPrice", "CurrentStorageOnDemandMonthlyPrice", "LookbackPeriodInDays", "CurrentInstancePerformanceRisk", "UtilizationMetricsCpuMaximum", "UtilizationMetricsMemoryMaximum", "UtilizationMetricsEBSVolumeStorageSpaceUtilizationMaximum", "UtilizationMetricsNetworkReceiveThroughputMaximum", "UtilizationMetricsNetworkTransmitThroughputMaximum", "UtilizationMetricsEBSVolumeReadIOPSMaximum", "UtilizationMetricsEBSVolumeWriteIOPSMaximum", "UtilizationMetricsEBSVolumeReadThroughputMaximum", "UtilizationMetricsEBSVolumeWriteThroughputMaximum", "UtilizationMetricsDatabaseConnectionsMaximum", "UtilizationMetricsStorageNetworkReceiveThroughputMaximum", "UtilizationMetricsStorageNetworkTransmitThroughputMaximum", "UtilizationMetricsAuroraMemoryHealthStateMaximum", "UtilizationMetricsAuroraMemoryNumDeclinedSqlTotalMaximum", "UtilizationMetricsAuroraMemoryNumKillConnTotalMaximum", "UtilizationMetricsAuroraMemoryNumKillQueryTotalMaximum", "UtilizationMetricsReadIOPSEphemeralStorageMaximum", "UtilizationMetricsWriteIOPSEphemeralStorageMaximum", "InstanceFinding", "InstanceFindingReasonCodes", "StorageFinding", "StorageFindingReasonCodes", "InstanceRecommendationOptionsDBInstanceClass", "InstanceRecommendationOptionsRank", "InstanceRecommendationOptionsPerformanceRisk", "InstanceRecommendationOptionsProjectedUtilizationMetricsCpuMaximum", "StorageRecommendationOptionsStorageType", "StorageRecommendationOptionsAllocatedStorage", "StorageRecommendationOptionsMaxAllocatedStorage", "StorageRecommendationOptionsIOPS", "StorageRecommendationOptionsStorageThroughput", "StorageRecommendationOptionsRank", "InstanceRecommendationOptionsInstanceOnDemandHourlyPrice", "InstanceRecommendationOptionsSavingsOpportunityPercentage", "InstanceRecommendationOptionsEstimatedMonthlySavingsCurrency", "InstanceRecommendationOptionsEstimatedMonthlySavingsValue", "InstanceRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "InstanceRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "InstanceRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts", "StorageRecommendationOptionsOnDemandMonthlyPrice", "StorageRecommendationOptionsSavingsOpportunityPercentage", "StorageRecommendationOptionsEstimatedMonthlySavingsCurrency", "StorageRecommendationOptionsEstimatedMonthlySavingsValue", "StorageRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "StorageRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "StorageRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts", "EffectiveRecommendationPreferencesCpuVendorArchitectures", "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics", "EffectiveRecommendationPreferencesLookBackPeriod", "EffectiveRecommendationPreferencesSavingsEstimationMode", "LastRefreshTimestamp", "Tags", "DBClusterIdentifier", "PromotionTier" ]
enum_FileFormat := [ "Csv" ]
enum_RDSDBRecommendationFilterName := [ "InstanceFinding", "InstanceFindingReasonCode", "StorageFinding", "StorageFindingReasonCode", "Idle" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_RDSDBRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableRDSDBField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAutoScalingGroupRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_FilterName := [ "Finding", "FindingReasonCodes", "RecommendationSourceType", "InferredWorkloadTypes" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.autoScalingGroupArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_FilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEBSVolumeRecommendations

enum_EBSFilterName := [ "Finding" ]

valid {
    input.Body.volumeArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_EBSFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEC2InstanceRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_FilterName := [ "Finding", "FindingReasonCodes", "RecommendationSourceType", "InferredWorkloadTypes" ]

valid {
    input.Body.instanceArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_FilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEC2RecommendationProjectedMetrics

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_MetricStatistic := [ "Maximum", "Average" ]

valid {
    input.Body.instanceArn == STRING
    input.Body.stat == enum_MetricStatistic[_]
    input.Body.period == INTEGER
    input.Body.startTime == TIMESTAMP
    input.Body.endTime == TIMESTAMP
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetECSServiceRecommendationProjectedMetrics

enum_MetricStatistic := [ "Maximum", "Average" ]

valid {
    input.Body.serviceArn == STRING
    input.Body.stat == enum_MetricStatistic[_]
    input.Body.period == INTEGER
    input.Body.startTime == TIMESTAMP
    input.Body.endTime == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetECSServiceRecommendations

enum_ECSServiceRecommendationFilterName := [ "Finding", "FindingReasonCode" ]

valid {
    input.Body.serviceArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_ECSServiceRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEffectiveRecommendationPreferences

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

GetEnrollmentStatus

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

GetEnrollmentStatusesForOrganization

enum_EnrollmentFilterName := [ "Status" ]

valid {
    input.Body.filters[_].name == enum_EnrollmentFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetIdleRecommendations

enum_Dimension := [ "SavingsValue", "SavingsValueAfterDiscount" ]
enum_IdleRecommendationFilterName := [ "Finding", "ResourceType" ]
enum_Order := [ "Asc", "Desc" ]

valid {
    input.Body.resourceArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_IdleRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.Body.orderBy.dimension == enum_Dimension[_]
    input.Body.orderBy.order == enum_Order[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetLambdaFunctionRecommendations

enum_LambdaFunctionRecommendationFilterName := [ "Finding", "FindingReasonCode" ]

valid {
    input.Body.functionArns[_] == STRING
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_LambdaFunctionRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetLicenseRecommendations

enum_LicenseRecommendationFilterName := [ "Finding", "FindingReasonCode", "LicenseName" ]

valid {
    input.Body.resourceArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_LicenseRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetRDSDatabaseRecommendationProjectedMetrics

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_MetricStatistic := [ "Maximum", "Average" ]

valid {
    input.Body.resourceArn == STRING
    input.Body.stat == enum_MetricStatistic[_]
    input.Body.period == INTEGER
    input.Body.startTime == TIMESTAMP
    input.Body.endTime == TIMESTAMP
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetRDSDatabaseRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_RDSDBRecommendationFilterName := [ "InstanceFinding", "InstanceFindingReasonCode", "StorageFinding", "StorageFindingReasonCode", "Idle" ]

valid {
    input.Body.resourceArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_RDSDBRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetRecommendationPreferences

enum_ResourceType := [ "Ec2Instance", "AutoScalingGroup", "EbsVolume", "LambdaFunction", "NotApplicable", "EcsService", "License", "RdsDBInstance", "Idle" ]
enum_ScopeName := [ "Organization", "AccountId", "ResourceArn" ]

valid {
    input.Body.resourceType == enum_ResourceType[_]
    input.Body.scope.name == enum_ScopeName[_]
    input.Body.scope.value == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetRecommendationSummaries

valid {
    input.Body.accountIds[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutRecommendationPreferences

enum_CustomizableMetricHeadroom := [ "PERCENT_30", "PERCENT_20", "PERCENT_10", "PERCENT_0" ]
enum_CustomizableMetricName := [ "CpuUtilization", "MemoryUtilization" ]
enum_CustomizableMetricThreshold := [ "P90", "P95", "P99_5" ]
enum_EnhancedInfrastructureMetrics := [ "Active", "Inactive" ]
enum_ExternalMetricsSource := [ "Datadog", "Dynatrace", "NewRelic", "Instana" ]
enum_InferredWorkloadTypesPreference := [ "Active", "Inactive" ]
enum_LookBackPeriodPreference := [ "DAYS_14", "DAYS_32", "DAYS_93" ]
enum_PreferredResourceName := [ "Ec2InstanceTypes" ]
enum_ResourceType := [ "Ec2Instance", "AutoScalingGroup", "EbsVolume", "LambdaFunction", "NotApplicable", "EcsService", "License", "RdsDBInstance", "Idle" ]
enum_SavingsEstimationMode := [ "AfterDiscounts", "BeforeDiscounts" ]
enum_ScopeName := [ "Organization", "AccountId", "ResourceArn" ]

valid {
    input.Body.resourceType == enum_ResourceType[_]
    input.Body.scope.name == enum_ScopeName[_]
    input.Body.scope.value == STRING
    input.Body.enhancedInfrastructureMetrics == enum_EnhancedInfrastructureMetrics[_]
    input.Body.inferredWorkloadTypes == enum_InferredWorkloadTypesPreference[_]
    input.Body.externalMetricsPreference.source == enum_ExternalMetricsSource[_]
    input.Body.lookBackPeriod == enum_LookBackPeriodPreference[_]
    input.Body.utilizationPreferences[_].metricName == enum_CustomizableMetricName[_]
    input.Body.utilizationPreferences[_].metricParameters.threshold == enum_CustomizableMetricThreshold[_]
    input.Body.utilizationPreferences[_].metricParameters.headroom == enum_CustomizableMetricHeadroom[_]
    input.Body.preferredResources[_].name == enum_PreferredResourceName[_]
    input.Body.preferredResources[_].includeList[_] == STRING
    input.Body.preferredResources[_].excludeList[_] == STRING
    input.Body.savingsEstimationMode == enum_SavingsEstimationMode[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateEnrollmentStatus

enum_Status := [ "Active", "Inactive", "Pending", "Failed" ]

valid {
    input.Body.status == enum_Status[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}