aws

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AutoscalingGroupUsageSchema = append([]*engine.ConsumptionField{
	{Key: "instances", DefaultValue: 0, ValueType: engine.Int64},
}, InstanceUsageSchema...)
View Source
var CloudwatchLogGroupUsageSchema = []*engine.ConsumptionField{
	{Key: "monthly_data_ingested_gb", ValueType: engine.Float64, DefaultValue: 0},
	{Key: "storage_gb", ValueType: engine.Float64, DefaultValue: 0},
	{Key: "monthly_data_scanned_gb", ValueType: engine.Float64, DefaultValue: 0},
}
View Source
var DBInstanceUsageSchema = []*eng.ConsumptionField{
	{Key: "monthly_standard_io_requests", ValueType: eng.Int64, DefaultValue: 0},
	{Key: "additional_backup_storage_gb", ValueType: eng.Float64, DefaultValue: 0},
	{Key: "monthly_additional_performance_insights_requests", ValueType: eng.Int64, DefaultValue: 0},
	{Key: "reserved_instance_term", DefaultValue: "", ValueType: eng.String},
	{Key: "reserved_instance_payment_option", DefaultValue: "", ValueType: eng.String},
}
View Source
var ECRRepositoryUsageSchema = []*engine.ConsumptionField{
	{Key: "storage_gb", ValueType: engine.Float64, DefaultValue: 0},
}
View Source
var EKSNodeGroupUsageSchema = append([]*engine.ConsumptionField{
	{Key: "instances", DefaultValue: 0, ValueType: engine.Int64},
}, InstanceUsageSchema...)
View Source
var ELBUsageSchema = []*engine.ConsumptionField{
	{Key: "monthly_data_processed_gb", ValueType: engine.Float64, DefaultValue: 0},
}
View Source
var InstanceTypeToVCPU = map[string]int64{}/* 407 elements not displayed */

this map was generated with: aws ec2 describe-instance-types | jq -r '[.InstanceTypes[] | "\"" + .InstanceType + "\": " + (.VCpuInfo.DefaultVCpus | tostring) + ","] | sort | .[]'

