Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Herstellen einer Verbindung zu Ihrem DB-Instance- mithilfe der IAM-Authentifizierung und AWS SDK for Go
Sie können sich mit dem AWS SDK for Go wie nachfolgend beschrieben mit einer RDS-für-MariaDB-, RDS-für-MySQL- oder RDS-für-PostgreSQL-DB-Instance verbinden.
Voraussetzungen
Die folgenden Voraussetzungen gelten für die Verbindung mit Ihrem DB-Instance- mithilfe der IAM-Authentifizierung:
Beispiele
Um diese Codebeispiele auszuführen, benötigen Sie das AWS SDK for Go
Ändern Sie die Werte der folgenden Parameter nach Bedarf.
-
dbName
– Die Datenbank, auf die Sie zugreifen möchten. -
dbUser
– Das Datenbankkonto, auf das Sie zugreifen möchten. -
dbHost
– Der Endpunkt des DB-Instance-, auf den Sie zugreifen möchten.Anmerkung
Sie können keinen benutzerdefinierten Route-53-DNS-Eintrag anstelle des DB-Instance-Endpunkts verwenden, um das Authentifizierungstoken zu generieren.
-
dbPort
– Die Nummer des Ports, der für die Verbindung mit dem DB-Instance- verwendet wird. -
region
– Die AWS-Region, in der die DB-Instance ausgeführt wird.
Stellen Sie außerdem sicher, dass die importierten Bibliotheken im Beispielcode auf Ihrem System vorhanden sind.
Wichtig
Die Beispiele in diesem Abschnitt verwenden den folgenden Code, um Anmeldeinformationen bereitzustellen, die von einer lokalen Umgebung aus auf eine Datenbank zugreifen:
creds := credentials.NewEnvCredentials()
Wenn Sie von einem AWS-Service wie Amazon EC2 oder Amazon ECS auf eine Datenbank zugreifen, können Sie den Code durch den folgenden Code ersetzen:
sess := session.Must(session.NewSession())
creds := sess.Config.Credentials
Wenn Sie diese Änderung vornehmen, stellen Sie sicher, dass Sie den folgenden Import hinzufügen:
"github.com/aws/aws-sdk-go/aws/session"
Themen
Herstellen einer Verbindung mit IAM-Authentifizierung und AWS SDK for Go V2
Sie können mithilfe der IAM-Authentifizierung und der AWS SDK for Go V2 eine Verbindung zu einem herstellen.
In den folgenden Beispielcodes wird gezeigt, wie Sie ein Authentifizierungstoken erzeugen und anschließend zum Verbinden mit einer DB-Instance verwenden.
Dieser Code stellt eine Verbindung mit einer MariaDB- oder MySQL-DB-Instance her.
package main import ( "context" "database/sql" "fmt" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/feature/rds/auth" _ "github.com/go-sql-driver/mysql" ) func main() { var dbName string = "
DatabaseName
" var dbUser string = "DatabaseUser
" var dbHost string = "mysqldb.123456789012.us-east-1.rds.amazonaws.com
" var dbPort int =3306
var dbEndpoint string = fmt.Sprintf("%s:%d", dbHost, dbPort) var region string = "us-east-1
" cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { panic("configuration error: " + err.Error()) } authenticationToken, err := auth.BuildAuthToken( context.TODO(), dbEndpoint, region, dbUser, cfg.Credentials) if err != nil { panic("failed to create authentication token: " + err.Error()) } dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?tls=true&allowCleartextPasswords=true", dbUser, authenticationToken, dbEndpoint, dbName, ) db, err := sql.Open("mysql", dsn) if err != nil { panic(err) } err = db.Ping() if err != nil { panic(err) } }
Dieser Code stellt eine Verbindung zu einer PostgreSQL-DB-Instance her.
package main import ( "context" "database/sql" "fmt" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/feature/rds/auth" _ "github.com/lib/pq" ) func main() { var dbName string = "
DatabaseName
" var dbUser string = "DatabaseUser
" var dbHost string = "postgresmydb.123456789012.us-east-1.rds.amazonaws.com
" var dbPort int =5432
var dbEndpoint string = fmt.Sprintf("%s:%d", dbHost, dbPort) var region string = "us-east-1
" cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { panic("configuration error: " + err.Error()) } authenticationToken, err := auth.BuildAuthToken( context.TODO(), dbEndpoint, region, dbUser, cfg.Credentials) if err != nil { panic("failed to create authentication token: " + err.Error()) } dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s", dbHost, dbPort, dbUser, authenticationToken, dbName, ) db, err := sql.Open("postgres", dsn) if err != nil { panic(err) } err = db.Ping() if err != nil { panic(err) } }
Informationen dazu, wie Sie über einen Proxy eine Verbindung mit einer DB-Instance herstellen, finden Sie unter Herstellen einer Verbindung mit einem Proxy mithilfe der IAM-Authentifizierung.
Herstellen einer Verbindung mit IAM-Authentifizierung und AWS SDK for Go V1.
Sie können mithilfe der IAM-Authentifizierung und der AWS SDK for Go V1 eine Verbindung zu einem herstellen
In den folgenden Beispielcodes wird gezeigt, wie Sie ein Authentifizierungstoken erzeugen und anschließend zum Verbinden mit einer DB-Instance verwenden.
Dieser Code stellt eine Verbindung mit einer MariaDB- oder MySQL-DB-Instance her.
package main import ( "database/sql" "fmt" "log" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/service/rds/rdsutils" _ "github.com/go-sql-driver/mysql" ) func main() { dbName := "
app
" dbUser := "jane_doe
" dbHost := "mysqldb.123456789012.us-east-1.rds.amazonaws.com
" dbPort :=3306
dbEndpoint := fmt.Sprintf("%s:%d", dbHost, dbPort) region := "us-east-1
" creds := credentials.NewEnvCredentials() authToken, err := rdsutils.BuildAuthToken(dbEndpoint, region, dbUser, creds) if err != nil { panic(err) } dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?tls=true&allowCleartextPasswords=true", dbUser, authToken, dbEndpoint, dbName, ) db, err := sql.Open("mysql", dsn) if err != nil { panic(err) } err = db.Ping() if err != nil { panic(err) } }
Dieser Code stellt eine Verbindung zu einer PostgreSQL-DB-Instance her.
package main import ( "database/sql" "fmt" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/service/rds/rdsutils" _ "github.com/lib/pq" ) func main() { dbName := "
app
" dbUser := "jane_doe
" dbHost := "postgresmydb.123456789012.us-east-1.rds.amazonaws.com
" dbPort :=5432
dbEndpoint := fmt.Sprintf("%s:%d", dbHost, dbPort) region := "us-east-1
" creds := credentials.NewEnvCredentials() authToken, err := rdsutils.BuildAuthToken(dbEndpoint, region, dbUser, creds) if err != nil { panic(err) } dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s", dbHost, dbPort, dbUser, authToken, dbName, ) db, err := sql.Open("postgres", dsn) if err != nil { panic(err) } err = db.Ping() if err != nil { panic(err) } }
Informationen dazu, wie Sie über einen Proxy eine Verbindung mit einer DB-Instance herstellen, finden Sie unter Herstellen einer Verbindung mit einem Proxy mithilfe der IAM-Authentifizierung.