Documentation
¶
Index ¶
- Constants
- func PrintDollars(i int) string
- func Table(o io.Writer, headers []string, rows [][]string)
- func TableString(headers []string, rows [][]string) string
- type AggregateByKey
- type AggregateDetail
- type AggregateReport
- type AggregateRow
- type AggregateSummary
- type Aggregator
- type Check
- type CheckType
- type Config
- type CostReport
- type CostReporter
- type EBSAggregate
- type EBSReport
- type EBSVolume
- type EC2Aggregate
- type EC2Instance
- type EC2Report
- type Environment
- type LimitReport
- type LoadBalancer
- type LoadBalancerAggregate
- type LoadBalancerReport
- type Option
- func WithAggregationByTag(t string) Option
- func WithChecks(checks ...Check) Option
- func WithCostOptimizationChecks() Option
- func WithCustomTagAggregator(a Aggregator) Option
- func WithFaultToleranceChecks() Option
- func WithPerformanceChecks() Option
- func WithSecurityChecks() Option
- func WithServiceLimitChecks() Option
- func WithoutResourceDetails() Option
- type RDSAggregate
- type RDSInstance
- type RDSReport
- type RedShiftCluster
- type RedshiftAggregate
- type RedshiftReport
- type Report
- type ServiceLimit
- type TagMap
- func GetEBSTags(sess *session.Session, ids []*string) (TagMap, error)
- func GetEC2Tags(sess *session.Session, ids []*string) (TagMap, error)
- func GetLBTagsFromARNs(sess *session.Session, arns []*string) (TagMap, error)
- func GetLBTagsFromNames(sess *session.Session, names []*string) (TagMap, error)
- func GetRDSTags(sess *session.Session, names []*string) (TagMap, error)
- func GetRedshiftTags(sess *session.Session) (TagMap, error)
- type TrustedAdvisorCheck
- type UnassociatedElasticIPAddresses
- type UnassociatedElasticIPAddressesReport
Constants ¶
View Source
const ( CheckAmazonAuroraDBInstanceAccessibility = "Amazon Aurora DB Instance Accessibility" CheckAmazonEBSProvisionedIOPSSSDVolumeAttachmentConfiguration = "Amazon EBS Provisioned IOPS (SSD) Volume Attachment Configuration" CheckAmazonEBSPublicSnapshots = "Amazon EBS Public Snapshots" CheckAmazonEBSSnapshots = "Amazon EBS Snapshots" CheckAmazonEC2AvailabilityZoneBalance = "Amazon EC2 Availability Zone Balance" CheckAmazonEC2ReservedInstanceLeaseExpiration = "Amazon EC2 Reserved Instance Lease Expiration" CheckAmazonEC2ReservedInstancesOptimization = "Amazon EC2 Reserved Instances Optimization" CheckAmazonEC2toEBSThroughputOptimization = "Amazon EC2 to EBS Throughput Optimization" CheckAmazonRDSBackups = "Amazon RDS Backups" CheckAmazonRDSIdleDBInstances = "Amazon RDS Idle DB Instances" CheckAmazonRDSMultiAZ = "Amazon RDS Multi-AZ" CheckAmazonRDSPublicSnapshots = "Amazon RDS Public Snapshots" CheckAmazonRDSSecurityGroupAccessRisk = "Amazon RDS Security Group Access Risk" CheckAmazonRoute53AliasResourceRecordSets = "Amazon Route 53 Alias Resource Record Sets" CheckAmazonRoute53DeletedHealthChecks = "Amazon Route 53 Deleted Health Checks" CheckAmazonRoute53FailoverResourceRecordSets = "Amazon Route 53 Failover Resource Record Sets" CheckAmazonRoute53HighTTLResourceRecordSets = "Amazon Route 53 High TTL Resource Record Sets" CheckAmazonRoute53LatencyResourceRecordSets = "Amazon Route 53 Latency Resource Record Sets" CheckAmazonRoute53MXResourceRecordSetsandSenderPolicyFramework = "Amazon Route 53 MX Resource Record Sets and Sender Policy Framework" CheckAmazonRoute53NameServerDelegations = "Amazon Route 53 Name Server Delegations" CheckAmazonS3BucketLogging = "Amazon S3 Bucket Logging" CheckAmazonS3BucketPermissions = "Amazon S3 Bucket Permissions" CheckAmazonS3BucketVersioning = "Amazon S3 Bucket Versioning" CheckAutoScalingGroupHealthCheck = "Auto Scaling Group Health Check" CheckAutoScalingGroupResources = "Auto Scaling Group Resources" CheckAutoScalingGroups = "Auto Scaling Groups" CheckAutoScalingLaunchConfigurations = "Auto Scaling Launch Configurations" CheckAWSCloudTrailLogging = "AWS CloudTrail Logging" CheckAWSDirectConnectConnectionRedundancy = "AWS Direct Connect Connection Redundancy" CheckAWSDirectConnectLocationRedundancy = "AWS Direct Connect Location Redundancy" CheckAWSDirectConnectVirtualInterfaceRedundancy = "AWS Direct Connect Virtual Interface Redundancy" CheckCloudFormationStacks = "CloudFormation Stacks" CheckCloudFrontAlternateDomainNames = "CloudFront Alternate Domain Names" CheckCloudFrontContentDeliveryOptimization = "CloudFront Content Delivery Optimization" CheckCloudFrontCustomSSLCertificatesintheIAMCertificateStore = "CloudFront Custom SSL Certificates in the IAM Certificate Store" CheckCloudFrontHeaderForwardingandCacheHitRatio = "CloudFront Header Forwarding and Cache Hit Ratio" CheckCloudFrontSSLCertificateontheOriginServer = "CloudFront SSL Certificate on the Origin Server" CheckDynamoDBReadCapacity = "DynamoDB Read Capacity" CheckDynamoDBWriteCapacity = "DynamoDB Write Capacity" CheckEBSActiveSnapshots = "EBS Active Snapshots" CheckEBSActiveVolumes = "EBS Active Volumes" CheckEBSColdHDDSC1VolumeStorage = "EBS Cold HDD (sc1) Volume Storage" CheckEBSGeneralPurposeSSDGP2VolumeStorage = "EBS General Purpose SSD (gp2) Volume Storage" CheckEBSMagneticStandardVolumeStorage = "EBS Magnetic (standard) Volume Storage" CheckEBSProvisionedIOPSSSSDVolumeAggregateIOPS = "EBS Provisioned IOPS (SSD) Volume Aggregate IOPS" CheckEBSProvisionedIOPSSSDIO1VolumeStorage = "EBS Provisioned IOPS SSD (io1) Volume Storage" CheckEBSThroughputOptimizedHDDST1VolumeStorage = "EBS Throughput Optimized HDD (st1) Volume Storage" CheckEC2ElasticIPAddresses = "EC2 Elastic IP Addresses" CheckEC2OnDemandInstances = "EC2 On-Demand Instances" CheckEC2ReservedInstanceLeases = "EC2 Reserved Instance Leases" CheckEC2ConfigServiceforEC2WindowsInstances = "EC2Config Service for EC2 Windows Instances" CheckELBApplicationLoadBalancers = "ELB Application Load Balancers" CheckELBClassicLoadBalancers = "ELB Classic Load Balancers" CheckELBConnectionDraining = "ELB Connection Draining" CheckELBCrossZoneLoadBalancing = "ELB Cross-Zone Load Balancing" CheckELBListenerSecurity = "ELB Listener Security" CheckELBNetworkLoadBalancers = "ELB Network Load Balancers" CheckELBSecurityGroups = "ELB Security Groups" CheckENADriverVersionforEC2WindowsInstances = "ENA Driver Version for EC2 Windows Instances" CheckExposedAccessKeys = "Exposed Access Keys" CheckHighUtilizationAmazonEC2Instances = "High Utilization Amazon EC2 Instances" CheckIAMAccessKeyRotation = "IAM Access Key Rotation" CheckIAMGroup = "IAM Group" CheckIAMInstanceProfiles = "IAM Instance Profiles" CheckIAMPasswordPolicy = "IAM Password Policy" CheckIAMPolicies = "IAM Policies" CheckIAMRoles = "IAM Roles" CheckIAMServerCertificates = "IAM Server Certificates" CheckIAMUse = "IAM Use" CheckIAMUsers = "IAM Users" CheckIdleLoadBalancers = "Idle Load Balancers" CheckKinesisShardsperRegion = "Kinesis Shards per Region" CheckLargeNumberofEC2SecurityGroupRulesAppliedtoanInstance = "Large Number of EC2 Security Group Rules Applied to an Instance" CheckLargeNumberofRulesinanEC2SecurityGroup = "Large Number of Rules in an EC2 Security Group" CheckLoadBalancerOptimization = "Load Balancer Optimization" CheckLowUtilizationAmazonEC2Instances = "Low Utilization Amazon EC2 Instances" CheckMFAonRootAccount = "MFA on Root Account" CheckNVMeDriverVersionforEC2WindowsInstances = "NVMe Driver Version for EC2 Windows Instances" CheckOverutilizedAmazonEBSMagneticVolumes = "Overutilized Amazon EBS Magnetic Volumes" CheckPVDriverVersionforEC2WindowsInstances = "PV Driver Version for EC2 Windows Instances" CheckRDSClusterParameterGroups = "RDS Cluster Parameter Groups" CheckRDSClusterRoles = "RDS Cluster Roles" CheckRDSClusters = "RDS Clusters" CheckRDSDBInstances = "RDS DB Instances" CheckRDSDBManualSnapshots = "RDS DB Manual Snapshots" CheckRDSDBParameterGroups = "RDS DB Parameter Groups" CheckRDSDBSecurityGroups = "RDS DB Security Groups" CheckRDSEventSubscriptions = "RDS Event Subscriptions" CheckRDSMaxAuthsperSecurityGroup = "RDS Max Auths per Security Group" CheckRDSOptionGroups = "RDS Option Groups" CheckRDSReadReplicasperMaster = "RDS Read Replicas per Master" CheckRDSReservedInstances = "RDS Reserved Instances" CheckRDSSubnetGroups = "RDS Subnet Groups" CheckRDSSubnetsperSubnetGroup = "RDS Subnets per Subnet Group" CheckRDSTotalStorageQuota = "RDS Total Storage Quota" CheckRoute53HostedZones = "Route 53 Hosted Zones" CheckRoute53MaxHealthChecks = "Route 53 Max Health Checks" CheckRoute53ReusableDelegationSets = "Route 53 Reusable Delegation Sets" CheckRoute53TrafficPolicies = "Route 53 Traffic Policies" CheckRoute53TrafficPolicyInstances = "Route 53 Traffic Policy Instances" CheckSecurityGroupsSpecificPortsUnrestricted = "Security Groups - Specific Ports Unrestricted" CheckSecurityGroupsUnrestrictedAccess = "Security Groups - Unrestricted Access" CheckSESDailySendingQuota = "SES Daily Sending Quota" CheckUnassociatedElasticIPAddresses = "Unassociated Elastic IP Addresses" CheckUnderutilizedAmazonEBSVolumes = "Underutilized Amazon EBS Volumes" CheckUnderutilizedAmazonRedshiftClusters = "Underutilized Amazon Redshift Clusters" CheckVPC = "VPC" CheckVPCElasticIPAddress = "VPC Elastic IP Address" CheckVPCInternetGateways = "VPC Internet Gateways" CheckVPNTunnelRedundancy = "VPN Tunnel Redundancy" )
Variables ¶
This section is empty.
Functions ¶
func PrintDollars ¶
func TableString ¶
Types ¶
type AggregateByKey ¶
type AggregateDetail ¶
type AggregateDetail struct {
Key string
}
func (*AggregateDetail) CSV ¶
func (d *AggregateDetail) CSV() string
type AggregateReport ¶
type AggregateReport struct {
Config *Config
Reports []*Report
LimitReports map[string]*LimitReport
CostReports map[string]*CostReport
}
func GenerateAggregateReport ¶
func GenerateAggregateReport(envs []*Environment, options ...Option) (*AggregateReport, error)
func (*AggregateReport) AggregatedCostSummary ¶
func (r *AggregateReport) AggregatedCostSummary(a Aggregator) *AggregateSummary
type AggregateRow ¶
type AggregateSummary ¶
type AggregateSummary struct {
TotalSavings int
// contains filtered or unexported fields
}
func (*AggregateSummary) Details ¶
func (s *AggregateSummary) Details() []*AggregateDetail
func (*AggregateSummary) SummaryHeaders ¶
func (s *AggregateSummary) SummaryHeaders() []string
func (*AggregateSummary) SummaryRows ¶
func (s *AggregateSummary) SummaryRows() [][]string
type Aggregator ¶
type Config ¶
type Config struct {
GetTags bool
HideResourceDetails bool
Aggregator Aggregator
Checks []Check
}
type CostReport ¶
type CostReport struct {
EC2 *EC2Report
LoadBalancers *LoadBalancerReport
EBS *EBSReport
RDS *RDSReport
Redshift *RedshiftReport
EIPs *UnassociatedElasticIPAddressesReport
}
func (*CostReport) AggregateRows ¶
func (r *CostReport) AggregateRows(a Aggregator) []*AggregateRow
func (*CostReport) AsciiReport ¶
func (r *CostReport) AsciiReport() string
type CostReporter ¶
type CostReporter interface {
AggregateRow() *AggregateRow
Detail() *AggregateDetail
}
type EBSAggregate ¶
type EBSReport ¶
type EBSReport struct {
Volumes []*EBSVolume
Aggregated []*EBSAggregate
Errors []string
}
func (*EBSReport) AggregateRows ¶
func (r *EBSReport) AggregateRows(a Aggregator) []*AggregateRow
func (*EBSReport) AsciiReport ¶
type EBSVolume ¶
type EBSVolume struct {
ID string
Name string
Type string
Region string
MonthlyStorageCost int
Size int
SnapshotID string
SnapshotName string
SnapshotAge string
Tags map[string]string
}
func (*EBSVolume) AggregateRow ¶
func (v *EBSVolume) AggregateRow(a Aggregator) *AggregateRow
type EC2Aggregate ¶
type EC2Aggregate struct {
Key string
Instances []*EC2Instance
EstimatedMonthlySavings int
}
type EC2Instance ¶
type EC2Instance struct {
Name string
ID string
Type string
RegionAZ string
EstimatedMonthlySavings int
LowUtilizationDays int
Network14DayAverage string
CPU14DayAverage string
Day1, Day2, Day3, Day4, Day5, Day6, Day7, Day8, Day9, Day10, Day11, Day12, Day13, Day14 string
Tags map[string]string
}
func (*EC2Instance) AggregateRow ¶
func (i *EC2Instance) AggregateRow(a Aggregator) *AggregateRow
type EC2Report ¶
type EC2Report struct {
Instances []*EC2Instance
Aggregated []*EC2Aggregate
Errors []string
}
func (*EC2Report) AggregateRows ¶
func (r *EC2Report) AggregateRows(a Aggregator) []*AggregateRow
func (*EC2Report) AsciiReport ¶
type Environment ¶
type LimitReport ¶
type LimitReport struct {
Limits []*ServiceLimit
}
func (*LimitReport) AsciiReport ¶
func (r *LimitReport) AsciiReport() string
func (*LimitReport) Headers ¶
func (r *LimitReport) Headers(includeEnv ...bool) []string
func (*LimitReport) Rows ¶
func (r *LimitReport) Rows(env ...string) [][]string
func (*LimitReport) Title ¶
func (r *LimitReport) Title() string
type LoadBalancer ¶
type LoadBalancer struct {
Region string
Name string
Reason string
EstimatedMonthlySavings int
Tags map[string]string
}
func (*LoadBalancer) AggregateRow ¶
func (l *LoadBalancer) AggregateRow(a Aggregator) *AggregateRow
type LoadBalancerAggregate ¶
type LoadBalancerAggregate struct {
Key string
LoadBalancers []*LoadBalancer
EstimatedMonthlySavings int
}
type LoadBalancerReport ¶
type LoadBalancerReport struct {
LoadBalancers []*LoadBalancer
Aggregated []*LoadBalancerAggregate
}
func (*LoadBalancerReport) AggregateRows ¶
func (r *LoadBalancerReport) AggregateRows(a Aggregator) []*AggregateRow
func (*LoadBalancerReport) AsciiReport ¶
func (r *LoadBalancerReport) AsciiReport() string
type Option ¶
type Option func(*Config)
func WithAggregationByTag ¶
func WithChecks ¶
func WithCostOptimizationChecks ¶
func WithCostOptimizationChecks() Option
func WithCustomTagAggregator ¶
func WithCustomTagAggregator(a Aggregator) Option
func WithFaultToleranceChecks ¶
func WithFaultToleranceChecks() Option
func WithPerformanceChecks ¶
func WithPerformanceChecks() Option
func WithSecurityChecks ¶
func WithSecurityChecks() Option
func WithServiceLimitChecks ¶
func WithServiceLimitChecks() Option
func WithoutResourceDetails ¶
func WithoutResourceDetails() Option
type RDSAggregate ¶
type RDSAggregate struct {
Key string
Instances []*RDSInstance
StorageProvisionedGB int
EstimatedMonthlySavings int
}
type RDSInstance ¶
type RDSInstance struct {
Region string
Name string
Type string
MultiAZ bool
StorageProvisionedGB int
DaysSinceLastConnection int
EstimatedMonthlySavings int
Tags map[string]string
}
func (*RDSInstance) AggregateRow ¶
func (i *RDSInstance) AggregateRow(a Aggregator) *AggregateRow
type RDSReport ¶
type RDSReport struct {
Instances []*RDSInstance
Aggregated []*RDSAggregate
}
func (*RDSReport) AggregateRows ¶
func (r *RDSReport) AggregateRows(a Aggregator) []*AggregateRow
func (*RDSReport) AsciiReport ¶
type RedShiftCluster ¶
type RedShiftCluster struct {
Type string
Reason string
EstimatedMonthlySavings int
Status string
Region string
Name string
Tags map[string]string
}
func (*RedShiftCluster) AggregateRow ¶
func (r *RedShiftCluster) AggregateRow(a Aggregator) *AggregateRow
type RedshiftAggregate ¶
type RedshiftAggregate struct {
Key string
EstimatedMonthlySavings int
Clusters []*RedShiftCluster
}
type RedshiftReport ¶
type RedshiftReport struct {
Clusters []*RedShiftCluster
Aggregated []*RedshiftAggregate
}
func (*RedshiftReport) AggregateRows ¶
func (r *RedshiftReport) AggregateRows(a Aggregator) []*AggregateRow
func (*RedshiftReport) AsciiReport ¶
func (r *RedshiftReport) AsciiReport() string
type Report ¶
type Report struct {
Config *Config
CostOptimization *CostReport
ServiceLimits *LimitReport
}
func GenerateReport ¶
func (*Report) AsciiReport ¶
type ServiceLimit ¶
type TrustedAdvisorCheck ¶
type TrustedAdvisorCheck struct {
Name string
ID string
Status string
Description string
Flagged, Processed int64
// Check is used to get the high-level description of a check
Check *support.TrustedAdvisorCheckDescription
// Result is used to get detailed information about which resources are failing a check
Result *support.TrustedAdvisorCheckResult
}
func ListNonOKTrustedAdvisorChecks ¶
func ListNonOKTrustedAdvisorChecks(sess *session.Session, activeChecks map[Check]bool) ([]*TrustedAdvisorCheck, error)
ListNonOKTrustedAdvisorChecks queries Trusted Advisor and only returns checks that have a status of error or warning These are typically worth review, and opening a ticket to increase limits.
type UnassociatedElasticIPAddresses ¶
func (*UnassociatedElasticIPAddresses) AggregateRow ¶
func (r *UnassociatedElasticIPAddresses) AggregateRow(a Aggregator) *AggregateRow
type UnassociatedElasticIPAddressesReport ¶
type UnassociatedElasticIPAddressesReport struct {
IPs []*UnassociatedElasticIPAddresses
}
func (*UnassociatedElasticIPAddressesReport) AggregateRows ¶
func (r *UnassociatedElasticIPAddressesReport) AggregateRows(a Aggregator) []*AggregateRow
func (*UnassociatedElasticIPAddressesReport) AsciiReport ¶
func (r *UnassociatedElasticIPAddressesReport) AsciiReport() string
Source Files
¶
Click to show internal directories.
Click to hide internal directories.