Mit der Entwicklung der Cloud-Computing-Technologie haben viele Unternehmen in den letzten Jahren begonnen, auf Cloud-Speicherdienste zurückzugreifen, um ihre eigenen Daten zu speichern und zu verwalten. Unter ihnen ist AWS S3 (Amazon Web Services Simple Storage Service) eine beliebte Wahl. Als einer der Kerndienste von AWS bietet S3 hochverfügbare, leistungsstarke, skalierbare und sichere Speicherdienste. In diesem Artikel werden wir uns eingehend mit der Verwendung von AWS S3 in Go befassen.
Bevor Sie AWS S3 verwenden, müssen Sie AWS SDK for Go in Ihrem Projekt installieren. Es kann mit den folgenden Befehlen installiert werden:
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
Diese Befehle laden die erforderlichen Abhängigkeiten von GitHub herunter und speichern sie in Ihrem Projekt.
Bevor Sie AWS S3 verwenden, müssen Sie AWS SDK-Anmeldeinformationen für den Zugriff auf S3 konfigurieren. Sie können in der AWS-Konsole einen IAM-Benutzer erstellen und dafür Sicherheitsanmeldeinformationen (Zugriffsschlüssel und geheimer Zugriffsschlüssel) generieren. Laden Sie diese Anmeldeinformationen dann auf Ihren Computer hoch (normalerweise in einer ~/.aws/credentials
-Datei).
[default] aws_access_key_id = Access_Key aws_secret_access_key = Secret_Access_Key
Beachten Sie, dass Sie diese Anmeldeinformationen aus Sicherheitsgründen in Ihren Umgebungsvariablen speichern oder diese Anmeldeinformationen auf andere Weise verwalten können, um zu verhindern, dass sie preisgegeben werden.
Da wir nun die Konfiguration von AWS SDK und AWS S3 abgeschlossen haben, beginnen wir mit der Durchführung einiger grundlegender Vorgänge.
(1) S3-Instanz erstellen:
sess, err := session.NewSession(&aws.Config{ Region: aws.String(region)}, ) s3Svc := s3.New(sess)
(2) S3-Bucket auflisten:
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) Neuen Bucket erstellen:
_, err := s3Svc.CreateBucket(&s3.CreateBucketInput{ Bucket: aws.String(bucketName), }) if err != nil { log.Fatalf("failed to create bucket %s, %v", bucketName, err) }
(4) Datei hochladen:
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) Datei herunterladen:
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) }
In diesem Artikel haben wir gesehen, wie man AWS S3 in der Go-Sprache verwendet. Unabhängig davon, ob Sie Daten in einer AWS-Cloud-Umgebung speichern oder den S3-Dienst in Ihrer Anwendung verwenden, ist es hilfreich zu wissen, wie Sie eine Verbindung zu S3 herstellen und grundlegende Vorgänge ausführen. Durch die Nutzung der Funktionen des AWS SDK for Go können Sie S3 problemlos als Backend-Speicher für Ihre Go-Anwendungen verwenden. Jetzt können Sie mit diesem leistungsstarken Speicherdienst erweiterte Vorgänge erkunden und Ihre Daten verwalten!
Das obige ist der detaillierte Inhalt vonVerwenden von AWS S3 in Go: Eine vollständige Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!