View Source
var InstanceUsageSchema = []*engine.ConsumptionField{
	{Key: "operating_system", DefaultValue: "linux", ValueType: engine.String},
	{Key: "reserved_instance_type", DefaultValue: "", ValueType: engine.String},
	{Key: "reserved_instance_term", DefaultValue: "", ValueType: engine.String},
	{Key: "reserved_instance_payment_option", DefaultValue: "", ValueType: engine.String},
	{Key: "monthly_cpu_credit_hrs", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "vcpu_count", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_hrs", DefaultValue: 730, ValueType: engine.Float64},
}
View Source
var LBUsageSchema = []*engine.ConsumptionField{
	{Key: "rule_evaluations", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "new_connections", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "active_connections", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "processed_bytes_gb", ValueType: engine.Float64, DefaultValue: 0},
}
View Source
var LaunchConfigurationUsageSchema = InstanceUsageSchema
View Source
var LaunchTemplateUsageSchema = InstanceUsageSchema
View Source
var RegionCodeMapping = map[string]string{
	"ap-southeast-1": "APS1",
}

RegionCodeMapping helps to find region's abbreviated code for a more granular filtering when resources may have multiple products for the same region.

View Source
var RegionMapping = map[string]string{
	"us-gov-west-1":   "AWS GovCloud (US-West)",
	"us-gov-east-1":   "AWS GovCloud (US-East)",
	"us-east-1":       "US East (N. Virginia)",
	"us-east-2":       "US East (Ohio)",
	"us-west-1":       "US West (N. California)",
	"us-west-2":       "US West (Oregon)",
	"us-west-2-lax-1": "US West (Los Angeles)",
	"ca-central-1":    "Canada (Central)",
	"ca-west-1":       "Canada West (Calgary)",
	"mx-central-1":    "Mexico (Central)",
	"cn-north-1":      "China (Beijing)",
	"cn-northwest-1":  "China (Ningxia)",
	"eu-central-1":    "EU (Frankfurt)",
	"eu-central-2":    "EU (Zurich)",
	"eu-west-1":       "EU (Ireland)",
	"eu-west-2":       "EU (London)",
	"eu-south-1":      "EU (Milan)",
	"eu-south-2":      "EU (Spain)",
	"eu-west-3":       "EU (Paris)",
	"eu-north-1":      "EU (Stockholm)",
	"il-central-1":    "Israel (Tel Aviv)",
	"ap-east-1":       "Asia Pacific (Hong Kong)",
	"ap-east-2":       "Asia Pacific (Taipei)",
	"ap-northeast-1":  "Asia Pacific (Tokyo)",
	"ap-northeast-2":  "Asia Pacific (Seoul)",
	"ap-northeast-3":  "Asia Pacific (Osaka)",
	"ap-southeast-1":  "Asia Pacific (Singapore)",
	"ap-southeast-2":  "Asia Pacific (Sydney)",
	"ap-southeast-3":  "Asia Pacific (Jakarta)",
	"ap-southeast-4":  "Asia Pacific (Melbourne)",
	"ap-southeast-5":  "Asia Pacific (Malaysia)",
	"ap-southeast-6":  "Asia Pacific (New Zealand)",
	"ap-southeast-7":  "Asia Pacific (Thailand)",
	"ap-south-1":      "Asia Pacific (Mumbai)",
	"ap-south-2":      "Asia Pacific (Hyderabad)",
	"me-central-1":    "Middle East (UAE)",
	"me-south-1":      "Middle East (Bahrain)",
	"sa-east-1":       "South America (Sao Paulo)",
	"af-south-1":      "Africa (Cape Town)",
}

RegionMapping is a helpful conversion map that changes aws region name to the name commonly used in pricing filters.

View Source
var RegionUsageSchema = []*engine.ConsumptionField{
	{Key: "us_gov_west_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "us_gov_east_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "us_east_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "us_east_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "us_west_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "us_west_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "us_west_2_lax_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ca_central_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ca_west_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "mx_central_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "cn_north_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "cn_northwest_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "eu_central_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "eu_central_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "eu_west_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "eu_west_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "eu_south_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "eu_south_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "eu_west_3", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "eu_north_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "il_central_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_east_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_east_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_northeast_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_northeast_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_northeast_3", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_southeast_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_southeast_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_southeast_3", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_southeast_4", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_southeast_5", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_southeast_6", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_southeast_7", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_south_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "ap_south_2", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "me_central_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "me_south_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "sa_east_1", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "af_south_1", DefaultValue: 0, ValueType: engine.Float64},
}

RegionUsageSchema is the schema representation of the RegionsUsage type. This can be used as a engine.SubResourceUsage to define a structure that's commonly used with data transfer usage. e.g:

monthly_data_transfer_out_gb:
	us_gov_west_1: 122
	ca_central_1: 99

See DirectoryServiceDirectory for an example usage.

View Source
var S3GlacierDeepArchiveStorageClassUsageSchema = []*engine.ConsumptionField{
	{Key: "storage_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_tier_1_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_tier_2_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_lifecycle_transition_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_standard_data_retrieval_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_standard_data_retrieval_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_bulk_data_retrieval_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_bulk_data_retrieval_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "early_delete_gb", DefaultValue: 0.0, ValueType: engine.Float64},
}
View Source
var S3GlacierFlexibleRetrievalStorageClassUsageSchema = []*engine.ConsumptionField{
	{Key: "storage_gb", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_tier_1_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_tier_2_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_lifecycle_transition_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_standard_data_retrieval_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_standard_data_retrieval_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_standard_select_data_scanned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_standard_select_data_returned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_expedited_data_retrieval_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_expedited_data_retrieval_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_expedited_select_data_scanned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_expedited_select_data_returned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_bulk_select_data_scanned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_bulk_select_data_returned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "early_delete_gb", DefaultValue: 0.0, ValueType: engine.Float64},
}
View Source
var S3IntelligentTieringStorageClassUsageSchema = []*engine.ConsumptionField{
	{Key: "frequent_access_storage_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "infrequent_access_storage_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "archive_access_storage_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "deep_archive_access_storage_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monitored_objects", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_tier_1_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_tier_2_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_lifecycle_transition_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_select_data_scanned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_select_data_returned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "early_delete_gb", DefaultValue: 0.0, ValueType: engine.Float64},
}
View Source
var S3OneZoneInfrequentAccessStorageClassUsageSchema = []*engine.ConsumptionField{
	{Key: "storage_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_tier_1_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_tier_2_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_lifecycle_transition_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_data_retrieval_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_select_data_scanned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_select_data_returned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
}
View Source
var S3StandardInfrequentAccessStorageClassUsageSchema = []*engine.ConsumptionField{
	{Key: "storage_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_tier_1_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_tier_2_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_lifecycle_transition_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_data_retrieval_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_select_data_scanned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_select_data_returned_gb", DefaultValue: 0.0, ValueType: engine.Float64},
}
View Source
var S3StandardStorageClassUsageSchema = []*engine.ConsumptionField{
	{Key: "storage_gb", DefaultValue: 0.0, ValueType: engine.Float64},
	{Key: "monthly_tier_1_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_tier_2_requests", DefaultValue: 0, ValueType: engine.Int64},
	{Key: "monthly_select_data_scanned_gb", DefaultValue: 0, ValueType: engine.Float64},
	{Key: "monthly_select_data_returned_gb", DefaultValue: 0, ValueType: engine.Float64},
}
View Source
var SNSFIFOTopicUsageSchema = []*engine.ConsumptionField{
	{Key: "request_size_kb", ValueType: engine.Float64, DefaultValue: 1},
	{Key: "monthly_requests", ValueType: engine.Int64, DefaultValue: 0},
}

SNSFIFOTopicUsageSchema defines a list which represents the usage schema of SNSFIFOTopic.

View Source
var SNSTopicUsageSchema = []*engine.ConsumptionField{
	{Key: "request_size_kb", ValueType: engine.Float64, DefaultValue: 0},
	{Key: "monthly_requests", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "http_subscriptions", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "email_subscriptions", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "kinesis_subscriptions", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "mobile_push_subscriptions", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "macos_subscriptions", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "sms_subscriptions", ValueType: engine.Int64, DefaultValue: 0},
	{Key: "sms_notification_price", ValueType: engine.Float64, DefaultValue: 0.0075},
}

SNSTopicUsageSchema defines a list which represents the usage schema of SNSTopic.

View Source
var (

	// Today is the date used to determine extended support pricing tiers.
	// It can be overridden in tests to make pricing deterministic.
	Today = time.Now()
)

Functions

This section is empty.

Types

type ACMCertificate

type ACMCertificate struct {
	Address                 string
	Region                  string
	CertificateAuthorityARN string
}

func (*ACMCertificate) BuildResource

func (r *ACMCertificate) BuildResource() *engine.Estimate

func (*ACMCertificate) CoreType

func (r *ACMCertificate) CoreType() string

func (*ACMCertificate) PopulateUsage

func (r *ACMCertificate) PopulateUsage(u *engine.ConsumptionProfile)

func (*ACMCertificate) UsageSchema

func (r *ACMCertificate) UsageSchema() []*engine.ConsumptionField

type ACMPCACertificateAuthority

type ACMPCACertificateAuthority struct {
	Address         string
	Region          string
	UsageMode       string
	MonthlyRequests *int64 `c3x_usage:"monthly_requests"`
}

func (*ACMPCACertificateAuthority) BuildResource

func (r *ACMPCACertificateAuthority) BuildResource() *engine.Estimate

func (*ACMPCACertificateAuthority) CoreType

func (r *ACMPCACertificateAuthority) CoreType() string

func (*ACMPCACertificateAuthority) PopulateUsage

func (*ACMPCACertificateAuthority) UsageSchema

type APIGatewayRestAPI

type APIGatewayRestAPI struct {
	Address         string
	Region          string
	MonthlyRequests *int64 `c3x_usage:"monthly_requests"`
}

func (*APIGatewayRestAPI) BuildResource

func (r *APIGatewayRestAPI) BuildResource() *engine.Estimate

func (*APIGatewayRestAPI) CoreType

func (r *APIGatewayRestAPI) CoreType() string

func (*APIGatewayRestAPI) PopulateUsage

func (r *APIGatewayRestAPI) PopulateUsage(u *engine.ConsumptionProfile)

func (*APIGatewayRestAPI) UsageSchema

func (r *APIGatewayRestAPI) UsageSchema() []*engine.ConsumptionField

type APIGatewayStage

type APIGatewayStage struct {
	Address          string
	Region           string
	CacheClusterSize float64
	CacheEnabled     bool
}

func (*APIGatewayStage) BuildResource

func (r *APIGatewayStage) BuildResource() *engine.Estimate

func (*APIGatewayStage) CoreType

func (r *APIGatewayStage) CoreType() string

func (*APIGatewayStage) PopulateUsage

func (r *APIGatewayStage) PopulateUsage(u *engine.ConsumptionProfile)

func (*APIGatewayStage) UsageSchema

func (r *APIGatewayStage) UsageSchema() []*engine.ConsumptionField

type APIGatewayV2API

type APIGatewayV2API struct {
	Address               string
	Region                string
	ProtocolType          string
	MessageSizeKB         *int64 `c3x_usage:"message_size_kb"`
	MonthlyConnectionMins *int64 `c3x_usage:"monthly_connection_mins"`
	MonthlyRequests       *int64 `c3x_usage:"monthly_requests"`
	RequestSizeKB         *int64 `c3x_usage:"request_size_kb"`
	MonthlyMessages       *int64 `c3x_usage:"monthly_messages"`
}

func (*APIGatewayV2API) BuildResource

func (r *APIGatewayV2API) BuildResource() *engine.Estimate

func (*APIGatewayV2API) CoreType

func (r *APIGatewayV2API) CoreType() string

func (*APIGatewayV2API) PopulateUsage

func (r *APIGatewayV2API) PopulateUsage(u *engine.ConsumptionProfile)

func (*APIGatewayV2API) UsageSchema

func (r *APIGatewayV2API) UsageSchema() []*engine.ConsumptionField

type AppAutoscalingTarget

type AppAutoscalingTarget struct {
	Address string
	Region  string

	ResourceID        string
	ScalableDimension string

	MinCapacity int64
	MaxCapacity int64

	// "usage" args
	Capacity *int64 `c3x_usage:"capacity"`
}

func (*AppAutoscalingTarget) BuildResource

func (r *AppAutoscalingTarget) BuildResource() *engine.Estimate

func (*AppAutoscalingTarget) CoreType

func (r *AppAutoscalingTarget) CoreType() string

func (*AppAutoscalingTarget) PopulateUsage

func (r *AppAutoscalingTarget) PopulateUsage(u *engine.ConsumptionProfile)

func (*AppAutoscalingTarget) UsageSchema

func (r *AppAutoscalingTarget) UsageSchema() []*engine.ConsumptionField

type AutoscalingGroup

type AutoscalingGroup struct {
	// "required" args that can't really be missing.
	Address string
	Region  string
	Name    string

	// "optional" args, that may be empty depending on the resource config
	LaunchConfiguration *LaunchConfiguration
	LaunchTemplate      *LaunchTemplate
}

func (*AutoscalingGroup) BuildResource

func (a *AutoscalingGroup) BuildResource() *engine.Estimate

func (*AutoscalingGroup) CoreType

func (a *AutoscalingGroup) CoreType() string

func (*AutoscalingGroup) PopulateUsage

func (a *AutoscalingGroup) PopulateUsage(u *engine.ConsumptionProfile)

func (*AutoscalingGroup) UsageSchema

func (a *AutoscalingGroup) UsageSchema() []*engine.ConsumptionField

type BackupVault

type BackupVault struct {
	Address                       string
	Region                        string
	MonthlyEFSWarmBackupGB        *float64 `c3x_usage:"monthly_efs_warm_backup_gb"`
	MonthlyEFSColdRestoreGB       *float64 `c3x_usage:"monthly_efs_cold_restore_gb"`
	MonthlyRDSSnapshotGB          *float64 `c3x_usage:"monthly_rds_snapshot_gb"`
	MonthlyAuroraSnapshotGB       *float64 `c3x_usage:"monthly_aurora_snapshot_gb"`
	MonthlyDynamodbBackupGB       *float64 `c3x_usage:"monthly_dynamodb_backup_gb"`
	MonthlyDynamodbRestoreGB      *float64 `c3x_usage:"monthly_dynamodb_restore_gb"`
	MonthlyFSxWindowsBackupGB     *float64 `c3x_usage:"monthly_fsx_windows_backup_gb"`
	MonthlyFSxLustreBackupGB      *float64 `c3x_usage:"monthly_fsx_lustre_backup_gb"`
	MonthlyEFSColdBackupGB        *float64 `c3x_usage:"monthly_efs_cold_backup_gb"`
	MonthlyEFSWarmRestoreGB       *float64 `c3x_usage:"monthly_efs_warm_restore_gb"`
	MonthlyEFSItemRestoreRequests *int64   `c3x_usage:"monthly_efs_item_restore_requests"`
	MonthlyEBSSnapshotGB          *float64 `c3x_usage:"monthly_ebs_snapshot_gb"`
}

func (*BackupVault) BuildResource

func (r *BackupVault) BuildResource() *engine.Estimate

func (*BackupVault) CoreType

func (r *BackupVault) CoreType() string

func (*BackupVault) PopulateUsage

func (r *BackupVault) PopulateUsage(u *engine.ConsumptionProfile)

func (*BackupVault) UsageSchema

func (r *BackupVault) UsageSchema() []*engine.ConsumptionField

type CloudFormationStack

type CloudFormationStack struct {
	Address                  string
	Region                   string
	TemplateBody             string
	MonthlyHandlerOperations *int64 `c3x_usage:"monthly_handler_operations"`
	MonthlyDurationSecs      *int64 `c3x_usage:"monthly_duration_secs"`
}

func (*CloudFormationStack) BuildResource

func (r *CloudFormationStack) BuildResource() *engine.Estimate

func (*CloudFormationStack) CoreType

func (r *CloudFormationStack) CoreType() string

func (*CloudFormationStack) PopulateUsage

func (r *CloudFormationStack) PopulateUsage(u *engine.ConsumptionProfile)

func (*CloudFormationStack) UsageSchema

func (r *CloudFormationStack) UsageSchema() []*engine.ConsumptionField

type CloudFormationStackSet

type CloudFormationStackSet struct {
	Address                  string
	Region                   string
	TemplateBody             string
	MonthlyHandlerOperations *int64 `c3x_usage:"monthly_handler_operations"`
	MonthlyDurationSecs      *int64 `c3x_usage:"monthly_duration_secs"`
}

func (*CloudFormationStackSet) BuildResource

func (r *CloudFormationStackSet) BuildResource() *engine.Estimate

func (*CloudFormationStackSet) CoreType

func (r *CloudFormationStackSet) CoreType() string

func (*CloudFormationStackSet) PopulateUsage

func (r *CloudFormationStackSet) PopulateUsage(u *engine.ConsumptionProfile)

func (*CloudFormationStackSet) UsageSchema

func (r *CloudFormationStackSet) UsageSchema() []*engine.ConsumptionField

type CloudHSMv2HSM

type CloudHSMv2HSM struct {
	Address string
	Region  string

	MonthlyHours *float64 `c3x_usage:"monthly_hrs"`
}

CloudHSMv2HSM struct represents an HSM module in a CloudHSM cluster.

The HSM module is charged a hourly rate. Terraform allows you to specify the instance type of the HSM cluster, but at the moment AWS only supports one instance type, so each module has a set price depending on region.

The cluster is counted as a free resource, but each cluster can have up to 32 HSM modules.

Resource information: https://aws.amazon.com/cloudhsm/ Pricing information: https://aws.amazon.com/cloudhsm/pricing/

func (*CloudHSMv2HSM) BuildResource

func (r *CloudHSMv2HSM) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid CloudHSMv2HSM struct. This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*CloudHSMv2HSM) CoreType

func (r *CloudHSMv2HSM) CoreType() string

CoreType returns the name of this resource type

func (*CloudHSMv2HSM) PopulateUsage

func (r *CloudHSMv2HSM) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the CloudHSMv2HSM. It uses the `c3x_usage` struct tags to populate data into the CloudHSMv2HSM.

func (*CloudHSMv2HSM) UsageSchema

func (r *CloudHSMv2HSM) UsageSchema() []*engine.ConsumptionField

UsageSchema defines a list which represents the usage schema of CloudHSMv2HSM.

type CloudfrontDistribution

type CloudfrontDistribution struct {
	Address string
	Region  string

	IsOriginShieldEnabled     bool
	IsSSLSupportMethodVIP     bool
	HasLoggingConfigBucket    bool
	HasFieldLevelEncryptionID bool
	OriginShieldRegion        string

	// "usage" args
	MonthlyHTTPRequests             *cloudfrontDistributionRegionRequestsUsage     `c3x_usage:"monthly_http_requests"`
	MonthlyHTTPSRequests            *cloudfrontDistributionRegionRequestsUsage     `c3x_usage:"monthly_https_requests"`
	MonthlyShieldRequests           *cloudfrontDistributionShieldRequestsUsage     `c3x_usage:"monthly_shield_requests"`
	MonthlyInvalidationRequests     *int64                                         `c3x_usage:"monthly_invalidation_requests"`
	MonthlyEncryptionRequests       *int64                                         `c3x_usage:"monthly_encryption_requests"`
	MonthlyLogLines                 *int64                                         `c3x_usage:"monthly_log_lines"`
	MonthlyDataTransferToInternetGB *cloudfrontDistributionRegionDataTransferUsage `c3x_usage:"monthly_data_transfer_to_internet_gb"`
	MonthlyDataTransferToOriginGB   *cloudfrontDistributionRegionDataTransferUsage `c3x_usage:"monthly_data_transfer_to_origin_gb"`
	CustomSslCertificates           *int64                                         `c3x_usage:"custom_ssl_certificates"`
}

func (*CloudfrontDistribution) BuildResource

func (r *CloudfrontDistribution) BuildResource() *engine.Estimate

func (*CloudfrontDistribution) CoreType

func (r *CloudfrontDistribution) CoreType() string

func (*CloudfrontDistribution) PopulateUsage

func (r *CloudfrontDistribution) PopulateUsage(u *engine.ConsumptionProfile)

func (*CloudfrontDistribution) UsageSchema

func (r *CloudfrontDistribution) UsageSchema() []*engine.ConsumptionField

type CloudfrontFunction

type CloudfrontFunction struct {
	Address string
	Region  string

	MonthlyRequests *int64 `c3x_usage:"monthly_requests"`
}

CloudfrontFunction struct represents an AWS CloudFront Function. With CloudFront Functions, you can write lightweight functions in JavaScript for high-scale, latency-sensitive CDN customizations.

Resource information: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-functions.html Pricing information: https://aws.amazon.com/cloudfront/pricing/

func (*CloudfrontFunction) BuildResource

func (r *CloudfrontFunction) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid CloudfrontFunction struct. This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*CloudfrontFunction) CoreType

func (r *CloudfrontFunction) CoreType() string

CoreType returns the name of this resource type

func (*CloudfrontFunction) PopulateUsage

func (r *CloudfrontFunction) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the CloudfrontFunction. It uses the `c3x_usage` struct tags to populate data into the CloudfrontFunction.

func (*CloudfrontFunction) UsageSchema

func (r *CloudfrontFunction) UsageSchema() []*engine.ConsumptionField

UsageSchema defines a list which represents the usage schema of CloudfrontFunction.

type Cloudtrail

type Cloudtrail struct {
	Address                 string
	Region                  string
	IncludeManagementEvents bool
	IncludeInsightEvents    bool

	MonthlyAdditionalManagementEvents *float64 `c3x_usage:"monthly_additional_management_events"`
	MonthlyDataEvents                 *float64 `c3x_usage:"monthly_data_events"`
	MonthlyInsightEvents              *float64 `c3x_usage:"monthly_insight_events"`
}

Cloudtrail struct represents a cloudtrail instance to monitor activity across a set of catalog. AWS Cloudtrail monitors and records account activity across infrastructure, keeping an audit log of activity. This is mostly used for security purposes.

Resource information: https://aws.amazon.com/cloudtrail/ Pricing information: https://aws.amazon.com/cloudtrail/pricing/

func (*Cloudtrail) BuildResource

func (r *Cloudtrail) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid Cloudtrail struct. It returns Cloudtrail as a engine.Estimate with 3 main cost components. All cost components are defined as "events". All cost components are charged per 100k events delivered/analyzed.

  1. Additional Management events delivered to S3, charged at $2.00 per 100k management events delivered. Management events are normally priced as free, however if a user specifies an additional replication of events this is charged. We only show this cost therefore if Cloudtrail.IncludeManagementEvents is set. This is set at a per IAC basis.
  2. Data events delivered to S3, charged at $0.10 per 100k events delivered.
  3. CloudTrail Insights, charged at $0.35 per 100k events analyzed. This again is configured optionally on a Cloudtrail instance. Hence, we only include the cost component if Cloudtrail.IncludeInsightEvents. This is set at a per IAC basis.

This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*Cloudtrail) CoreType

func (r *Cloudtrail) CoreType() string

func (*Cloudtrail) PopulateUsage

func (r *Cloudtrail) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the Cloudtrail. It uses the `c3x_usage` struct tags to populate data into the Cloudtrail.

func (*Cloudtrail) UsageSchema

func (r *Cloudtrail) UsageSchema() []*engine.ConsumptionField

type CloudwatchDashboard

type CloudwatchDashboard struct {
	Address string
}

func (*CloudwatchDashboard) BuildResource

func (r *CloudwatchDashboard) BuildResource() *engine.Estimate

func (*CloudwatchDashboard) CoreType

func (r *CloudwatchDashboard) CoreType() string

func (*CloudwatchDashboard) PopulateUsage

func (r *CloudwatchDashboard) PopulateUsage(u *engine.ConsumptionProfile)

func (*CloudwatchDashboard) UsageSchema

func (r *CloudwatchDashboard) UsageSchema() []*engine.ConsumptionField

type CloudwatchEventBus

type CloudwatchEventBus struct {
	Address                      string
	Region                       string
	MonthlySchemaDiscoveryEvents *int64   `c3x_usage:"monthly_schema_discovery_events"`
	MonthlyCustomEvents          *int64   `c3x_usage:"monthly_custom_events"`
	MonthlyThirdPartyEvents      *int64   `c3x_usage:"monthly_third_party_events"`
	MonthlyArchiveProcessingGB   *float64 `c3x_usage:"monthly_archive_processing_gb"`
	ArchiveStorageGB             *float64 `c3x_usage:"archive_storage_gb"`
}

func (*CloudwatchEventBus) BuildResource

func (r *CloudwatchEventBus) BuildResource() *engine.Estimate

func (*CloudwatchEventBus) CoreType

func (r *CloudwatchEventBus) CoreType() string

func (*CloudwatchEventBus) PopulateUsage

func (r *CloudwatchEventBus) PopulateUsage(u *engine.ConsumptionProfile)

func (*CloudwatchEventBus) UsageSchema

func (r *CloudwatchEventBus) UsageSchema() []*engine.ConsumptionField

type CloudwatchLogGroup

type CloudwatchLogGroup struct {
	Address               string
	Region                string
	MonthlyDataIngestedGB *float64 `c3x_usage:"monthly_data_ingested_gb"`
	StorageGB             *float64 `c3x_usage:"storage_gb"`
	MonthlyDataScannedGB  *float64 `c3x_usage:"monthly_data_scanned_gb"`
}

func (*CloudwatchLogGroup) BuildResource

func (r *CloudwatchLogGroup) BuildResource() *engine.Estimate

func (*CloudwatchLogGroup) CoreType

func (r *CloudwatchLogGroup) CoreType() string

func (*CloudwatchLogGroup) PopulateUsage

func (r *CloudwatchLogGroup) PopulateUsage(u *engine.ConsumptionProfile)

func (*CloudwatchLogGroup) UsageSchema

func (r *CloudwatchLogGroup) UsageSchema() []*engine.ConsumptionField

type CloudwatchMetricAlarm

type CloudwatchMetricAlarm struct {
	Address            string
	Region             string
	ComparisonOperator string
	Metrics            int64
	Period             int64
}

func (*CloudwatchMetricAlarm) BuildResource

func (r *CloudwatchMetricAlarm) BuildResource() *engine.Estimate

func (*CloudwatchMetricAlarm) CalcMetricResolution

func (r *CloudwatchMetricAlarm) CalcMetricResolution(metricPeriod decimal.Decimal) bool

func (*CloudwatchMetricAlarm) CoreType

func (r *CloudwatchMetricAlarm) CoreType() string

func (*CloudwatchMetricAlarm) PopulateUsage

func (r *CloudwatchMetricAlarm) PopulateUsage(u *engine.ConsumptionProfile)

func (*CloudwatchMetricAlarm) UsageSchema

func (r *CloudwatchMetricAlarm) UsageSchema() []*engine.ConsumptionField

type CodeBuildProject

type CodeBuildProject struct {
	Address          string
	Region           string
	ComputeType      string
	EnvironmentType  string
	MonthlyBuildMins *int64 `c3x_usage:"monthly_build_mins"`
}

func (*CodeBuildProject) BuildResource

func (r *CodeBuildProject) BuildResource() *engine.Estimate

func (*CodeBuildProject) CoreType

func (r *CodeBuildProject) CoreType() string

func (*CodeBuildProject) PopulateUsage

func (r *CodeBuildProject) PopulateUsage(u *engine.ConsumptionProfile)

func (*CodeBuildProject) UsageSchema

func (r *CodeBuildProject) UsageSchema() []*engine.ConsumptionField

type ConfigConfigRule

type ConfigConfigRule struct {
	Address                string
	Region                 string
	MonthlyRuleEvaluations *int64 `c3x_usage:"monthly_rule_evaluations"`
}

func (*ConfigConfigRule) BuildResource

func (r *ConfigConfigRule) BuildResource() *engine.Estimate

func (*ConfigConfigRule) CoreType

func (r *ConfigConfigRule) CoreType() string

func (*ConfigConfigRule) PopulateUsage

func (r *ConfigConfigRule) PopulateUsage(u *engine.ConsumptionProfile)

func (*ConfigConfigRule) UsageSchema

func (r *ConfigConfigRule) UsageSchema() []*engine.ConsumptionField

type ConfigConfigurationRecorder

type ConfigConfigurationRecorder struct {
	Address                  string
	Region                   string
	MonthlyConfigItems       *int64 `c3x_usage:"monthly_config_items"`
	MonthlyCustomConfigItems *int64 `c3x_usage:"monthly_custom_config_items"`
}

func (*ConfigConfigurationRecorder) BuildResource

func (r *ConfigConfigurationRecorder) BuildResource() *engine.Estimate

func (*ConfigConfigurationRecorder) CoreType

func (r *ConfigConfigurationRecorder) CoreType() string

func (*ConfigConfigurationRecorder) PopulateUsage

func (*ConfigConfigurationRecorder) UsageSchema

type DBInstance

type DBInstance struct {
	Address                                      string
	Region                                       string
	LicenseModel                                 string
	StorageType                                  string
	BackupRetentionPeriod                        int64
	IOOptimized                                  bool
	PerformanceInsightsEnabled                   bool
	PerformanceInsightsLongTermRetention         bool
	MultiAZ                                      bool
	InstanceClass                                string
	Engine                                       string
	Version                                      string
	IOPS                                         float64
	AllocatedStorageGB                           *float64
	MonthlyStandardIORequests                    *int64   `c3x_usage:"monthly_standard_io_requests"`
	AdditionalBackupStorageGB                    *float64 `c3x_usage:"additional_backup_storage_gb"`
	MonthlyAdditionalPerformanceInsightsRequests *int64   `c3x_usage:"monthly_additional_performance_insights_requests"`
	ReservedInstanceTerm                         *string  `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption                *string  `c3x_usage:"reserved_instance_payment_option"`
}

func (*DBInstance) BuildResource

func (r *DBInstance) BuildResource() *eng.Estimate

func (*DBInstance) CoreType

func (r *DBInstance) CoreType() string

func (*DBInstance) PopulateUsage

func (r *DBInstance) PopulateUsage(u *eng.ConsumptionProfile)

func (*DBInstance) UsageSchema

func (r *DBInstance) UsageSchema() []*eng.ConsumptionField

type DMSReplicationInstance

type DMSReplicationInstance struct {
	Address                  string
	Region                   string
	AllocatedStorageGB       int64
	ReplicationInstanceClass string
	MultiAZ                  bool
}

func (*DMSReplicationInstance) BuildResource

func (r *DMSReplicationInstance) BuildResource() *engine.Estimate

func (*DMSReplicationInstance) CoreType

func (r *DMSReplicationInstance) CoreType() string

func (*DMSReplicationInstance) PopulateUsage

func (r *DMSReplicationInstance) PopulateUsage(u *engine.ConsumptionProfile)

func (*DMSReplicationInstance) UsageSchema

func (r *DMSReplicationInstance) UsageSchema() []*engine.ConsumptionField

type DXConnection

type DXConnection struct {
	Address                                         string
	Bandwidth                                       string
	Location                                        string
	Region                                          string
	MonthlyOutboundFromRegionToDXConnectionLocation *RegionsUsage `c3x_usage:"monthly_outbound_from_region_to_dx_connection_location"`
	MonthlyOutboundRegionToDxLocationGB             *float64      `c3x_usage:"monthly_outbound_region_to_dx_location_gb"`
	DxVirtualInterfaceType                          *string       `c3x_usage:"dx_virtual_interface_type"`
	DXConnectionType                                *string       `c3x_usage:"dx_connection_type"`
}

func (*DXConnection) BuildResource

func (r *DXConnection) BuildResource() *engine.Estimate

func (*DXConnection) CoreType

func (r *DXConnection) CoreType() string

func (*DXConnection) PopulateUsage

func (r *DXConnection) PopulateUsage(u *engine.ConsumptionProfile)

func (*DXConnection) UsageSchema

func (r *DXConnection) UsageSchema() []*engine.ConsumptionField

type DXGatewayAssociation

type DXGatewayAssociation struct {
	Address                 string
	Region                  string
	AssociatedGatewayRegion string
	MonthlyDataProcessedGB  *float64 `c3x_usage:"monthly_data_processed_gb"`
}

func (*DXGatewayAssociation) BuildResource

func (r *DXGatewayAssociation) BuildResource() *engine.Estimate

func (*DXGatewayAssociation) CoreType

func (r *DXGatewayAssociation) CoreType() string

func (*DXGatewayAssociation) PopulateUsage

func (r *DXGatewayAssociation) PopulateUsage(u *engine.ConsumptionProfile)

func (*DXGatewayAssociation) UsageSchema

func (r *DXGatewayAssociation) UsageSchema() []*engine.ConsumptionField

type DataTransfer

type DataTransfer struct {
	Address string
	Region  string

	// "usage" args
	MonthlyInfraRegionGB            *float64 `c3x_usage:"monthly_intra_region_gb"`
	MonthlyOutboundInternetGB       *float64 `c3x_usage:"monthly_outbound_internet_gb"`
	MonthlyOutboundUsEastToUsEastGB *float64 `c3x_usage:"monthly_outbound_us_east_to_us_east_gb"`
	MonthlyOutboundOtherRegionsGB   *float64 `c3x_usage:"monthly_outbound_other_regions_gb"`
}

DataTransfer represents data transferred "in" to and "out" of Amazon EC2.

Pricing information here: https://aws.amazon.com/ec2/pricing/on-demand/

func (*DataTransfer) BuildResource

func (r *DataTransfer) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid DataTransfer. This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*DataTransfer) CoreType

func (r *DataTransfer) CoreType() string

func (*DataTransfer) PopulateUsage

func (r *DataTransfer) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the DataTransfer. It uses the `c3x_usage` struct tags to populate data into the DataTransfer.

func (*DataTransfer) UsageSchema

func (r *DataTransfer) UsageSchema() []*engine.ConsumptionField

type DirectoryServiceDirectory

type DirectoryServiceDirectory struct {
	// Address is the unique name of the resource in terraform/cloudfront.
	Address string
	// Region is the aws region the DirectoryServiceDirectory is provisioned within
	Region string
	// RegionName is the full region name used in product filters for the DirectoryService
	RegionName string

	// Type is the directory type. It can be one of (SimpleAD|ADConnector|MicrosoftAD)
	Type string
	// Edition is the edition of the MicrosoftAD type directory service. This field
	// is only applicable with MicrosoftAD and can either be (Standard|Enterprise).
	Edition string
	// The size of the directory, only applicable if the type is SimpleAD or ADConnector.
	// Values can be either (Small|Large)
	Size string

	// AdditionalDomainControllers represents a usage cost definition for the number controllers
	// above the default value (2) that are provisioned in this directory service.
	AdditionalDomainControllers *float64 `c3x_usage:"additional_domain_controllers"`

	// SharedAccounts represents the number of accounts/vpcs the directory is shared with.
	// This cost is only applicable if the type of directory is MicrosoftAD.
	// Directory Service sharing support is not supported by terraform aws at this time.
	// Therefore, this field is built from the usage cost file. An open issue referencing
	// shared directory support here: https://github.com/hashicorp/terraform-provider-aws/issues/6003
	SharedAccounts *float64 `c3x_usage:"shared_accounts"`
}

DirectoryServiceDirectory represents a single AWS Directory Service "Directory". AWS Directory Service has three main types: Microsoft AD, AD Connector & Simple AD. All the types are meant to support some form of Active Directory integration. Microsoft Active Directory is used by Windows applications to manage access and enable single sign-on. For example, you can manage access to Microsoft SharePoint using different Microsoft Active Directory security groups.

The Microsoft AD type is a fully managed Microsoft Active Directory service. The Simple AD type is a fully managed Samba service which is compatible with Microsoft Active Directory. The AD Connector type is a gateway with which you can redirect directory requests to your on-premises Microsoft Active Directory.

Read more about Directory service here: https://aws.amazon.com/directoryservice/ Microsoft Active Directory here: https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html Other Supported Active Directory types here:

https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_simple_ad.html
https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_simple_ad.html

DirectoryServicePricing pricing is based on

> Hourly price based on the type and edition (only Microsoft AD) of the directory service directory > Additional hourly price added directory per account/vpc the directory is shared with (only Microsoft AD) > Costs for data transfer out (on a per-region basis)

More information on pricing can be found here:

https://aws.amazon.com/directoryservice/pricing/
https://aws.amazon.com/directoryservice/other-directories-pricing/

func (*DirectoryServiceDirectory) BuildResource

func (d *DirectoryServiceDirectory) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid DirectoryServiceDirectory.

func (*DirectoryServiceDirectory) CoreType

func (d *DirectoryServiceDirectory) CoreType() string

func (*DirectoryServiceDirectory) PopulateUsage

PopulateUsage parses the u engine.Usage into the DirectoryServiceDirectory. It uses the `c3x_usage` struct tags to populate data into the DirectoryServiceDirectory.

func (*DirectoryServiceDirectory) UsageSchema

type DocDBCluster

type DocDBCluster struct {
	Address               string
	Region                string
	BackupRetentionPeriod int64
	BackupStorageGB       *float64 `c3x_usage:"backup_storage_gb"`
}

func (*DocDBCluster) BuildResource

func (r *DocDBCluster) BuildResource() *engine.Estimate

func (*DocDBCluster) CoreType

func (r *DocDBCluster) CoreType() string

func (*DocDBCluster) PopulateUsage

func (r *DocDBCluster) PopulateUsage(u *engine.ConsumptionProfile)

func (*DocDBCluster) UsageSchema

func (r *DocDBCluster) UsageSchema() []*engine.ConsumptionField

type DocDBClusterInstance

type DocDBClusterInstance struct {
	Address             string
	Region              string
	InstanceClass       string
	DataStorageGB       *float64 `c3x_usage:"data_storage_gb"`
	MonthlyIORequests   *int64   `c3x_usage:"monthly_io_requests"`
	MonthlyCPUCreditHrs *int64   `c3x_usage:"monthly_cpu_credit_hrs"`
}

func (*DocDBClusterInstance) BuildResource

func (r *DocDBClusterInstance) BuildResource() *engine.Estimate

func (*DocDBClusterInstance) CoreType

func (r *DocDBClusterInstance) CoreType() string

func (*DocDBClusterInstance) PopulateUsage

func (r *DocDBClusterInstance) PopulateUsage(u *engine.ConsumptionProfile)

func (*DocDBClusterInstance) UsageSchema

func (r *DocDBClusterInstance) UsageSchema() []*engine.ConsumptionField

type DocDBClusterSnapshot

type DocDBClusterSnapshot struct {
	Address         string
	Region          string
	BackupStorageGB *float64 `c3x_usage:"backup_storage_gb"`
}

func (*DocDBClusterSnapshot) BuildResource

func (r *DocDBClusterSnapshot) BuildResource() *engine.Estimate

func (*DocDBClusterSnapshot) CoreType

func (r *DocDBClusterSnapshot) CoreType() string

func (*DocDBClusterSnapshot) PopulateUsage

func (r *DocDBClusterSnapshot) PopulateUsage(u *engine.ConsumptionProfile)

func (*DocDBClusterSnapshot) UsageSchema

func (r *DocDBClusterSnapshot) UsageSchema() []*engine.ConsumptionField

type DynamoDBTable

type DynamoDBTable struct {
	// "required" args that can't really be missing.
	Address        string
	Region         string
	Name           string
	BillingMode    string
	ReplicaRegions []string

	// "optional" args, that may be empty depending on the resource config
	WriteCapacity *int64
	ReadCapacity  *int64

	AppAutoscalingTarget       []*AppAutoscalingTarget
	PointInTimeRecoveryEnabled bool

	// "usage" args
	MonthlyWriteRequestUnits       *int64 `c3x_usage:"monthly_write_request_units"`
	MonthlyReadRequestUnits        *int64 `c3x_usage:"monthly_read_request_units"`
	StorageGB                      *int64 `c3x_usage:"storage_gb"`
	PitrBackupStorageGB            *int64 `c3x_usage:"pitr_backup_storage_gb"`
	OnDemandBackupStorageGB        *int64 `c3x_usage:"on_demand_backup_storage_gb"`
	MonthlyDataRestoredGB          *int64 `c3x_usage:"monthly_data_restored_gb"`
	MonthlyStreamsReadRequestUnits *int64 `c3x_usage:"monthly_streams_read_request_units"`
}

func (*DynamoDBTable) BuildResource

func (a *DynamoDBTable) BuildResource() *engine.Estimate

func (*DynamoDBTable) CoreType

func (a *DynamoDBTable) CoreType() string

func (*DynamoDBTable) PopulateUsage

func (a *DynamoDBTable) PopulateUsage(u *engine.ConsumptionProfile)

func (*DynamoDBTable) UsageSchema

func (a *DynamoDBTable) UsageSchema() []*engine.ConsumptionField

type EBSSnapshot

type EBSSnapshot struct {
	Address                  string
	Region                   string
	SizeGB                   *float64
	MonthlyListBlockRequests *int64 `c3x_usage:"monthly_list_block_requests"`
	MonthlyGetBlockRequests  *int64 `c3x_usage:"monthly_get_block_requests"`
	MonthlyPutBlockRequests  *int64 `c3x_usage:"monthly_put_block_requests"`
	FastSnapshotRestoreHours *int64 `c3x_usage:"fast_snapshot_restore_hours"`
}

func (*EBSSnapshot) BuildResource

func (r *EBSSnapshot) BuildResource() *engine.Estimate

func (*EBSSnapshot) CoreType

func (r *EBSSnapshot) CoreType() string

func (*EBSSnapshot) PopulateUsage

func (r *EBSSnapshot) PopulateUsage(u *engine.ConsumptionProfile)

func (*EBSSnapshot) UsageSchema

func (r *EBSSnapshot) UsageSchema() []*engine.ConsumptionField

type EBSSnapshotCopy

type EBSSnapshotCopy struct {
	Address string
	Region  string
	SizeGB  *float64
}

func (*EBSSnapshotCopy) BuildResource

func (r *EBSSnapshotCopy) BuildResource() *engine.Estimate

func (*EBSSnapshotCopy) CoreType

func (r *EBSSnapshotCopy) CoreType() string

func (*EBSSnapshotCopy) PopulateUsage

func (r *EBSSnapshotCopy) PopulateUsage(u *engine.ConsumptionProfile)

func (*EBSSnapshotCopy) UsageSchema

func (r *EBSSnapshotCopy) UsageSchema() []*engine.ConsumptionField

type EBSVolume

type EBSVolume struct {
	// "required" args that can't really be missing.
	Address    string
	Region     string
	Type       string
	IOPS       int64
	Throughput int64

	// "optional" args that can be empty strings.
	Size *int64

	// "usage" args
	MonthlyStandardIORequests *int64 `c3x_usage:"monthly_standard_io_requests"`
}

func (*EBSVolume) BuildResource

func (a *EBSVolume) BuildResource() *engine.Estimate

func (*EBSVolume) CoreType

func (a *EBSVolume) CoreType() string

func (*EBSVolume) PopulateUsage

func (a *EBSVolume) PopulateUsage(u *engine.ConsumptionProfile)

func (*EBSVolume) UsageSchema

func (a *EBSVolume) UsageSchema() []*engine.ConsumptionField

type EC2ClientVPNEndpoint

type EC2ClientVPNEndpoint struct {
	Address string
	Region  string
}

func (*EC2ClientVPNEndpoint) BuildResource

func (r *EC2ClientVPNEndpoint) BuildResource() *engine.Estimate

func (*EC2ClientVPNEndpoint) CoreType

func (r *EC2ClientVPNEndpoint) CoreType() string

func (*EC2ClientVPNEndpoint) PopulateUsage

func (r *EC2ClientVPNEndpoint) PopulateUsage(u *engine.ConsumptionProfile)

func (*EC2ClientVPNEndpoint) UsageSchema

func (r *EC2ClientVPNEndpoint) UsageSchema() []*engine.ConsumptionField

type EC2ClientVPNNetworkAssociation

type EC2ClientVPNNetworkAssociation struct {
	Address string
	Region  string
}

func (*EC2ClientVPNNetworkAssociation) BuildResource

func (r *EC2ClientVPNNetworkAssociation) BuildResource() *engine.Estimate

func (*EC2ClientVPNNetworkAssociation) CoreType

func (r *EC2ClientVPNNetworkAssociation) CoreType() string

func (*EC2ClientVPNNetworkAssociation) PopulateUsage

func (*EC2ClientVPNNetworkAssociation) UsageSchema

type EC2Host

type EC2Host struct {
	Address                       string
	Region                        string
	InstanceType                  string
	InstanceFamily                string
	ReservedInstanceTerm          *string `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption *string `c3x_usage:"reserved_instance_payment_option"`
}

EC2Host defines an AWS EC2 dedicated host. It supports multiple instance families & allows you to run workloads on a physical server dedicated for your use. You can use on-demand or reservation pricing.

See more resource information here: https://aws.amazon.com/ec2/dedicated-hosts/

See the pricing information here: https://aws.amazon.com/ec2/dedicated-hosts/pricing/

func (*EC2Host) BuildResource

func (r *EC2Host) BuildResource() *engine.Estimate

func (*EC2Host) CoreType

func (r *EC2Host) CoreType() string

func (*EC2Host) PopulateUsage

func (r *EC2Host) PopulateUsage(u *engine.ConsumptionProfile)

func (*EC2Host) UsageSchema

func (r *EC2Host) UsageSchema() []*engine.ConsumptionField

type EC2TrafficMirrorSession

type EC2TrafficMirrorSession struct {
	Address string
	Region  string
}

func (*EC2TrafficMirrorSession) BuildResource

func (r *EC2TrafficMirrorSession) BuildResource() *engine.Estimate

func (*EC2TrafficMirrorSession) CoreType

func (r *EC2TrafficMirrorSession) CoreType() string

func (*EC2TrafficMirrorSession) PopulateUsage

func (r *EC2TrafficMirrorSession) PopulateUsage(u *engine.ConsumptionProfile)

func (*EC2TrafficMirrorSession) UsageSchema

func (r *EC2TrafficMirrorSession) UsageSchema() []*engine.ConsumptionField

type EC2TransitGatewayPeeringAttachment

type EC2TransitGatewayPeeringAttachment struct {
	Address              string
	Region               string
	TransitGatewayRegion string
}

func (*EC2TransitGatewayPeeringAttachment) BuildResource

func (*EC2TransitGatewayPeeringAttachment) CoreType

func (*EC2TransitGatewayPeeringAttachment) PopulateUsage

func (*EC2TransitGatewayPeeringAttachment) UsageSchema

type ECRRepository

type ECRRepository struct {
	Address   string
	Region    string
	StorageGB *float64 `c3x_usage:"storage_gb"`
}

func (*ECRRepository) BuildResource

func (r *ECRRepository) BuildResource() *engine.Estimate

func (*ECRRepository) CoreType

func (r *ECRRepository) CoreType() string

func (*ECRRepository) PopulateUsage

func (r *ECRRepository) PopulateUsage(u *engine.ConsumptionProfile)

func (*ECRRepository) UsageSchema

func (r *ECRRepository) UsageSchema() []*engine.ConsumptionField

type ECSService

type ECSService struct {
	Address                        string
	LaunchType                     string
	Region                         string
	DesiredCount                   int64
	MemoryGB                       float64
	VCPU                           float64
	InferenceAcceleratorDeviceType string
}

func (*ECSService) BuildResource

func (r *ECSService) BuildResource() *engine.Estimate

func (*ECSService) CoreType

func (r *ECSService) CoreType() string

func (*ECSService) PopulateUsage

func (r *ECSService) PopulateUsage(u *engine.ConsumptionProfile)

func (*ECSService) UsageSchema

func (r *ECSService) UsageSchema() []*engine.ConsumptionField

type EFSFileSystem

type EFSFileSystem struct {
	Address                        string
	Region                         string
	HasLifecyclePolicy             bool
	AvailabilityZoneName           string
	ProvisionedThroughputInMBps    float64
	InfrequentAccessStorageGB      *float64 `c3x_usage:"infrequent_access_storage_gb"`
	StorageGB                      *float64 `c3x_usage:"storage_gb"`
	MonthlyInfrequentAccessReadGB  *float64 `c3x_usage:"monthly_infrequent_access_read_gb"`
	MonthlyInfrequentAccessWriteGB *float64 `c3x_usage:"monthly_infrequent_access_write_gb"`
}

func (*EFSFileSystem) BuildResource

func (r *EFSFileSystem) BuildResource() *engine.Estimate

func (*EFSFileSystem) CoreType

func (r *EFSFileSystem) CoreType() string

func (*EFSFileSystem) PopulateUsage

func (r *EFSFileSystem) PopulateUsage(u *engine.ConsumptionProfile)

func (*EFSFileSystem) UsageSchema

func (r *EFSFileSystem) UsageSchema() []*engine.ConsumptionField

type EIP

type EIP struct {
	Address   string
	Region    string
	Allocated bool
}

func (*EIP) BuildResource

func (r *EIP) BuildResource() *engine.Estimate

func (*EIP) CoreType

func (r *EIP) CoreType() string

func (*EIP) PopulateUsage

func (r *EIP) PopulateUsage(u *engine.ConsumptionProfile)

func (*EIP) UsageSchema

func (r *EIP) UsageSchema() []*engine.ConsumptionField

type EKSCluster

type EKSCluster struct {
	Address string
	Version string
	Region  string
}

func (*EKSCluster) BuildResource

func (r *EKSCluster) BuildResource() *engine.Estimate

func (*EKSCluster) CoreType

func (r *EKSCluster) CoreType() string

func (*EKSCluster) PopulateUsage

func (r *EKSCluster) PopulateUsage(u *engine.ConsumptionProfile)

func (*EKSCluster) UsageSchema

func (r *EKSCluster) UsageSchema() []*engine.ConsumptionField

type EKSFargateProfile

type EKSFargateProfile struct {
	Address string
	Region  string
}

func (*EKSFargateProfile) BuildResource

func (r *EKSFargateProfile) BuildResource() *engine.Estimate

func (*EKSFargateProfile) CoreType

func (r *EKSFargateProfile) CoreType() string

func (*EKSFargateProfile) PopulateUsage

func (r *EKSFargateProfile) PopulateUsage(u *engine.ConsumptionProfile)

func (*EKSFargateProfile) UsageSchema

func (r *EKSFargateProfile) UsageSchema() []*engine.ConsumptionField

type EKSNodeGroup

type EKSNodeGroup struct {
	// "required" args that can't really be missing.
	Address     string
	Region      string
	Name        string
	ClusterName string

	InstanceType   string
	PurchaseOption string
	DiskSize       float64

	// "optional" args, that may be empty depending on the resource config
	RootBlockDevice *EBSVolume
	LaunchTemplate  *LaunchTemplate

	// "usage" args
	InstanceCount                 *int64  `c3x_usage:"instances"`
	OperatingSystem               *string `c3x_usage:"operating_system"`
	ReservedInstanceType          *string `c3x_usage:"reserved_instance_type"`
	ReservedInstanceTerm          *string `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption *string `c3x_usage:"reserved_instance_payment_option"`
	MonthlyCPUCreditHours         *int64  `c3x_usage:"monthly_cpu_credit_hrs"`
	VCPUCount                     *int64  `c3x_usage:"vcpu_count"`
}

func (*EKSNodeGroup) BuildResource

func (a *EKSNodeGroup) BuildResource() *engine.Estimate

func (*EKSNodeGroup) CoreType

func (a *EKSNodeGroup) CoreType() string

func (*EKSNodeGroup) PopulateUsage

func (a *EKSNodeGroup) PopulateUsage(u *engine.ConsumptionProfile)

func (*EKSNodeGroup) UsageSchema

func (a *EKSNodeGroup) UsageSchema() []*engine.ConsumptionField

type ELB

type ELB struct {
	Address                string
	Region                 string
	MonthlyDataProcessedGB *float64 `c3x_usage:"monthly_data_processed_gb"`
}

func (*ELB) BuildResource

func (r *ELB) BuildResource() *engine.Estimate

func (*ELB) CoreType

func (r *ELB) CoreType() string

func (*ELB) PopulateUsage

func (r *ELB) PopulateUsage(u *engine.ConsumptionProfile)

func (*ELB) UsageSchema

func (r *ELB) UsageSchema() []*engine.ConsumptionField

type Ec2TransitGatewayVpcAttachment

type Ec2TransitGatewayVpcAttachment struct {
	Address                string
	Region                 string
	VPCRegion              string
	TransitGatewayRegion   string
	MonthlyDataProcessedGB *float64 `c3x_usage:"monthly_data_processed_gb"`
}

func (*Ec2TransitGatewayVpcAttachment) BuildResource

func (r *Ec2TransitGatewayVpcAttachment) BuildResource() *engine.Estimate

func (*Ec2TransitGatewayVpcAttachment) CoreType

func (r *Ec2TransitGatewayVpcAttachment) CoreType() string

func (*Ec2TransitGatewayVpcAttachment) PopulateUsage

func (*Ec2TransitGatewayVpcAttachment) UsageSchema

type ElastiCacheCluster

type ElastiCacheCluster struct {
	Address                       string
	Region                        string
	HasReplicationGroup           bool
	NodeType                      string
	Engine                        string
	CacheNodes                    int64
	SnapshotRetentionLimit        int64
	SnapshotStorageSizeGB         *float64 `c3x_usage:"snapshot_storage_size_gb"`
	ReservedInstanceTerm          *string  `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption *string  `c3x_usage:"reserved_instance_payment_option"`
}

func (*ElastiCacheCluster) BuildResource

func (r *ElastiCacheCluster) BuildResource() *eng.Estimate

func (*ElastiCacheCluster) CoreType

func (r *ElastiCacheCluster) CoreType() string

func (*ElastiCacheCluster) PopulateUsage

func (r *ElastiCacheCluster) PopulateUsage(u *eng.ConsumptionProfile)

func (*ElastiCacheCluster) UsageSchema

func (r *ElastiCacheCluster) UsageSchema() []*eng.ConsumptionField

type ElastiCacheReplicationGroup

type ElastiCacheReplicationGroup struct {
	Address                       string
	Region                        string
	NodeType                      string
	Engine                        string
	CacheClusters                 int64
	ClusterNodeGroups             int64
	ClusterReplicasPerNodeGroup   int64
	SnapshotRetentionLimit        int64
	SnapshotStorageSizeGB         *float64 `c3x_usage:"snapshot_storage_size_gb"`
	ReservedInstanceTerm          *string  `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption *string  `c3x_usage:"reserved_instance_payment_option"`

	AppAutoscalingTarget []*AppAutoscalingTarget
}

func (*ElastiCacheReplicationGroup) BuildResource

func (r *ElastiCacheReplicationGroup) BuildResource() *eng.Estimate

func (*ElastiCacheReplicationGroup) CoreType

func (r *ElastiCacheReplicationGroup) CoreType() string

func (*ElastiCacheReplicationGroup) PopulateUsage

func (r *ElastiCacheReplicationGroup) PopulateUsage(u *eng.ConsumptionProfile)

func (*ElastiCacheReplicationGroup) UsageSchema

func (r *ElastiCacheReplicationGroup) UsageSchema() []*eng.ConsumptionField

type ElasticBeanstalkEnvironment

type ElasticBeanstalkEnvironment struct {
	Address string
	Region  string
	Name    string

	LoadBalancerType string

	RootBlockDevice     *EBSVolume
	CloudwatchLogGroup  *CloudwatchLogGroup
	LoadBalancer        *LB
	ElasticLoadBalancer *ELB
	DBInstance          *DBInstance
	LaunchConfiguration *LaunchConfiguration
}

ElasticBeanstalkEnvironment struct represents AWS Elastic Beanstalk environments.

Resource information: https://aws.amazon.com/elasticbeanstalk/ Pricing information: https://aws.amazon.com/elasticbeanstalk/pricing/

func (*ElasticBeanstalkEnvironment) BuildResource

func (r *ElasticBeanstalkEnvironment) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid ElasticBeanstalkEnvironment struct. This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*ElasticBeanstalkEnvironment) CoreType

func (r *ElasticBeanstalkEnvironment) CoreType() string

func (*ElasticBeanstalkEnvironment) PopulateUsage

PopulateUsage parses the u engine.ConsumptionProfile into the ElasticBeanstalkEnvironment. It uses the `c3x_usage` struct tags to populate data into the ElasticBeanstalkEnvironment.

func (*ElasticBeanstalkEnvironment) UsageSchema

UsageSchema defines a list which represents the usage schema of ElasticBeanstalkEnvironment. Usage costs for Elastic Beanstalk come from sub resources as it is a wrapper for other AWS services.

type ExtendedSupport

type ExtendedSupport struct {
	Engine   string
	Versions map[string]ExtendedSupportDates
}

ExtendedSupport contains the extended support dates for a specific RDS eng.

func (ExtendedSupport) CostComponent

func (s ExtendedSupport) CostComponent(version string, region string, d time.Time, quantity decimal.Decimal) *eng.LineItem

CostComponent returns the cost component for the extended support for the given version and date. If the version is not found then it will return nil.

type ExtendedSupportDates

type ExtendedSupportDates struct {
	UsagetypeVersion string
	Year1            time.Time
	Year3            time.Time
}

ExtendedSupportDates contains the extended support dates for a specific RDS engine version Year1 is the date when the extended support starts, Year 3 is the date when the extended increases price.

type FSxOpenZFSFileSystem

type FSxOpenZFSFileSystem struct {
	Address                   string
	StorageType               string
	ThroughputCapacity        int64
	ProvisionedIOPS           int64
	ProvisionedIOPSMode       string
	StorageCapacityGB         int64
	Region                    string
	DeploymentType            string
	DataCompression           string
	CompressionSavingsPercent *float64 `c3x_usage:"compression_savings_percent"`
	BackupStorageGB           *float64 `c3x_usage:"backup_storage_gb"`
}

func (*FSxOpenZFSFileSystem) BuildResource

func (r *FSxOpenZFSFileSystem) BuildResource() *engine.Estimate

func (*FSxOpenZFSFileSystem) CoreType

func (r *FSxOpenZFSFileSystem) CoreType() string

func (*FSxOpenZFSFileSystem) PopulateUsage

func (r *FSxOpenZFSFileSystem) PopulateUsage(u *engine.ConsumptionProfile)

func (*FSxOpenZFSFileSystem) UsageSchema

func (r *FSxOpenZFSFileSystem) UsageSchema() []*engine.ConsumptionField

type FSxWindowsFileSystem

type FSxWindowsFileSystem struct {
	Address            string
	StorageType        string
	ThroughputCapacity int64
	StorageCapacityGB  int64
	Region             string
	DeploymentType     string
	BackupStorageGB    *float64 `c3x_usage:"backup_storage_gb"`
}

func (*FSxWindowsFileSystem) BuildResource

func (r *FSxWindowsFileSystem) BuildResource() *engine.Estimate

func (*FSxWindowsFileSystem) CoreType

func (r *FSxWindowsFileSystem) CoreType() string

func (*FSxWindowsFileSystem) PopulateUsage

func (r *FSxWindowsFileSystem) PopulateUsage(u *engine.ConsumptionProfile)

func (*FSxWindowsFileSystem) UsageSchema

func (r *FSxWindowsFileSystem) UsageSchema() []*engine.ConsumptionField

type GlobalAccelerator

type GlobalAccelerator struct {
	Address string
}

GlobalAccelerator struct represents AWS Global Accelerator service

Resource information: https://aws.amazon.com/global-accelerator Pricing information: https://aws.amazon.com/global-accelerator/pricing/

func (*GlobalAccelerator) BuildResource

func (r *GlobalAccelerator) BuildResource() *engine.Estimate

func (*GlobalAccelerator) CoreType

func (r *GlobalAccelerator) CoreType() string

func (*GlobalAccelerator) PopulateUsage

func (r *GlobalAccelerator) PopulateUsage(u *engine.ConsumptionProfile)

func (*GlobalAccelerator) UsageSchema

func (r *GlobalAccelerator) UsageSchema() []*engine.ConsumptionField

type GlobalacceleratorEndpointGroup

type GlobalacceleratorEndpointGroup struct {
	Address string
	Region  string

	MonthlyInboundDataTransferGB  *globalAcceleratorRegionDataTransferUsage `c3x_usage:"monthly_inbound_data_transfer_gb"`
	MonthlyOutboundDataTransferGB *globalAcceleratorRegionDataTransferUsage `c3x_usage:"monthly_outbound_data_transfer_gb"`
}

GlobalacceleratorEndpointGroup struct represents a Global Accelerator endpoint group

Resource information: https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoint-groups.html Pricing information: https://aws.amazon.com/it/global-accelerator/pricing/

func (*GlobalacceleratorEndpointGroup) BuildResource

func (r *GlobalacceleratorEndpointGroup) BuildResource() *engine.Estimate

func (*GlobalacceleratorEndpointGroup) CoreType

func (r *GlobalacceleratorEndpointGroup) CoreType() string

func (*GlobalacceleratorEndpointGroup) PopulateUsage

func (*GlobalacceleratorEndpointGroup) UsageSchema

type GlueCatalogDatabase

type GlueCatalogDatabase struct {
	Address string
	Region  string

	MonthlyObjects  *float64 `c3x_usage:"monthly_objects"`
	MonthlyRequests *float64 `c3x_usage:"monthly_requests"`
}

GlueCatalogDatabase struct represents a serverless AWS Glue catalog. A Glue catalog is a database designed to store raw data fetched from Glue crawlers before the data is cleaned and transformed by a Glue job.

GlueCatalogDatabase is just one resource of the wider AWS Glue service, which provides a number of different serverless services to build a robust data analytics pipeline.

Resource information: https://aws.amazon.com/glue/ Pricing information: https://aws.amazon.com/glue/pricing/

func (*GlueCatalogDatabase) BuildResource

func (r *GlueCatalogDatabase) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid GlueCatalogDatabase struct. GlueCatalogDatabase has the following engine.LineItems associated with it:

  1. Storage - charged for every 100,000 objects stored above 1M, per month.
  2. MonthlyAdditionalRequests - charged per million requests above 1M in a month.

This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*GlueCatalogDatabase) CoreType

func (r *GlueCatalogDatabase) CoreType() string

func (*GlueCatalogDatabase) PopulateUsage

func (r *GlueCatalogDatabase) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the GlueCatalogDatabase. It uses the `c3x_usage` struct tags to populate data into the GlueCatalogDatabase.

func (*GlueCatalogDatabase) UsageSchema

func (r *GlueCatalogDatabase) UsageSchema() []*engine.ConsumptionField

type GlueCrawler

type GlueCrawler struct {
	Address string
	Region  string

	MonthlyHours *float64 `c3x_usage:"monthly_hours"`
}

GlueCrawler struct represents a serverless AWS Glue crawler. A Glue crawler crawls defined data sources and sends them into a Glue data catalog, ready for a Glue job to transform and merge into a main dataset/lake.

GlueCrawler is just one resource of the wider AWS Glue service, which provides a number of different serverless services to build a robust data analytics pipeline.

Resource information: https://aws.amazon.com/glue/ Pricing information: https://aws.amazon.com/glue/pricing/

func (*GlueCrawler) BuildResource

func (r *GlueCrawler) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid GlueCrawler struct. GlueCrawler has just one engine.LineItem associated with it:

  1. Hours - GlueCrawler is charged per hour that the crawler is run.

This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*GlueCrawler) CoreType

func (r *GlueCrawler) CoreType() string

func (*GlueCrawler) PopulateUsage

func (r *GlueCrawler) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the GlueCrawler. It uses the `c3x_usage` struct tags to populate data into the GlueCrawler.

func (*GlueCrawler) UsageSchema

func (r *GlueCrawler) UsageSchema() []*engine.ConsumptionField

type GlueJob

type GlueJob struct {
	Address string
	Region  string
	DPUs    float64

	MonthlyHours *float64 `c3x_usage:"monthly_hours"`
}

GlueJob struct represents a serverless AWS Glue job. A Glue job is designed to clean, transform and merge data into a data lake so that it is easy to analyze.

GlueJob is just one resource of the wider AWS Glue service, which provides a number of different serverless services to build a robust data analytics pipeline.

Resource information: https://aws.amazon.com/glue/ Pricing information: https://aws.amazon.com/glue/pricing/

func (*GlueJob) BuildResource

func (r *GlueJob) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid GlueJob struct. GlueJob has just one engine.LineItem associated with it:

  1. DPU hours - GlueJob is charged per hour that the job is run. Users are charged based on the number of DPU units they use in that time.

This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*GlueJob) CoreType

func (r *GlueJob) CoreType() string

func (*GlueJob) PopulateUsage

func (r *GlueJob) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the GlueJob. It uses the `c3x_usage` struct tags to populate data into the GlueJob.

func (*GlueJob) UsageSchema

func (r *GlueJob) UsageSchema() []*engine.ConsumptionField

type GrafanaWorkspace

type GrafanaWorkspace struct {
	Address                      string
	Region                       string
	License                      string
	EditorsAdministratorLicenses *int64 `c3x_usage:"editors_administrator_licenses"`
	ViewerLicenses               *int64 `c3x_usage:"viewer_licenses"`
}

func (*GrafanaWorkspace) BuildResource

func (r *GrafanaWorkspace) BuildResource() *engine.Estimate

func (*GrafanaWorkspace) CoreType

func (r *GrafanaWorkspace) CoreType() string

func (*GrafanaWorkspace) PopulateUsage

func (r *GrafanaWorkspace) PopulateUsage(u *engine.ConsumptionProfile)

func (*GrafanaWorkspace) UsageSchema

func (r *GrafanaWorkspace) UsageSchema() []*engine.ConsumptionField

type Instance

type Instance struct {
	// "required" args that can't really be missing.
	Address          string
	Region           string
	Tenancy          string
	PurchaseOption   string
	AMI              string
	InstanceType     string
	EBSOptimized     bool
	EnableMonitoring bool
	CPUCredits       string
	HasHost          bool

	// "optional" args, that may be empty depending on the resource config
	ElasticInferenceAcceleratorType *string
	RootBlockDevice                 *EBSVolume
	EBSBlockDevices                 []*EBSVolume

	// "usage" args
	OperatingSystem               *string  `c3x_usage:"operating_system"`
	ReservedInstanceType          *string  `c3x_usage:"reserved_instance_type"`
	ReservedInstanceTerm          *string  `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption *string  `c3x_usage:"reserved_instance_payment_option"`
	MonthlyCPUCreditHours         *int64   `c3x_usage:"monthly_cpu_credit_hrs"`
	VCPUCount                     *int64   `c3x_usage:"vcpu_count"`
	MonthlyHours                  *float64 `c3x_usage:"monthly_hrs"`
}

func (*Instance) BuildResource

func (a *Instance) BuildResource() *engine.Estimate

func (*Instance) CoreType

func (a *Instance) CoreType() string

func (*Instance) PopulateUsage

func (a *Instance) PopulateUsage(u *engine.ConsumptionProfile)

func (*Instance) UsageSchema

func (a *Instance) UsageSchema() []*engine.ConsumptionField

type KMSExternalKey

type KMSExternalKey struct {
	Address string
	Region  string
}

func (*KMSExternalKey) BuildResource

func (r *KMSExternalKey) BuildResource() *engine.Estimate

func (*KMSExternalKey) CoreType

func (r *KMSExternalKey) CoreType() string

func (*KMSExternalKey) PopulateUsage

func (r *KMSExternalKey) PopulateUsage(u *engine.ConsumptionProfile)

func (*KMSExternalKey) UsageSchema

func (r *KMSExternalKey) UsageSchema() []*engine.ConsumptionField

type KMSKey

type KMSKey struct {
	Address               string
	Region                string
	CustomerMasterKeySpec string
}

func (*KMSKey) BuildResource

func (r *KMSKey) BuildResource() *engine.Estimate

func (*KMSKey) CoreType

func (r *KMSKey) CoreType() string

func (*KMSKey) PopulateUsage

func (r *KMSKey) PopulateUsage(u *engine.ConsumptionProfile)

func (*KMSKey) UsageSchema

func (r *KMSKey) UsageSchema() []*engine.ConsumptionField

type KinesisAnalyticsApplication

type KinesisAnalyticsApplication struct {
	Address                string
	Region                 string
	KinesisProcessingUnits *int64 `c3x_usage:"kinesis_processing_units"`
}

func (*KinesisAnalyticsApplication) BuildResource

func (r *KinesisAnalyticsApplication) BuildResource() *engine.Estimate

func (*KinesisAnalyticsApplication) CoreType

func (r *KinesisAnalyticsApplication) CoreType() string

func (*KinesisAnalyticsApplication) PopulateUsage

func (*KinesisAnalyticsApplication) UsageSchema

type KinesisAnalyticsV2Application

type KinesisAnalyticsV2Application struct {
	Address                    string
	Region                     string
	RuntimeEnvironment         string
	KinesisProcessingUnits     *int64   `c3x_usage:"kinesis_processing_units"`
	DurableApplicationBackupGB *float64 `c3x_usage:"durable_application_backup_gb"`
}

func (*KinesisAnalyticsV2Application) BuildResource

func (r *KinesisAnalyticsV2Application) BuildResource() *engine.Estimate

func (*KinesisAnalyticsV2Application) CoreType

func (r *KinesisAnalyticsV2Application) CoreType() string

func (*KinesisAnalyticsV2Application) PopulateUsage

func (*KinesisAnalyticsV2Application) UsageSchema

type KinesisAnalyticsV2ApplicationSnapshot

type KinesisAnalyticsV2ApplicationSnapshot struct {
	Address                    string
	Region                     string
	DurableApplicationBackupGB *float64 `c3x_usage:"durable_application_backup_gb"`
}

func (*KinesisAnalyticsV2ApplicationSnapshot) BuildResource

func (*KinesisAnalyticsV2ApplicationSnapshot) CoreType

func (*KinesisAnalyticsV2ApplicationSnapshot) PopulateUsage

func (*KinesisAnalyticsV2ApplicationSnapshot) UsageSchema

type KinesisFirehoseDeliveryStream

type KinesisFirehoseDeliveryStream struct {
	Address                     string
	Region                      string
	DataFormatConversionEnabled bool
	VPCDeliveryEnabled          bool
	VPCDeliveryAZs              int64
	MonthlyDataIngestedGB       *float64 `c3x_usage:"monthly_data_ingested_gb"`
}

func (*KinesisFirehoseDeliveryStream) BuildResource

func (r *KinesisFirehoseDeliveryStream) BuildResource() *engine.Estimate

func (*KinesisFirehoseDeliveryStream) CoreType

func (r *KinesisFirehoseDeliveryStream) CoreType() string

func (*KinesisFirehoseDeliveryStream) PopulateUsage

func (*KinesisFirehoseDeliveryStream) UsageSchema

type KinesisStream

type KinesisStream struct {
	Address    string
	Region     string
	StreamMode string
	ShardCount int64

	// Usage fields
	// On demand
	MonthlyOnDemandDataIngestedGB      *float64 `c3x_usage:"monthly_on_demand_data_in_gb"`
	MonthlyOnDemandDataRetrievalGB     *float64 `c3x_usage:"monthly_on_demand_data_out_gb"`
	MonthlyOnDemandEFODataRetrievalGB  *float64 `c3x_usage:"monthly_on_demand_efo_data_out_gb"`
	MonthlyOnDemandExtendedRetentionGb *float64 `c3x_usage:"monthly_on_demand_extended_retention_gb"`
	MonthlyOnDemandLongTermRetentionGb *float64 `c3x_usage:"monthly_on_demand_long_term_retention_gb"`
	// Provisioned
	MonthlyProvisionedPutUnits            *float64 `c3x_usage:"monthly_provisioned_put_units"`
	MonthlyProvisionedExtendedRetentionGb *float64 `c3x_usage:"monthly_provisioned_extended_retention_gb"`
	MonthlyProvisionedLongTermRetentionGb *float64 `c3x_usage:"monthly_provisioned_long_term_retention_gb"`
	MonthlyProvisionedLongTermRetrievalGb *float64 `c3x_usage:"monthly_provisioned_long_term_retrieval_gb"`
	MonthlyProvisionedEFODataRetrievalGB  *float64 `c3x_usage:"monthly_provisioned_efo_data_out_gb"`
	MonthlyProvisionedEFOConsumerHours    *float64 `c3x_usage:"monthly_provisioned_efo_consumer_hours"`
}

KinesisStream struct represents Kinesis Data Streams a fully managed, serverless streaming data service

Resource information: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kinesis_stream Pricing information: https://aws.amazon.com/kinesis/data-streams/pricing/

func (*KinesisStream) BuildResource

func (r *KinesisStream) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid KinesisStream struct. This method is called after the resource is initialized by an IaC provider. See providers folder for more information.

func (*KinesisStream) CoreType

func (r *KinesisStream) CoreType() string

CoreType returns the name of this resource type

func (*KinesisStream) PopulateUsage

func (r *KinesisStream) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the KinesisStream. It uses the `c3x_usage` struct tags to populate data into the KinesisStream.

func (*KinesisStream) UsageSchema

func (r *KinesisStream) UsageSchema() []*engine.ConsumptionField

UsageSchema defines a list which represents the usage schema of KinesisStream.

type LB

type LB struct {
	Address           string
	LoadBalancerType  string
	Region            string
	RuleEvaluations   *int64   `c3x_usage:"rule_evaluations"`
	NewConnections    *int64   `c3x_usage:"new_connections"`
	ActiveConnections *int64   `c3x_usage:"active_connections"`
	ProcessedBytesGB  *float64 `c3x_usage:"processed_bytes_gb"`
}

func (*LB) BuildResource

func (r *LB) BuildResource() *engine.Estimate

func (*LB) CoreType

func (r *LB) CoreType() string

func (*LB) PopulateUsage

func (r *LB) PopulateUsage(u *engine.ConsumptionProfile)

func (*LB) UsageSchema

func (r *LB) UsageSchema() []*engine.ConsumptionField

type LambdaFunction

type LambdaFunction struct {
	Address      string
	Region       string
	Name         string
	MemorySize   int64
	Architecture string
	StorageSize  int64

	RequestDurationMS *int64 `c3x_usage:"request_duration_ms"`
	MonthlyRequests   *int64 `c3x_usage:"monthly_requests"`
}

func (*LambdaFunction) BuildResource

func (a *LambdaFunction) BuildResource() *engine.Estimate

func (*LambdaFunction) CoreType

func (a *LambdaFunction) CoreType() string

func (*LambdaFunction) PopulateUsage

func (a *LambdaFunction) PopulateUsage(u *engine.ConsumptionProfile)

func (*LambdaFunction) UsageEstimationParams

func (a *LambdaFunction) UsageEstimationParams() []engine.ConsumptionParam

func (*LambdaFunction) UsageSchema

func (a *LambdaFunction) UsageSchema() []*engine.ConsumptionField

type LambdaProvisionedConcurrencyConfig

type LambdaProvisionedConcurrencyConfig struct {
	Address                         string
	Region                          string
	Name                            string
	ProvisionedConcurrentExecutions int64

	MonthlyDurationHours *int64  `c3x_usage:"monthly_duration_hrs"`
	MonthlyRequests      *int64  `c3x_usage:"monthly_requests"`
	RequestDurationMS    *int64  `c3x_usage:"request_duration_ms"`
	Architecture         *string `c3x_usage:"architecture"`
	MemoryMB             *int64  `c3x_usage:"memory_mb"`
}

LambdaProvisionedConcurrencyConfig initializes a requested number of execution environments so that they are prepared to respond immediately to your functions invocations. Configuring provisioned concurrency incurs charges to your AWS Account.

Resource information: https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html Pricing information: https://aws.amazon.com/lambda/pricing/#Provisioned_Concurrency_Pricing

func (*LambdaProvisionedConcurrencyConfig) BuildResource

func (*LambdaProvisionedConcurrencyConfig) CoreType

func (*LambdaProvisionedConcurrencyConfig) PopulateUsage

func (*LambdaProvisionedConcurrencyConfig) UsageSchema

type LaunchConfiguration

type LaunchConfiguration struct {
	// "required" args that can't really be missing.
	Address          string
	Region           string
	Tenancy          string
	PurchaseOption   string
	AMI              string
	InstanceType     string
	EBSOptimized     bool
	EnableMonitoring bool
	CPUCredits       string

	// "optional" args, that may be empty depending on the resource config
	ElasticInferenceAcceleratorType *string
	RootBlockDevice                 *EBSVolume
	EBSBlockDevices                 []*EBSVolume

	// "usage" args
	// These are populated from the Autoscaling Group resource
	InstanceCount                 *int64  `c3x_usage:"instances"`
	OperatingSystem               *string `c3x_usage:"operating_system"`
	ReservedInstanceType          *string `c3x_usage:"reserved_instance_type"`
	ReservedInstanceTerm          *string `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption *string `c3x_usage:"reserved_instance_payment_option"`
	MonthlyCPUCreditHours         *int64  `c3x_usage:"monthly_cpu_credit_hrs"`
	VCPUCount                     *int64  `c3x_usage:"vcpu_count"`
}

func (*LaunchConfiguration) BuildResource

func (r *LaunchConfiguration) BuildResource() *engine.Estimate

func (*LaunchConfiguration) CoreType

func (r *LaunchConfiguration) CoreType() string

func (*LaunchConfiguration) PopulateUsage

func (r *LaunchConfiguration) PopulateUsage(u *engine.ConsumptionProfile)

func (*LaunchConfiguration) UsageSchema

func (r *LaunchConfiguration) UsageSchema() []*engine.ConsumptionField

type LaunchTemplate

type LaunchTemplate struct {
	// "required" args that can't really be missing.
	Address                          string
	Region                           string
	AMI                              string
	OnDemandBaseCount                int64
	OnDemandPercentageAboveBaseCount int64
	Tenancy                          string
	InstanceType                     string
	EBSOptimized                     bool
	EnableMonitoring                 bool
	CPUCredits                       string

	// "optional" args, that may be empty depending on the resource config
	ElasticInferenceAcceleratorType *string
	RootBlockDevice                 *EBSVolume
	EBSBlockDevices                 []*EBSVolume

	// "usage" args
	// These are populated from the Autoscaling Group/EKS Node Group resource
	InstanceCount                 *int64  `c3x_usage:"instances"`
	OperatingSystem               *string `c3x_usage:"operating_system"`
	ReservedInstanceType          *string `c3x_usage:"reserved_instance_type"`
	ReservedInstanceTerm          *string `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption *string `c3x_usage:"reserved_instance_payment_option"`
	MonthlyCPUCreditHours         *int64  `c3x_usage:"monthly_cpu_credit_hrs"`
	VCPUCount                     *int64  `c3x_usage:"vcpu_count"`
}

func (*LaunchTemplate) BuildResource

func (r *LaunchTemplate) BuildResource() *engine.Estimate

func (*LaunchTemplate) CoreType

func (r *LaunchTemplate) CoreType() string

func (*LaunchTemplate) PopulateUsage

func (r *LaunchTemplate) PopulateUsage(u *engine.ConsumptionProfile)

func (*LaunchTemplate) UsageSchema

func (r *LaunchTemplate) UsageSchema() []*engine.ConsumptionField

type LightsailInstance

type LightsailInstance struct {
	Address  string
	Region   string
	BundleID string
}

func (*LightsailInstance) BuildResource

func (r *LightsailInstance) BuildResource() *engine.Estimate

func (*LightsailInstance) CoreType

func (r *LightsailInstance) CoreType() string

func (*LightsailInstance) PopulateUsage

func (r *LightsailInstance) PopulateUsage(u *engine.ConsumptionProfile)

func (*LightsailInstance) UsageSchema

func (r *LightsailInstance) UsageSchema() []*engine.ConsumptionField

type MQBroker

type MQBroker struct {
	Address          string
	StorageType      string
	DeploymentMode   string
	Region           string
	EngineType       string
	HostInstanceType string
	StorageSizeGb    *float64 `c3x_usage:"storage_size_gb"`
}

func (*MQBroker) BuildResource

func (r *MQBroker) BuildResource() *engine.Estimate

func (*MQBroker) CoreType

func (r *MQBroker) CoreType() string

func (*MQBroker) PopulateUsage

func (r *MQBroker) PopulateUsage(u *engine.ConsumptionProfile)

func (*MQBroker) UsageSchema

func (r *MQBroker) UsageSchema() []*engine.ConsumptionField

type MSKCluster

type MSKCluster struct {
	Address                 string
	Region                  string
	BrokerNodes             int64
	BrokerNodeInstanceType  string
	BrokerNodeEBSVolumeSize int64

	// "optional" args, that may be empty depending on the resource config
	AppAutoscalingTarget []*AppAutoscalingTarget
}

func (*MSKCluster) BuildResource

func (r *MSKCluster) BuildResource() *engine.Estimate

func (*MSKCluster) CoreType

func (r *MSKCluster) CoreType() string

func (*MSKCluster) PopulateUsage

func (r *MSKCluster) PopulateUsage(u *engine.ConsumptionProfile)

func (*MSKCluster) UsageSchema

func (r *MSKCluster) UsageSchema() []*engine.ConsumptionField

type MWAAEnvironment

type MWAAEnvironment struct {
	// These fields are required since they are pulled directly from the IAC configuration (e.g. the terraform plan)
	Address string
	Region  string
	Size    string // Should be Small, Medium, or Large

	// If there is a parameter than needs to be read from c3x-usage.yml you define it like this:
	AdditionalWorkers    *float64 `c3x_usage:"additional_workers"`
	AdditionalSchedulers *float64 `c3x_usage:"additional_schedulers"`
	MetaDatabaseGB       *float64 `c3x_usage:"meta_database_gb"`
}

func (*MWAAEnvironment) BuildResource

func (a *MWAAEnvironment) BuildResource() *engine.Estimate

func (*MWAAEnvironment) CoreType

func (a *MWAAEnvironment) CoreType() string

If the resource requires a usage parameter

func (*MWAAEnvironment) PopulateUsage

func (a *MWAAEnvironment) PopulateUsage(u *engine.ConsumptionProfile)

If the resource requires a usage parameter

func (*MWAAEnvironment) UsageSchema

func (a *MWAAEnvironment) UsageSchema() []*engine.ConsumptionField

type NATGateway

type NATGateway struct {
	Address string
	Region  string

	MonthlyDataProcessedGB *float64 `c3x_usage:"monthly_data_processed_gb"`
}

func (*NATGateway) BuildResource

func (a *NATGateway) BuildResource() *engine.Estimate

func (*NATGateway) CoreType

func (a *NATGateway) CoreType() string

func (*NATGateway) PopulateUsage

func (a *NATGateway) PopulateUsage(u *engine.ConsumptionProfile)

func (*NATGateway) UsageSchema

func (a *NATGateway) UsageSchema() []*engine.ConsumptionField

type NeptuneCluster

type NeptuneCluster struct {
	Address               string
	Region                string
	BackupRetentionPeriod int64
	StorageGB             *float64 `c3x_usage:"storage_gb"`
	MonthlyIORequests     *int64   `c3x_usage:"monthly_io_requests"`
	BackupStorageGB       *float64 `c3x_usage:"backup_storage_gb"`
}

func (*NeptuneCluster) BuildResource

func (r *NeptuneCluster) BuildResource() *engine.Estimate

func (*NeptuneCluster) CoreType

func (r *NeptuneCluster) CoreType() string

func (*NeptuneCluster) PopulateUsage

func (r *NeptuneCluster) PopulateUsage(u *engine.ConsumptionProfile)

func (*NeptuneCluster) UsageSchema

func (r *NeptuneCluster) UsageSchema() []*engine.ConsumptionField

type NeptuneClusterInstance

type NeptuneClusterInstance struct {
	Address             string
	Region              string
	InstanceClass       string
	IOOptimized         bool
	Count               *int64
	MonthlyCPUCreditHrs *int64 `c3x_usage:"monthly_cpu_credit_hrs"`
}

func (*NeptuneClusterInstance) BuildResource

func (r *NeptuneClusterInstance) BuildResource() *engine.Estimate

func (*NeptuneClusterInstance) CoreType

func (r *NeptuneClusterInstance) CoreType() string

func (*NeptuneClusterInstance) PopulateUsage

func (r *NeptuneClusterInstance) PopulateUsage(u *engine.ConsumptionProfile)

func (*NeptuneClusterInstance) UsageSchema

func (r *NeptuneClusterInstance) UsageSchema() []*engine.ConsumptionField

type NeptuneClusterSnapshot

type NeptuneClusterSnapshot struct {
	Address               string
	Region                string
	BackupRetentionPeriod *int64   // This can be unknown since it's retrieved from the Neptune cluster
	BackupStorageGB       *float64 `c3x_usage:"backup_storage_gb"`
}

func (*NeptuneClusterSnapshot) BuildResource

func (r *NeptuneClusterSnapshot) BuildResource() *engine.Estimate

func (*NeptuneClusterSnapshot) CoreType

func (r *NeptuneClusterSnapshot) CoreType() string

func (*NeptuneClusterSnapshot) PopulateUsage

func (r *NeptuneClusterSnapshot) PopulateUsage(u *engine.ConsumptionProfile)

func (*NeptuneClusterSnapshot) UsageSchema

func (r *NeptuneClusterSnapshot) UsageSchema() []*engine.ConsumptionField

type NetworkfirewallFirewall

type NetworkfirewallFirewall struct {
	Address string
	Region  string

	MonthlyDataProcessedGB *float64 `c3x_usage:"monthly_data_processed_gb"`
}

NetworkfirewallFirewall struct represents an AWS Network Firewall Firewall resource.

Resource information: https://aws.amazon.com/network-firewall/ Pricing information: https://aws.amazon.com/network-firewall/pricing/

func (*NetworkfirewallFirewall) BuildResource

func (r *NetworkfirewallFirewall) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid NetworkfirewallFirewall struct. This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*NetworkfirewallFirewall) CoreType

