in source/lambda/iot-dr-layer/device_replication.py [0:0]
def get_and_create_policy(c_iot, c_iot_primary, policy_name):
try:
primary_region = c_iot_primary.meta.region_name
secondary_region = c_iot.meta.region_name
logger.info(
'primary_region: {} secondary_region: {} policy_name: {}'.format(
primary_region, secondary_region, policy_name
)
)
response = c_iot_primary.get_policy(policyName=policy_name)
logger.debug(response)
logger.info('primary_region: {} policy_document: {}'.format(
primary_region, response['policyDocument']))
policy_document_this_region = response['policyDocument'].replace(
primary_region, secondary_region
)
logger.info('secondary_region: {} policy_document: {}'.format(
secondary_region, policy_document_this_region))
response = c_iot.create_policy(
policyName=policy_name,
policyDocument=policy_document_this_region
)
logger.info('policy_name: {}: create_policy: response: {}'.format(policy_name, response))
except c_iot.exceptions.ResourceAlreadyExistsException:
logger.warning(
'policy_name {}: exists already - might have been created in a parallel thread'.format(
policy_name
)
)
except Exception as e:
logger.error('policy_name: {}: get_and_create_policy: {}'.format(policy_name, e))
raise DeviceReplicationCreateThingException(e)