#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')
отлично работают на моем компьютере.