func (r *NetworkfirewallFirewall) CoreType() string

NetworkfirewallFirewallUsageSchema defines a list which represents the usage schema of NetworkfirewallFirewall.

func (*NetworkfirewallFirewall) PopulateUsage

func (r *NetworkfirewallFirewall) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the NetworkfirewallFirewall. It uses the `c3x_usage` struct tags to populate data into the NetworkfirewallFirewall.

func (*NetworkfirewallFirewall) UsageSchema

func (r *NetworkfirewallFirewall) UsageSchema() []*engine.ConsumptionField

type RDSCluster

type RDSCluster struct {
	Address                   string
	Region                    string
	EngineMode                string
	Engine                    string
	IOOptimized               bool
	BackupRetentionPeriod     int64
	WriteRequestsPerSec       *int64   `c3x_usage:"write_requests_per_sec"`
	ReadRequestsPerSec        *int64   `c3x_usage:"read_requests_per_sec"`
	ChangeRecordsPerStatement *float64 `c3x_usage:"change_records_per_statement"`
	StorageGB                 *float64 `c3x_usage:"storage_gb"`
	AverageStatementsPerHr    *int64   `c3x_usage:"average_statements_per_hr"`
	BacktrackWindowHrs        *int64   `c3x_usage:"backtrack_window_hrs"`
	SnapshotExportSizeGB      *float64 `c3x_usage:"snapshot_export_size_gb"`
	CapacityUnitsPerHr        *float64 `c3x_usage:"capacity_units_per_hr"`
	BackupSnapshotSizeGB      *float64 `c3x_usage:"backup_snapshot_size_gb"`
}

