1 #!/usr/bin/env python
\r
7 def describe_endpoint():
\r
8 client = boto3.client('iot')
\r
9 endpoint = client.describe_endpoint(endpointType='iot:Data-ATS')
\r
10 return endpoint['endpointAddress']
\r
13 def get_account_id():
\r
14 client = boto3.client('sts')
\r
15 aws_account_id = client.get_caller_identity()['Account']
\r
16 return aws_account_id.strip('\n')
\r
19 def get_aws_region():
\r
20 my_session = boto3.session.Session()
\r
21 aws_region = my_session.region_name
\r
22 return aws_region.strip('\n')
\r
25 def create_policy_document():
\r
26 this_file_directory = os.getcwd()
\r
27 policy_document = os.path.join(this_file_directory,
\r
28 'policy_document.templ')
\r
29 region_name = str(get_aws_region())
\r
30 aws_account_id = str(get_account_id())
\r
31 with open(policy_document) as policy_document_file:
\r
32 policy_document_text = policy_document_file.read()
\r
34 # Replace Account ID and AWS Region
\r
35 policy_document_text = policy_document_text.replace('<aws-region>',
\r
37 policy_document_text = policy_document_text.replace('<aws-account-id>',
\r
40 return policy_document_text
\r
43 def format_credential_keys_text(credential_text):
\r
44 credential_text_lines = credential_text.split('\n')
\r
45 formatted_credential_text_lines = []
\r
47 for credential_text_line in credential_text_lines:
\r
48 if credential_text_line.strip():
\r
49 formatted_credential_text_line = ' {:68s}'\
\r
50 .format('"' + credential_text_line + '\\n"')
\r
51 formatted_credential_text_lines.append(
\r
52 formatted_credential_text_line)
\r
54 formatted_credential_text = ' \\\n'.join(formatted_credential_text_lines)
\r
55 return formatted_credential_text
\r
58 def write_client_credentials(
\r
61 client_certificate_pem='',
\r
62 client_private_key_pem='',
\r
65 file_to_modify = os.path.join(source_dir,
\r
68 'FreeRTOS_IoT_Libraries',
\r
70 'aws_iot_demo_profile.h')
\r
74 filename = "aws_iot_demo_profile_empty.templ"
\r
75 with open(filename, 'r') as template_file:
\r
76 file_text = template_file.read()
\r
79 endpoint = describe_endpoint()
\r
80 client_certificate_pem =\
\r
81 format_credential_keys_text(client_certificate_pem)
\r
82 client_private_key_pem =\
\r
83 format_credential_keys_text(client_private_key_pem)
\r
85 filename = "aws_iot_demo_profile.templ"
\r
86 with open(filename, 'r') as template_file:
\r
87 file_text = template_file.read()
\r
88 file_text = file_text.replace("<IOTEndpoint>",
\r
89 "\"" + endpoint + "\"")
\r
90 file_text = file_text.replace("<IOTThingName>",
\r
91 "\"" + thing_name + "\"")
\r
92 file_text = file_text.replace("<ClientCertificatePEM>",
\r
93 client_certificate_pem)
\r
94 file_text = file_text.replace("<ClientPrivateKeyPEM>",
\r
95 client_private_key_pem)
\r
97 header_file = open(str(file_to_modify), 'w')
\r
98 header_file.write(file_text)
\r