

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan driver klien Cassandra untuk mengakses Amazon Keyspaces secara terprogram
<a name="programmatic.drivers"></a>

Anda dapat menggunakan banyak driver Cassandra sumber terbuka pihak ketiga untuk terhubung ke Amazon Keyspaces. Amazon Keyspaces kompatibel dengan driver Cassandra yang mendukung Apache Cassandra versi 3.11.2. Ini adalah driver dan versi terbaru yang telah kami uji dan rekomendasikan untuk digunakan dengan Amazon Keyspaces: 
+ `Java v3.3`
+ `Java v4.17`
+ `Python Cassandra-driver 3.29.1`
+ `Node.js cassandra driver -v 4.7.2`
+ `GO using GOCQL v1.6`
+ `.NET CassandraCSharpDriver -v 3.20.1`

Untuk informasi lebih lanjut tentang driver Cassandra, lihat driver [Apache Cassandra](http://cassandra.apache.org/doc/latest/getting_started/drivers.html) Client. 

**catatan**  
Untuk membantu Anda memulai, Anda dapat melihat dan mengunduh contoh end-to-end kode yang membuat koneksi ke Amazon Keyspaces dengan driver populer. Lihat [contoh Amazon Keyspaces di](https://github.com/aws-samples/amazon-keyspaces-examples). GitHub

Tutorial dalam Bab ini mencakup kueri CQL sederhana untuk mengonfirmasi bahwa koneksi ke Amazon Keyspaces telah berhasil dibuat. Untuk mempelajari cara bekerja dengan ruang kunci dan tabel setelah Anda terhubung ke titik akhir Amazon Keyspaces, lihat. [Referensi bahasa CQL untuk Amazon Keyspaces (untuk Apache Cassandra)](cql.md) Untuk step-by-step tutorial yang menunjukkan cara menyambung ke Amazon Keyspaces dari titik akhir Amazon VPC, lihat. [Tutorial: Connect ke Amazon Keyspaces menggunakan antarmuka VPC endpoint](vpc-endpoints-tutorial.md) 

**Topics**
+ [Menggunakan driver klien Cassandra Java untuk mengakses Amazon Keyspaces secara terprogram](using_java_driver.md)
+ [Menggunakan driver klien Cassandra Python untuk mengakses Amazon Keyspaces secara terprogram](using_python_driver.md)
+ [Menggunakan driver klien Cassandra Node.js untuk mengakses Amazon Keyspaces secara terprogram](using_nodejs_driver.md)
+ [Menggunakan driver klien Cassandra .NET Core untuk mengakses Amazon Keyspaces secara terprogram](using_dotnetcore_driver.md)
+ [Menggunakan driver klien Cassandra Go untuk mengakses Amazon Keyspaces secara terprogram](using_go_driver.md)
+ [Menggunakan driver klien Cassandra Perl untuk mengakses Amazon Keyspaces secara terprogram](using_perl_driver.md)

# Menggunakan driver klien Cassandra Java untuk mengakses Amazon Keyspaces secara terprogram
<a name="using_java_driver"></a>

Bagian ini menunjukkan kepada Anda cara terhubung ke Amazon Keyspaces dengan menggunakan driver klien Java.

**catatan**  
Java 17 dan DataStax Java Driver 4.17 saat ini hanya dalam dukungan Beta. Untuk informasi selengkapnya, lihat [https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/](https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/).

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 identitas 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).

**catatan**  
Untuk contoh cara menggunakan Amazon Keyspaces dengan Spring Boot, lihat. [https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring](https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring)

**Topics**
+ [Sebelum Anda mulai](#using_java_driver.BeforeYouBegin)
+ [Step-by-step tutorial untuk terhubung ke Amazon Keyspaces menggunakan driver DataStax Java untuk Apache Cassandra menggunakan kredensyal khusus layanan](#java_tutorial)
+ [Step-by-step tutorial untuk terhubung ke Amazon Keyspaces menggunakan driver DataStax Java 4.x untuk Apache Cassandra dan plugin otentikasi SiGv4](#java_tutorial.SigV4)
+ [Connect ke Amazon Keyspaces menggunakan driver DataStax Java 3.x untuk Apache Cassandra dan plugin otentikasi SiGv4](#java3x_tutorial.SigV4)

## Sebelum Anda mulai
<a name="using_java_driver.BeforeYouBegin"></a>

Untuk terhubung ke Amazon Keyspaces, Anda harus menyelesaikan tugas-tugas berikut sebelum dapat memulai.

1. Amazon Keyspaces memerlukan penggunaan Transport Layer Security (TLS) untuk membantu mengamankan koneksi dengan klien. 

   1.  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.

   1. Ubah sertifikat digital menjadi file TrustStore dan tambahkan ke keystore.

      ```
      openssl x509 -outform der -in AmazonRootCA1.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-1 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA2.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-2 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA3.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-3 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA4.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-4 -keystore cassandra_truststore.jks -file temp_file.der
                   
      openssl x509 -outform der -in sf-class2-root.crt -out temp_file.der
      keytool -import -alias cassandra -keystore cassandra_truststore.jks -file temp_file.der
      ```

      Pada langkah terakhir, Anda perlu membuat kata sandi untuk keystore dan mempercayai setiap sertifikat. Perintah interaktif terlihat seperti ini.

      ```
      Enter keystore password:  
      Re-enter new password: 
      Owner: CN=Amazon Root CA 1, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 1, O=Amazon, C=US
      Serial number: 66c9fcf99bf8c0a39e2f0788a43e696365bca
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sun Jan 17 00:00:00 UTC 2038
      Certificate fingerprints:
           SHA1: 8D:A7:F9:65:EC:5E:FC:37:91:0F:1C:6E:59:FD:C1:CC:6A:6E:DE:16
           SHA256: 8E:CD:E6:88:4F:3D:87:B1:12:5B:A3:1A:C3:FC:B1:3D:70:16:DE:7F:57:CC:90:4F:E1:CB:97:C6:AE:98:19:6E
      Signature algorithm name: SHA256withRSA
      Subject Public Key Algorithm: 2048-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: 84 18 CC 85 34 EC BC 0C   94 94 2E 08 59 9C C7 B2  ....4.......Y...
      0010: 10 4E 0A 08                                        .N..
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 2, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 2, O=Amazon, C=US
      Serial number: 66c9fd29635869f0a0fe58678f85b26bb8a37
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: 5A:8C:EF:45:D7:A6:98:59:76:7A:8C:8B:44:96:B5:78:CF:47:4B:1A
           SHA256: 1B:A5:B2:AA:8C:65:40:1A:82:96:01:18:F8:0B:EC:4F:62:30:4D:83:CE:C4:71:3A:19:C3:9C:01:1E:A4:6D:B4
      Signature algorithm name: SHA384withRSA
      Subject Public Key Algorithm: 4096-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: B0 0C F0 4C 30 F4 05 58   02 48 FD 33 E5 52 AF 4B  ...L0..X.H.3.R.K
      0010: 84 E3 66 52                                        ..fR
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 3, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 3, O=Amazon, C=US
      Serial number: 66c9fd5749736663f3b0b9ad9e89e7603f24a
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: 0D:44:DD:8C:3C:8C:1A:1A:58:75:64:81:E9:0F:2E:2A:FF:B3:D2:6E
           SHA256: 18:CE:6C:FE:7B:F1:4E:60:B2:E3:47:B8:DF:E8:68:CB:31:D0:2E:BB:3A:DA:27:15:69:F5:03:43:B4:6D:B3:A4
      Signature algorithm name: SHA256withECDSA
      Subject Public Key Algorithm: 256-bit EC (secp256r1) key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: AB B6 DB D7 06 9E 37 AC   30 86 07 91 70 C7 9C C4  ......7.0...p...
      0010: 19 B1 78 C0                                        ..x.
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 4, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 4, O=Amazon, C=US
      Serial number: 66c9fd7c1bb104c2943e5717b7b2cc81ac10e
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: F6:10:84:07:D6:F8:BB:67:98:0C:C2:E2:44:C2:EB:AE:1C:EF:63:BE
           SHA256: E3:5D:28:41:9E:D0:20:25:CF:A6:90:38:CD:62:39:62:45:8D:A5:C6:95:FB:DE:A3:C2:2B:0B:FB:25:89:70:92
      Signature algorithm name: SHA384withECDSA
      Subject Public Key Algorithm: 384-bit EC (secp384r1) key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: D3 EC C7 3A 65 6E CC E1   DA 76 9A 56 FB 9C F3 86  ...:en...v.V....
      0010: 6D 57 E5 81                                        mW..
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US
      Issuer: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US
      Serial number: 0
      Valid from: Tue Jun 29 17:39:16 UTC 2004 until: Thu Jun 29 17:39:16 UTC 2034
      Certificate fingerprints:
           SHA1: AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A
           SHA256: 14:65:FA:20:53:97:B8:76:FA:A6:F0:A9:95:8E:55:90:E4:0F:CC:7F:AA:4F:B7:C2:C8:67:75:21:FB:5F:B6:58
      Signature algorithm name: SHA1withRSA (weak)
      Subject Public Key Algorithm: 2048-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.35 Criticality=false
      AuthorityKeyIdentifier [
      KeyIdentifier [
      0000: BF 5F B7 D1 CE DD 1F 86   F4 5B 55 AC DC D7 10 C2  ._.......[U.....
      0010: 0E A9 88 E7                                        ....
      ]
      [OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US]
      SerialNumber: [    00]
      ]
      
      #2: ObjectId: 2.5.29.19 Criticality=false
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: BF 5F B7 D1 CE DD 1F 86   F4 5B 55 AC DC D7 10 C2  ._.......[U.....
      0010: 0E A9 88 E7                                        ....
      ]
      ]
      
      
      Warning:
      The input uses the SHA1withRSA signature algorithm which is considered a security risk. This algorithm will be disabled in a future update.
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      ```

1.  Lampirkan file TrustStore dalam argumen JVM: 

   ```
   -Djavax.net.ssl.trustStore=path_to_file/cassandra_truststore.jks 
   -Djavax.net.ssl.trustStorePassword=my_password
   ```

## Step-by-step tutorial untuk terhubung ke Amazon Keyspaces menggunakan driver DataStax Java untuk Apache Cassandra menggunakan kredensyal khusus layanan
<a name="java_tutorial"></a>

 step-by-stepTutorial berikut memandu Anda melalui koneksi ke Amazon Keyspaces menggunakan driver Java untuk Cassandra menggunakan kredensyal khusus layanan. Secara khusus, Anda akan menggunakan versi 4.0 dari driver DataStax Java untuk Apache Cassandra. 

**Topics**
+ [Langkah 1: Prasyarat](#java_tutorial.prereq)
+ [Langkah 2: Konfigurasikan driver](#java_tutorial.driverconfiguration)
+ [Langkah 3: Jalankan aplikasi sampel](#java_tutorial.application)

### Langkah 1: Prasyarat
<a name="java_tutorial.prereq"></a>

Untuk mengikuti tutorial ini, Anda perlu menghasilkan kredensyal khusus layanan dan menambahkan driver DataStax Java untuk Apache Cassandra ke proyek Java Anda.
+ Hasilkan kredensyal khusus layanan untuk pengguna IAM Amazon Keyspaces Anda dengan menyelesaikan langkah-langkahnya. [Buat kredensil khusus layanan untuk akses terprogram ke Amazon Keyspaces](programmatic.credentials.ssc.md) Jika Anda lebih suka menggunakan kunci akses IAM untuk otentikasi, lihat. [Step-by-step tutorial untuk terhubung ke Amazon Keyspaces menggunakan driver DataStax Java 4.x untuk Apache Cassandra dan plugin otentikasi SiGv4](#java_tutorial.SigV4)
+ Tambahkan driver DataStax Java untuk Apache Cassandra ke proyek Java Anda. Pastikan Anda menggunakan versi driver yang mendukung Apache Cassandra 3.11.2. Untuk informasi lebih lanjut, lihat [driver DataStax Java untuk dokumentasi Apache Cassandra](https://github.com/datastax/java-driver).

### Langkah 2: Konfigurasikan driver
<a name="java_tutorial.driverconfiguration"></a>

Anda dapat menentukan pengaturan untuk driver DataStax Java Cassandra dengan membuat file konfigurasi untuk aplikasi Anda. File konfigurasi ini mengganti pengaturan default dan memberi tahu driver untuk terhubung ke titik akhir layanan Amazon Keyspaces menggunakan port 9142. Untuk daftar titik akhir layanan yang tersedia, lihat[Titik akhir layanan untuk Amazon Keyspaces](programmatic.endpoints.md).

Buat file konfigurasi dan simpan file di folder sumber daya aplikasi—misalnya,. `src/main/resources/application.conf` Buka `application.conf` dan tambahkan pengaturan konfigurasi berikut.

1. **Penyedia otentikasi** — Buat penyedia otentikasi dengan kelas. `PlainTextAuthProvider` *ServiceUserName*dan *ServicePassword* harus cocok dengan nama pengguna dan kata sandi yang Anda peroleh saat Anda membuat kredensyal khusus layanan dengan mengikuti langkah-langkah di. [Buat kredensil khusus layanan untuk akses terprogram ke Amazon Keyspaces](programmatic.credentials.ssc.md)
**catatan**  
Anda dapat menggunakan kredensyal jangka pendek dengan menggunakan plugin otentikasi untuk driver DataStax Java untuk Apache Cassandra alih-alih kredensyal hardcoding di file konfigurasi driver Anda. Untuk mempelajari lebih lanjut, ikuti instruksi untuk[Step-by-step tutorial untuk terhubung ke Amazon Keyspaces menggunakan driver DataStax Java 4.x untuk Apache Cassandra dan plugin otentikasi SiGv4](#java_tutorial.SigV4).

1. **Pusat data lokal** — Tetapkan nilai `local-datacenter` untuk Wilayah yang Anda sambungkan. Misalnya, jika aplikasi terhubung ke`cassandra.us-east-2.amazonaws.com`, maka atur pusat data lokal ke`us-east-2`. Untuk semua yang tersedia Wilayah AWS, lihat[Titik akhir layanan untuk Amazon Keyspaces](programmatic.endpoints.md). Atur `slow-replica-avoidance = false` untuk memuat keseimbangan terhadap lebih sedikit node.

1. **SSL/TLS** — Inisialisasi SSLEngine Pabrik dengan menambahkan bagian dalam file konfigurasi dengan satu baris yang menentukan kelas dengan. `class = DefaultSslEngineFactory` Berikan jalur ke file TrustStore dan kata sandi yang Anda buat sebelumnya. Amazon Keyspaces tidak mendukung `hostname-validation` peer, jadi setel opsi ini ke false.

```
datastax-java-driver {

    basic.contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"]
    advanced.auth-provider{
        class = PlainTextAuthProvider
        username = "ServiceUserName"
        password = "ServicePassword"
    }
    basic.load-balancing-policy {
        local-datacenter = "us-east-2"
        slow-replica-avoidance = false           
    }

    advanced.ssl-engine-factory {
        class = DefaultSslEngineFactory
        truststore-path = "./src/main/resources/cassandra_truststore.jks"
        truststore-password = "my_password"
        hostname-validation = false
      }
}
```

**catatan**  
Alih-alih menambahkan jalur ke TrustStore di file konfigurasi, Anda juga dapat menambahkan jalur TrustStore langsung di kode aplikasi atau Anda dapat menambahkan jalur ke TrustStore ke argumen JVM Anda.

### Langkah 3: Jalankan aplikasi sampel
<a name="java_tutorial.application"></a>

Contoh kode ini menunjukkan aplikasi baris perintah sederhana yang membuat kumpulan koneksi ke Amazon Keyspaces dengan menggunakan file konfigurasi yang kita buat sebelumnya. Ini menegaskan bahwa koneksi dibuat dengan menjalankan kueri sederhana.

```
package <your package>;
// add the following imports to your project
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;

public class App 
{
    
    public static void main( String[] args )
    {
        //Use DriverConfigLoader to load your configuration file
        DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf");
        try (CqlSession session = CqlSession.builder()
                .withConfigLoader(loader)
                .build()) {

            ResultSet rs = session.execute("select * from system_schema.keyspaces");
            Row row = rs.one();
            System.out.println(row.getString("keyspace_name"));
        }
    }
}
```

**catatan**  
Gunakan `try` blok untuk membuat koneksi untuk memastikan bahwa itu selalu tertutup. Jika Anda tidak menggunakan `try` blok, ingatlah untuk menutup koneksi Anda untuk menghindari kebocoran sumber daya.

## Step-by-step tutorial untuk terhubung ke Amazon Keyspaces menggunakan driver DataStax Java 4.x untuk Apache Cassandra dan plugin otentikasi SiGv4
<a name="java_tutorial.SigV4"></a>

Bagian berikut menjelaskan cara menggunakan plugin otentikasi SiGv4 untuk driver DataStax Java 4.x open-source untuk Apache Cassandra untuk mengakses Amazon Keyspaces (untuk Apache Cassandra). Plugin tersedia dari [GitHubrepositori](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin).

Plugin otentikasi SiGv4 memungkinkan Anda menggunakan kredensyal IAM untuk pengguna atau peran saat menghubungkan ke Amazon Keyspaces. Alih-alih memerlukan nama pengguna dan kata sandi, plugin ini menandatangani permintaan API menggunakan kunci akses. Untuk informasi selengkapnya, lihat [Membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces](access.credentials.md). 

### Langkah 1: Prasyarat
<a name="java_tutorial.SigV4.1"></a>

Untuk mengikuti tutorial ini, Anda harus menyelesaikan tugas-tugas berikut.
+ Jika Anda belum melakukannya, buat kredensyal untuk pengguna IAM Anda atau peran mengikuti langkah-langkah di. [Membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces](access.credentials.md) Tutorial ini mengasumsikan bahwa kunci akses disimpan sebagai variabel lingkungan. Untuk informasi selengkapnya, lihat [Simpan kunci akses untuk akses terprogram](aws.credentials.manage.md).
+ Tambahkan driver DataStax Java untuk Apache Cassandra ke proyek Java Anda. Pastikan Anda menggunakan versi driver yang mendukung Apache Cassandra 3.11.2. Untuk informasi lebih lanjut, lihat [Driver DataStax Java untuk dokumentasi Apache Cassandra](https://github.com/datastax/java-driver).
+ Tambahkan plugin otentikasi ke aplikasi Anda. Plugin otentikasi mendukung versi 4.x dari driver DataStax Java untuk Apache Cassandra. Jika Anda menggunakan Apache Maven, atau sistem build yang dapat menggunakan dependensi Maven, tambahkan dependensi berikut ke file Anda. `pom.xml`
**penting**  
Ganti versi plugin dengan versi terbaru seperti yang ditunjukkan di [GitHub repositori](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin#add-the-authentication-plugin-to-the-application).

  ```
  <dependency>
          <groupId>software.aws.mcs</groupId>
          <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin</artifactId>
          <version>4.0.9</version>
  </dependency>
  ```

### Langkah 2: Konfigurasikan driver
<a name="java_tutorial.SigV4.2"></a>

Anda dapat menentukan pengaturan untuk driver DataStax Java Cassandra dengan membuat file konfigurasi untuk aplikasi Anda. File konfigurasi ini mengganti pengaturan default dan memberi tahu driver untuk terhubung ke titik akhir layanan Amazon Keyspaces menggunakan port 9142. Untuk daftar titik akhir layanan yang tersedia, lihat[Titik akhir layanan untuk Amazon Keyspaces](programmatic.endpoints.md).

Buat file konfigurasi dan simpan file di folder sumber daya aplikasi—misalnya,. `src/main/resources/application.conf` Buka `application.conf` dan tambahkan pengaturan konfigurasi berikut.

1. **Penyedia otentikasi** - Atur `advanced.auth-provider.class` ke instance baru. `software.aws.mcs.auth.SigV4AuthProvider` SiGv4 AuthProvider adalah penangan otentikasi yang disediakan oleh plugin untuk melakukan otentikasi SiGv4. 

1. **Pusat data lokal** — Tetapkan nilai `local-datacenter` untuk Wilayah yang Anda sambungkan. Misalnya, jika aplikasi terhubung ke`cassandra.us-east-2.amazonaws.com`, maka atur pusat data lokal ke`us-east-2`. Untuk semua yang tersedia Wilayah AWS, lihat[Titik akhir layanan untuk Amazon Keyspaces](programmatic.endpoints.md). Atur `slow-replica-avoidance = false` untuk memuat keseimbangan terhadap semua node yang tersedia.

1. **Idempotence** - Mengatur default `idempotence` untuk aplikasi untuk mengkonfigurasi driver `true` untuk selalu mencoba kembali permintaan gagal. read/write/prepare/execute Ini adalah praktik terbaik untuk aplikasi terdistribusi yang membantu menangani kegagalan sementara dengan mencoba kembali permintaan yang gagal.

1. **SSL/TLS** — Inisialisasi SSLEngine Pabrik dengan menambahkan bagian dalam file konfigurasi dengan satu baris yang menentukan kelas dengan. `class = DefaultSslEngineFactory` Berikan jalur ke file TrustStore dan kata sandi yang Anda buat sebelumnya. Amazon Keyspaces tidak mendukung `hostname-validation` peer, jadi setel opsi ini ke false.

1. **Koneksi** — Buat setidaknya 3 koneksi lokal per titik akhir dengan pengaturan`local.size = 3`. Ini adalah praktik terbaik yang membantu aplikasi Anda menangani ledakan overhead dan lalu lintas. Untuk informasi selengkapnya tentang cara menghitung berapa banyak koneksi lokal per titik akhir yang dibutuhkan aplikasi Anda berdasarkan pola lalu lintas yang diharapkan, lihat[Cara mengonfigurasi koneksi di Amazon Keyspaces](connections.md#connections.howtoconfigure).

1. **Kebijakan coba lagi** — Terapkan `AmazonKeyspacesExponentialRetryPolicy` kebijakan coba ulang Amazon Keyspaces alih-alih yang disertakan dengan driver `DefaultRetryPolicy` Cassandra. Ini memungkinkan Anda untuk mengonfigurasi jumlah upaya coba lagi untuk `AmazonKeyspacesExponentialRetryPolicy` yang memenuhi kebutuhan Anda. Secara default, jumlah percobaan ulang untuk `AmazonKeyspacesExponentialRetryPolicy` diatur ke 3. Untuk informasi selengkapnya, lihat [Cara mengonfigurasi kebijakan coba lagi untuk koneksi di Amazon Keyspaces](connections.md#connections.retry-policies).

1. **Pernyataan yang disiapkan** - Setel `prepare-on-all-nodes` ke false untuk mengoptimalkan penggunaan jaringan.

```
datastax-java-driver {
    basic {
        contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"]  
        request {
            timeout = 2 seconds
            consistency = LOCAL_QUORUM
            page-size = 1024
            default-idempotence = true
        }
        load-balancing-policy {
            local-datacenter = "us-east-2"
            class = DefaultLoadBalancingPolicy
            slow-replica-avoidance = false           
        }
    }
    advanced {
        auth-provider {
            class = software.aws.mcs.auth.SigV4AuthProvider
            aws-region = us-east-2
        }
        ssl-engine-factory {
            class = DefaultSslEngineFactory
            truststore-path = "./src/main/resources/cassandra_truststore.jks"
            truststore-password = "my_password"
            hostname-validation = false
        }
        connection {
	     connect-timeout = 5 seconds
	     max-requests-per-connection = 512
	     pool {
                local.size = 3
	     }
        }
       retry-policy {
           class =  com.aws.ssa.keyspaces.retry.AmazonKeyspacesExponentialRetryPolicy
	    max-attempts = 3
	    min-wait = 10 mills
	    max-wait = 100 mills
       }
       prepared-statements {
	    prepare-on-all-nodes = false
       }
    }
}
```

**catatan**  
Alih-alih menambahkan jalur ke TrustStore di file konfigurasi, Anda juga dapat menambahkan jalur TrustStore langsung di kode aplikasi atau Anda dapat menambahkan jalur ke TrustStore ke argumen JVM Anda.

### Langkah 3: Jalankan aplikasi
<a name="java_tutorial.SigV4.3"></a>

Contoh kode ini menunjukkan aplikasi baris perintah sederhana yang membuat kumpulan koneksi ke Amazon Keyspaces dengan menggunakan file konfigurasi yang kita buat sebelumnya. Ini menegaskan bahwa koneksi dibuat dengan menjalankan kueri sederhana.

```
package <your package>;
// add the following imports to your project
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;

public class App 
{
    
    public static void main( String[] args )
    {
        //Use DriverConfigLoader to load your configuration file
        DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf");
        try (CqlSession session = CqlSession.builder()
                .withConfigLoader(loader)
                .build()) {

            ResultSet rs = session.execute("select * from system_schema.keyspaces");
            Row row = rs.one();
            System.out.println(row.getString("keyspace_name"));
        }
    }
}
```

**catatan**  
Gunakan `try` blok untuk membuat koneksi untuk memastikan bahwa itu selalu tertutup. Jika Anda tidak menggunakan `try` blok, ingatlah untuk menutup koneksi Anda untuk menghindari kebocoran sumber daya.

## Connect ke Amazon Keyspaces menggunakan driver DataStax Java 3.x untuk Apache Cassandra dan plugin otentikasi SiGv4
<a name="java3x_tutorial.SigV4"></a>

Bagian berikut menjelaskan cara menggunakan plugin otentikasi SiGv4 untuk driver DataStax Java sumber terbuka 3.x untuk Apache Cassandra untuk mengakses Amazon Keyspaces. Plugin tersedia dari [GitHub repositori](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin/tree/3.x-Driver-Compatible).

Plugin otentikasi SiGv4 memungkinkan Anda menggunakan kredensyal IAM untuk pengguna dan peran saat menghubungkan ke Amazon Keyspaces. Alih-alih memerlukan nama pengguna dan kata sandi, plugin ini menandatangani permintaan API menggunakan kunci akses. Untuk informasi selengkapnya, lihat [Membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces](access.credentials.md). 

### Langkah 1: Prasyarat
<a name="java3x_tutorial.SigV4.1"></a>

Untuk menjalankan contoh kode ini, pertama-tama Anda harus menyelesaikan tugas-tugas berikut.
+ Buat kredensi untuk pengguna atau peran IAM Anda mengikuti langkah-langkah di. [Membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces](access.credentials.md) Tutorial ini mengasumsikan bahwa kunci akses disimpan sebagai variabel lingkungan. Untuk informasi selengkapnya, lihat [Simpan kunci akses untuk akses terprogram](aws.credentials.manage.md).
+ Ikuti langkah-langkah di [Sebelum Anda mulai](#using_java_driver.BeforeYouBegin) untuk mengunduh sertifikat digital, mengonversinya menjadi file TrustStore, dan melampirkan keystore dalam argumen JVM ke aplikasi Anda.
+ Tambahkan driver DataStax Java untuk Apache Cassandra ke proyek Java Anda. Pastikan Anda menggunakan versi driver yang mendukung Apache Cassandra 3.11.2. Untuk informasi lebih lanjut, lihat [Driver DataStax Java untuk dokumentasi Apache Cassandra](https://github.com/datastax/java-driver).
+ Tambahkan plugin otentikasi ke aplikasi Anda. Plugin otentikasi mendukung versi 3.x dari driver DataStax Java untuk Apache Cassandra. Jika Anda menggunakan Apache Maven, atau sistem build yang dapat menggunakan dependensi Maven, tambahkan dependensi berikut ke file Anda. `pom.xml` Ganti versi plugin dengan versi terbaru seperti yang ditunjukkan di [GitHub repositori](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin/tree/3.x-Driver-Compatible).

  ```
  <dependency>
          <groupId>software.aws.mcs</groupId>
          <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin_3</artifactId>
          <version>3.0.3</version>
  </dependency>
  ```

### Langkah 2: Jalankan aplikasi
<a name="java3x_tutorial.SigV4.3"></a>

Contoh kode ini menunjukkan aplikasi baris perintah sederhana yang membuat kumpulan koneksi ke Amazon Keyspaces. Ini menegaskan bahwa koneksi dibuat dengan menjalankan kueri sederhana.

```
package <your package>;
// add the following imports to your project

import software.aws.mcs.auth.SigV4AuthProvider;  
import com.datastax.driver.core.Cluster;  
import com.datastax.driver.core.ResultSet;  
import com.datastax.driver.core.Row;  
import com.datastax.driver.core.Session;

public class App 
{
    
    public static void main( String[] args )
    {
        String endPoint = "cassandra.us-east-2.amazonaws.com";  
        int portNumber = 9142;
        Session session = Cluster.builder()  
	                                 .addContactPoint(endPoint)  
	                                 .withPort(portNumber)  
	                                 .withAuthProvider(new SigV4AuthProvider("us-east-2"))  
	                                 .withSSL()  
	                                 .build()  
	                                 .connect();

        ResultSet rs = session.execute("select * from system_schema.keyspaces");  
        Row row = rs.one();  
        System.out.println(row.getString("keyspace_name"));
    }
}
```

Catatan penggunaan:

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

Lihat repositori berikut untuk kebijakan driver Java yang bermanfaat, contoh, dan praktik terbaik saat menggunakan Driver Java dengan Amazon Keyspaces:. [https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers](https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers) 

# Menggunakan driver klien Cassandra Python untuk mengakses Amazon Keyspaces secara terprogram
<a name="using_python_driver"></a>

 Di bagian ini, kami menunjukkan cara terhubung ke Amazon Keyspaces menggunakan driver klien Python. 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 pengguna IAM atau peran yang digunakan di semua AWS layanan. 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_python_driver.BeforeYouBegin)
+ [Connect ke Amazon Keyspaces menggunakan driver Python untuk Apache Cassandra dan kredensyal khusus layanan](#python_ssc)
+ [Connect ke Amazon Keyspaces menggunakan driver DataStax Python untuk Apache Cassandra dan plugin otentikasi SiGv4](#python_SigV4)

## Sebelum kamu memulai
<a name="using_python_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 Python 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 Python untuk Apache Cassandra dan kredensyal khusus layanan
<a name="python_ssc"></a>

Contoh kode berikut menunjukkan cara menyambung ke Amazon Keyspaces dengan driver klien Python dan kredensyal khusus layanan.

```
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
from cassandra.auth import PlainTextAuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2 )

ssl_context.load_verify_locations('path_to_file/keyspaces-bundle.pem')

ssl_context.verify_mode = CERT_REQUIRED
auth_provider = PlainTextAuthProvider(username='ServiceUserName', password='ServicePassword')
cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider, port=9142)
session = cluster.connect()
r = session.execute('select * from system_schema.keyspaces')
print(r.current_rows)
```

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).

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

Bagian berikut menunjukkan cara menggunakan plugin otentikasi SiGv4 untuk driver DataStax Python open-source untuk Apache Cassandra untuk mengakses Amazon Keyspaces (untuk Apache Cassandra). 

Jika Anda belum melakukannya, mulailah dengan membuat kredensyal untuk peran IAM Anda mengikuti langkah-langkah di. [Membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces](access.credentials.md) Tutorial ini menggunakan kredensil sementara, yang membutuhkan peran IAM. Untuk informasi selengkapnya tentang kredenal sementara, lihat. [Buat kredensi sementara untuk terhubung ke Amazon Keyspaces menggunakan peran IAM dan plugin SiGv4](temporary.credentials.IAM.md)

[Kemudian, tambahkan plugin otentikasi Python SigV4 ke lingkungan Anda dari repositori. GitHub ](https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin)

```
pip install cassandra-sigv4
```

Contoh kode berikut menunjukkan cara terhubung ke Amazon Keyspaces dengan menggunakan driver DataStax Python open-source untuk Cassandra dan plugin otentikasi SiGv4. Plugin tergantung pada AWS SDK untuk Python (Boto3). Ini digunakan `boto3.session` untuk mendapatkan kredensil sementara. 

```
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
from cassandra.auth import PlainTextAuthProvider
import boto3
from cassandra_sigv4.auth import SigV4AuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2)
ssl_context.load_verify_locations('path_to_file/keyspaces-bundle.pem')
ssl_context.verify_mode = CERT_REQUIRED

# use this if you want to use Boto to set the session parameters.
boto_session = boto3.Session(aws_access_key_id="AKIAIOSFODNN7EXAMPLE",
                             aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
                             aws_session_token="AQoDYXdzEJr...<remainder of token>",
                             region_name="us-east-2")
auth_provider = SigV4AuthProvider(boto_session)

# Use this instead of the above line if you want to use the Default Credentials and not bother with a session.
# auth_provider = SigV4AuthProvider()

cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider,
                  port=9142)
session = cluster.connect()
r = session.execute('select * from system_schema.keyspaces')
print(r.current_rows)
```

Catatan penggunaan:

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

1. Pastikan bahwa*aws\$1access\$1key\$1id*,*aws\$1secret\$1access\$1key*, dan *aws\$1session\$1token* cocok`Access Key`,`Secret Access Key`, dan `Session Token` Anda dapatkan menggunakan`boto3.session`. Untuk informasi selengkapnya, lihat [Kredensyal](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html) di. *AWS SDK untuk Python (Boto3)* 

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

# Menggunakan driver klien Cassandra Node.js untuk mengakses Amazon Keyspaces secara terprogram
<a name="using_nodejs_driver"></a>

 Bagian ini menunjukkan kepada Anda cara terhubung ke Amazon Keyspaces dengan menggunakan driver klien Node.js. 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 pengguna IAM atau peran yang digunakan di semua AWS layanan. 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_nodejs_driver.BeforeYouBegin)
+ [Connect ke Amazon Keyspaces menggunakan DataStax driver Node.js untuk Apache Cassandra dan kredensyal khusus layanan](#nodejs_ssc)
+ [Connect ke Amazon Keyspaces menggunakan driver DataStax Node.js untuk Apache Cassandra dan plugin otentikasi SiGv4](#nodejs_SigV4)

## Sebelum kamu memulai
<a name="using_nodejs_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 Python 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 DataStax driver Node.js untuk Apache Cassandra dan kredensyal khusus layanan
<a name="nodejs_ssc"></a>

 Konfigurasikan driver Anda untuk menggunakan file sertifikat gabungan `keyspaces-bundle.pem` untuk TLS dan autentikasi menggunakan kredensyal khusus layanan. Contoh: 

```
const cassandra = require('cassandra-driver');
const fs = require('fs');
const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword');
const sslOptions1 = {
         ca: [
                    fs.readFileSync('path_to_file/keyspaces-bundle.pem', 'utf-8')],      
                    host: 'cassandra.us-west-2.amazonaws.com',
                    rejectUnauthorized: true
        };
const client = new cassandra.Client({
                   contactPoints: ['cassandra.us-west-2.amazonaws.com'],
                   localDataCenter: 'us-west-2',
                   authProvider: auth,
                   sslOptions: sslOptions1,
                   protocolOptions: { port: 9142 }
        });
const query = 'SELECT * FROM system_schema.keyspaces';
 
client.execute(query)
                    .then( result => console.log('Row from Keyspaces %s', result.rows[0]))
                    .catch( e=> console.log(`${e}`));
```

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).

## Connect ke Amazon Keyspaces menggunakan driver DataStax Node.js untuk Apache Cassandra dan plugin otentikasi SiGv4
<a name="nodejs_SigV4"></a>

Bagian berikut menunjukkan cara menggunakan plugin otentikasi SiGv4 untuk driver DataStax Node.js open-source untuk Apache Cassandra untuk mengakses Amazon Keyspaces (untuk Apache Cassandra). 

Jika Anda belum melakukannya, buat kredensyal untuk pengguna IAM Anda atau peran mengikuti langkah-langkah di. [Membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces](access.credentials.md)

[Tambahkan plugin otentikasi SiGv4 Node.js ke aplikasi Anda dari repositori. GitHub ](https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin) Plugin mendukung versi 4.x dari driver DataStax Node.js untuk Cassandra dan tergantung pada AWS SDK untuk Node.js. Ini digunakan `AWSCredentialsProvider` untuk mendapatkan kredensil.

```
$ npm install aws-sigv4-auth-cassandra-plugin --save
```

Contoh kode ini menunjukkan cara mengatur instance khusus Wilayah `SigV4AuthProvider` sebagai penyedia otentikasi.

```
const cassandra = require('cassandra-driver');
const fs = require('fs');
const sigV4 = require('aws-sigv4-auth-cassandra-plugin');

const auth = new sigV4.SigV4AuthProvider({
    region: 'us-west-2', 
    accessKeyId:'AKIAIOSFODNN7EXAMPLE',
    secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'});

const sslOptions1 = {
  ca: [
      fs.readFileSync('path_to_file/keyspaces-bundle.pem', 'utf-8')],
  host: 'cassandra.us-west-2.amazonaws.com',
  rejectUnauthorized: true
};


const client = new cassandra.Client({
  contactPoints: ['cassandra.us-west-2.amazonaws.com'],
  localDataCenter: 'us-west-2',
  authProvider: auth,
  sslOptions: sslOptions1,
  protocolOptions: { port: 9142 }
});


const query = 'SELECT * FROM system_schema.keyspaces';

client.execute(query).then(
    result => console.log('Row from Keyspaces %s', result.rows[0]))
    .catch( e=> console.log(`${e}`));
```

Catatan penggunaan:

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

1. Pastikan bahwa *accessKeyId* dan *secretAccessKey* cocok dengan Kunci Akses dan Kunci Akses Rahasia yang Anda peroleh menggunakan`AWSCredentialsProvider`. Untuk informasi selengkapnya, lihat [Menyetel Kredensyal di Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html) di *AWS SDK untuk JavaScript * di Node.js. 

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).

# Menggunakan driver klien Cassandra .NET Core untuk mengakses Amazon Keyspaces secara terprogram
<a name="using_dotnetcore_driver"></a>

Bagian ini menunjukkan kepada Anda cara terhubung ke Amazon Keyspaces dengan menggunakan driver klien.NET Core. Langkah-langkah pengaturan akan bervariasi tergantung pada lingkungan dan sistem operasi Anda, Anda mungkin harus memodifikasinya sesuai. Amazon Keyspaces memerlukan penggunaan Transport Layer Security (TLS) untuk membantu mengamankan koneksi dengan klien. Untuk terhubung ke Amazon Keyspaces menggunakan TLS, konfigurasikan driver Anda untuk menggunakan penyimpanan kepercayaan sistem, yang mencakup Amazon Root 1-4. CAs

1.  Instal CSharp Driver Cassandra melalui nuget, menggunakan konsol nuget. 

   ```
   PM> Install-Package CassandraCSharpDriver
   ```

1. Contoh berikut menggunakan proyek konsol .NET Core C \$1 untuk terhubung ke Amazon Keyspaces dan menjalankan kueri.

   ```
   using Cassandra;
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Net.Security;
   using System.Runtime.ConstrainedExecution;
   using System.Security.Cryptography.X509Certificates;
   using System.Text;
   using System.Threading.Tasks;
   
   namespace CSharpKeyspacesExample
   {
       class Program
       {
           public Program(){}
   
           static void Main(string[] args)
           {
               var userName = "ServiceUserName";
               var pwd = "ServicePassword";
               certCollection.Add(amazoncert);
    
               var awsEndpoint =  "cassandra.us-east-2.amazonaws.com" ;  
   
               var cluster = Cluster.Builder()
                        .AddContactPoints(awsEndpoint)
                        .WithPort(9142)
                        .WithAuthProvider(new PlainTextAuthProvider(userName, pwd))
                        .WithSSL(new SSLOptions().SetCertificateCollection(certCollection))
                        .Build();
   
               var session = cluster.Connect();
               var rs = session.Execute("SELECT * FROM system_schema.tables;");
               foreach (var row in rs)
               {
                   var name = row.GetValue<String>("keyspace_name");
                   Console.WriteLine(name);
               }
           }
       }
   }
   ```

Catatan penggunaan:

1. Pastikan Anda menggunakan toko kepercayaan sistem default, yang mencakup Amazon Root CAs 1-4.

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).

# 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).

# Menggunakan driver klien Cassandra Perl untuk mengakses Amazon Keyspaces secara terprogram
<a name="using_perl_driver"></a>

Bagian ini menunjukkan kepada Anda cara terhubung ke Amazon Keyspaces dengan menggunakan driver klien Perl. Untuk contoh kode ini, kami menggunakan Perl 5. Amazon Keyspaces memerlukan penggunaan Transport Layer Security (TLS) untuk membantu mengamankan koneksi dengan klien. 

**penting**  
Amazon Keyspacescertificate sedang bertransisi ke hirarki Amazon Trust Services (ATS). Pastikan lingkungan Anda mempercayai Amazon Root CAs 1-4 untuk menghindari kesalahan koneksi selama rotasi ini. Driver Perl tidak memvalidasi sertifikat SSL Amazon server, yang berarti Anda tidak dapat mengonfirmasi bahwa Anda terhubung ke Amazon Keyspaces. Langkah kedua, untuk mengkonfigurasi driver untuk menggunakan TLS saat menghubungkan ke Amazon Keyspaces masih diperlukan, dan memastikan bahwa data yang ditransfer antara klien dan server dienkripsi. 

1. Unduh driver Cassandra DBI dari [https://metacpan.org/pod/DBD::Cassandra](https://metacpan.org/pod/DBD::Cassandra) dan instal driver ke lingkungan Perl Anda. Langkah-langkah yang tepat tergantung pada lingkungan. Berikut ini adalah contoh umum.

   ```
   cpanm DBD::Cassandra
   ```

1. Buat file untuk aplikasi Anda.

   ```
   touch cqlapp.pl
   ```

1. Tambahkan kode contoh berikut ke file cqlapp.pl.

   ```
   use DBI;
   my $user = "ServiceUserName";
   my $password = "ServicePassword";
   my $db = DBI->connect("dbi:Cassandra:host=cassandra.us-east-2.amazonaws.com;port=9142;tls=1;", 
   $user, $password);
   
   my $rows = $db->selectall_arrayref("select * from system_schema.keyspaces"); 
   print "Found the following Keyspaces...\n"; 
   for my $row (@$rows) { 
         print join(" ",@$row['keyspace_name']),"\n"; 
   } 
   
   $db->disconnect;
   ```
**penting**  
 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) 
**catatan**  
Untuk daftar titik akhir yang tersedia, lihat[Titik akhir layanan untuk Amazon Keyspaces](programmatic.endpoints.md).

1. Jalankan aplikasi.

   ```
   perl cqlapp.pl
   ```