@@ -25,14 +25,16 @@ def __init__(self, provided_arn):
2525 )
2626
2727 if not follows_arn_format :
28- raise Exception ("The provided value does not follow required ARN formatting." )
29- elements = self .arn .split (":" , 5 )
30- self .partition = elements [1 ]
31- self .service_prefix = elements [2 ]
32- self .region = elements [3 ]
33- self .account = elements [4 ]
34- self .resource = elements [5 ]
35-
28+ raise Exception ("The provided value does not follow required ARN format." )
29+ try :
30+ elements = self .arn .split (":" , 5 )
31+ self .partition = elements [1 ]
32+ self .service_prefix = elements [2 ]
33+ self .region = elements [3 ]
34+ self .account = elements [4 ]
35+ self .resource = elements [5 ]
36+ except IndexError as error :
37+ raise Exception ("The provided ARN is invalid. IndexError: %s. Please provide a valid ARN." % error ) from error
3638 if "/" in self .resource :
3739 self .resource , self .resource_path = self .resource .split ("/" , 1 )
3840 elif ":" in self .resource :
@@ -156,16 +158,19 @@ def parse_arn(arn):
156158 """
157159 Given an ARN, split up the ARN into the ARN namespacing schema dictated by the AWS docs.
158160 """
159- elements = arn .split (":" , 5 )
160- result = {
161- "arn" : elements [0 ],
162- "partition" : elements [1 ],
163- "service" : elements [2 ],
164- "region" : elements [3 ],
165- "account" : elements [4 ],
166- "resource" : elements [5 ],
167- "resource_path" : None ,
168- }
161+ try :
162+ elements = arn .split (":" , 5 )
163+ result = {
164+ "arn" : elements [0 ],
165+ "partition" : elements [1 ],
166+ "service" : elements [2 ],
167+ "region" : elements [3 ],
168+ "account" : elements [4 ],
169+ "resource" : elements [5 ],
170+ "resource_path" : None ,
171+ }
172+ except IndexError as error :
173+ raise Exception ("The provided ARN is invalid. IndexError: %s. Please provide a valid ARN." % error ) from error
169174 if "/" in result ["resource" ]:
170175 result ["resource" ], result ["resource_path" ] = result ["resource" ].split ("/" , 1 )
171176 elif ":" in result ["resource" ]:
0 commit comments