Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan driver klien Cassandra Go untuk mengakses Amazon Keyspaces secara terprogram
Bagian ini menunjukkan cara menyambung ke Amazon Keyspaces dengan menggunakan driver klien Go Cassandra. Untuk memberikan kredentif kepada pengguna dan aplikasi untuk akses terprogram ke sumber daya Amazon Keyspaces, Anda dapat melakukan salah satu dari hal berikut:
-
Buat kredentif khusus layanan yang terkait dengan pengguna AWS Identity and Access Management (IAM) tertentu.
-
Untuk keamanan yang ditingkatkan, sebaiknya buat kunci akses IAM untuk prinsipal IAM yang digunakan di semua layanan. AWS Plugin otentikasi SigV4 Amazon Keyspaces untuk driver klien Cassandra memungkinkan Anda mengotentikasi panggilan ke Amazon Keyspaces menggunakan kunci akses IAM alih-alih nama pengguna dan kata sandi. Untuk informasi selengkapnya, lihat Membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces.
Topik
Sebelum kamu memulai
Anda harus menyelesaikan tugas berikut sebelum Anda dapat memulai.
Amazon Keyspaces memerlukan penggunaan Transport Layer Security (TLS) untuk membantu mengamankan koneksi dengan klien. Untuk terhubung ke Amazon Keyspaces menggunakan TLS, Anda perlu mengunduh sertifikat digital Amazon dan mengonfigurasi driver Go untuk menggunakan TLS.
Unduh sertifikat digital berikut dan simpan file secara lokal atau di direktori home Anda.
AmazonRootCA1
AmazonRootCA2
AmazonRootCA3
AmazonRootCA4
Starfield Class 2 Root (opsional - untuk kompatibilitas mundur)
Untuk mengunduh sertifikat, Anda dapat menggunakan perintah berikut.
curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
catatan
Amazon Keyspaces sebelumnya menggunakan sertifikat TLS yang ditambatkan ke Starfield Class 2 CA. AWS memigrasikan semua Wilayah AWS ke sertifikat yang dikeluarkan di bawah Amazon Trust Services (Amazon Root CA 1—4). Selama transisi ini, konfigurasikan klien untuk mempercayai Amazon Root CA 1—4 dan root Starfield untuk memastikan kompatibilitas di semua Wilayah.
Gabungkan semua sertifikat yang diunduh ke dalam satu pem file dengan nama keyspaces-bundle.pem dalam contoh kami. Anda dapat melakukan ini dengan menjalankan perintah berikut. Catat jalur ke file, Anda perlu ini nanti.
cat AmazonRootCA1.pem \ AmazonRootCA2.pem \ AmazonRootCA3.pem \ AmazonRootCA4.pem \ sf-class2-root.crt \ >keyspaces-bundle.pem
Hubungkan ke Amazon Keyspaces menggunakan driver Gocql untuk Apache Cassandra dan kredenSIAL khusus layanan
-
Buat direktori untuk aplikasi Anda.
mkdir ./gocqlexample -
Arahkan ke direktori baru.
cd gocqlexample -
Buat file untuk aplikasi Anda.
touch cqlapp.go -
Unduh driver Go.
go get github.com/gocql/gocql -
Tambahkan kode contoh berikut ke file cqlapp.go.
package main import ( "fmt" "github.com/gocql/gocql" "log" ) func main() { // add the Amazon Keyspaces service endpoint cluster := gocql.NewCluster("cassandra.us-east-2.amazonaws.com") cluster.Port=9142 // add your service specific credentials cluster.Authenticator = gocql.PasswordAuthenticator{ Username: "ServiceUserName", Password: "ServicePassword"} // provide the path to thekeyspaces-bundle.pemcluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file/keyspaces-bundle.pem", EnableHostVerification: false, } // Override default Consistency to LocalQuorum cluster.Consistency = gocql.LocalQuorum cluster.DisableInitialHostLookup = false session, err := cluster.CreateSession() if err != nil { fmt.Println("err>", err) } defer session.Close() // run a sample query from the system keyspace var text string iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter() for iter.Scan(&text) { fmt.Println("keyspace_name:", text) } if err := iter.Close(); err != nil { log.Fatal(err) } session.Close() }Catatan penggunaan:
Ganti
"dengan jalur ke file sertifikat gabungan yang disimpan pada langkah pertama.path_to_file/keyspaces-bundle.pem"Pastikan
ServiceUserNamedanServicePasswordcocok dengan nama pengguna dan kata sandi yang Anda peroleh saat membuat kredenSIAL khusus layanan dengan mengikuti langkah-langkah untuk. Buat kredensil khusus layanan untuk akses terprogram ke Amazon KeyspacesUntuk daftar titik akhir yang tersedia, lihatTitik akhir layanan untuk Amazon Keyspaces.
Bangun program.
go build cqlapp.goJalankan program.
./cqlapp
Hubungkan ke Amazon Keyspaces menggunakan driver Go untuk Apache Cassandra dan plugin otentikasi SIGv4
Contoh kode berikut menunjukkan cara menggunakan plugin otentikasi SIGv4 untuk driver Go open-source untuk mengakses Amazon Keyspaces (untuk Apache Cassandra).
Jika Anda belum melakukannya, buat kredensional untuk prinsipal IAM Anda mengikuti langkah-langkah diMembuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces. Jika aplikasi berjalan di Lambda atau instans Amazon EC2, aplikasi Anda secara otomatis menggunakan kredentif instans. Untuk menjalankan tutorial ini secara lokal, Anda dapat menyimpan kredenSIAL sebagai variabel lingkungan lokal.
Tambahkan plugin otentikasi Go Sigv4 ke aplikasi Anda dari GitHub repositori
$ go mod init $ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin
Dalam contoh kode ini, titik akhir Amazon Keyspaces diwakili oleh Cluster kelas. Ini menggunakan properti autentikator cluster AwsAuthenticator untuk mendapatkan kredenSIAL.
package main import ( "fmt" "github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin/sigv4" "github.com/gocql/gocql" "log" ) func main() { // configuring the cluster options cluster := gocql.NewCluster("cassandra.us-west-2.amazonaws.com") cluster.Port=9142 // the authenticator uses the default credential chain to find AWS credentials cluster.Authenticator = sigv4.NewAwsAuthenticator() cluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file/keyspaces-bundle.pem", EnableHostVerification: false, } cluster.Consistency = gocql.LocalQuorum cluster.DisableInitialHostLookup = false session, err := cluster.CreateSession() if err != nil { fmt.Println("err>", err) return } defer session.Close() // doing the query var text string iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter() for iter.Scan(&text) { fmt.Println("keyspace_name:", text) } if err := iter.Close(); err != nil { log.Fatal(err) } }
Catatan penggunaan:
Ganti
"dengan jalur ke file sertifikat yang disimpan pada langkah pertama.path_to_file/keyspaces-bundle.pem"-
Agar contoh ini dapat dijalankan secara lokal, Anda perlu mendefinisikan variabel berikut sebagai variabel lingkungan:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION
Untuk menyimpan kunci akses di luar kode, lihat praktik terbaik diSimpan kunci akses untuk akses terprogram.
Untuk daftar titik akhir yang tersedia, lihatTitik akhir layanan untuk Amazon Keyspaces.