Golang을 사용하여 웹 애플리케이션용 클라우드 스토리지를 구현하는 방법

PHPz
풀어 주다: 2023-06-24 11:12:30
원래의
915명이 탐색했습니다.

클라우드 스토리지는 최신 웹 애플리케이션의 필수적인 부분입니다. 이를 통해 하드웨어 오류나 저장 용량 문제에 대한 걱정 없이 대량의 데이터를 쉽게 저장하고 액세스할 수 있습니다. 이 기사에서는 Amazon S3 및 MinIO를 포함하여 Golang을 사용하여 웹 애플리케이션용 클라우드 스토리지를 구현하는 방법을 살펴보겠습니다.

Amazon S3 사용

Amazon S3는 객체 스토리지를 지원하는 Amazon 클라우드 서비스입니다. 이는 데이터가 단일 개체로 저장되고 고유 식별자로 액세스되는 저장 패턴입니다. Amazon S3는 확장 가능하고 안정적이며 안전하며 웹 애플리케이션과 관련된 대부분의 스토리지 요구 사항을 처리할 수 있습니다.

1단계: Go용 AWS SDK 설치

Go용 AWS SDK는 Amazon Web Services 작업을 위한 Go 언어 인터페이스입니다. Amazon S3 스토리지를 사용하려면 컴퓨터에 Go용 AWS SDK를 설치해야 합니다. 방법은 다음과 같습니다.

go get -u github.com/aws/aws-sdk-go
로그인 후 복사

2단계: Amazon S3 버킷 생성

Amazon S3 스토리지를 사용하기 전에 버킷을 생성해야 합니다. Amazon S3 콘솔, Go용 AWS SDK 또는 AWS 명령줄 인터페이스(CLI)를 통해 버킷을 생성할 수 있습니다. 이 예에서는 Go용 AWS SDK를 사용하여 버킷을 생성합니다.

s3Client := s3.New(session.New(), &aws.Config{
    Region:aws.String(region),
})
s3Client.CreateBucket(&s3.CreateBucketInput{
    Bucket:aws.String(bucketName),
})
로그인 후 복사

region 변수는 버킷의 AWS 리전을 저장하고, bucketName 변수는 다음을 나타냅니다. 버킷의 이름을 만들고 싶습니다. region存储您的存储桶的AWS区域,变量bucketName表示您要创建的存储桶的名称。

步骤3:上传文件到Amazon S3存储桶

现在我们已经创建了存储桶,可以使用AWS SDK for Go将文件上传到存储桶中:

file, err := os.Open("example.txt")
if err != nil {
    panic(err)
}
defer file.Close()

s3Client.PutObject(&s3.PutObjectInput{
    Bucket:aws.String(bucketName),
    Key:aws.String("example.txt"),
    Body:file,
})
로그인 후 복사

在此例中,文件“example.txt”将从本地计算机上传到Amazon S3存储桶。函数PutObject用于将对象上传到存储桶,对应的参数中Bucket指定了要上传到的存储桶的名称,Key是Bucket中保存的对象名称,Body是要上传的文件。

步骤4:从Amazon S3存储桶下载文件

您可以通过AWS SDK for Go下载存储桶中的文件:

file, err := os.Create("example.txt")
if err != nil {
    panic(err)
}
defer file.Close()

s3Client.GetObject(&s3.GetObjectInput{
    Bucket:aws.String(bucketName),
    Key:aws.String("example.txt"),
}).WriteTo(file)
로그인 후 복사

在此例中,将文件“example.txt”从存储桶中下载到本地计算机。函数GetObject用于获取存储在Bucket中的对象,对应的参数中Bucket指定了要获取的存储桶的名称,Key是Bucket中保存的对象名称,最终将内容写入到本地文件中。

使用MinIO

MinIO是一个开源对象存储服务,支持Amazon S3 API。它是一个可扩展、高性能和分布式的云存储服务,适用于将大型数据集用于机器学习、分析和备份。

步骤1:安装MinIO SDK for Go

与Amazon S3存储一样,要使用MinIO存储,您需要在计算机上安装MinIO SDK for Go:

go get -u github.com/minio/minio-go/v7
로그인 후 복사

步骤2:连接到MinIO服务器

在使用MinIO之前,您需要连接到MinIO服务器:

minioClient, err := minio.New("play.min.io", "ACCESS_KEY", "SECRET_KEY", true)
if err != nil {
    panic(err)
}
로그인 후 복사

这里的ACCESS_KEYSECRET_KEY

3단계: Amazon S3 버킷에 파일 업로드

