Невозможно загрузить объекты S3 размером более 100 МБ с помощью Go SDK - PullRequest
1 голос
/ 27 мая 2020

У меня есть REST API с двумя конечными точками: 1 обрабатывает запрос POST для загрузки в S3, а другой обслуживает файлы для запроса GET, который загружает файл из корзины и передает его клиенту. Теперь:

  1. Я получаю ответ об отказе в доступе, когда пытаюсь загрузить файл с S3 после 24 часов загрузки, хотя мне удалось получить файл в тот же день. Есть ли что-то, что нужно настроить, чтобы предотвратить это? Относится ли это к чему-то вроде этого https://medium.com/driven-by-code/on-the-importance-of-correct-headers-and-metadata-in-s3-origins-for-aws-cloudfront-50da2f9370ae?
  2. при запуске загрузки для получения файла с S3 я получаю ошибку тайм-аута через 30 секунд c. Сервер настроен на WriteTimeout 15 минут. Как предотвратить этот тайм-аут? Примечание. Это не лямбда-функция или какой-либо тип бессерверной функции. Я тоже не использую CloudFront (насколько мне известно). Вот фрагмент кода для запроса GET.
buf := aws.NewWriteAtBuffer([]byte{})
 s3Svc := s3.New(s)
 downloader := s3manager.NewDownloaderWithClient(s3Svc, func(d *s3manager.Downloader) {
     d.PartSize = 64 * MB
     d.Concurrency = 3
 })
 result, err := downloader.Download(
     buf, &s3.GetObjectInput{
         Bucket: aws.String(rc.AWS.Bucket),
         Key:    aws.String(fileName),
     })
 if err != nil {
     return nil, err
 }
d := bytes.NewReader(buf.Bytes())
w.Header().Set("Content-Disposition", "filename="OriginalFileName)
http.ServeContent(w, r, filename, time.Now(), d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...