DEV Community

Cover image for Delete All AWS Secrets created in Secrets Manager using Python3 + Boto3+Different Approaches

Delete All AWS Secrets created in Secrets Manager using Python3 + Boto3+Different Approaches

AWS Secrets Manager:
1.AWS Secrets Manager intentionally makes deleting a secret difficult.
2.Instead, Secrets Manager immediately makes the secrets inaccessible and scheduled for deletion after a recovery window of a minimum of seven days. Until the recovery window ends, you can recover a secret you previously deleted
3.There is no charge for secrets that you have marked for deletion.
4.You can't delete a primary secret if it is replicated to other Regions. First delete the replicas, then delete the primary secret.

Permissions:
To delete a secret, you must have secretsmanager:ListSecrets and secretsmanager:DeleteSecret permissions.


Approach1 : Deletion of Secrets from AWS Console

Step1: Create a secret: test-secret in AWS Secrets manager
Step2: Steps for deleting a secret through AWS Console

Image description

Step3: Window will prompt asking to select period for Disable secret and schedule deletion. By default 30 days is auto populated, we need choose 7 to 30 days.

Image description

Step4: Changing to 7 days and then click on Schedule deletion

Image description

Image description


Approach2 : Deletion of Secrets from AWS CLI

SNo Purpose Command
1 Delete a secret aws secretsmanager delete-secret --secret-id MyTestSecret --recovery-window-in-days 7
2 If you wanted to restore the deleted secret Secret id-MyTestSecret aws secretsmanager restore-secret --secret-id MyTestSecret
3 To delete a secret that is replicated to other regions, first remove its replicas with remove-regions-from-replication, and then call delete-secret aws secretsmanager remove-regions-from-replication --secret-id MyTestSecret --remove-replica-regions eu-west-3
4 Delete a secret immediately aws secretsmanager delete-secret --secret-id MyTestSecret --force-delete-without-recovery
5 Delete a replica secret aws secretsmanager remove-regions-from-replication --secret-id MyTestSecret --remove-replica-regions eu-west-3

Approach 3: Deletion of All AWS Secrets using AWS Lambda (Python3 +Boto3)

Lambda Permissions:

To delete a secret, you must have secretsmanager:ListSecrets and secretsmanager:DeleteSecret permissions.

import json import boto3 from botocore.exceptions import ClientError def lambda_handler(event, context): delete_all_secrets('eu-west-1') return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') } def delete_all_secrets(region_name): """ Deletes all secrets from AWS Secrets Manager in the specified region. :param region_name: AWS region where the secrets are stored """ client = boto3.client('secretsmanager', region_name=region_name) try: # List all secrets paginator = client.get_paginator('list_secrets') for page in paginator.paginate(): for secret in page['SecretList']: secret_name = secret['Name'] try: # Delete each secret client.delete_secret( SecretId=secret_name, ForceDeleteWithoutRecovery=True # Set to True to skip recovery window ) print(f"Secret '{secret_name}' deleted successfully.") except ClientError as e: print(f"Error deleting secret '{secret_name}': {e}") except ClientError as e: print(f"Error listing secrets: {e}") 
Enter fullscreen mode Exit fullscreen mode

Pricing :
1.Per Secret Per Month

  • $0.40 per secret per month.
  • A replica secret is considered a distinct secret and will also be billed at $0.40 per replica per month.
  • For secrets that are stored for less than a month, the price is prorated (based on the number of hours.)

Reference: https://aws.amazon.com/secrets-manager

Conclusion: Deleting AWS Secrets from AWS Secret manager in different approaches.

💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in dev.to , linkedin

Top comments (0)