func (*RDSCluster) BuildResource

func (r *RDSCluster) BuildResource() *eng.Estimate

func (*RDSCluster) CoreType

func (r *RDSCluster) CoreType() string

func (*RDSCluster) PopulateUsage

func (r *RDSCluster) PopulateUsage(u *eng.ConsumptionProfile)

func (*RDSCluster) UsageSchema

func (r *RDSCluster) UsageSchema() []*eng.ConsumptionField

type RDSClusterInstance

type RDSClusterInstance struct {
	Address                                      string
	Region                                       string
	InstanceClass                                string
	Engine                                       string
	Version                                      string
	IOOptimized                                  bool
	PerformanceInsightsEnabled                   bool
	PerformanceInsightsLongTermRetention         bool
	MonthlyCPUCreditHrs                          *int64   `c3x_usage:"monthly_cpu_credit_hrs"`
	VCPUCount                                    *int64   `c3x_usage:"vcpu_count"`
	MonthlyAdditionalPerformanceInsightsRequests *int64   `c3x_usage:"monthly_additional_performance_insights_requests"`
	ReservedInstanceTerm                         *string  `c3x_usage:"reserved_instance_term"`
	ReservedInstancePaymentOption                *string  `c3x_usage:"reserved_instance_payment_option"`
	CapacityUnitsPerHr                           *float64 `c3x_usage:"capacity_units_per_hr"`
}

