blob: 9bb25a219e19fe4659c5030dbe4c37e11bf1ef80 [file] [log] [blame]
#!/usr/bin/env python
import os
import boto3
def describe_endpoint():
client = boto3.client('iot')
endpoint = client.describe_endpoint(endpointType='iot:Data-ATS')
return endpoint['endpointAddress']
def get_account_id():
client = boto3.client('sts')
aws_account_id = client.get_caller_identity()['Account']
return aws_account_id.strip('\n')
def get_aws_region():
my_session = boto3.session.Session()
aws_region = my_session.region_name
return aws_region.strip('\n')
def create_policy_document():
this_file_directory = os.getcwd()
policy_document = os.path.join(this_file_directory,
'policy_document.templ')
region_name = str(get_aws_region())
aws_account_id = str(get_account_id())
with open(policy_document) as policy_document_file:
policy_document_text = policy_document_file.read()
# Replace Account ID and AWS Region
policy_document_text = policy_document_text.replace('<aws-region>',
region_name)
policy_document_text = policy_document_text.replace('<aws-account-id>',
aws_account_id)
return policy_document_text
def format_credential_keys_text(credential_text):
credential_text_lines = credential_text.split('\n')
formatted_credential_text_lines = []
for credential_text_line in credential_text_lines:
if credential_text_line.strip():
formatted_credential_text_line = ' {:68s}'\
.format('"' + credential_text_line + '\\n"')
formatted_credential_text_lines.append(
formatted_credential_text_line)
formatted_credential_text = ' \\\n'.join(formatted_credential_text_lines)
return formatted_credential_text
def write_client_credentials(
source_dir,
thing_name='',
client_certificate_pem='',
client_private_key_pem='',
cleanup=False):
file_to_modify = os.path.join(source_dir,
'FreeRTOS-Labs',
'Demo',
'FreeRTOS_IoT_Libraries',
'include',
'aws_iot_demo_profile.h')
file_text = ''
if cleanup:
filename = "aws_iot_demo_profile_empty.templ"
with open(filename, 'r') as template_file:
file_text = template_file.read()
else:
endpoint = describe_endpoint()
client_certificate_pem =\
format_credential_keys_text(client_certificate_pem)
client_private_key_pem =\
format_credential_keys_text(client_private_key_pem)
filename = "aws_iot_demo_profile.templ"
with open(filename, 'r') as template_file:
file_text = template_file.read()
file_text = file_text.replace("<IOTEndpoint>",
"\"" + endpoint + "\"")
file_text = file_text.replace("<IOTThingName>",
"\"" + thing_name + "\"")
file_text = file_text.replace("<ClientCertificatePEM>",
client_certificate_pem)
file_text = file_text.replace("<ClientPrivateKeyPEM>",
client_private_key_pem)
header_file = open(str(file_to_modify), 'w')
header_file.write(file_text)
header_file.close()