>백엔드 개발 >Golang >Go를 사용하여 대용량 파일을 AWS S3로 스트리밍하는 방법은 무엇입니까?

Go를 사용하여 대용량 파일을 AWS S3로 스트리밍하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-08 04:54:021045검색

How to Stream Large Files to AWS S3 with Go?

Go를 사용하여 AWS S3에 파일 업로드 스트리밍

과제:

대규모 멀티파트 스트리밍 /form-data 파일을 AWS S3에 직접 업로드하여 메모리와 디스크 공간을 최소화합니다.

해결책:

이를 달성하기 위해 github의 S3 업로더를 사용합니다. .com/aws/aws-sdk-go 라이브러리.

구현:

  1. 원하는 매개변수(청크 크기, 동시성, etc.).
  2. 업로드할 파일을 엽니다.
  3. 업로더의 업로드 기능을 사용하여 파일을 S3로 스트리밍합니다.
  4. 오류를 처리하거나 업로드 결과를 표시합니다.

예제 코드:

import (
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3/s3manager"
)

func main() {
    // Create an S3 uploader with custom options
    uploader := s3manager.NewUploader(session.Must(session.NewSession()), func(u *s3manager.Uploader) {
        u.PartSize = 5 * 1024 * 1024 // 5MB part size
        u.Concurrency = 2           // 2 concurrent uploads
    })

    // Open the file for upload
    f, err := os.Open("file.txt")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    // Stream file to S3
    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String("my-bucket"),
        Key:    aws.String("file.txt"),
        Body:   f,
    })

    if err != nil {
        panic(err)
    }

    // Display uploaded file information
    fmt.Printf("File uploaded to: %s", result.Location)
}

위 내용은 Go를 사용하여 대용량 파일을 AWS S3로 스트리밍하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.