func (*RDSClusterInstance) BuildResource

func (r *RDSClusterInstance) BuildResource() *eng.Estimate

func (*RDSClusterInstance) CoreType

func (r *RDSClusterInstance) CoreType() string

func (*RDSClusterInstance) PopulateUsage

func (r *RDSClusterInstance) PopulateUsage(u *eng.ConsumptionProfile)

func (*RDSClusterInstance) UsageSchema

func (r *RDSClusterInstance) UsageSchema() []*eng.ConsumptionField

type RedshiftCluster

type RedshiftCluster struct {
	Address                      string
	Region                       string
	NodeType                     string
	Nodes                        *int64
	ManagedStorageGB             *float64 `c3x_usage:"managed_storage_gb"`
	ExcessConcurrencyScalingSecs *int64   `c3x_usage:"excess_concurrency_scaling_secs"`
	SpectrumDataScannedTB        *float64 `c3x_usage:"spectrum_data_scanned_tb"`
	BackupStorageGB              *float64 `c3x_usage:"backup_storage_gb"`
}

func (*RedshiftCluster) BuildResource

func (r *RedshiftCluster) BuildResource() *engine.Estimate

func (*RedshiftCluster) CoreType

func (r *RedshiftCluster) CoreType() string

func (*RedshiftCluster) PopulateUsage

