S3에서 파일을 다운로드하고 해당 파일을 S3의 다른 버킷에 업로드하려고합니다. Copy API는 사용하지 말라고 했으므로 여기서 작동하지 않습니다. S3에서 개체를 얻기io.ReadClasser에서 io.ReadSeeker로 어떻게 이동합니까?
는페이로드는 io.ReadSeeker
의 Body
소요 io.ReadCloser
의 해당 파일을 업로드 할 response.Body
있습니다.
내가 알아낼 수있는 유일한 방법은 response.Body
을 파일에 저장 한 다음 해당 파일을 io.ReadSeeker
으로 전달하는 것입니다. 이렇게하려면 전체 파일을 디스크에 먼저 쓰고 디스크에서 전체 파일을 읽어야합니다.이 파일은 꽤 잘못 들립니다.
내가 뭘하고 싶은 것입니다 :
resp, _ := conn.GetObject(&s3.GetObjectInput{Key: "bla"})
conn.PutObject(&s3.PutObjectInput{Body: resp.Body}) // resp.Body is an io.ReadCloser and the field type expects an io.ReadSeeker
질문은, 어떻게 가능한 가장 효율적인 방법에 io.ReadSeeker
에 io.ReadCloser
에서 가야합니까?
사용중인 특정 API 및 기능은 무엇입니까? Go S3 SDK에서 언급 한 기능을 찾지 못하는 것 같습니다. https://docs.aws.amazon.com/sdk-for-go/api/service/s3.html – BadZen
@BadZen 내가 사용할 전화를 추가했습니다. – Jeff
복사 기능을 사용할 수 없다는 것은 이상한 일입니다. 어쩌면 그걸 다시 밀어 넣을 수 있습니다. 파일을 디스크에 쓰는 것 외의 유일한 옵션은'io.ReadSeeker' 탐색 요청에서 GetObject()를 다시 실행하고 범위 필드를 탐색 위치에서 시작하도록 설정합니다. 그것은 모든면에서 이미 디스크에 쓰기 오류보다 나쁜 해결책입니다. – BadZen