Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connessione al di istanze DB utilizzando l'autenticazione IAM e AWS SDK per Go
È possibile connettersi a un cluster RDS per MariaDB, MySQL o PostgreSQL DB con Aurora MySQL o DB come descritto di seguito. AWS SDK per Go
Prerequisiti
Di seguito sono riportati i prerequisiti per la connessione al di istanzaDB utilizzando l'autenticazione IAM:
Esempi
Per eseguire questi esempi di codice, è necessario il file, trovato sul sito. AWS SDK per Go
Modifica i valori delle variabili seguenti in base alle esigenze.
-
dbName
– Database a cui accedere. -
dbUser
– L'account database cui vuoi accedere. -
dbHost
: l'endpoint dell'istanza database cui vuoi accedereNota
Non è possibile utilizzare un record DNS Route 53 personalizzato anziché l'endpoint dell'istanza database per generare il token di autenticazione.
-
dbPort
– Numero di porta usato per la connessione al cluster -
region
— La AWS regione in cui è in esecuzione il di istanze DB
Inoltre, assicurarsi che le librerie importate nel codice di esempio esistano nel sistema.
Importante
Negli esempi riportati in questa sezione viene utilizzato il codice seguente per fornire credenziali che accedono a un database da un ambiente locale:
creds := credentials.NewEnvCredentials()
Se accedi a un database da un AWS servizio, come Amazon EC2 o Amazon ECS, puoi sostituire il codice con il seguente codice:
sess := session.Must(session.NewSession())
creds := sess.Config.Credentials
Se si apporta questa modifica, assicurarsi di aggiungere la seguente importazione:
"github.com/aws/aws-sdk-go/aws/session"
Argomenti
Connessione tramite autenticazione IAM e V2 AWS SDK per Go
È possibile connettersi a un di istanze DB utilizzando l'autenticazione IAM e la AWS SDK per Go V2.
Il seguente esempio di codice mostra come generare un token di autenticazione e utilizzarlo per eseguire la connessione a un'istanza del database.
Questo codice si connette a un'istanza database MariaDB o 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 = "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) } }
Questo codice si connette a un'istanza database 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 = "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) } }
Se desideri connetterti a un'istanza database tramite un proxy, consulta Connessione a un proxy mediante autenticazione IAM.
Connessione tramite autenticazione IAM e AWS SDK per Go V1.
È possibile connettersi a un di istanze DB utilizzando l'autenticazione IAM e la AWS SDK per Go V1
Il seguente esempio di codice mostra come generare un token di autenticazione e utilizzarlo per eseguire la connessione a un'istanza del database.
Questo codice si connette a un'istanza database MariaDB o 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 := "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) } }
Questo codice si connette a un'istanza database 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 := "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) } }
Se desideri connetterti a un'istanza database tramite un proxy, consulta Connessione a un proxy mediante autenticazione IAM.