Last active
October 16, 2024 18:30
Parse an AWS ARN (Amazon Resource Name) into it's constituent elements
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def parse_arn(arn): | |
# http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html | |
elements = arn.split(':') | |
result = {'arn': elements[0], | |
'partition': elements[1], | |
'service': elements[2], | |
'region': elements[3], | |
'account': elements[4] | |
} | |
if len(elements) == 7: | |
result['resourcetype'], result['resource'] = elements[5:] | |
elif '/' not in elements[5]: | |
result['resource'] = elements[5] | |
result['resourcetype'] = None | |
else: | |
result['resourcetype'], result['resource'] = elements[5].split('/') | |
return result |
Fixed version to handle resource types and resources correctly.
def parse_arn(arn):
# http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
elements = arn.split(':', 5)
result = {
'arn': elements[0],
'partition': elements[1],
'service': elements[2],
'region': elements[3],
'account': elements[4],
'resource': elements[5],
'resource_type': None
}
if '/' in result['resource']:
result['resource_type'], result['resource'] = result['resource'].split('/',1)
elif ':' in result['resource']:
result['resource_type'], result['resource'] = result['resource'].split(':',1)
return result
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I've created a similar library package for Go called awsarn, hope you don't mind too much if I leave a breadcrumb trail here :)