agent: |
wNxRKhr9anuka2NjUxf2Choose or Create an AWS KMS CMK
Choose or Create an AWS KMS CMK
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.
This task selects an existing AWS KMS Customer Master Key (CMK) or creates a new one if none exists. It checks for a CMK with a specific alias, creating a new key for encryption purposes as needed. This ensures enhanced security and compliance in AWS environments.
inputs
outputs
import boto3
from botocore.exceptions import ClientError
creds = _get_creds(cred_label)['creds']
access_key = creds['username']
secret_key = creds['password']
def create_or_choose_kms_key(alias_name, region_name):
"""
Creates a new AWS KMS Customer Master Key (CMK) or returns an existing one based on the alias in the specified region.
:param alias_name: Alias name for the KMS key.
:param region_name: AWS region where the KMS key is to be created or found.
:return: ARN of the KMS key.
"""
kms_client = boto3.client('kms', aws_access_key_id=access_key,aws_secret_access_key=secret_key,region_name=region_name)
try:
# Check if an alias exists for the given name
aliases = kms_client.list_aliases()
for alias in aliases['Aliases']:
if alias['AliasName'] == 'alias/' + alias_name:
print(f"Existing KMS key found for alias {alias_name} in {region_name}")
return alias['TargetKeyId']
# If alias does not exist, create a new KMS CMK
print(f"Creating a new KMS CMK for alias {alias_name} in {region_name}")
key = kms_client.create_key(Description=f'KMS CMK for CloudTrail in {region_name}')
kms_client.create_alias(AliasName='alias/' + alias_name, TargetKeyId=key['KeyMetadata']['KeyId'])
return key['KeyMetadata']['Arn']
except ClientError as e:
print(f"Error occurred while creating or retrieving KMS key in {region_name}: {e}")
return None
# Example usage
#alias_name = 'my-cloudtrail-key-2'
#region_name = 'us-east-1' # Replace with your desired AWS region
kms_key_arn = create_or_choose_kms_key(alias_name, region_name)
if kms_key_arn:
print(f"KMS Key ARN in {region_name}: {kms_key_arn}")
# Extracting the KMS Key ID from the ARN
kms_key_id = kms_key_arn.split(':')[-1].split('/')[-1]
# print(kms_key_id) # for debugging
# Example Structure
# kms_key_arn = "arn:aws:kms:us-east-1:355237452254:key/7e38fb56-e600-4130-bf5a-b8fbc8bd2cf7"
# kms_key = "7e38fb56-e600-4130-bf5a-b8fbc8bd2cf7"
copied