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

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Connexion à votre d'instances de base de données à l'aide de IAM l'authentification et du AWS SDK for Go

Vous pouvez vous connecter à une en suivant les instructions ci-dessous.

Prérequis

Les conditions requises pour se connecter à votre d'instances de base de données à l'aide de l'IAMauthentification sont les suivantes :

Exemples

Pour exécuter ces exemples de code, vous avez besoin du AWS SDK for Go, disponible sur le AWS site.

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 de l'instance de base de données à laquelle vous souhaitez accéder.

    Note

    Vous ne pouvez pas utiliser un DNS enregistrement Route 53 personnalisé au lieu du point de terminaison du d'instances de base de données pour générer le jeton d'authentification.

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

  • region— La AWS région dans laquelle le d'instances de base de données est exécuté

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

Important

Les exemples de cette section utilisent le code suivant pour fournir des informations d'identification qui accèdent à une base de données à partir d'un environnement local :

creds := credentials.NewEnvCredentials()

Si vous accédez à une base de données depuis un AWS service tel qu'Amazon EC2 ou AmazonECS, vous pouvez remplacer le code par le code suivant :

sess := session.Must(session.NewSession())

creds := sess.Config.Credentials

Si vous effectuez cette modification, assurez-vous d'ajouter l'importation suivante :

"github.com/aws/aws-sdk-go/aws/session"

Connexion à l'aide de IAM l'authentification et de la AWS SDK for Go V2

Vous pouvez vous connecter à un d'instances de base de données à l'aide de l'IAMauthentification et de la AWS SDK for Go V2.

Les exemples de code suivants montre comment générer un jeton d'authentification, puis comment l'utiliser pour se connecter à une instance de base de données.

Ce code se connecte à une instance MariaDB ou SQL My DB.

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) } }

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

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) } }

Si vous souhaitez vous connecter à une instance de bases de données via un proxy, consultez Connexion à un proxy à l'aide de l'authentification IAM.

Connexion à l'aide de IAM l'authentification et de la AWS SDK for Go V1.

Vous pouvez vous connecter à un d'instances de base de données à l'aide de IAM l'authentification et du AWS SDK for Go V1

Les exemples de code suivants montre comment générer un jeton d'authentification, puis comment l'utiliser pour se connecter à une instance de base de données.

Ce code se connecte à une instance MariaDB ou SQL My DB.

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) } }

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

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) } }

Si vous souhaitez vous connecter à une instance de bases de données via un proxy, consultez Connexion à un proxy à l'aide de l'authentification IAM.