AWS AmplifyでGolangなLambdaでローカル実行したときのログ出力

Q.AWS Amplifyでローカル実行で簡単にログを確認したいのですが?

  • AWS Amplify (4.27.3)
  • Golangで作ったLambda function
  • amplify mock function <FunctionName> でローカル実行

このときに log.Println() で簡単にコンソールにログ出力して値を確認したい。

A.できなそう

やりかたわからず。 amplifyコマンドのコードを変更すればできそうだけど、、、わたしは以下のworkaroundで対応しました。

// import "os"
// import "log"
// import "io"

logFile, err := os.OpenFile("/tmp/out.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0755)
if err != nil {
	log.Printf("Cannot open logFile: %v", err)
}
defer logFile.Close()
log.SetOutput(io.MultiWriter(logFile, os.Stderr))
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)

クラウドに載ったときのことも考えて、MultiWriterで両方に出力してます。

なおぱっとamplify(cli)のコードを見た限りmainバイナリの差し替えを想定していなそうだったので、delveでのデバッグもできなそう。

いいやりかたがあれば誰か教えてください。

Cloud 

See also