You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions设置的环境变量无法在Chalice(AWS Lambda)项目中访问

问题原因与解决方案

核心原因

你在GitHub Actions中设置的REPO、GITHUB_REF_NAME、GITHUB_SHA是部署流程所在Ubuntu虚拟机的环境变量,和Lambda函数运行时的环境变量完全是两个独立环境。Chalice不会自动将部署机器的环境变量同步到Lambda运行环境,只有.chalice/config.json里配置的环境变量,才会被Chalice打包到Lambda函数的运行环境中。

解决方案

方案一:部署时通过命令行参数传递

直接在chalice deploy命令中用--environment-variable参数指定要传递给Lambda的环境变量,修改GitHub Actions中的部署步骤:

- name: Deploy with Chalice
  run: |
    chalice deploy --stage=production \
      --environment-variable REPO=${{ env.REPO }} \
      --environment-variable GITHUB_REF_NAME=${{ env.GITHUB_REF_NAME }} \
      --environment-variable GITHUB_SHA=${{ env.GITHUB_SHA }}

方案二:动态修改Chalice配置文件

写个简单脚本将GitHub Actions的环境变量写入.chalice/config.json的production阶段配置,再执行部署:

  1. 创建inject_env_vars.py脚本:
import json
import os

# 读取现有配置
with open('.chalice/config.json', 'r') as f:
    config = json.load(f)

# 确保production阶段的环境变量配置存在
if 'environment_variables' not in config['stages']['production']:
    config['stages']['production']['environment_variables'] = {}

# 添加CI环境变量
config['stages']['production']['environment_variables'].update({
    'REPO': os.environ['REPO'],
    'GITHUB_REF_NAME': os.environ['GITHUB_REF_NAME'],
    'GITHUB_SHA': os.environ['GITHUB_SHA']
})

# 写入修改后的配置
with open('.chalice/config.json', 'w') as f:
    json.dump(config, f, indent=2)
  1. 在GitHub Actions中添加执行脚本的步骤:
- name: Inject CI env vars into Chalice config
  run: python3 inject_env_vars.py

- name: Deploy with Chalice
  run: chalice deploy --stage=production

补充说明

你在Check branch步骤中能正常输出变量,是因为该步骤直接在GitHub Actions的虚拟机环境中执行,读取的是虚拟机的环境变量;而Lambda代码里os.environ.get读取的是Lambda运行容器的环境变量,两者完全独立,必须通过Chalice的官方机制把变量传递到Lambda环境中。

内容的提问来源于stack exchange,提问作者bolino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:45:42