Blog

Go AWS SDK - Integration mit der AWS-Cloud

Dennis Vriend

Aktualisiert Oktober 21, 2025
3 Minuten

In früheren Blogs über Go haben wir uns mit der Programmiersprache Go befasst, mit der Ausführung von Go in AWS Lambda und mit der Crosskompilierung von Go-Code, damit dieser auf Linux-, Mac- und Windows-Plattformen läuft. In diesem Blog werfen wir einen genaueren Blick auf das AWS SDK für Go, mit dem sich Go-Anwendungen ganz einfach in die gesamte Palette der AWS-Services wie Amazon S3, Amazon DynamoDB, Amazon SQS und mehr integrieren lassen.

Installieren des SDK

Wir müssen das AWS SDK für Go zum Go-Arbeitsbereich hinzufügen. Zur Installation des AWS SDK für Go geben Sie ein:

$ go get -u github.com/aws/aws-sdk-go/...

Konfigurieren des SDK

Das SDK bietet Service-Clients, die mit AWS-Services interagieren. Die Service-Clients sammeln AWS-Einstellungen aus der Umgebung, validieren Anforderungsnachrichten und signieren und sichern die Interaktion mit AWS. Die Service-Clients können konfiguriert werden, indem Sie den Log-Level, die Anzahl der Wiederholungsversuche, die Region, die Anmeldedaten oder das zu verwendende Profil festlegen. Die meisten dieser Einstellungen sind mit Hilfe von Umgebungsvariablen konfigurierbar.

Hallo AWS SDK

Das "Hallo Welt" des AWS SDK ist die Ausführung von GetCallerIdentity, das Details über die IAM-Identität zurückgibt, die für den Aufruf von AWS verwendet wurde. Um Services zu erstellen, müssen wir Folgendes tun:

  • eine Sitzung erstellen
  • einen Dienst erstellen
  • einen Antrag konstruieren
  • den Dienstvorgang mit der Anfrage aufrufen
  • die Antwort bearbeiten
package main

import (
    "fmt"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/sts"
)

func main() {
    // create a session
   sess, _ := session.NewSession()
    // create a service client
   stsClient := sts.New(sess)
    // create a request
   request := sts.GetCallerIdentityInput{}
    // call the service operation
   id, _ := stsClient.GetCallerIdentity(&request)
    // handle the response
   fmt.Printf("AccountId: %s, Arn: %s, UserId: %s", *id.Account, *id.Arn, *id.UserId)
}

Um das Beispiel auszuführen, geben Sie ein:

$ go run helloworld.go

$ AWS_PROFILE=default go run helloworld.go

$ AWS_PROFILE=binx AWS_REGION=us-east-1 go run helloworld.go

Auflisten von S3 Buckets

Das folgende Beispiel zeigt, wie Sie alle Buckets in einem Konto auflisten.

package main

import (
    "fmt"
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
)

func main() {
    sess, _ := session.NewSession()
    svc := s3.New(sess, aws.NewConfig().WithRegion("eu-west-1"))
    request := s3.ListBucketsInput{}
    resp, _ := svc.ListBuckets(&request)
    for _, bucket := range resp.Buckets {
        fmt.Printf("BucketName: %s, CreationDate: %sn", *bucket.Name, *bucket.CreationDate)
    }
}

Fazit

AWS hat gute Arbeit bei der Erstellung und Dokumentation eines SDK geleistet, das sehr Go-idiomatisch ist. Der grundlegende Arbeitsablauf bei der Arbeit mit AWS-Services besteht darin, zunächst eine Sitzung zu erstellen und dann einen AWS-Service-Client zu erstellen und/oder zu konfigurieren, mit dem Sie interagieren möchten. Dann erstellen Sie eine Anfrage, rufen den Service auf und verarbeiten die Antwort. Neben der Interaktion mit AWS-Services bietet das SDK auch SDK-Dienstprogramme, die die Interaktion mit Services erleichtern. Zum Beispiel einen Amazon DynamoDB Attribute Converter zum Konvertieren von Amazon DynamoDB Attributwerten in und aus konkreten Go-Typen oder Amazon S3 Transfer Manager zum Übertragen und Wiederaufnehmen von Uploads auf S3.

Verfasst von

Dennis Vriend

Contact

Let’s discuss how we can support your journey.