And*_*rew 1 python boto amazon-web-services
我使用的是 Windows 10 操作系统。
我想统计AWS的IP地址数量。
我使用python 2.7.14和boto 2.6.0
我添加一个文件,其名称boto.config位于 C:\Users\Administrator 文件夹
boto.config 的内容是:
[Credentials]
aws_access_key_id=******
aws_secret_access_key=*****
Run Code Online (Sandbox Code Playgroud)
脚本是:
#!/usr/bin/env python
# -*- encoding: utf8 -*-
import boto.ec2
from pprint import pprint
import ssh
import requests
import urllib3
import certifi
import ssl
conn = boto.ec2.connect_to_region('cn-north-1')
reservations = conn.get_all_instances()
InstanceMap=[]
for reservation in reservations:
for instance in reservation.instances:
if 'env' in instance.tags and instance.tags['env'] == 'test':
InstanceMap.append(instance.ip_address)
f = open('F:\ip.txt','w')
pprint(InstanceMap, f)
Run Code Online (Sandbox Code Playgroud)
当我运行此脚本时,它显示错误信息:
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:661)
我有什么方法可以解决这个问题?
我在机器上boto3也遇到了同样的问题。事实证明,由于我使用安装了代理的企业设备,*.amazonaws.com 证书被代理证书取代。此代理证书链需要受到 Python模块的信任。无论您是否有代理,以下方法都应该解决错误。Python 3.7Windows 10certifiSSL: CERTIFICATE_VERIFY_FAILED
这是我为解决问题所做的 -
如果没有,请安装证书。命令:
pip install certifi
import certifi
certifi.where()
C:\\Users\\[UserID]\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\certifi\\cacert.pem
Run Code Online (Sandbox Code Playgroud)
AWS_CA_BUNDLE将环境变量设置为cacert.pem路径 -
AWS_CA_BUNDLE=C:\Users\[UserID]\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\certifi\cacert.pem
从 amazonaws.com URL 下载证书链。例如:在浏览器上访问https://sts.amazonaws.com/xyz并导出 Root、所有中间证书、域证书并保存为 base64 编码的 .cer 文件。在记事本中打开证书,复制所有内容。
现在在记事本中打开 cacert.pem,然后---Begin Certificate--- *** ---End Certificate---在末尾添加每个下载的证书内容 ( )。
重新启动命令行提示符或 PowerShell,SSL 验证错误应该得到解决。
请勿
is_secure = False在您组织的环境中使用。这实质上是禁用 SSL 验证。
| 归档时间: |
|
| 查看次数: |
7314 次 |
| 最近记录: |