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

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

Susan Sarandon
Susan Sarandon원래의
2024-11-06 12:28:02314검색

How to Stream File Upload to AWS S3 Using Go?

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

Go의 업로드 관리자를 사용하면 메모리와 파일 디스크 공간을 최소화하면서 대용량 파일을 AWS S3에 직접 업로드할 수 있습니다. 방법은 다음과 같습니다.

업로드 관리자 사용

  1. 필요한 라이브러리 가져오기:

    import (
        "github.com/aws/aws-sdk-go/aws/credentials"
        "github.com/aws/aws-sdk-go/aws"
        "github.com/aws/aws-sdk-go/aws/session"
        "github.com/aws/aws-sdk-go/service/s3/s3manager"
    )
  2. AWS 구성 생성:

    awsConfig := &aws.Config{
        Region: aws.String("us-west-2"),
    }

    선택적으로 자체 액세스 키를 제공할 수 있으며 필요한 경우 구성에 비밀 키를 입력하세요.

  3. 새 세션 및 업로더 초기화:

    sess := session.Must(session.NewSession(awsConfig))
    uploader := s3manager.NewUploader(sess)
  4. 업로더 매개변수 맞춤설정(선택 사항) :

    // Set the part size, concurrency, and max upload parts
    uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) {
        u.PartSize = 5 * 1024 * 1024 // 5MB is the minimum allowed part size
        u.Concurrency = 2            // Default is 5
    })
  5. 열기 업로드할 파일:

    f, err := os.Open(filename)
    if err != nil {
        fmt.Printf("failed to open file %q, %v\n", filename, err)
        return
    }
  6. 업로더를 사용하여 파일 업로드:

    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String(myBucket),
        Key:    aws.String(myKey),
        Body:   f,
    })
  7. 잠재적인 오류 처리:

    if err != nil {
        fmt.Printf("failed to upload file, %v\n", err)
        return
    }
  8. 업로드한 내용 인쇄 위치:

    fmt.Printf("file uploaded to, %s\n", result.Location)

이러한 방식으로 업로드 관리자를 활용하면 최소한의 리소스 소비로 대용량 파일을 AWS S3에 직접 스트리밍하고 업로드할 수 있습니다.

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

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