我正在尝试使用boto连接到S3,但似乎失败了。我尝试了一些解决方法,但它们似乎没有用。任何人都可以帮我这个。下面是代码。
import boto
if not boto.config.has_section('Credentials'):
boto.config.add_section('Credentials')
boto.config.set('Credentials', 'aws_access_key_id', AWS_KEY)
boto.config.set('Credentials', 'aws_secret_access_key', AWS_SECRET_KEY)
if not boto.config.has_section('Boto'):
boto.config.add_section('Boto')
boto.config.set('Boto', 'https_validate_certificates', 'False')
boto.config.add_section('aws info')
boto.config.set('aws info','aws_validate_certs','False')
s3 = boto.connect_s3(validate_certs=False)
bucket = s3.get_bucket(Bucket_NAME)
答案 0 :(得分:11)
您的存储桶名称可能包含一个点,这就是ssl证书验证失败的原因。这是一个经常出现的问题,例如,见github issue。
请勿使用不安全的连接(is_secure=False
),而应使用OrdinaryCallingFormat
:
import boto
conn = boto.s3.connect_to_region('eu-west-1', calling_format=boto.s3.connection.OrdinaryCallingFormat())
bucket = conn.get_bucket(your_bucket)
您可能需要更新AWS Region,例如us-east-1
答案 1 :(得分:9)
我找到了办法,
在is_secure=False
中使用connect_s3()
。
答案 2 :(得分:2)
add verify = False
boto3.resource(
"s3",
endpoint_url=<URL>,
aws_access_key_id=<ID>,
aws_secret_access_key=<Key>,
verify=False
)
答案 3 :(得分:1)
在boto3中,如果使用的是s3客户端,则在创建s3客户端时使用verify = False。 例如:
s3 = boto3.client('s3', verify=False)
如boto3文档中所述,这只会关闭SSL证书的验证。仍将使用SSL(除非use_ssl为False),但不会验证SSL证书。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html
答案 4 :(得分:0)
我也遇到了这个问题。我的环境是Ubuntu 15.04,Python 2.7.9和Boto 2.38.0。
设置参数 validate_certs = False 并不能使其与没有有效证书的HTTPS连接一起使用。在阅读了boto的代码后,我发现它是Python的ssl模块的行为。然后我在这里找到了一个解决方案:"SSL: CERTIFICATE_VERIFY_FAILED" Error。解决方案确实有效!!!。
答案 5 :(得分:0)
macOS用户:如果您正在使用python.org中的Python 3.6 二进制安装程序链接在此页面上,请仔细阅读 安装期间显示的重要信息;此信息 安装后点击即可使用 / Applications / Python 3.6 / ReadMe.rtf。有重要的信息 有关3.6.0安装程序提供的Python的更改, 特别是关于SSL证书验证。
https://www.python.org/downloads/release/python-360/
撰写本文时的ReadMe.rtf:
证书验证和OpenSSL
新 Python 3.6的这种变体现在包含自己的OpenSSL 1.0.2私有副本。与以前的版本不同,不推荐使用 Apple不再使用Apple提供的OpenSSL库。这也意味着 系统和用户密钥链中的信任证书由管理 Keychain Access应用程序和安全命令行实用程序 Python ssl模块不再使用默认值。对于3.6.0,a 示例命令脚本包含在/ Applications / Python 3.6中 从中安装策划的默认根证书包 第三方证书包(https://pypi.python.org/pypi/certifi)。 如果您选择使用certifi,您应该考虑订阅 项目的电子邮件更新服务在证书时通知 捆绑包已更新。
Python 3.6安装程序附带的捆绑pip有自己的 用于验证下载连接的默认证书存储区。