Connexion à votre d’instances de base de données à l'aide de l'authentification IAM et de Kit SDK AWS pour Go - Amazon Relational Database Service

Connexion à votre d’instances de base de données à l'aide de l'authentification IAM et de Kit SDK AWS pour Go

À partir de la ligne de commande, vous pouvez vous connecter à une instance de base de données Amazon RDS MySQL ou PostgreSQL avec Kit SDK AWS pour Go comme décrit ci-après.

Les conditions préalables à la connexion à votre instance de base de données à l'aide de l'authentification IAM sont les suivantes :

Pour exécuter cet exemple de code, vous avez besoin de Kit SDK AWS pour Go, disponible sur le site AWS.

Modifiez la valeur des variables suivantes selon les besoins :

  • dbName – La base de données à laquelle vous souhaitez accéder.

  • dbUser – Le compte de base de données auquel vous souhaitez accéder.

  • dbHost – Le point de terminaison du d’instances de base de données auquel vous souhaitez accéder.

  • dbPort – Le numéro du port utilisé lors de la connexion au d’instances de base de données.

  • region – La région AWS où le d'instances de base de données s'exécute.

En outre, assurez-vous que les bibliothèques importées dans l'exemple de code existent sur votre système.

Création d'un jeton d'authentification IAM

Vous pouvez utiliser le package rdsutils pour générer des jetons utilisés pour vous connecter à und'instances de base de données. Appelez la fonction BuildAuthToken pour générer un jeton. Fournissez le point de terminaison d'instance de base de données, la région AWS, le nom d'utilisateur et les informations d'identification IAM pour générer le jeton pour la connexion à un d'instances de bases de données avec les informations d'identification IAM.

L'exemple suivant montre comment utiliser BuildAuthToken pour créer un jeton d'authentification pour la connexion à une instance de base de données MySQL.

package main import ( "database/sql" "fmt" "log" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/service/rds/rdsutils" ) func main() { dbName := "app" dbUser := "jane_doe" dbHost := "mydb.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 { log.Fatalf("failed to build auth token %v", err) } }

L'exemple suivant montre comment utiliser BuildAuthToken pour créer un jeton d'authentification pour la connexion à une instance de base de données PostgreSQL.

package main import ( "database/sql" "fmt" "log" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/service/rds/rdsutils" ) func main() { dbName := "app" dbUser := "jane_doe" dbHost := "mydb.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 { log.Fatalf("failed to build auth token %v", err) } }

Connexion à votre instance de base de données

L'exemple de code suivant montre comment créer un jeton d'authentification, puis l'utiliser pour se connecter à un d’instances de base de données.

Ce code se connecte à une instance de base de données MySQL.

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 := "mydb.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) } }

Ce code se connecte à une instance de base de données PostgreSQL.

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 := "mydb.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) } }