Skip to content

Instantly share code, notes, and snippets.

@takakabe
Created September 7, 2019 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takakabe/b2fb6fbeedfdff3c23067af219700af4 to your computer and use it in GitHub Desktop.
Save takakabe/b2fb6fbeedfdff3c23067af219700af4 to your computer and use it in GitHub Desktop.
Python
import boto3
from pathlib import Path
iam = boto3.client('iam')
sts = boto3.client('sts')
def get_old_key_id():
old_access_key_id = iam.list_access_keys()['AccessKeyMetadata'][0]['AccessKeyId']
response = sts.get_caller_identity()
user_name = response['Arn'].split('/')[1]
return (old_access_key_id, user_name)
def rotate_access_key():
create_access_key_result = iam.create_access_key()
new_access_key = create_access_key_result['AccessKey']['AccessKeyId']
new_secret_access_key = create_access_key_result['AccessKey']['SecretAccessKey']
return(new_access_key, new_secret_access_key)
def write_aws_credential(new_access_key, new_secret_access_key):
home_directory = str(Path.home())
credential_file = open(home_directory+'/.aws/credentials', mode='w')
credential_file.write('[default]\n')
credential_file.write('aws_access_key_id = '+new_access_key+'\n')
credential_file.write('aws_secret_access_key = '+new_secret_access_key+'\n')
credential_file.close()
def delete_old_access_key(current_access_key_id, user_name):
iam.delete_access_key(
AccessKeyId=current_access_key_id,
UserName=user_name
)
def main():
old_access_key_id, user_name = get_old_key_id()
new_access_key, new_secret_access_key = rotate_access_key()
write_aws_credential(new_access_key, new_secret_access_key)
delete_old_access_key(old_access_key_id, user_name)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment