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
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
Unsere Ideen
Weitere Blogs
Contact




