go - 如何使用 golang 为 lambda 函数提供配置值

标签 go aws-lambda config serverless

如何提供配置文件以及用 golang 编写的 lambda 函数。我在项目根目录中创建了一个名为 config 的文件夹并提供了配置。但不幸的是,在项目构建后它不起作用。我知道这是因为我们将它构建为二进制文件。所以,什么是最好的为 golang 提供配置文件和 lambda 函数的方式或方法?

var config map[string]string
var filename string

//Checks the stage and loads the Configuration file
if len(event.Stage) > 0 {
    filename = "configs/config.json"
}

configFile, err := os.Open(filename)
defer configFile.Close()
if err != nil {
    log.Printf(err.Error())
    return config, err
}
jsonParser := json.NewDecoder(configFile)
err = jsonParser.Decode(&config)
return config, err

最佳答案

将配置文件添加到包含 Go 二进制文件的 zip 中

例如,假设你有一个 Handler.go 和一个包含 configs.json 的 configs 目录

go build -o Handler Handler.go && chmod +x Handler && zip -r handler.zip Handler configs

应该制作一个包含 configs 目录和可以上传到 Lambda 的 Handler 二进制文件的 zip

您可能希望考虑使用 AWS Parameter Store 等文件的替代方法

关于go - 如何使用 golang 为 lambda 函数提供配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53912339/

相关文章:

go - 是否可以一次上传多个文件

go - 不允许通过经销商 API 将第一个用户添加到新配置的客户

sorting - 在 Go 中使用函数或方法排序?

node.js - 将编译的 typescript 部署到 lambda 时导入模块错误

amazon-web-services - 允许 AWS Lambda 访问 RDS 数据库

encryption - 如何仅加密 .env 文件的值?

go - httprouter.GET 不工作

amazon-web-services - Lambda 服务抛出错误执行角色无权在 SQS 上调用 receiveMessage

c# - 在应用程序文件夹外读取单独的 web.config 文件

grails - Grails外部配置Config System.getenv