RequestError с aws-sdk-go для загрузки S3
Когда я пытаюсь загрузить mp3 файлы на S3, используя пакет ssmanager aws-sdk-go, я получаю эту ошибку.
2019/03/29 11:02:07 Error occurred while uploading
/var/recordings/98a8d64ab5d01c9e00ba4ca1e292ce61.mp3 . Error : RequestError: send request failed
caused by: Put https://<bucketName>.s3.ap-southeast-1.amazonaws.com/98a8d64ab5d01c9e00ba4ca1e292ce61.mp3: EOF Current file size: 678071
Проблема в том, что это случается только иногда. Я добавил журналы, чтобы проверить, являются ли файлы пустыми или нет. Все вроде нормально.
Вот код, который я использую для обработки загрузки:
вход
fileReader := bytes.NewReader(buffer)
input := &s3manager.UploadInput{
Bucket: aws.String(awsBucketName),
Key: aws.String(filename),
ContentType: aws.String(fileType),
ACL: aws.String("public-read"),
Body: fileReader,
}
Функция загрузки
func upload(svc s3iface.S3API, input *s3manager.UploadInput) (*s3manager.UploadOutput, error) {
if input.Body == nil {
return nil, fmt.Errorf("the body provided in input is nil")
}
uploader := s3manager.NewUploaderWithClient(svc, func(uploader *s3manager.Uploader) {
uploader.PartSize = maxPartSize
uploader.LeavePartsOnError = false
})
uploadOutput, err := uploader.Upload(input)
if err != nil {
return nil, err
}
return uploadOutput, nil
}
Я не знаю, как отладить это. Я уверен, что это ошибка в AWS SDK. Я создал проблему здесь. Любое понимание этого полезно.