"""Script.""" import boto3 ENVIRONMENT = 'prod' SERVICE_NAME = 'ows-video' TERRAFORM_SM_MODULE_NAME = 'module.secrets_ows_video' SECRET_PREFIX = f'{ENVIRONMENT}/{SERVICE_NAME}/' PREFIX_LEN = len(SECRET_PREFIX) TERRAFORM_TEMPLATE = """ import {{ to = {3}["{0}"].aws_secretsmanager_secret.secret id = "{1}" }} import {{ to = {3}["{0}"].aws_secretsmanager_secret_version.secret_string id = "{1}|{2}" }} """ def main(): sm_client = boto3.client('secretsmanager') print('Using name prefix ', SECRET_PREFIX) response = sm_client.list_secrets( MaxResults=100, IncludePlannedDeletion=False, Filters=[{'Key': 'name', 'Values': [SECRET_PREFIX]}] ) if len(response['SecretList']) == 100: print('Warning, there may be more secrets out there, this script does not page results.') found_secrets = [] for secret in response['SecretList']: print('found secret', secret['Name']) should_skip = False for tag in secret.get('Tags', []): if tag['Key'] == 'terraformed' and tag['Value'] == 'true': should_skip = True if not secret['Name'].startswith(SECRET_PREFIX): should_skip = True if not should_skip: found_secret_value_id = None for version, stages in secret['SecretVersionsToStages'].items(): if 'AWSCURRENT' in stages: found_secret_value_id = version break found_secrets.append({ 'Name': secret['Name'], 'ARN': secret['ARN'], 'ShortName': secret['Name'][PREFIX_LEN:], 'CurrentVersionId': found_secret_value_id }) else: print('should skip ', secret['Name']) for found_secret in found_secrets: print( TERRAFORM_TEMPLATE.format( found_secret['ShortName'], found_secret['ARN'], found_secret['CurrentVersionId'], TERRAFORM_SM_MODULE_NAME ) ) if __name__ == '__main__': main()