Код AWS boto3 не удается подключиться к конечной точке интернета вещей

#amazon-web-services #boto3

Вопрос:

Я пытаюсь отправить сообщение «привет, мир» на конечную точку интернета вещей AWS. Документация Amazon по адресу

 https://docs.aws.amazon.com/panorama/latest/dev/applications-awssdk.html  

есть этот простой пример кода:

 import boto3 iot_client=boto3.client('iot-data') topic = "panorama/panorama_my-appliance_Thing_a01e373b" iot_client.publish(topic=topic, payload="my message")  

Этот код отлично работает, когда я помещаю его в лямбда-функцию.

Но когда я пытаюсь запустить этот код на своем компьютере в автономном приложении Python, я получаю сообщение об ошибке:

ошибка проверки сертификата: не удалось получить сертификат локального эмитента (_ssl.c:1125)

У меня есть файл .aws/учетные данные с такими записями, как

 [default] aws_access_key_id = xxxxxxxxxx aws_secret_access_key = xxxxxxxxxx  

Я проверил правильность конечной точки:

 aws iot describe-endpoint  

команда возвращает допустимую конечную точку ats, например:

 "endpointAddress": "xxxxxxx-ats.iot.us-east-2.amazonaws.com"  

Если я укажу эту конечную точку при создании клиента:

 iot_client=boto3.client('iot-data',   region_name='us-east-2',  endpoint_url=xxxxxxx-ats.iot.us-east-2.amazonaws.com)  

Я получаю ошибку:

Ошибка значения: Недопустимая конечная точка: xxxxxx-ats.iot.us-east-2.amazonaws.com

Что я упускаю? Нужно ли мне загружать какие-либо файлы сертификатов? Если это так, то этот код, похоже, не использует никаких сертификатов. Та же настройка работает с S3 или DynamoDB:

 s3 = boto3.resource('s3')  

и

 dynamodb = boto3.resource('dynamodb')  

отлично работают на моем компьютере.