Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menghubungkan ke cluster DB Anda menggunakan IAM otentikasi dan AWS SDK untuk Go
Anda dapat terhubung ke cluster dengan seperti yang dijelaskan SQL berikut. AWS SDK untuk Go
Prasyarat
Berikut ini adalah prasyarat untuk menghubungkan ke cluster DB Anda menggunakan otentikasi: IAM
Contoh
Untuk menjalankan contoh kode ini, Anda memerlukan AWS SDK untuk Go
Ubah nilai variabel berikut sesuai kebutuhan:
-
dbName
– Basis data yang ingin Anda akses -
dbUser
– Akun basis data yang ingin Anda akses -
dbHost
– Titik akhir klaster DB yang ingin Anda aksescatatan
Anda tidak dapat menggunakan DNS catatan Route 53 kustom atau titik akhir kustom Aurora alih-alih titik akhir cluster DB untuk menghasilkan token otentikasi.
-
dbPort
– Nomor port yang digunakan untuk menghubungkan ke klaster DB Anda -
region
— AWS Wilayah tempat cluster DB berjalan
Selain itu, pastikan pustaka yang diimpor dalam kode sampel ada di sistem Anda.
penting
Contoh dalam bagian ini menggunakan kode berikut untuk menyediakan kredensial yang mengakses basis data dari lingkungan lokal:
creds := credentials.NewEnvCredentials()
Jika Anda mengakses database dari AWS layanan, seperti Amazon EC2 atau AmazonECS, Anda dapat mengganti kode dengan kode berikut:
sess := session.Must(session.NewSession())
creds := sess.Config.Credentials
Jika Anda membuat perubahan ini, pastikan Anda menambahkan impor berikut:
"github.com/aws/aws-sdk-go/aws/session"
Topik
Menghubungkan menggunakan IAM otentikasi dan V2 AWS SDK untuk Go
Anda dapat terhubung ke cluster DB menggunakan IAM otentikasi dan AWS SDK untuk Go V2.
Contoh kode berikut ini menunjukkan cara membuat token autentikasi, lalu menggunakannya untuk menghubungkan ke klaster DB.
Kode ini terhubung ke cluster Aurora My SQL 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 = "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) } }
Kode ini terhubung ke cluster Aurora SQL Postgre 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/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) } }
Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat Terhubung ke sebuah proksi menggunakan autentikasi IAM.
Menghubungkan menggunakan IAM otentikasi dan AWS SDK untuk Go V1.
Anda dapat terhubung ke cluster DB menggunakan IAM otentikasi dan V1 AWS SDK untuk Go
Contoh kode berikut ini menunjukkan cara membuat token autentikasi, lalu menggunakannya untuk menghubungkan ke klaster DB.
Kode ini terhubung ke cluster Aurora My SQL 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 := "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) } }
Kode ini terhubung ke cluster Aurora SQL Postgre DB.
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) } }
Jika Anda ingin terhubung ke klaster DB melalui proksi, lihat Terhubung ke sebuah proksi menggunakan autentikasi IAM.