in iotHandler.py [0:0]
def createProvisioningPolicy(self, policyName, provisioningTemplateName, payloadJsonFileName):
try:
version = None
response = self.getPolicy(policyName)
if response != 'ResourceNotFoundException':
version = response['defaultVersionId']
#open the json
with open('assets/' + payloadJsonFileName) as f:
policy = json.load(f)
accountId = self.session.client('sts').get_caller_identity().get('Account')
region = self.session.region_name
policyF = json.dumps(policy).replace("$REGION", region).replace("$ACCOUNT", accountId).replace("$PROVTEMPLATE",provisioningTemplateName )
if version is not None:
#print(version)
self.client.delete_policy_version(
policyName=policyName,
policyVersionId=version
)
#update or create a new version but set this version as default as it refers to a new provisioning template
create_policy_res = self.client.create_policy_version(
policyName=policyName,
policyDocument=policyF,
setAsDefault= True
)
else:
#update or create a new version but set this version as default as it refers to a new provisioning template
#print(json.dumps(policyF))
create_policy_res = self.client.create_policy(
policyName=policyName,
policyDocument=policyF
)
return create_policy_res
except ClientError as error:
if error.response['Error']['Code'] == 'EntityAlreadyExists':
return 'Policy already exists... hence exiting from here'
else:
return 'Unexpected error occurred... Role could not be created', error