GitHub Actions部署AWS SAM时Python版本匹配错误求助
问题解决:GitHub Actions中SAM构建提示找不到Python3.9
错误原因
从报错日志可以明确:你的SAM项目包含两个Lambda函数,其中MyLambdaFunction使用Python3.8,而HelloWorldFunction使用Python3.9;但当前GitHub Actions流水线仅安装了Python3.8环境,SAM构建时无法匹配到Python3.9的运行时,导致二进制验证失败。
解决方案
方案1:统一SAM模板的Python版本(推荐)
找到serverless-architecture-with-SAM/template.yml文件,定位到HelloWorldFunction的配置段,将runtime: python3.9修改为runtime: python3.8,与另一个函数的Python版本保持一致。修改后SAM构建会直接使用已安装的Python3.8环境,无需调整流水线配置。
方案2:在流水线中同时安装Python3.8和3.9
若需保留Python3.9的运行时配置,修改build-and-deploy-infra任务的步骤,同时安装两个版本的Python,确保SAM能找到对应环境:
build-and-deploy-infra: needs: test-infra runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # 安装Python3.8用于测试依赖 - uses: actions/setup-python@v3 with: python-version: 3.8 # 安装Python3.9用于SAM构建对应版本的Lambda - uses: actions/setup-python@v3 with: python-version: 3.9 architecture: x64 cache: 'pip' - uses: aws-actions/setup-sam@v1 - uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - run: sam build working-directory: serverless-architecture-with-SAM - run: sam deploy --no-confirm-changeset --no-fail-on-empty-changeset working-directory: serverless-architecture-with-SAM
调整后流水线会同时具备Python3.8和3.9的运行环境,SAM构建时会自动匹配对应函数的runtime版本。
内容的提问来源于stack exchange,提问作者Justin Henson
相关产品推荐
相关产品推荐

