Cloud-Speicher ist ein integraler Bestandteil moderner Webanwendungen. Es ermöglicht uns das einfache Speichern und Zugreifen auf große Datenmengen, ohne uns Gedanken über Hardwarefehler oder Probleme mit der Speicherkapazität machen zu müssen. In diesem Artikel untersuchen wir, wie man Cloud-Speicher für Webanwendungen mithilfe von Golang implementiert, einschließlich der Verwendung von Amazon S3 und MinIO.
Amazon S3 ist ein Amazon-Cloud-Dienst, der Objektspeicher unterstützt. Hierbei handelt es sich um ein Speichermuster, bei dem Daten als einzelnes Objekt gespeichert und mit einer eindeutigen Kennung abgerufen werden. Amazon S3 ist skalierbar, zuverlässig und sicher und kann die meisten Speicheranforderungen im Zusammenhang mit Webanwendungen erfüllen.
AWS SDK for Go ist eine Go-Sprachschnittstelle für die Arbeit mit Amazon Web Services. Um Amazon S3-Speicher nutzen zu können, müssen Sie das AWS SDK for Go auf Ihrem Computer installieren. Gehen Sie dazu wie folgt vor:
go get -u github.com/aws/aws-sdk-go
Bevor Sie Amazon S3-Speicher verwenden können, müssen Sie einen Bucket erstellen. Sie können einen Bucket über die Amazon S3-Konsole, das AWS SDK for Go oder über die AWS Command Line Interface (CLI) erstellen. In diesem Beispiel erstellen wir einen Bucket mit dem AWS SDK for Go:
s3Client := s3.New(session.New(), &aws.Config{ Region:aws.String(region), }) s3Client.CreateBucket(&s3.CreateBucketInput{ Bucket:aws.String(bucketName), })
Die Variable region
speichert die AWS-Region Ihres Buckets und die Variable bucketName
gibt dies an Sie möchten den Namen des Buckets erstellen. 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
wird zum Hochladen von Objekten in einen Bucket verwendet. Der entsprechende Parameter Bucket
gibt den Namen des Buckets an, in den Key
hochgeladen werden soll Der Name des im Bucket gespeicherten Objekts, Body
ist die hochzuladende Datei. Schritt 4: Laden Sie die Datei aus dem Amazon S3-Bucket herunter Sie können die Datei im Bucket über AWS SDK for Go herunterladen: 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
wird verwendet, um das im Bucket gespeicherte Objekt abzurufen. Der entsprechende Parameter Bucket
gibt den Namen des abzurufenden Buckets und den Key</ an. code> ist Der Name des im Bucket gespeicherten Objekts und schließlich wird der Inhalt in die lokale Datei geschrieben. <p></p>MinIO verwenden<h3></h3>MinIO ist ein Open-Source-Objektspeicherdienst, der die Amazon S3-API unterstützt. Es handelt sich um einen skalierbaren, leistungsstarken und verteilten Cloud-Speicherdienst, der sich für die Arbeit mit großen Datensätzen für maschinelles Lernen, Analyse und Backup eignet. <p></p>Schritt 1: Installieren Sie das MinIO SDK für Go MinIO, Sie müssen eine Verbindung zum MinIO-Server herstellen: <p><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">Nach dem Login kopieren</div></div>Der <code>ACCESS_KEY
und der SECRET_KEY
hier sind die Anmeldeinformationen, die Sie auf dem MinIO-Server festgelegt haben. Schritt 3: Erstellen Sie einen MinIO-Bucket Das Erstellen eines MinIO-Buckets ähnelt dem Erstellen eines Amazon S3-Buckets: 🎜rrreee🎜In diesem Beispiel erstellen wir einen Bucket mit dem Namen „my-bucket“. 🎜🎜Schritt 4: Hochladen einer Datei in einen MinIO-Bucket 🎜🎜Das Hochladen einer Datei in einen MinIO-Bucket ähnelt dem Hochladen einer Datei in einen Amazon S3-Bucket: 🎜rrreee🎜In diesem Beispiel laden Sie die Datei „example.txt“ in einen hoch Datei mit dem Namen „my -bucket“ Bucket. 🎜🎜Schritt 5: Laden Sie eine Datei aus einem MinIO-Bucket herunter 🎜🎜Das Herunterladen einer Datei aus einem MinIO-Bucket ähnelt dem Herunterladen einer Datei aus einem Amazon S3-Bucket: 🎜rrreee🎜In diesem Beispiel kopieren Sie die Datei „example.txt“ aus dem Datei mit dem Namen „my-bucket“ auf den lokalen Computer. 🎜🎜Fazit🎜🎜 Die Implementierung von Cloud-Speicher für Webanwendungen mithilfe von Golang ist normalerweise eine relativ einfache Aufgabe. Sowohl AWS SDK for Go als auch MinIO SDK for Go bieten APIs für die Arbeit mit Objektspeicherdiensten, sodass Entwickler Dateien einfach hochladen, herunterladen und darauf zugreifen können. Unabhängig davon, welchen Speicherdienst Sie verwenden, sollten Sie sich mit seiner API vertraut machen und sie in Ihre Anwendung integrieren, um Ihre Daten einfach zu verwalten. 🎜Das obige ist der detaillierte Inhalt vonSo implementieren Sie Cloud-Speicher für Webanwendungen mit Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!