func (r *RedshiftCluster) PopulateUsage(u *engine.ConsumptionProfile)

func (*RedshiftCluster) UsageSchema

func (r *RedshiftCluster) UsageSchema() []*engine.ConsumptionField

type RegionUsage

type RegionUsage struct {
	Key   string
	Value float64
}

RegionUsage defines a hard definition in the regions map.

type RegionsUsage

type RegionsUsage struct {
	USGovWest1   *float64 `c3x_usage:"us_gov_west_1"`
	USGovEast1   *float64 `c3x_usage:"us_gov_east_1"`
	USEast1      *float64 `c3x_usage:"us_east_1"`
	USEast2      *float64 `c3x_usage:"us_east_2"`
	USWest1      *float64 `c3x_usage:"us_west_1"`
	USWest2      *float64 `c3x_usage:"us_west_2"`
	USWest2Lax1  *float64 `c3x_usage:"us_west_2_lax_1"`
	CACentral1   *float64 `c3x_usage:"ca_central_1"`
	CAWest1      *float64 `c3x_usage:"ca_west_1"`
	CNNorth1     *float64 `c3x_usage:"cn_north_1"`
	CNNorthwest1 *float64 `c3x_usage:"cn_northwest_1"`
	EUCentral1   *float64 `c3x_usage:"eu_central_1"`
	EUCentral2   *float64 `c3x_usage:"eu_central_2"`
	EUWest1      *float64 `c3x_usage:"eu_west_1"`
	EUWest2      *float64 `c3x_usage:"eu_west_2"`
	EUSouth1     *float64 `c3x_usage:"eu_south_1"`
	EUSouth2     *float64 `c3x_usage:"eu_south_2"`
	EUWest3      *float64 `c3x_usage:"eu_west_3"`
	EUNorth1     *float64 `c3x_usage:"eu_north_1"`
	ILCentral1   *float64 `c3x_usage:"il_central_1"`
	APEast1      *float64 `c3x_usage:"ap_east_1"`
	APEast2      *float64 `c3x_usage:"ap_east_2"`
	APNortheast1 *float64 `c3x_usage:"ap_northeast_1"`
	APNortheast2 *float64 `c3x_usage:"ap_northeast_2"`
	APNortheast3 *float64 `c3x_usage:"ap_northeast_3"`
	APSoutheast1 *float64 `c3x_usage:"ap_southeast_1"`
	APSoutheast2 *float64 `c3x_usage:"ap_southeast_2"`
	APSoutheast3 *float64 `c3x_usage:"ap_southeast_3"`
	APSoutheast4 *float64 `c3x_usage:"ap_southeast_4"`
	APSoutheast5 *float64 `c3x_usage:"ap_southeast_5"`
	APSoutheast6 *float64 `c3x_usage:"ap_southeast_6"`
	APSoutheast7 *float64 `c3x_usage:"ap_southeast_7"`
	APSouth1     *float64 `c3x_usage:"ap_south_1"`
	APSouth2     *float64 `c3x_usage:"ap_south_2"`
	MECentral1   *float64 `c3x_usage:"me_central_1"`
	MESouth1     *float64 `c3x_usage:"me_south_1"`
	SAEast1      *float64 `c3x_usage:"sa_east_1"`
	AFSouth1     *float64 `c3x_usage:"af_south_1"`
}

