amazon-s3 - Zappa 打包 lambda 错误 ..botocore.exceptions.SSLError : SSL validation failed for <s3 file> [Errno 2] No such file or directory

标签 amazon-s3 openssl zappa

运行使用 Zappa.io 打包的 AWS lambda 服务
该服务正在运行,但是由于 ssl 错误无法访问 S3 文件
尝试从 s3 存储桶访问 remote_env 时出现以下错误

[1592935276008] [DEBUG] 2020-06-23T18:01:16.8Z b8374974-f820-484a-bcc3-64a530712769 Exception received when sending HTTP request.
Traceback (most recent call last):
  File "/var/task/urllib3/util/ssl_.py", line 336, in ssl_wrap_socket
  context.load_verify_locations(ca_certs, ca_cert_dir)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/var/runtime/botocore/httpsession.py", line 254, in send
  urllib_response = conn.urlopen(
  File "/var/task/urllib3/connectionpool.py", line 719, in urlopen
  retries = retries.increment(
  File "/var/task/urllib3/util/retry.py", line 376, in increment
  raise six.reraise(type(error), error, _stacktrace)
  File "/var/task/six.py", line 703, in reraise
  raise value
  File "/var/task/urllib3/connectionpool.py", line 665, in urlopen
  httplib_response = self._make_request(
  File "/var/task/urllib3/connectionpool.py", line 376, in _make_request
  self._validate_conn(conn)
  File "/var/task/urllib3/connectionpool.py", line 996, in _validate_conn
  conn.connect()
  File "/var/task/urllib3/connection.py", line 352, in connect
  self.sock = ssl_wrap_socket(
  File "/var/task/urllib3/util/ssl_.py", line 338, in ssl_wrap_socket
  raise SSLError(e)
urllib3.exceptions.SSLError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/var/runtime/botocore/endpoint.py", line 200, in _do_get_response
  http_response = self._send(request)
  File "/var/runtime/botocore/endpoint.py", line 244, in _send
  return self.http_session.send(request)
  File "/var/runtime/botocore/httpsession.py", line 281, in send
  raise SSLError(endpoint_url=request.url, error=e)
botocore.exceptions.SSLError: SSL validation failed for .......  [Errno 2] No such file or directory
我的环境
使用的 Zappa 版本:0.51.0
操作系统和 Python 版本: Ubuntu , Python 3.8
pip 卡住的输出
appdirs==1.4.3
argcomplete==1.11.1
boto3==1.14.8
botocore==1.17.8
CacheControl==0.12.6
certifi==2019.11.28
cffi==1.14.0
cfn-flip==1.2.3
chardet==3.0.4
click==7.1.2
colorama==0.4.3
contextlib2==0.6.0
cryptography==2.9.2
distlib==0.3.0
distro==1.4.0
docutils==0.15.2
durationpy==0.5
Flask==1.1.2
Flask-Cors==3.0.8
future==0.18.2
h11==0.9.0
hjson==3.0.1
html5lib==1.0.1
httptools==0.1.1
idna==2.8
ipaddr==2.2.0
itsdangerous==1.1.0
Jinja2==2.11.2
jmespath==0.10.0
kappa==0.6.0
lockfile==0.12.2
mangum==0.9.2
MarkupSafe==1.1.1
msgpack==0.6.2
packaging==20.3
pep517==0.8.2
pip-tools==5.2.1
placebo==0.9.0
progress==1.5
pycparser==2.20
pydantic==1.5.1
PyMySQL==0.9.3
pyOpenSSL==19.1.0
pyparsing==2.4.6
python-dateutil==2.6.1
python-slugify==4.0.0
pytoml==0.1.21
PyYAML==5.3.1
requests==2.22.0
retrying==1.3.3
s3transfer==0.3.3
six==1.14.0
starlette==0.13.4
text-unidecode==1.3
toml==0.10.1
tqdm==4.46.1
troposphere==2.6.1
typing-extensions==3.7.4.2
urllib3==1.25.8
uvloop==0.14.0
webencodings==0.5.1
websockets==8.1
Werkzeug==0.16.1
wsgi-request-logger==0.4.6
zappa==0.51.0
我的 zappa_settings.json :
{
    "dev": {
        "app_function": "main.app",
        "aws_region": "us-west-2",
        "profile_name": "default",
        "project_name": "d3c",
        "runtime": "python3.8",
        "keep_warm":false,
        "cors": true,
        "s3_bucket": "my-lambda-deployables",
        "remote_env":"<my remote s3 file>"
    }
}
我已经确认我的 S3 文件可以从我的本地 ubuntu 机器访问,但是在 aws 上不起作用

最佳答案

这似乎与一个 Unresolved 问题有关 open issue on Zappa
我的 Zappa 部署遇到了同样的问题,
我尝试了所有可能的选项,但没有任何效果,但是在尝试了不同的建议后,以下步骤对我有用

  • 我将 python3.8/site-packages/botocore/cacert.pem 复制到我的 lambda 文件夹
  • 我将“REQUESTS_CA_BUNDLE”环境变量设置为/var/task/cacert.pem

  • /var/task is where AWS Lambda extracts your zipped up code to.


    How to set environment variables in Zappa


  • 我更新了 Zappa 功能,一切正常
  • 关于amazon-s3 - Zappa 打包 lambda 错误 ..botocore.exceptions.SSLError : SSL validation failed for <s3 file> [Errno 2] No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62541300/

    相关文章:

    amazon-web-services - 基于 lambda 的服务的 CloudFormation 模板,S3Key 不存在

    ruby-on-rails - 由于 windows 中的 openssl/ETimedout,gem install Rails 无法工作

    amazon-s3 - 使用 awscli 恢复中断的 s3 下载

    amazon-s3 - 具有公共(public)读取权限的 AWS S3 putobject - .Net SDK

    c - OpenSSL - 找到 AES key

    security - 如何验证双向 SSL 证书?

    flask - 我可以将 AWS Lambda 站点移动到私有(private)域吗?

    aws-lambda - 如何在发布新的 lambda 层版本时自动更改 zappa_settings.json 文件中的 lambda 层版本?

    amazon-web-services - S3桶: Encountered unsupported property NonCurrentVersionTransition