>  기사  >  백엔드 개발  >  Go에서 AWS S3 사용: 전체 가이드

Go에서 AWS S3 사용: 전체 가이드

王林
王林원래의
2023-06-17 08:21:592093검색

최근에는 클라우드 컴퓨팅 기술의 발전으로 많은 기업이 자체 데이터를 저장하고 관리하기 위해 클라우드 스토리지 서비스로 전환하기 시작했습니다. 그 중 AWS S3(Amazon Web Services Simple Storage Service)가 인기 있는 선택입니다. AWS의 핵심 서비스 중 하나인 S3는 고가용성, 고성능, 확장 가능하고 안전한 스토리지 서비스를 제공합니다. 이 기사에서는 Go에서 AWS S3를 사용하는 방법에 대해 자세히 살펴보겠습니다.

  1. Go용 AWS SDK 설치

AWS S3 사용을 시작하기 전에 프로젝트에 Go용 AWS SDK를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

go get -u github.com/aws/aws-sdk-go/aws
go get -u github.com/aws/aws-sdk-go/aws/session
go get -u github.com/aws/aws-sdk-go/service/s3

이 명령은 GitHub에서 필요한 종속성을 다운로드하여 프로젝트에 저장합니다.

  1. AWS SDK 구성

AWS S3를 사용하기 전에 S3에 액세스하려면 AWS SDK 자격 증명을 구성해야 합니다. AWS 콘솔에서 IAM 사용자를 생성하고 이에 대한 보안 자격 증명(액세스 키 및 비밀 액세스 키)을 생성할 수 있습니다. 그런 다음 이러한 자격 증명을 컴퓨터에 업로드합니다(일반적으로 ~/.aws/credentials 파일).

[default]
aws_access_key_id = Access_Key
aws_secret_access_key = Secret_Access_Key

보안상의 이유로 이러한 자격 증명을 환경 변수에 저장하거나 다른 수단을 사용하여 자격 증명이 유출되지 않도록 관리할 수 있습니다.

  1. 기본 작업

이제 AWS SDK 및 AWS S3 구성이 완료되었으므로 몇 가지 기본 작업을 수행해 보겠습니다.

(1) S3 인스턴스 생성:

sess, err := session.NewSession(&aws.Config{
    Region: aws.String(region)},
)
s3Svc := s3.New(sess)

(2) S3 버킷 목록:

result, err := s3Svc.ListBuckets(nil)
if err != nil {
    log.Fatalf("failed to list buckets, %v", err)
}

for _, bucket := range result.Buckets {
    fmt.Printf("%s : %s
", aws.StringValue(bucket.Name), bucket.CreationDate)
}

(3) 새 버킷 생성:

_, err := s3Svc.CreateBucket(&s3.CreateBucketInput{
    Bucket: aws.String(bucketName),
})
if err != nil {
    log.Fatalf("failed to create bucket %s, %v", bucketName, err)
}

(4) 파일 업로드:

file, err := os.Open(filename)
if err != nil {
    log.Fatalf("failed to open file %q, %v", filename, err)
}

defer func() {
    if err = file.Close(); err != nil {
        log.Fatalf("failed to close file %q, %v", filename, err)
    }
}()

_, err = s3Svc.PutObject(&s3.PutObjectInput{
    Body:   file,
    Bucket: aws.String(bucketName),
    Key:    aws.String(filepath.Base(filename)),
})
if err != nil {
    log.Fatalf("failed to upload file %q to bucket %q, %v", filename, bucketName, err)
}

(5) 파일 다운로드:

file, err := os.Create(filename)
if err != nil {
    log.Fatalf("failed to create file %q, %v", filename, err)
}

defer func() {
    if err = file.Close(); err != nil {
        log.Fatalf("failed to close file %q, %v", filename, err)
    }
}()

result, err := s3Svc.GetObject(&s3.GetObjectInput{
    Bucket: aws.String(bucketName),
    Key:    aws.String(objectName),
})
if err != nil {
    log.Fatalf("failed to download file %q from bucket %q, %v", objectName, bucketName, err)
}

if _, err = io.Copy(file, result.Body); err != nil {
    log.Fatalf("failed to download file %q from bucket %q, %v", objectName, bucketName, err)
}
  1. 결론

이 글에서는 AWS S3를 Go 언어로 사용하는 방법을 살펴보았습니다. AWS 클라우드 환경에 데이터를 저장하든, 애플리케이션에서 S3 서비스를 사용하든 S3에 연결하고 기본 작업을 수행하는 방법을 알아두면 유용합니다. Go용 AWS SDK의 기능을 사용하면 S3를 Go 애플리케이션의 백엔드 스토리지로 쉽게 사용할 수 있습니다. 이제 이 강력한 스토리지 서비스를 통해 더욱 발전된 작업을 탐색하고 데이터 관리를 시작할 수 있습니다!

위 내용은 Go에서 AWS S3 사용: 전체 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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