RegionsUsage is a reusable type that represents a usage cost map. This can be used in resources that define a usage parameter that's changed on a per-region basis. e.g.

monthly_data_processed_gb:

us_gov_west_1: 188
us_east_1: 78

can be handled by adding a usage cost property to your resource like so:

type MyResource struct {
   ...
   MonthlyDataProcessedGB *RegionsUsage `c3x_usage:"monthly_processed_gb"`
}

func (RegionsUsage) Values

func (r RegionsUsage) Values() []RegionUsage

Values returns RegionUsage as a slice which can be iterated over to create cost components. The keys of the regions returned have their underscores replaced with hypens so they can be used in product filters and cost lookups.

type Route53HealthCheck

type Route53HealthCheck struct {
	Address         string
	RequestInterval string
	MeasureLatency  bool
	Type            string
	EndpointType    *string `c3x_usage:"endpoint_type"`
}

func (*Route53HealthCheck) BuildResource

func (r *Route53HealthCheck) BuildResource() *engine.Estimate

func (*Route53HealthCheck) CoreType

func (r *Route53HealthCheck) CoreType() string

func (*Route53HealthCheck) PopulateUsage

func (r *Route53HealthCheck) PopulateUsage(u *engine.ConsumptionProfile)

func (*Route53HealthCheck) UsageSchema

func (r *Route53HealthCheck) UsageSchema() []*engine.ConsumptionField

type Route53Record

type Route53Record struct {
	Address                    string
	IsAlias                    bool
	MonthlyLatencyBasedQueries *int64 `c3x_usage:"monthly_latency_based_queries"`
	MonthlyGeoQueries          *int64 `c3x_usage:"monthly_geo_queries"`
	MonthlyStandardQueries     *int64 `c3x_usage:"monthly_standard_queries"`
}

func (*Route53Record) BuildResource

func (r *Route53Record) BuildResource() *engine.Estimate

func (*Route53Record) CoreType

func (r *Route53Record) CoreType() string

func (*Route53Record) PopulateUsage

func (r *Route53Record) PopulateUsage(u *engine.ConsumptionProfile)

func (*Route53Record) UsageSchema

func (r *Route53Record) UsageSchema() []*engine.ConsumptionField

type Route53ResolverEndpoint

type Route53ResolverEndpoint struct {
	Address           string
	Region            string
	ResolverEndpoints int64
	MonthlyQueries    *int64 `c3x_usage:"monthly_queries"`
}

func (*Route53ResolverEndpoint) BuildResource

func (r *Route53ResolverEndpoint) BuildResource() *engine.Estimate

func (*Route53ResolverEndpoint) CoreType

func (r *Route53ResolverEndpoint) CoreType() string

func (*Route53ResolverEndpoint) PopulateUsage

func (r *Route53ResolverEndpoint) PopulateUsage(u *engine.ConsumptionProfile)

func (*Route53ResolverEndpoint) UsageSchema

func (r *Route53ResolverEndpoint) UsageSchema() []*engine.ConsumptionField

type Route53Zone

type Route53Zone struct {
	Address string
}

func (*Route53Zone) BuildResource

func (r *Route53Zone) BuildResource() *engine.Estimate

func (*Route53Zone) CoreType

func (r *Route53Zone) CoreType() string

func (*Route53Zone) PopulateUsage

func (r *Route53Zone) PopulateUsage(u *engine.ConsumptionProfile)

func (*Route53Zone) UsageSchema

func (r *Route53Zone) UsageSchema() []*engine.ConsumptionField

type S3Bucket

type S3Bucket struct {
	// "required" args that can't really be missing.
	Address           string
	Region            string
	Name              string
	ObjectTagsEnabled bool

	// "optional" args, that may be empty depending on the resource config
	LifecycleStorageClasses []string

	// "usage" args
	ObjectTags *int64 `c3x_usage:"object_tags"`
	// contains filtered or unexported fields
}

func (*S3Bucket) AllStorageClasses

func (a *S3Bucket) AllStorageClasses() []S3StorageClass

func (*S3Bucket) BuildResource

func (a *S3Bucket) BuildResource() *engine.Estimate

func (*S3Bucket) CoreType

func (a *S3Bucket) CoreType() string

func (*S3Bucket) PopulateUsage

func (a *S3Bucket) PopulateUsage(u *engine.ConsumptionProfile)

func (*S3Bucket) UsageSchema

func (a *S3Bucket) UsageSchema() []*engine.ConsumptionField

type S3BucketAnalyticsConfiguration

type S3BucketAnalyticsConfiguration struct {
	Address                 string
	Region                  string
	MonthlyMonitoredObjects *int64 `c3x_usage:"monthly_monitored_objects"`
}

func (*S3BucketAnalyticsConfiguration) BuildResource

func (r *S3BucketAnalyticsConfiguration) BuildResource() *engine.Estimate

func (*S3BucketAnalyticsConfiguration) CoreType

func (r *S3BucketAnalyticsConfiguration) CoreType() string

func (*S3BucketAnalyticsConfiguration) PopulateUsage

func (*S3BucketAnalyticsConfiguration) UsageSchema

type S3BucketInventory

type S3BucketInventory struct {
	Address              string
	Region               string
	MonthlyListedObjects *int64 `c3x_usage:"monthly_listed_objects"`
}

func (*S3BucketInventory) BuildResource

func (r *S3BucketInventory) BuildResource() *engine.Estimate

func (*S3BucketInventory) CoreType

func (r *S3BucketInventory) CoreType() string

func (*S3BucketInventory) PopulateUsage

func (r *S3BucketInventory) PopulateUsage(u *engine.ConsumptionProfile)

func (*S3BucketInventory) UsageSchema

func (r *S3BucketInventory) UsageSchema() []*engine.ConsumptionField

type S3GlacierDeepArchiveStorageClass

type S3GlacierDeepArchiveStorageClass struct {
	// "required" args that can't really be missing.
	Region string

	// "usage" args
	StorageGB                            *float64 `c3x_usage:"storage_gb"`
	MonthlyTier1Requests                 *int64   `c3x_usage:"monthly_tier_1_requests"`
	MonthlyTier2Requests                 *int64   `c3x_usage:"monthly_tier_2_requests"`
	MonthlyLifecycleTransitionRequests   *int64   `c3x_usage:"monthly_lifecycle_transition_requests"`
	MonthlyStandardDataRetrievalRequests *int64   `c3x_usage:"monthly_standard_data_retrieval_requests"`
	MonthlyStandardDataRetrievalGB       *float64 `c3x_usage:"monthly_standard_data_retrieval_gb"`
	MonthlyBulkDataRetrievalRequests     *int64   `c3x_usage:"monthly_bulk_data_retrieval_requests"`
	MonthlyBulkDataRetrievalGB           *float64 `c3x_usage:"monthly_bulk_data_retrieval_gb"`
	EarlyDeleteGB                        *float64 `c3x_usage:"early_delete_gb"`
}

func (*S3GlacierDeepArchiveStorageClass) BuildResource

func (a *S3GlacierDeepArchiveStorageClass) BuildResource() *engine.Estimate

func (*S3GlacierDeepArchiveStorageClass) CoreType

func (*S3GlacierDeepArchiveStorageClass) PopulateUsage

func (*S3GlacierDeepArchiveStorageClass) UsageKey

func (*S3GlacierDeepArchiveStorageClass) UsageSchema

type S3GlacierFlexibleRetrievalStorageClass

type S3GlacierFlexibleRetrievalStorageClass struct {
	// "required" args that can't really be missing.
	Region string

	// "usage" args
	StorageGB                             *float64 `c3x_usage:"storage_gb"`
	MonthlyTier1Requests                  *int64   `c3x_usage:"monthly_tier_1_requests"`
	MonthlyTier2Requests                  *int64   `c3x_usage:"monthly_tier_2_requests"`
	MonthlyLifecycleTransitionRequests    *int64   `c3x_usage:"monthly_lifecycle_transition_requests"`
	MonthlyStandardDataRetrievalRequests  *int64   `c3x_usage:"monthly_standard_data_retrieval_requests"`
	MonthlyStandardDataRetrievalGB        *float64 `c3x_usage:"monthly_standard_data_retrieval_gb"`
	MonthlyStandardSelectDataScannedGB    *float64 `c3x_usage:"monthly_standard_select_data_scanned_gb"`
	MonthlyStandardSelectDataReturnedGB   *float64 `c3x_usage:"monthly_standard_select_data_returned_gb"`
	MonthlyExpeditedDataRetrievalRequests *int64   `c3x_usage:"monthly_expedited_data_retrieval_requests"`
	MonthlyExpeditedDataRetrievalGB       *float64 `c3x_usage:"monthly_expedited_data_retrieval_gb"`
	MonthlyExpeditedSelectDataScannedGB   *float64 `c3x_usage:"monthly_expedited_select_data_scanned_gb"`
	MonthlyExpeditedSelectDataReturnedGB  *float64 `c3x_usage:"monthly_expedited_select_data_returned_gb"`
	MonthlyBulkSelectDataScannedGB        *float64 `c3x_usage:"monthly_bulk_select_data_scanned_gb"`
	MonthlyBulkSelectDataReturnedGB       *float64 `c3x_usage:"monthly_bulk_select_data_returned_gb"`
	EarlyDeleteGB                         *float64 `c3x_usage:"early_delete_gb"`
}

func (*S3GlacierFlexibleRetrievalStorageClass) BuildResource

func (*S3GlacierFlexibleRetrievalStorageClass) CoreType

func (*S3GlacierFlexibleRetrievalStorageClass) PopulateUsage

func (*S3GlacierFlexibleRetrievalStorageClass) UsageKey

func (*S3GlacierFlexibleRetrievalStorageClass) UsageSchema

type S3IntelligentTieringStorageClass

type S3IntelligentTieringStorageClass struct {
	// "required" args that can't really be missing.
	Region string

	// "usage" args
	FrequentAccessStorageGB            *float64 `c3x_usage:"frequent_access_storage_gb"`
	InfrequentAccessStorageGB          *float64 `c3x_usage:"infrequent_access_storage_gb"`
	ArchiveAccessStorageGB             *float64 `c3x_usage:"archive_access_storage_gb"`
	DeepArchiveAccessStorageGB         *float64 `c3x_usage:"deep_archive_access_storage_gb"`
	MonitoredObjects                   *int64   `c3x_usage:"monitored_objects"`
	MonthlyTier1Requests               *int64   `c3x_usage:"monthly_tier_1_requests"`
	MonthlyTier2Requests               *int64   `c3x_usage:"monthly_tier_2_requests"`
	MonthlyLifecycleTransitionRequests *int64   `c3x_usage:"monthly_lifecycle_transition_requests"`
	MonthlySelectDataScannedGB         *float64 `c3x_usage:"monthly_select_data_scanned_gb"`
	MonthlySelectDataReturnedGB        *float64 `c3x_usage:"monthly_select_data_returned_gb"`
	EarlyDeleteGB                      *float64 `c3x_usage:"early_delete_gb"`
}

func (*S3IntelligentTieringStorageClass) BuildResource

func (a *S3IntelligentTieringStorageClass) BuildResource() *engine.Estimate

func (*S3IntelligentTieringStorageClass) CoreType

func (*S3IntelligentTieringStorageClass) PopulateUsage

func (*S3IntelligentTieringStorageClass) UsageKey

func (*S3IntelligentTieringStorageClass) UsageSchema

type S3OneZoneInfrequentAccessStorageClass

type S3OneZoneInfrequentAccessStorageClass struct {
	// "required" args that can't really be missing.
	Region string

	// "usage" args
	StorageGB                          *float64 `c3x_usage:"storage_gb"`
	MonthlyTier1Requests               *int64   `c3x_usage:"monthly_tier_1_requests"`
	MonthlyTier2Requests               *int64   `c3x_usage:"monthly_tier_2_requests"`
	MonthlyLifecycleTransitionRequests *int64   `c3x_usage:"monthly_lifecycle_transition_requests"`
	MonthlyDataRetrievalGB             *float64 `c3x_usage:"monthly_data_retrieval_gb"`
	MonthlySelectDataScannedGB         *float64 `c3x_usage:"monthly_select_data_scanned_gb"`
	MonthlySelectDataReturnedGB        *float64 `c3x_usage:"monthly_select_data_returned_gb"`
}

func (*S3OneZoneInfrequentAccessStorageClass) BuildResource

func (*S3OneZoneInfrequentAccessStorageClass) CoreType

func (*S3OneZoneInfrequentAccessStorageClass) PopulateUsage

func (*S3OneZoneInfrequentAccessStorageClass) UsageKey

func (*S3OneZoneInfrequentAccessStorageClass) UsageSchema

type S3StandardInfrequentAccessStorageClass

type S3StandardInfrequentAccessStorageClass struct {
	// "required" args that can't really be missing.
	Region string

	// "usage" args
	StorageGB                          *float64 `c3x_usage:"storage_gb"`
	MonthlyTier1Requests               *int64   `c3x_usage:"monthly_tier_1_requests"`
	MonthlyTier2Requests               *int64   `c3x_usage:"monthly_tier_2_requests"`
	MonthlyLifecycleTransitionRequests *int64   `c3x_usage:"monthly_lifecycle_transition_requests"`
	MonthlyDataRetrievalGB             *float64 `c3x_usage:"monthly_data_retrieval_gb"`
	MonthlySelectDataScannedGB         *float64 `c3x_usage:"monthly_select_data_scanned_gb"`
	MonthlySelectDataReturnedGB        *float64 `c3x_usage:"monthly_select_data_returned_gb"`
}