이제 버킷을 생성했으므로 Go용 AWS SDK를 사용하여 버킷에 파일을 업로드할 수 있습니다.

err = minioClient.MakeBucket(context.Background(), "my-bucket", minio.MakeBucketOptions{})
if err != nil {
    panic(err)
}
로그인 후 복사

이 예에서는 "example.txt" 파일이 로컬 머신에서 Amazon S3 버킷으로 업로드됩니다. PutObject 함수는 버킷에 객체를 업로드하는 데 사용됩니다. 해당 매개변수 Bucket은 업로드할 버킷의 이름을 지정합니다. Bucket에 저장된 객체의 이름인 Body가 업로드할 파일입니다.

4단계: Amazon S3 버킷에서 파일 다운로드

Go용 AWS SDK를 통해 버킷의 파일을 다운로드할 수 있습니다.

file, err := os.Open("example.txt")
if err != nil {
    panic(err)
}
defer file.Close()

_, err = minioClient.PutObject(context.Background(), "my-bucket", "example.txt", file, -1, minio.PutObjectOptions{})
if err != nil {
    panic(err)
}
로그인 후 복사

이 예에서는 버킷에서 로컬로 "example.txt" 파일을 다운로드합니다. 컴퓨터. GetObject 함수는 버킷에 저장된 객체를 얻는 데 사용됩니다. 해당 매개변수 Bucket은 가져올 버킷의 이름을 지정하고 Key</ code>는 Bucket에 저장된 객체의 이름이며, 최종적으로 해당 내용이 로컬 파일에 기록됩니다. <p></p>MinIO 사용<h3></h3>MinIO는 Amazon S3 API를 지원하는 오픈 소스 객체 스토리지 서비스입니다. 기계 학습, 분석 및 백업을 위한 대규모 데이터 세트 작업에 적합한 확장 가능한 고성능 분산 클라우드 스토리지 서비스입니다. <p></p>1단계: Go용 MinIO SDK 설치<p></p>Amazon S3 스토리지와 마찬가지로 MinIO 스토리지를 사용하려면 컴퓨터에 Go용 MinIO SDK를 설치해야 합니다. <h2><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>object, err := minioClient.GetObject(context.Background(), &quot;my-bucket&quot;, &quot;example.txt&quot;, minio.GetObjectOptions{}) if err != nil { panic(err) } defer object.Close() file, err := os.Create(&quot;example.txt&quot;) if err != nil { panic(err) } defer file.Close() _, err = io.Copy(file, object) if err != nil { panic(err) }</pre><div class="contentsignin">로그인 후 복사</div></div>2단계: MinIO 서버에 연결<p></p>사용하기 전에 MinIO, MinIO 서버에 연결해야 합니다. 🎜rrreee🎜 <code>ACCESS_KEYSECRET_KEY는 MinIO 서버에 설정한 자격 증명입니다. 🎜🎜3단계: MinIO 버킷 생성 🎜🎜MinIO 버킷 생성은 Amazon S3 버킷 생성과 유사합니다. 🎜rrreee🎜이 예에서는 "my-bucket"이라는 버킷을 생성합니다. 🎜🎜4단계: MinIO 버킷에 파일 업로드 🎜🎜MinIO 버킷에 파일을 업로드하는 것은 Amazon S3 버킷에 파일을 업로드하는 것과 유사합니다. 🎜rrreee🎜이 예에서는 "example.txt" 파일을 "my -bucket" 버킷이라는 파일입니다. 🎜🎜5단계: MinIO 버킷에서 파일 다운로드 🎜🎜MinIO 버킷에서 파일을 다운로드하는 것은 Amazon S3 버킷에서 파일을 다운로드하는 것과 유사합니다. 🎜rrreee🎜이 예에서는 다음에서 "example.txt" 파일을 복사합니다. "my-bucket"이라는 파일을 로컬 컴퓨터에 복사합니다. 🎜🎜결론🎜🎜 Golang을 사용하여 웹 애플리케이션용 클라우드 저장소를 구현하는 것은 일반적으로 비교적 간단한 작업입니다. Go용 AWS SDK와 Go용 MinIO SDK는 모두 객체 스토리지 서비스 작업을 위한 API를 제공하므로 개발자는 파일을 쉽게 업로드, 다운로드 및 액세스할 수 있습니다. 어떤 스토리지 서비스를 사용하든 해당 API를 숙지하고 이를 애플리케이션에 통합하여 데이터를 쉽게 관리해야 합니다. 🎜

위 내용은 Golang을 사용하여 웹 애플리케이션용 클라우드 스토리지를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!