S3


aws/aws-sdk-go-v2를 사용하는 S3 스토리지 드라이버입니다.

참고: 자격 증명의 config 필드가 제공되지 않으면 환경 변수, ~/.aws/credentials 또는 EC2 인스턴스 역할에서 자격 증명을 사용합니다. 자격 증명의 config 필드가 제공되면 config에서 자격 증명을 사용합니다. 자세한 내용은 자격 증명 지정을 참조하세요.

참고: Go 1.19 이상이 필요합니다.

Table of Contents

  • Signatures

  • Installation

  • Examples

  • Config

  • Default Config

Signatures

func New(config ...Config) Storage
func (s *Storage) Get(key string) ([]byte, error)  
func (s *Storage) Set(key string, val []byte, exp time.Duration) error
func (s *Storage) Delete(key string) error
func (s *Storage) Reset() error
func (s *Storage) Close() error
func (s *Storage) Conn() *s3.Client

// 유용한 추가 메서드
func (s *Storage) CreateBucket(bucket string) error
func (s *Storage) DeleteBucket(bucket string) error  
func (s *Storage) SetWithChecksum(key string, val []byte, checksum map[types.ChecksumAlgorithm][]byte) error

Installation

S3는 모듈을 지원하는 최신 Go 버전 2개에서 테스트되었습니다. 아직 모듈을 초기화하지 않았다면 다음과 같이 먼저 초기화해야 합니다:

go mod init github.com/<user>/<repo>

그런 다음 s3 구현을 설치합니다:

go get github.com/gofiber/storage/s3/v2

Examples

스토리지 패키지를 가져옵니다.

import "github.com/gofiber/storage/s3/v2"

다음과 같은 방법으로 스토리지를 생성할 수 있습니다:

// 기본 config 초기화
store := s3.New()

// 사용자 정의 config 초기화
store := s3.New(s3.Config{
	Bucket:   "my-bucket-url",
	Endpoint: "my-endpoint", 
	Region:   "my-region",
	Reset:    false,
})

Set()을 사용하여 객체를 생성합니다:

err := store.Set("my-key", []byte("my-value"))

또는 SetWithChecksum()을 호출하여 서버 측에서 데이터 무결성을 확인하도록 S3 서버에 요청하는 체크섬과 함께 객체를 생성할 수 있습니다:

현재 4개의 알고리즘이 지원됩니다:

  • types.ChecksumAlgorithmCrc32 (CRC32)

  • types.ChecksumAlgorithmCrc32c (CRC32C)

  • types.ChecksumAlgorithmSha1 (SHA1)

  • types.ChecksumAlgorithmSha256 (SHA256)

자세한 내용은 PutObjectInput을 참조하세요.

key := "my-key"
val := []byte("my-value")

hash := sha256.New()
hash.Write(val)
sha256sum := hash.Sum(nil)

// import "github.com/aws/aws-sdk-go-v2/service/s3/types"  
checksum  = map[types.ChecksumAlgorithm][]byte{
    types.ChecksumAlgorithmSha256: sha256sum,
}

err := store.SetWithChecksum(key, val, checksum)

Config

// Config는 스토리지에 대한 config를 정의합니다.
type Config struct {
	// S3 버킷 이름 
	Bucket string

	// AWS 엔드포인트
	Endpoint string

	// AWS 리전
	Region string

	// 요청 시간 초과
	//  
	// 선택 사항. 기본값은 0(시간 초과 없음)
	RequestTimeout time.Duration

	// Reset은 기존 Bucket에 있는 기존 키를 모두 지웁니다.
	// 
	// 선택 사항. 기본값은 false
	Reset bool

    // Credentials는 AWS 액세스 키와 AWS 비밀 액세스 키를 재정의합니다. 권장하지 않습니다.  
	//
	// 선택 사항. 기본값은 Credentials{}
	Credentials Credentials

	// 재시도 가능한 실패가 발생한 요청을 시도해야 하는 최대 횟수.
	//  
	// 선택 사항. 기본값은 3
	MaxAttempts int

}

type Credentials struct {
	AccessKey       string 
	SecretAccessKey string
}

Default Config

기본 구성에는 필수이며 덮어써야 하는 Bucket, Region 및 Endpoint가 없습니다:

// ConfigDefault는 기본 config입니다.
var ConfigDefault = Config{
	Bucket:         "",
	Region:         "",  
	Endpoint:       "",
	Credentials:    Credentials{},
	MaxAttempts:    3,
	RequestTimeout: 0,
	Reset:          false,
}

Last updated