Skip to content

Commit b6d2b71

Browse files
authored
remove cost optimization hub in favor of data exports (#185)
1 parent bdccdc7 commit b6d2b71

File tree

7 files changed

+6
-762
lines changed

7 files changed

+6
-762
lines changed

data-collection/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,13 @@ List of modules and objects collected:
2525
| `compute-optimizer` | AWS Compute Optimizer | Management Account | Requires [Enablement of Compute Optimizer](https://aws.amazon.com/compute-optimizer/getting-started/#:~:text=Opt%20in%20for%20Compute%20Optimizer,created%20automatically%20in%20your%20account.) |
2626
| `trusted-advisor` | AWS Trusted Advisor | Linked Account | Requires Enterpriso or OnRamp Support Level |
2727
| `cost-explorer-cost-anomaly` | AWS Anomalies | Management Account | |
28-
| `cost-explorer-rightsizing` | AWS Cost Explorer | Management Account | DEPRECATED. Please use `cost-optimization-hub` |
28+
| `cost-explorer-rightsizing` | AWS Cost Explorer | Management Account | DEPRECATED. Please use `Data Exports` for `Cost Optimization Hub` |
2929
| `inventory` | Various services | Linked Account | Collects `Amazon OpenSearch Domains`, `Amazon ElastiCache Clusters`, `RDS DB Instances`, `EBS Volumes`, `AMI`, `EC2 Instances`, `EBS Snapshot`, `RDS Snapshot`, `Lambda`, `RDS DB Clusters`, `EKS Clusters` |
3030
| `pricing` | Various services | N/A | Collects pricing for `Amazon RDS`, `Amazon EC2`, `Amazon ElastiCache`, `AWS Lambda`, `Amazon OpenSearch`, `AWS Compute Savings Plan` |
3131
| `rds-usage` | Amazon RDS | Linked Account | Collects CloudWatch metrics for chargeback |
3232
| `transit-gateway` | AWS Transit Gateway | Linked Account | Collects CloudWatch metrics for chargeback |
3333
| `ecs-chargeback` | Amazon ECS | Linked Account | |
3434
| `backup` | AWS Backup | Management Account | Collects Backup Restore and Copy Jobs. Requires [activation of cross-account](https://docs.aws.amazon.com/aws-backup/latest/devguide/manage-cross-account.html#enable-cross-account) |
35-
| `cost-optimization-hub` | AWS Cost Optimization Hub | Management Account | Collects Detailed Reccomendations. Requires [activation](https://aws.amazon.com/aws-cost-management/cost-optimization-hub/faqs/#:~:text=You%20can%20enable%20Cost%20Optimization%20Hub%20by%20going%20to%20the,navigation%20bar%2C%20and%20click%20Enable.) |
3635
| `health-evetns` | AWS Health | Management Accounts | Collect AWS Health notificaitons via AWS Organizational view |
3736
| `licence-manager` | AWS License Manager | Management Accounts | Collect Licences and Grants |
3837

data-collection/deploy/deploy-data-collection.yaml

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ Metadata:
2323
- IncludeBudgetsModule
2424
- IncludeComputeOptimizerModule
2525
- IncludeCostAnomalyModule
26-
- IncludeCostOptimizationHubModule
2726
- IncludeECSChargebackModule
2827
- IncludeHealthEventsModule
2928
- IncludeInventoryCollectorModule
@@ -77,8 +76,6 @@ Metadata:
7776
default: 'Include AWS TransitGateway Collection Module'
7877
IncludeBackupModule:
7978
default: 'Include AWS Backup Collection Module'
80-
IncludeCostOptimizationHubModule:
81-
default: 'Include CostOptimizationHub Module'
8279
IncludeAWSFeedsModule:
8380
default: 'Include AWS Feeds Module'
8481
IncludeHealthEventsModule:
@@ -130,7 +127,7 @@ Parameters:
130127
Default: "Optimization-Data-Multi-Account-Role"
131128
Schedule:
132129
Type: String
133-
Description: EventBridge schedule to trigger data collection for Trusted Advisor, Cost Optimization Hub, Compute Optimizer, Organizations Data, Rightsizing, RDS Utilization, Inventory Collector, Transit Gateway, Backup, and ECS Chargeback modules (see docs for tailoring the schedule for each module).
130+
Description: EventBridge schedule to trigger data collection for Trusted Advisor, Compute Optimizer, Organizations Data, Rightsizing, RDS Utilization, Inventory Collector, Transit Gateway, Backup, and ECS Chargeback modules (see docs for tailoring the schedule for each module).
134131
Default: "rate(14 days)"
135132
ScheduleFrequent:
136133
Type: String
@@ -209,11 +206,6 @@ Parameters:
209206
Description: Collects AWS Backup data
210207
AllowedValues: ['yes', 'no']
211208
Default: 'no'
212-
IncludeCostOptimizationHubModule:
213-
Type: String
214-
Description: Collects CostOptimizationHub data
215-
AllowedValues: ['yes', 'no']
216-
Default: 'no'
217209
IncludeAWSFeedsModule:
218210
Type: String
219211
Description: Collects AWS Feeds data
@@ -243,7 +235,6 @@ Conditions:
243235
DeployBudgetsModule: !Equals [ !Ref IncludeBudgetsModule, "yes"]
244236
DeployTransitGatewayModule: !Equals [ !Ref IncludeTransitGatewayModule, "yes"]
245237
DeployBackupModule: !Equals [ !Ref IncludeBackupModule, "yes"]
246-
DeployCostOptimizationHubModule: !Equals [ !Ref IncludeCostOptimizationHubModule, "yes"]
247238
DeployAWSFeedsModule: !Equals [ !Ref IncludeAWSFeedsModule, "yes"]
248239
DeployHealthEventsModule: !Equals [ !Ref IncludeHealthEventsModule, "yes"]
249240
DeployLicenseManagerModule: !Equals [ !Ref IncludeLicenseManagerModule, "yes"]
@@ -264,7 +255,6 @@ Conditions:
264255
- Fn::Or:
265256
- !Condition DeployBackupModule
266257
- !Condition DeployTransitGatewayModule
267-
- !Condition DeployCostOptimizationHubModule
268258
- !Condition DeployHealthEventsModule
269259
- !Condition DeployLicenseManagerModule
270260
RegionsInScopeIsEmpty: !Equals
@@ -893,26 +883,6 @@ Resources:
893883
StepFunctionExecutionRoleARN: !GetAtt StepFunctionExecutionRole.Arn
894884
SchedulerExecutionRoleARN: !GetAtt SchedulerExecutionRole.Arn
895885

896-
CostOptimizationHubModule:
897-
Type: AWS::CloudFormation::Stack
898-
Condition: DeployCostOptimizationHubModule
899-
Properties:
900-
TemplateURL: !Sub "https://${CFNSourceBucket}.s3.amazonaws.com/cfn/data-collection/module-cost-optimization-hub.yaml"
901-
Parameters:
902-
DatabaseName: !Ref DatabaseName
903-
DestinationBucket: !Ref S3Bucket
904-
DestinationBucketARN: !GetAtt S3Bucket.Arn
905-
ManagementRoleName: !Sub "${ResourcePrefix}${ManagementAccountRole}"
906-
Schedule: !Ref Schedule
907-
GlueRoleARN: !GetAtt GlueRole.Arn
908-
ResourcePrefix: !Ref ResourcePrefix
909-
LambdaAnalyticsARN: !GetAtt LambdaAnalytics.Arn
910-
AccountCollectorLambdaARN: !Sub "${AccountCollector.Outputs.LambdaFunctionARN}"
911-
CodeBucket: !If [ ProdCFNTemplateUsed, !FindInMap [RegionMap, !Ref "AWS::Region", CodeBucket], !Ref CFNSourceBucket ]
912-
StepFunctionTemplate: !FindInMap [StepFunctionCode, main-v2, TemplatePath]
913-
StepFunctionExecutionRoleARN: !GetAtt StepFunctionExecutionRole.Arn
914-
SchedulerExecutionRoleARN: !GetAtt SchedulerExecutionRole.Arn
915-
916886
CostAnomalyModule:
917887
Type: AWS::CloudFormation::Stack
918888
Condition: DeployCostAnomalyModule

data-collection/deploy/deploy-data-read-permissions.yaml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ Metadata:
2020
- IncludeBudgetsModule
2121
- IncludeComputeOptimizerModule
2222
- IncludeCostAnomalyModule
23-
- IncludeCostOptimizationHubModule
2423
- IncludeECSChargebackModule
2524
- IncludeHealthEventsModule
2625
- IncludeInventoryCollectorModule
@@ -64,8 +63,6 @@ Metadata:
6463
default: "Include AWS TransitGateway Collection Module"
6564
IncludeBackupModule:
6665
default: "Include AWS Backup Collection Module"
67-
IncludeCostOptimizationHubModule:
68-
default: "Include Cost Optimization Hub Module"
6966
IncludeHealthEventsModule:
7067
default: "Include AWS Health Events Module"
7168
IncludeLicenseManagerModule:
@@ -150,11 +147,6 @@ Parameters:
150147
Description: Collects AWS Backup events from your accounts
151148
AllowedValues: ['yes', 'no']
152149
Default: 'no'
153-
IncludeCostOptimizationHubModule:
154-
Type: String
155-
Description: Collects CostOptimizationHub Recommendations from your accounts
156-
AllowedValues: ['yes', 'no']
157-
Default: 'no'
158150
IncludeHealthEventsModule:
159151
Type: String
160152
Description: Collects AWS Health Events from your accounts
@@ -182,7 +174,6 @@ Resources:
182174
IncludeCostAnomalyModule: !Ref IncludeCostAnomalyModule
183175
IncludeRightsizingModule: !Ref IncludeRightsizingModule
184176
IncludeBackupModule: !Ref IncludeBackupModule
185-
IncludeCostOptimizationHubModule: !Ref IncludeCostOptimizationHubModule
186177
IncludeHealthEventsModule: !Ref IncludeHealthEventsModule
187178
IncludeLicenseManagerModule: !Ref IncludeLicenseManagerModule
188179
DataCollectorMgmtAccountModulesReadStack:

data-collection/deploy/deploy-in-management-account.yaml

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ Metadata:
1515
- IncludeBackupModule
1616
- IncludeComputeOptimizerModule
1717
- IncludeCostAnomalyModule
18-
- IncludeCostOptimizationHubModule
1918
- IncludeHealthEventsModule
2019
- IncludeRightsizingModule
2120
- IncludeLicenseManagerModule
@@ -34,8 +33,6 @@ Metadata:
3433
default: "Include Rightsizing Recommendations Data Collection Module"
3534
IncludeBackupModule:
3635
default: "Include AWS Backup Collection Module"
37-
IncludeCostOptimizationHubModule:
38-
default: "Include EnableCostOptimizationHub Module"
3936
IncludeHealthEventsModule:
4037
default: "Include Health Events Module"
4138
IncludeLicenseManagerModule:
@@ -72,11 +69,6 @@ Parameters:
7269
Description: Collects TransitGateway from your accounts
7370
AllowedValues: ['yes', 'no']
7471
Default: 'no'
75-
IncludeCostOptimizationHubModule:
76-
Type: String
77-
Description: Collects CostOptimizationHub Recommendations from your accounts
78-
AllowedValues: ['yes', 'no']
79-
Default: 'no'
8072
IncludeHealthEventsModule:
8173
Type: String
8274
Description: Collects AWS Health Events from your accounts
@@ -93,9 +85,8 @@ Conditions:
9385
EnableCostAnomaliesModule: !Equals [!Ref IncludeCostAnomalyModule, "yes"]
9486
EnableRightsizingModule: !Equals [!Ref IncludeRightsizingModule, "yes"]
9587
EnableBackupModule: !Equals [!Ref IncludeBackupModule, "yes"]
96-
EnableCostOptimizationHubModule: !Equals [!Ref IncludeCostOptimizationHubModule, "yes"]
9788
EnableHealthEventsModule: !Equals [!Ref IncludeHealthEventsModule, "yes"]
98-
EnableLicenceManagerModule: !Equals [!Ref IncludeLicenseManagerModule, "yes"]
89+
EnableLicenseManagerModule: !Equals [!Ref IncludeLicenseManagerModule, "yes"]
9990

10091
Outputs:
10192
LambdaRole:
@@ -123,7 +114,6 @@ Resources:
123114
- !Sub "arn:aws:iam::${DataCollectionAccountID}:role/${ResourcePrefix}compute-optimizer-LambdaRole"
124115
- !Sub "arn:aws:iam::${DataCollectionAccountID}:role/${ResourcePrefix}cost-anomaly-LambdaRole"
125116
- !Sub "arn:aws:iam::${DataCollectionAccountID}:role/${ResourcePrefix}cost-explorer-rightsizing-LambdaRole"
126-
- !Sub "arn:aws:iam::${DataCollectionAccountID}:role/${ResourcePrefix}cost-optimization-hub-LambdaRole"
127117
- !Sub "arn:aws:iam::${DataCollectionAccountID}:role/${ResourcePrefix}backup-LambdaRole"
128118
- !Sub "arn:aws:iam::${DataCollectionAccountID}:role/${ResourcePrefix}health-events-LambdaRole"
129119
- !Sub "arn:aws:iam::${DataCollectionAccountID}:role/${ResourcePrefix}license-manager-LambdaRole"
@@ -289,35 +279,6 @@ Resources:
289279
rules_to_suppress:
290280
- id: W12
291281
reason: "Policy is used for scanning of a wide range of resources"
292-
CostOptimizationHubRecommendations:
293-
Type: "AWS::IAM::Policy"
294-
Condition: EnableCostOptimizationHubModule
295-
Properties:
296-
PolicyName: CostOptimizationHubRecommendations
297-
PolicyDocument:
298-
Version: "2012-10-17"
299-
Statement:
300-
- Effect: "Allow"
301-
Action:
302-
- "cost-optimization-hub:ListEnrollmentStatuses"
303-
- "cost-optimization-hub:GetPreferences"
304-
- "cost-optimization-hub:GetRecommendation"
305-
- "cost-optimization-hub:ListRecommendations"
306-
- "cost-optimization-hub:ListRecommendationSummaries"
307-
- "organizations:DescribeOrganization"
308-
- "organizations:ListAccounts"
309-
- "organizations:ListAWSServiceAccessForOrganization"
310-
- "organizations:ListParents"
311-
- "organizations:DescribeOrganizationalUnit"
312-
- "ce:ListCostAllocationTags"
313-
Resource: "*"
314-
Roles:
315-
- Ref: LambdaRole
316-
Metadata:
317-
cfn_nag:
318-
rules_to_suppress:
319-
- id: W12
320-
reason: "Policy is used for scanning of a wide range of resources"
321282
HealthEventsPolicy:
322283
Type: "AWS::IAM::Policy"
323284
Condition: EnableHealthEventsModule
@@ -340,11 +301,11 @@ Resources:
340301
rules_to_suppress:
341302
- id: W12
342303
reason: "Policy is used for scanning of a wide range of resources"
343-
LicenceManagerPolicy:
304+
LicenseManagerPolicy:
344305
Type: "AWS::IAM::Policy"
345-
Condition: EnableLicenceManagerModule
306+
Condition: EnableLicenseManagerModule
346307
Properties:
347-
PolicyName: LicenceManagerPolicy
308+
PolicyName: LicenseManagerPolicy
348309
PolicyDocument:
349310
Version: "2012-10-17"
350311
Statement:

0 commit comments

Comments
 (0)