# AWS Compute Optimizer Terraform Sample This Terraform Infrastructure as code (IaC) sample helps to Opting in or Opting out [AWS Compute Optimizer](https://docs.aws.amazon.com/compute-optimizer/latest/ug/getting-started.html) in your account. ## Limitations There is open issue to [Add resources for ComputeOptimizer Recommendation Preferences](https://github.com/hashicorp/terraform-provider-aws/issues/23945). So currently Terraform does not have resource for AWS Compute Optimizer. As a workaround, we tried to provide customised sample to opt-in and opt-out your account for AWS compute optimizer. You may need to update the code as per your requirements and Terraform releases. For more details, refer [AWS Documentation on put-recommendation-preferences](https://docs.aws.amazon.com/cli/latest/reference/compute-optimizer/put-recommendation-preferences.html). ## Requirements - This module requires Terraform version >= 0.12. ## Input | Name | Description | Type | Default | Required | |------|-------------|------|---------|:--------:| | <a name="status"></a> [status](#input\status) | Whether AWS Computer Optimizer should be Active or Inactive | `string` | n/a | yes | | <a name="scope_name"></a> [scope_name](#input\status)|The name of the scope. It can be Organization\|AccountId\|ResourceArn|`string`|null|no| |[scope_value](#input\status)|The value of the scope. It should be ALL_ACCOUNTS if scope_name is Organization, values for Account ID or resource arn to be mentioned as per scope name|`string`|null|no| |[resource_type](#input\status)|The target resource type of the recommendation preference to create|`string`|null|no| |[enhanced_monitoring](#input\status)|The status of the enhanced infrastructure metrics recommendation preference to make it Active or Inactive|`string`|null|no| ## Usage Update the variables in `dev.auto.tfvars` file as per your requirement. ## Example output ``` terraform apply Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # null_resource.compute_optimiser will be created + resource "null_resource" "compute_optimiser" { + id = (known after apply) + triggers = { + "file_hash" = "1c90c11c9c712ffb320ea81490f501cc53952331a428c329a97b680a5cf5d66b" + "scope_name" = "Organization" + "status" = "Active" } } Plan: 1 to add, 0 to change, 0 to destroy. Changes to Outputs: + executable_command = <<-EOT aws compute-optimizer update-enrollment-status --status Active aws compute-optimizer put-recommendation-preferences --scope name=Organization,value=ALL_ACCOUNTS --resource-type Ec2Instance --enhanced-infrastructure-metrics Inactive EOT Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes null_resource.compute_optimiser: Creating... null_resource.compute_optimiser: Creation complete after 0s [id=2527645616079253896] Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: executable_command = <<EOT aws compute-optimizer update-enrollment-status --status Active aws compute-optimizer put-recommendation-preferences --scope name=Organization,value=ALL_ACCOUNTS --resource-type Ec2Instance --enhanced-infrastructure-metrics Inactive EOT ``` ## Security See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. ## License This library is licensed under the MIT-0 License. See the LICENSE file.