GitHub Actions中SAM构建突发失败:lib模块无OpenSSL_add_all_algorithms属性
GitHub Actions中SAM构建报错:AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'
问题描述
昨日正常执行的GitHub Actions SAM构建任务今日突然失败,抛出错误:
AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'
已确认SAM模板无错误,尝试执行sudo apt install python3-openssl无法解决问题。
GitHub Actions配置
name: SAM deploy on: push: branches: - main jobs: build-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v3 - uses: aws-actions/setup-sam@v2 - uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.MY_AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.MY_AWS_SECRET_ACCESS_KEY }} aws-region: us-west-2 - name: SAM Build run: sam build --use-container --template-file source/deploy-template.yml - name: SAM Deploy run: sam deploy --no-confirm-changeset --no-fail-on-empty-changeset --stack-name my-stack --resolve-s3 --capabilities CAPABILITY_IAM --region us-west-2 --parameter-overrides Environment=npd
错误详情
Traceback (most recent call last): File "/home/runner/work/_temp/setup-sam-PFBc7r/bin/sam", line 8, in <module> sys.exit(cli()) ^^^^^ File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/click/core.py", line 1651, in invoke cmd_name, cmd, args = self.resolve_command(ctx, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/click/core.py", line 1698, in resolve_command cmd = self.get_command(ctx, cmd_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/samcli/cli/command.py", line 133, in get_command mod = importlib.import_module(pkg_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1206, in _gcd_import File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/samcli/commands/build/__init__.py", line 6, in <module> from .command import cli # noqa ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/samcli/commands/build/command.py", line 12, in <module> from samcli.commands._utils.options import ( File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/samcli/commands/_utils/options.py", line 21, in <module> from samcli.commands._utils.template import get_template_data, TemplateNotFoundException File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/samcli/commands/_utils/template.py", line 10, in <module> from botocore.utils import set_value_from_jmespath File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/botocore/utils.py", line 37, in <module> import botocore.httpsession File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/botocore/httpsession.py", line 46, in <module> from urllib3.contrib.pyopenssl import ( File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module> import OpenSSL.crypto File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/OpenSSL/__init__.py", line 8, in <module> from OpenSSL import crypto, SSL File "/home/runner/work/_temp/setup-sam-PFBc7r/.venv/lib/python3.11/site-packages/OpenSSL/crypto.py", line 3268, in <module> _lib.OpenSSL_add_all_algorithms() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms' Error: Process completed with exit code 1.
解决方案
这个错误源于pyopenssl库与底层OpenSSL环境的版本兼容性冲突,近期依赖包更新或GitHub Actions runner环境变更可能触发了这个问题,可尝试以下几种修复方式:
1. 固定SAM CLI版本
当前aws-actions/setup-sam@v2默认拉取最新版本,可能引入了依赖冲突,指定一个已知稳定的版本:
- uses: aws-actions/setup-sam@v2 with: sam-version: '1.97.0' # 可根据实际情况调整为稳定版本
2. 切换Python版本
Python 3.11部分依赖兼容性可能存在问题,降级到Python 3.10:
- uses: actions/setup-python@v3 with: python-version: '3.10'
3. 手动安装兼容的依赖版本
在setup-sam步骤后添加依赖安装步骤,锁定pyopenssl和cryptography的兼容版本:
- name: Fix OpenSSL dependency conflict run: | pip install pyopenssl==23.2.0 cryptography==41.0.7
内容的提问来源于stack exchange,提问作者CloudEnthusiast
相关产品推荐
相关产品推荐

