@@ -104,9 +104,13 @@ def create_role(self, role_name: str, trust_policy: dict, solution_name: str) ->
104
104
Dictionary output of a successful CreateRole request
105
105
"""
106
106
self .LOGGER .info ("Creating role %s." , role_name )
107
- return self .IAM_CLIENT .create_role (
108
- RoleName = role_name , AssumeRolePolicyDocument = json .dumps (trust_policy ), Tags = [{"Key" : "sra-solution" , "Value" : solution_name }]
109
- )
107
+ try :
108
+ return self .IAM_CLIENT .create_role (
109
+ RoleName = role_name , AssumeRolePolicyDocument = json .dumps (trust_policy ), Tags = [{"Key" : "sra-solution" , "Value" : solution_name }]
110
+ )
111
+ except ClientError as error :
112
+ if error .response ["Error" ]["Code" ] == "EntityAlreadyExists" :
113
+ self .LOGGER .info (f"{ role_name } role already exists!" )
110
114
111
115
def create_policy (self , policy_name : str , policy_document : dict , solution_name : str ) -> CreatePolicyResponseTypeDef :
112
116
"""Create IAM policy.
@@ -120,9 +124,13 @@ def create_policy(self, policy_name: str, policy_document: dict, solution_name:
120
124
Dictionary output of a successful CreatePolicy request
121
125
"""
122
126
self .LOGGER .info (f"Creating { policy_name } IAM policy" )
123
- return self .IAM_CLIENT .create_policy (
124
- PolicyName = policy_name , PolicyDocument = json .dumps (policy_document ), Tags = [{"Key" : "sra-solution" , "Value" : solution_name }]
125
- )
127
+ try :
128
+ return self .IAM_CLIENT .create_policy (
129
+ PolicyName = policy_name , PolicyDocument = json .dumps (policy_document ), Tags = [{"Key" : "sra-solution" , "Value" : solution_name }]
130
+ )
131
+ except ClientError as error :
132
+ if error .response ["Error" ]["Code" ] == "EntityAlreadyExists" :
133
+ self .LOGGER .info (f"{ policy_name } policy already exists!" )
126
134
127
135
def attach_policy (self , role_name : str , policy_arn : str ) -> EmptyResponseMetadataTypeDef :
128
136
"""Attach policy to IAM role.
0 commit comments