本地运行AWS boto3代码无法连接IoT端点报错问题咨询
问题修复步骤
1. 修复无效端点报错
你遇到的ValueError: Invalid endpoint错误是因为endpoint_url参数需要传入完整的带协议前缀的URL,而不是仅填写域名。正确写法如下:
iot_client=boto3.client('iot-data', region_name='us-east-2', endpoint_url='https://xxxxxxx-ats.iot.us-east-2.amazonaws.com')
注意域名前后需要加单/双引号包裹,同时前面补充https://前缀。
2. 修复SSL证书验证失败报错
这个报错是因为AWS IoT ATS端点的根证书默认没有被你本地Python环境的CA证书库收录,你有两种解决方案:
方案1(推荐,生产可用):添加AWS根证书
- 下载Amazon Root CA 1证书,保存到本地为
AmazonRootCA1.pem - 在创建客户端时显式指定证书路径:
import boto3 from botocore.config import Config client_config = Config( region_name = 'us-east-2', signature_version = 'v4' ) iot_client = boto3.client( 'iot-data', endpoint_url='https://xxxxxxx-ats.iot.us-east-2.amazonaws.com', config=client_config, verify='/path/to/your/AmazonRootCA1.pem' )
方案2(仅本地测试用,不安全):关闭SSL验证
如果只是临时本地测试,可以添加参数关闭证书验证,不建议在生产环境使用:
iot_client = boto3.client( 'iot-data', endpoint_url='https://xxxxxxx-ats.iot.us-east-2.amazonaws.com', region_name='us-east-2', verify=False )
额外说明
你本地访问S3、DynamoDB正常是因为这些服务的根证书已经被主流CA证书库默认收录,不需要额外配置,而IoT端点的证书链特殊,所以需要单独配置。
内容的提问来源于stack exchange,提问作者Raja
相关产品推荐
相关产品推荐

