1
0

More than 1 year has passed since last update.

ServerlessFrameworkでLambda(Go)を動かしたらファイルが見つからずエラーになる

Posted at

はじめに

GoをLambdaにデプロイしたのですが、ファイル読み込みで多くの時間を使ったのでまとめます
ServerlessFrameworkを利用したLambdaでファイル読み込みをする方の参考になればと思います

問題

Lambda(go)で以下のコードを実行していました
ここではconfig.iniという設定ファイルを本番環境では、mainの実行ファイルと同じ階層にあるものを読み込むようにします

しかし、このコードではnot found ./config.iniとなってしまいます

config.go
	path := "/go/src/config/config.ini"

	if os.Getenv("ENV") == "production" {
		path = "./config.ini"
	}

 	cfg, err := ini.Load(path)

解決方法

現在serverless frameworkを利用してserverless.ymlmainと同じフォルダにconfig.iniがアップロードされている状態です

以下のようにファイルパスを変更しました

config.go
	if os.Getenv("ENV") == "production" {
		path = "/var/task/bin/config.ini"
	}

Lambdaのファイルパスは/var/taskいかにアップロードされるようです (serverless framework)

おわりに

この設定で色々遠回りしてしまいましたが、最後はすっきりと書けました
goのテストの関係で相対パスだとファイルの位置でエラーになってしまうので、絶対パスにしてみました

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0