

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 cluster d' de base de données à l'aide de l'authentification IAM et du AWS SDK pour Go
<a name="UsingWithRDS.IAMDBAuth.Connecting.Go"></a>

Vous pouvez vous connecter à une instance de base de données en procédant comme décrit ci-dessous. AWS SDK pour Go 

**Conditions préalables**  
Les conditions préalables à la connexion à votre cluster de base de données à l’aide de l’authentification IAM sont les suivantes :
+ [Activation et désactivation de l’authentification de base de données IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Création et utilisation d'une politique IAM pour l'accès à une base de données IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Exemples**  
Pour exécuter ces exemples de code, vous avez besoin du [AWS SDK pour Go](https://aws.amazon.com/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 cluster de base de données à laquelle vous souhaitez accéder.
**Note**  
Vous ne pouvez pas utiliser un enregistrement DNS Route 53 personnalisé à la place du point de terminaison du cluster de bases de données pour générer le jeton d’authentification.
+ `dbPort` – Le numéro du port utilisé lors de la connexion au cluster d' de base de données.
+ `region`— La AWS région dans laquelle le cluster d' 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 Amazon ECS, 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"`

**Topics**
+ [Connexion à l'aide de l'authentification IAM et de la V2 AWS SDK pour Go](#UsingWithRDS.IAMDBAuth.Connecting.GoV2)
+ [Connexion à l'aide de l'authentification IAM et de la AWS SDK pour Go V1.](#UsingWithRDS.IAMDBAuth.Connecting.GoV1)

## Connexion à l'aide de l'authentification IAM et de la V2 AWS SDK pour Go
<a name="UsingWithRDS.IAMDBAuth.Connecting.GoV2"></a>

Vous pouvez vous connecter à un cluster d' de base de données à l'aide de l'authentification IAM et de la AWS SDK pour Go V2.

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

Ce code se connecte à un cluster de base de données Aurora MySQL.

```
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 = "mysqlcluster.cluster-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 à un cluster de base de données Aurora PostgreSQL.

```
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 = "postgresmycluster.cluster-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 à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).

## Connexion à l'aide de l'authentification IAM et de la AWS SDK pour Go V1.
<a name="UsingWithRDS.IAMDBAuth.Connecting.GoV1"></a>

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

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

Ce code se connecte à un cluster de base de données Aurora 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 := "mysqlcluster.cluster-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 à un cluster de base de données Aurora 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 := "postgresmycluster.cluster-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 à un cluster de bases de données via un proxy, consultez [Connexion à une base de données à l'aide de l'authentification IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).