func (*S3StandardInfrequentAccessStorageClass) BuildResource

func (*S3StandardInfrequentAccessStorageClass) CoreType

func (*S3StandardInfrequentAccessStorageClass) PopulateUsage

func (*S3StandardInfrequentAccessStorageClass) UsageKey

func (*S3StandardInfrequentAccessStorageClass) UsageSchema

type S3StandardStorageClass

type S3StandardStorageClass struct {
	// "required" args that can't really be missing.
	Region string

	// "usage" args
	StorageGB                   *float64 `c3x_usage:"storage_gb"`
	MonthlyTier1Requests        *int64   `c3x_usage:"monthly_tier_1_requests"`
	MonthlyTier2Requests        *int64   `c3x_usage:"monthly_tier_2_requests"`
	MonthlySelectDataScannedGB  *float64 `c3x_usage:"monthly_select_data_scanned_gb"`
	MonthlySelectDataReturnedGB *float64 `c3x_usage:"monthly_select_data_returned_gb"`
}

func (*S3StandardStorageClass) BuildResource

func (a *S3StandardStorageClass) BuildResource() *engine.Estimate

func (*S3StandardStorageClass) CoreType

func (a *S3StandardStorageClass) CoreType() string

func (*S3StandardStorageClass) PopulateUsage

func (a *S3StandardStorageClass) PopulateUsage(u *engine.ConsumptionProfile)

func (*S3StandardStorageClass) UsageKey

func (a *S3StandardStorageClass) UsageKey() string

func (*S3StandardStorageClass) UsageSchema

func (a *S3StandardStorageClass) UsageSchema() []*engine.ConsumptionField

type S3StorageClass

type S3StorageClass interface {
	UsageKey() string
	PopulateUsage(u *engine.ConsumptionProfile)
	BuildResource() *engine.Estimate
}

type SFnStateMachine

type SFnStateMachine struct {
	Address            string
	Region             string
	Type               string
	MonthlyRequests    *int64 `c3x_usage:"monthly_requests"`
	WorkflowDurationMs *int64 `c3x_usage:"workflow_duration_ms"`
	MemoryMB           *int64 `c3x_usage:"memory_mb"`
	MonthlyTransitions *int64 `c3x_usage:"monthly_transitions"`
}

func (*SFnStateMachine) BuildResource

func (r *SFnStateMachine) BuildResource() *engine.Estimate

func (*SFnStateMachine) CoreType

func (r *SFnStateMachine) CoreType() string

func (*SFnStateMachine) PopulateUsage

func (r *SFnStateMachine) PopulateUsage(u *engine.ConsumptionProfile)

func (*SFnStateMachine) UsageSchema

func (r *SFnStateMachine) UsageSchema() []*engine.ConsumptionField

type SNSFIFOTopic

type SNSFIFOTopic struct {
	Address         string
	Region          string
	Subscriptions   int64
	RequestSizeKB   *float64 `c3x_usage:"request_size_kb"`
	MonthlyRequests *int64   `c3x_usage:"monthly_requests"`
}

SNSFIFOTopic struct represents an AWS SNS Topic operating in "FIFO" mode.

Resource information: https://docs.aws.amazon.com/sns/latest/dg/fifo-example-use-case.html Pricing information: https://aws.amazon.com/sns/pricing/#FIFO_topics

func (*SNSFIFOTopic) BuildResource

func (r *SNSFIFOTopic) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid SNSFIFOTopic struct. This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*SNSFIFOTopic) CoreType

func (r *SNSFIFOTopic) CoreType() string

func (*SNSFIFOTopic) PopulateUsage

func (r *SNSFIFOTopic) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the SNSFIFOTopic. It uses the `c3x_usage` struct tags to populate data into the SNSFIFOTopic.

func (*SNSFIFOTopic) UsageSchema

func (r *SNSFIFOTopic) UsageSchema() []*engine.ConsumptionField

type SNSTopic

type SNSTopic struct {
	Address                 string
	Region                  string
	RequestSizeKB           *float64 `c3x_usage:"request_size_kb"`
	MonthlyRequests         *int64   `c3x_usage:"monthly_requests"`
	HTTPSubscriptions       *int64   `c3x_usage:"http_subscriptions"`
	EmailSubscriptions      *int64   `c3x_usage:"email_subscriptions"`
	KinesisSubscriptions    *int64   `c3x_usage:"kinesis_subscriptions"`
	MobilePushSubscriptions *int64   `c3x_usage:"mobile_push_subscriptions"`
	MacOSSubscriptions      *int64   `c3x_usage:"macos_subscriptions"`
	SMSSubscriptions        *int64   `c3x_usage:"sms_subscriptions"`
	SMSNotificationPrice    *float64 `c3x_usage:"sms_notification_price"`
}

SNSTopic struct represents an AWS SNS Topic operating in "Standard" mode.

Resource information: https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html Pricing information: https://aws.amazon.com/sns/pricing/#Standard_topics

func (*SNSTopic) BuildResource

func (r *SNSTopic) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid SNSTopic struct. This method is called after the resource is initialised by an IaC provider. See providers folder for more information.

func (*SNSTopic) CoreType

func (r *SNSTopic) CoreType() string

func (*SNSTopic) PopulateUsage

func (r *SNSTopic) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the SNSTopic. It uses the `c3x_usage` struct tags to populate data into the SNSTopic.

func (*SNSTopic) UsageSchema

func (r *SNSTopic) UsageSchema() []*engine.ConsumptionField

type SNSTopicSubscription

type SNSTopicSubscription struct {
	Address         string
	Protocol        string
	Region          string
	RequestSizeKB   *float64 `c3x_usage:"request_size_kb"`
	MonthlyRequests *int64   `c3x_usage:"monthly_requests"`
}

func (*SNSTopicSubscription) BuildResource

func (r *SNSTopicSubscription) BuildResource() *engine.Estimate

func (*SNSTopicSubscription) CoreType

func (r *SNSTopicSubscription) CoreType() string

func (*SNSTopicSubscription) PopulateUsage

func (r *SNSTopicSubscription) PopulateUsage(u *engine.ConsumptionProfile)

func (*SNSTopicSubscription) UsageSchema

func (r *SNSTopicSubscription) UsageSchema() []*engine.ConsumptionField

type SQSQueue

type SQSQueue struct {
	Address         string
	Region          string
	FifoQueue       bool
	MonthlyRequests *float64 `c3x_usage:"monthly_requests"`
	RequestSizeKB   *int64   `c3x_usage:"request_size_kb"`
}

func (*SQSQueue) BuildResource

func (r *SQSQueue) BuildResource() *engine.Estimate

func (*SQSQueue) CoreType

func (r *SQSQueue) CoreType() string

func (*SQSQueue) PopulateUsage

func (r *SQSQueue) PopulateUsage(u *engine.ConsumptionProfile)

func (*SQSQueue) UsageSchema

func (r *SQSQueue) UsageSchema() []*engine.ConsumptionField

type SSMActivation

type SSMActivation struct {
	Address           string
	Region            string
	RegistrationLimit int64
	InstanceTier      *string `c3x_usage:"instance_tier"`
	Instances         *int64  `c3x_usage:"instances"`
}

func (*SSMActivation) BuildResource

func (r *SSMActivation) BuildResource() *engine.Estimate

func (*SSMActivation) CoreType

func (r *SSMActivation) CoreType() string

func (*SSMActivation) PopulateUsage

func (r *SSMActivation) PopulateUsage(u *engine.ConsumptionProfile)

func (*SSMActivation) UsageSchema

func (r *SSMActivation) UsageSchema() []*engine.ConsumptionField

type SSMParameter

type SSMParameter struct {
	Address                string
	Tier                   string
	Region                 string
	ParameterStorageHrs    *int64  `c3x_usage:"parameter_storage_hrs"`
	APIThroughputLimit     *string `c3x_usage:"api_throughput_limit"`
	MonthlyAPIInteractions *int64  `c3x_usage:"monthly_api_interactions"`
}

func (*SSMParameter) BuildResource

func (r *SSMParameter) BuildResource() *engine.Estimate

func (*SSMParameter) CoreType

func (r *SSMParameter) CoreType() string

func (*SSMParameter) PopulateUsage

func (r *SSMParameter) PopulateUsage(u *engine.ConsumptionProfile)

func (*SSMParameter) UsageSchema

func (r *SSMParameter) UsageSchema() []*engine.ConsumptionField

type SearchDomain

type SearchDomain struct {
	Address              string
	Region               string
	ClusterInstanceType  string
	ClusterInstanceCount *int64 // If this is nil it will default to 1

	EBSEnabled    bool
	EBSVolumeType string
	EBSVolumeSize *float64 // if this is nil it will default to 8
	EBSIOPS       *float64 // if this is nil it will default to 1
	EBSThroughput *float64 // if this is nil it will default to 0

	ClusterDedicatedMasterEnabled bool
	ClusterDedicatedMasterType    string
	ClusterDedicatedMasterCount   *int64 // if this is nil it will default to 3

	ClusterWarmEnabled bool
	ClusterWarmType    string
	ClusterWarmCount   *int64
}

SearchDomain struct represents a managed search domain for both Amazon OpenSearch Service (formerly known as Amazon Elasticsearch Service) and AWS Elasticsearch Domain. These services provide fully managed search and analytics engines based on Elasticsearch and OpenSearch, respectively, allowing you to easily deploy, secure, and scale search solutions.

Amazon OpenSearch Service and AWS Elasticsearch Domain offer a variety of instance types and configurations to accommodate different workloads, including dedicated master nodes, warm nodes, and EBS storage options. The pricing depends on the chosen instance types, instance counts, storage options, and additional features.

For more information about Amazon OpenSearch Service and AWS Elasticsearch Domain functionality and pricing, refer to the following links:

Amazon OpenSearch Service: Resource information: https://aws.amazon.com/opensearch-service/ Pricing information: https://aws.amazon.com/opensearch-service/pricing/

AWS Elasticsearch Domain: Resource information: https://aws.amazon.com/elasticsearch-service/ Pricing information: https://aws.amazon.com/elasticsearch-service/pricing/

func (*SearchDomain) BuildResource

func (r *SearchDomain) BuildResource() *engine.Estimate

func (*SearchDomain) CoreType

func (r *SearchDomain) CoreType() string

func (*SearchDomain) PopulateUsage

func (r *SearchDomain) PopulateUsage(u *engine.ConsumptionProfile)

func (*SearchDomain) UsageSchema

func (r *SearchDomain) UsageSchema() []*engine.ConsumptionField

type SecretsManagerSecret

type SecretsManagerSecret struct {
	Address         string
	Region          string
	MonthlyRequests *int64 `c3x_usage:"monthly_requests"`
}

func (*SecretsManagerSecret) BuildResource

func (r *SecretsManagerSecret) BuildResource() *engine.Estimate

func (*SecretsManagerSecret) CoreType

func (r *SecretsManagerSecret) CoreType() string

func (*SecretsManagerSecret) PopulateUsage

func (r *SecretsManagerSecret) PopulateUsage(u *engine.ConsumptionProfile)

func (*SecretsManagerSecret) UsageSchema

func (r *SecretsManagerSecret) UsageSchema() []*engine.ConsumptionField

type TransferServer

type TransferServer struct {
	Address   string
	Region    string
	Protocols []string

	// "usage" args
	MonthlyDataDownloadedGB *float64 `c3x_usage:"monthly_data_downloaded_gb"`
	MonthlyDataUploadedGB   *float64 `c3x_usage:"monthly_data_uploaded_gb"`
}

TransferServer defines a AWS Transfer Server resource from Transfer Family service. It supports multiple transfer protocols like FTP/FTPS/SFTP and each is billed hourly when enabled. It also bills the amount of data being downloaded/uploaded over those protocols.

See more resource information here: https://aws.amazon.com/aws-transfer-family/.

See the pricing information here: https://aws.amazon.com/aws-transfer-family/pricing/.

func (*TransferServer) BuildResource

func (r *TransferServer) BuildResource() *engine.Estimate

BuildResource builds a engine.Estimate from a valid TransferServer struct. This method is called after the resource is initialised by an IaC provider.

func (*TransferServer) CoreType

func (r *TransferServer) CoreType() string

TransferServerUsageSchema defines a list of usage items for TransferServer.

func (*TransferServer) PopulateUsage

func (r *TransferServer) PopulateUsage(u *engine.ConsumptionProfile)

PopulateUsage parses the u engine.ConsumptionProfile into the TransferServer. It uses the `c3x_usage` struct tags to populate data into the TransferServer.

func (*TransferServer) UsageSchema

func (r *TransferServer) UsageSchema() []*engine.ConsumptionField

type VPCEndpoint

type VPCEndpoint struct {
	Address                string
	Region                 string
	Type                   string
	Interfaces             *int64
	MonthlyDataProcessedGb *float64 `c3x_usage:"monthly_data_processed_gb"`
}

func (*VPCEndpoint) BuildResource

func (r *VPCEndpoint) BuildResource() *engine.Estimate

func (*VPCEndpoint) CoreType

func (r *VPCEndpoint) CoreType() string

func (*VPCEndpoint) PopulateUsage

func (r *VPCEndpoint) PopulateUsage(u *engine.ConsumptionProfile)

func (*VPCEndpoint) UsageSchema

func (r *VPCEndpoint) UsageSchema() []*engine.ConsumptionField

type VPNConnection

type VPNConnection struct {
	Address                string
	Region                 string
	TransitGatewayID       string
	MonthlyDataProcessedGB *float64 `c3x_usage:"monthly_data_processed_gb"`
}

func (*VPNConnection) BuildResource

func (r *VPNConnection) BuildResource() *engine.Estimate

func (*VPNConnection) CoreType

func (r *VPNConnection) CoreType() string

func (*VPNConnection) PopulateUsage

func (r *VPNConnection) PopulateUsage(u *engine.ConsumptionProfile)

func (*VPNConnection) UsageSchema

func (r *VPNConnection) UsageSchema() []*engine.ConsumptionField

type WAFWebACL

type WAFWebACL struct {
	Address         string
	Region          string
	Rules           int64
	RuleGroups      int64
	RuleGroupRules  *int64 `c3x_usage:"rule_group_rules"`
	MonthlyRequests *int64 `c3x_usage:"monthly_requests"`
}

func (*WAFWebACL) BuildResource

func (r *WAFWebACL) BuildResource() *engine.Estimate

func (*WAFWebACL) CoreType

func (r *WAFWebACL) CoreType() string

func (*WAFWebACL) PopulateUsage

func (r *WAFWebACL) PopulateUsage(u *engine.ConsumptionProfile)

func (*WAFWebACL) UsageSchema

func (r *WAFWebACL) UsageSchema() []*engine.ConsumptionField

type WAFv2WebACL

type WAFv2WebACL struct {
	Address               string
	Region                string
	Rules                 int64
	RuleGroups            int64
	ManagedRuleGroups     int64
	RuleGroupRules        *int64 `c3x_usage:"rule_group_rules"`
	ManagedRuleGroupRules *int64 `c3x_usage:"managed_rule_group_rules"`
	MonthlyRequests       *int64 `c3x_usage:"monthly_requests"`
}

func (*WAFv2WebACL) BuildResource

func (r *WAFv2WebACL) BuildResource() *engine.Estimate

func (*WAFv2WebACL) CoreType

func (r *WAFv2WebACL) CoreType() string

func (*WAFv2WebACL) PopulateUsage

func (r *WAFv2WebACL) PopulateUsage(u *engine.ConsumptionProfile)

func (*WAFv2WebACL) UsageSchema

func (r *WAFv2WebACL) UsageSchema() []*engine.ConsumptionField

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL