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

Go语言Lambda函数无法访问config.json文件问题求助

Go Lambda函数部署后找不到config.json的解决方法

问题根源

本地运行时,main.go和config.json处于同一目录,相对路径能正常定位文件;但部署到Lambda后,编译后的二进制文件被放置在/var/task目录,若config.json未被正确打包到对应位置,或代码路径逻辑依赖不可靠的工作目录,就会出现文件找不到的错误。

解决方案

1. 确保config.json被纳入部署包

GitHub Actions部署时,必须将config.json和编译后的二进制文件打包到同一层级。示例打包流程:

# 编译Go代码,生成名为main的二进制文件
go build -o main ./subfolder/subfolder/
# 把config.json复制到二进制文件所在目录
cp ./subfolder/subfolder/config.json .
# 将二进制和配置文件一起打包成部署用zip
zip deployment.zip main config.json

这样部署后,/var/task目录下会同时存在main和config.json,代码中用os.Open("config.json")即可正常读取。

2. 修正代码路径逻辑(推荐)

不要依赖os.Getwd()获取路径(Lambda的工作目录不可控),改用代码文件的实际位置来定位config.json:

import (
    "path/filepath"
    "runtime"
    "os"
)

func getConfigPath() string {
    _, filename, _, ok := runtime.Caller(0)
    if !ok {
        panic("无法获取当前文件路径")
    }
    // 获取当前代码文件所在目录
    dir := filepath.Dir(filename)
    // 拼接config.json的绝对路径
    return filepath.Join(dir, "config.json")
}

// 读取配置文件时调用
configFile, err := os.Open(getConfigPath())

这种方式基于代码文件的位置定位配置文件,只要config.json和代码文件同目录打包,无论部署环境如何变化都能找到。

3. 检查GitHub Actions部署配置

确认部署步骤中的打包命令包含了config.json,避免只打包二进制文件遗漏配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:14:55