

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
<a name="using_go_driver"></a>

Bagian ini menunjukkan kepada Anda cara terhubung ke Amazon Keyspaces dengan menggunakan driver klien Go Cassandra. Untuk memberikan kredensyal kepada pengguna dan aplikasi untuk akses terprogram ke sumber daya Amazon Keyspaces, Anda dapat melakukan salah satu hal berikut:
+ Buat kredensyal khusus layanan yang terkait dengan pengguna AWS Identity and Access Management (IAM) tertentu.
+ Untuk keamanan yang ditingkatkan, kami sarankan untuk membuat kunci akses IAM untuk prinsipal IAM yang digunakan di semua layanan. AWS Plugin otentikasi Amazon Keyspaces SigV4 untuk driver klien Cassandra memungkinkan Anda untuk mengautentikasi 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](access.credentials.md).

**Topics**
+ [

## Sebelum kamu memulai
](#using_go_driver.BeforeYouBegin)
+ [

## Connect ke Amazon Keyspaces menggunakan driver Gocql untuk Apache Cassandra dan kredensyal khusus layanan
](#go_ssc)
+ [

## Connect ke Amazon Keyspaces menggunakan driver Go untuk Apache Cassandra dan plugin otentikasi SiGv4
](#go_SigV4)

## Sebelum kamu memulai
<a name="using_go_driver.BeforeYouBegin"></a>

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.

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. 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 CAs 1-4). Selama transisi ini, konfigurasikan klien untuk mempercayai Amazon Root CAs 1-4 dan root Starfield untuk memastikan kompatibilitas di semua Wilayah.

Gabungkan semua sertifikat yang diunduh menjadi 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
```

## Connect ke Amazon Keyspaces menggunakan driver Gocql untuk Apache Cassandra dan kredensyal khusus layanan
<a name="go_ssc"></a>

1. Buat direktori untuk aplikasi Anda.

   ```
   mkdir ./gocqlexample
   ```

1. Arahkan ke direktori baru.

   ```
   cd gocqlexample
   ```

1. Buat file untuk aplikasi Anda.

   ```
   touch cqlapp.go
   ```

1. Unduh driver Go. 

   ```
   go get github.com/gocql/gocql
   ```

1. 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 the keyspaces-bundle.pem
       cluster.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:

   1. Ganti `"path_to_file/keyspaces-bundle.pem"` dengan jalur ke file sertifikat gabungan yang disimpan di langkah pertama.

   1. Pastikan bahwa *ServiceUserName* dan *ServicePassword* mencocokkan nama pengguna dan kata sandi yang Anda peroleh saat Anda membuat kredensyal khusus layanan dengan mengikuti langkah-langkahnya. [Buat kredensil khusus layanan untuk akses terprogram ke Amazon Keyspaces](programmatic.credentials.ssc.md) 

   1. Untuk daftar titik akhir yang tersedia, lihat[Titik akhir layanan untuk Amazon Keyspaces](programmatic.endpoints.md).

1. Bangun programnya.

   ```
   go build cqlapp.go
   ```

1. Jalankan program.

   ```
   ./cqlapp
   ```

## Connect ke Amazon Keyspaces menggunakan driver Go untuk Apache Cassandra dan plugin otentikasi SiGv4
<a name="go_SigV4"></a>

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 kredensyal untuk prinsipal IAM Anda mengikuti langkah-langkah di. [Membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces](access.credentials.md) Jika aplikasi berjalan di Lambda atau instans Amazon EC2, aplikasi Anda secara otomatis menggunakan kredensyal instans. Untuk menjalankan tutorial ini secara lokal, Anda dapat menyimpan kredensialnya sebagai variabel lingkungan lokal.

[Tambahkan plugin otentikasi Go SiGv4 ke aplikasi Anda dari repositori. GitHub](https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin) Plugin ini mendukung versi 1.2.x dari driver Go open-source untuk Cassandra dan bergantung pada SDK for Go. AWS 

```
$ 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 kelas. `Cluster` Ini menggunakan properti `AwsAuthenticator` for authenticator cluster untuk mendapatkan kredensyal.

```
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:

1. Ganti `"path_to_file/keyspaces-bundle.pem"` dengan jalur ke file sertifikat yang disimpan di langkah pertama.

1. Untuk contoh ini berjalan secara lokal, Anda perlu mendefinisikan variabel berikut sebagai variabel lingkungan:
   + `AWS_ACCESS_KEY_ID`
   + `AWS_SECRET_ACCESS_KEY`
   + `AWS_DEFAULT_REGION`

1. Untuk menyimpan kunci akses di luar kode, lihat praktik terbaik di[Simpan kunci akses untuk akses terprogram](aws.credentials.manage.md).

1. Untuk daftar titik akhir yang tersedia, lihat[Titik akhir layanan untuk Amazon Keyspaces](programmatic.endpoints.md).