클라우드 스토리지는 최신 웹 애플리케이션의 필수적인 부분입니다. 이를 통해 하드웨어 오류나 저장 용량 문제에 대한 걱정 없이 대량의 데이터를 쉽게 저장하고 액세스할 수 있습니다. 이 기사에서는 Amazon S3 및 MinIO를 포함하여 Golang을 사용하여 웹 애플리케이션용 클라우드 스토리지를 구현하는 방법을 살펴보겠습니다.
Amazon S3는 객체 스토리지를 지원하는 Amazon 클라우드 서비스입니다. 이는 데이터가 단일 개체로 저장되고 고유 식별자로 액세스되는 저장 패턴입니다. Amazon S3는 확장 가능하고 안정적이며 안전하며 웹 애플리케이션과 관련된 대부분의 스토리지 요구 사항을 처리할 수 있습니다.
Go용 AWS SDK는 Amazon Web Services 작업을 위한 Go 언어 인터페이스입니다. Amazon S3 스토리지를 사용하려면 컴퓨터에 Go용 AWS SDK를 설치해야 합니다. 방법은 다음과 같습니다.
go get -u github.com/aws/aws-sdk-go
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
表示您要创建的存储桶的名称。
现在我们已经创建了存储桶,可以使用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
是要上传的文件。
您可以通过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是一个开源对象存储服务,支持Amazon S3 API。它是一个可扩展、高性能和分布式的云存储服务,适用于将大型数据集用于机器学习、分析和备份。
与Amazon S3存储一样,要使用MinIO存储,您需要在计算机上安装MinIO SDK for Go:
go get -u github.com/minio/minio-go/v7
在使用MinIO之前,您需要连接到MinIO服务器:
minioClient, err := minio.New("play.min.io", "ACCESS_KEY", "SECRET_KEY", true) if err != nil { panic(err) }
这里的ACCESS_KEY
和SECRET_KEY
err = minioClient.MakeBucket(context.Background(), "my-bucket", minio.MakeBucketOptions{}) if err != nil { panic(err) }
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) }
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(), "my-bucket", "example.txt", minio.GetObjectOptions{})
if err != nil {
panic(err)
}
defer object.Close()
file, err := os.Create("example.txt")
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_KEY
및 SECRET_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 중국어 웹사이트의 기타 관련 기사를 참조하세요!