Если вы хотите написать облачную функцию и вам нужно записать временные данные в файловую систему, как вы это сделаете?

Использование /tmp. Под капотом это на самом деле просто сохранение в памяти, но если вы должны имитировать чтение и запись в файловую систему, это сработает.

Я программно клонировал репозиторий и анализировал файлы JSON из этого репо, поэтому в моей ситуации это имело смысл.

Написать:

func write() error {
    text := "Hello World"
    filepath := "/tmp/file"
 fmt.Printf("writing file %v\n", filepath)
 b := []byte(text)
 err := ioutil.WriteFile(filepath, b, 0644)
 switch  {
 case err != nil:
  fmt.Printf("error encountered writing file %v, %v\n", filepath, err)
  return err
 default:
  fmt.Printf("file wrote successfully\n")
  return nil
 }
}

Читать:

func read() (string, error) {
    filepath := "tmp/file"
 fmt.Printf("reading file %v\n", filepath)
 content, err := ioutil.ReadFile(filepath)
switch {
 case err != nil:
  fmt.Printf("error encountered reading file %v, %v\n", filepath, err)
  return "", err
 default:
  fmt.Printf("file %v read, content: %v\n", filepath, string(content))
  return string(content), nil
 }
}

Полный образец вы можете найти здесь.

Если вы заботитесь о сохранении файлов, которые вы пишете, не используйте это решение. Вместо этого используйте что-то вот так.

Первоначально опубликовано на https://www.zakmiller.com 9 мая 2019 г.