@@ -25,14 +25,16 @@ def __init__(self, provided_arn):
25
25
)
26
26
27
27
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
36
38
if "/" in self .resource :
37
39
self .resource , self .resource_path = self .resource .split ("/" , 1 )
38
40
elif ":" in self .resource :
@@ -156,16 +158,19 @@ def parse_arn(arn):
156
158
"""
157
159
Given an ARN, split up the ARN into the ARN namespacing schema dictated by the AWS docs.
158
160
"""
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
169
174
if "/" in result ["resource" ]:
170
175
result ["resource" ], result ["resource_path" ] = result ["resource" ].split ("/" , 1 )
171
176
elif ":" in result ["resource" ]:
0 commit comments