Skip to main content

Triage and Remediation

Remediation

Using Console

The AMI age should not exceed the configured age is a common misconfiguration in AWS. You can remediate this issue by following the below steps:
  1. Log in to your AWS Management Console.
  2. Go to the EC2 Dashboard.
  3. Click on the “AMIs” option from the left-hand navigation panel.
  4. Identify the AMI which has exceeded the configured age.
  5. Select the AMI and click on the “Actions” button.
  6. Choose the “Deregister” option from the drop-down list.
  7. Confirm the deregistration by clicking on the “Deregister” button in the confirmation dialog box.
  8. Once the AMI is deregistered, you can create a new AMI with the latest updates and configurations.
By following these steps, you can remediate the AMI age misconfiguration in AWS.

To remediate the “AMI Age Should Not Exceed the Configured Age” misconfiguration in AWS, you can follow the below steps using AWS CLI:
  1. First, identify the AMIs that have exceeded the configured age by running the below command:
    Note: Replace <configured_age> with the age limit in the format yyyy-mm-dd.
  2. Once you have identified the AMIs, you can deregister them using the below command:
    Note: Replace <image_id> with the ID of the AMI that you want to deregister.
  3. Finally, to automate this process, you can create a Lambda function that runs the above commands on a scheduled basis to ensure that AMIs do not exceed the configured age limit.
To remediate the AMI Age misconfiguration in AWS using Python, you can follow the steps below:
  1. Identify the misconfigured AMIs by checking their age against the configured age.
  2. Create a Lambda function in AWS that uses the Boto3 library to identify the misconfigured AMIs.
  3. Use the EC2 client in Boto3 to get a list of all the AMIs in your AWS account.
  4. Loop through the list of AMIs and check the age of each one against the configured age.
  5. If an AMI is older than the configured age, deregister it using the EC2 client.
  6. Set up a CloudWatch event to trigger the Lambda function at a regular interval to ensure that all misconfigured AMIs are remediated in a timely manner.
Here’s some sample Python code that can be used to identify and deregister misconfigured AMIs:
Note: This is just a sample code and it may need to be modified based on your specific requirements. Also, make sure to test the code thoroughly before running it in a production environment.
  • Replace INSTANCE_TYPE, SUBNET_ID, SECURITY_GROUP_ID, KEY_PAIR_NAME, and INSTANCE_NAME with your values.
  • Ensure the AMI resolved by data.aws_ami.RECENT_AMAZON_LINUX2 is not older than 180 days when you apply (check in the AWS Console or aws ec2 describe-images).
  • This change will force replacement of aws_instance.EC2_INSTANCE_NEEDS_NEW_AMI (and similarly any launch templates/ASGs you update), causing instance recreation/outage unless you use a rolling deployment strategy.
Verification: terraform plan should show the old EC2 resource(s) being replaced with new ones using the newer AMI ID, and no remaining resources referencing the out-of-date AMI.