

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

# Dapatkan nilai rahasia Secrets Manager menggunakan Java
<a name="retrieving-secrets-java"></a>

Dalam aplikasi, Anda dapat mengambil rahasia Anda dengan menelepon `GetSecretValue` atau `BatchGetSecretValue` di salah satu file. AWS SDKs Namun, kami menyarankan Anda menyimpan nilai rahasia Anda dengan menggunakan caching sisi klien. Rahasia caching meningkatkan kecepatan dan mengurangi biaya Anda.

Untuk terhubung ke database menggunakan kredensyal secara rahasia, Anda dapat menggunakan driver Secrets Manager SQL Connection, yang membungkus driver JDBC dasar. Ini juga menggunakan caching sisi klien, sehingga dapat mengurangi biaya untuk memanggil Secrets Manager. APIs

**Topics**
+ [Dapatkan nilai rahasia Secrets Manager menggunakan Java dengan caching sisi klien](retrieving-secrets_cache-java.md)
+ [Connect ke database SQL menggunakan JDBC dengan kredensi dalam rahasia AWS Secrets Manager](retrieving-secrets_jdbc.md)
+ [Dapatkan nilai rahasia Secrets Manager menggunakan Java AWS SDK](retrieving-secrets-java-sdk.md)

# Dapatkan nilai rahasia Secrets Manager menggunakan Java dengan caching sisi klien
<a name="retrieving-secrets_cache-java"></a>

Ketika Anda mengambil rahasia, Anda dapat menggunakan Secrets Manager komponen caching berbasis Java untuk cache untuk digunakan di masa mendatang. Mengambil rahasia yang di-cache lebih cepat daripada mengambilnya dari Secrets Manager. Karena ada biaya untuk memanggil Secrets Manager APIs, menggunakan cache dapat mengurangi biaya Anda. Untuk semua cara Anda dapat mengambil rahasia, lihat[Dapatkan rahasia](retrieving-secrets.md).

Kebijakan cache adalah Least Recently Used (LRU), jadi ketika cache harus membuang rahasia, ia membuang rahasia yang paling jarang digunakan. Secara default, cache menyegarkan rahasia setiap jam. Anda dapat mengonfigurasi [seberapa sering rahasia disegarkan](retrieving-secrets_cache-java-ref_SecretCacheConfiguration.md#retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-getCacheItemTTL) dalam cache, dan Anda dapat [menghubungkan ke pengambilan rahasia](retrieving-secrets_cache-java-ref_SecretCacheHook.md) untuk menambahkan lebih banyak fungsionalitas.

Cache tidak memaksa pengumpulan sampah setelah referensi cache dibebaskan. Implementasi cache tidak termasuk pembatalan cache. Implementasi cache difokuskan di sekitar cache itu sendiri, dan tidak dikeraskan atau difokuskan keamanan. Jika Anda memerlukan keamanan tambahan seperti mengenkripsi item dalam cache, gunakan antarmuka dan metode abstrak yang disediakan.

Untuk menggunakan komponen, Anda harus memiliki yang berikut: 
+ Java 8 atau lingkungan pengembangan yang lebih tinggi. Lihat [Unduhan Java SE](https://www.oracle.com/technetwork/java/javase/downloads/index.html) di situs web Oracle.

Untuk mengunduh kode sumber, lihat [Secrets Manager komponen klien caching berbasis Java](https://github.com/aws/aws-secretsmanager-caching-java) pada. GitHub

Untuk menambahkan komponen ke proyek Anda, dalam file pom.xml Maven Anda, sertakan dependensi berikut. Untuk informasi lebih lanjut tentang Maven, lihat [Panduan Memulai](https://maven.apache.org/guides/getting-started/index.html) di situs web Apache Maven Project.

```
<dependency>
  <groupId>com.amazonaws.secretsmanager</groupId>
  <artifactId>aws-secretsmanager-caching-java</artifactId>
  <version>1.0.2</version>
</dependency>
```

**Izin yang diperlukan:**
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

Untuk informasi selengkapnya, lihat [Referensi izin](auth-and-access.md#reference_iam-permissions).

**Topics**
+ [SecretCache](retrieving-secrets_cache-java-ref_SecretCache.md)
+ [SecretCacheConfiguration](retrieving-secrets_cache-java-ref_SecretCacheConfiguration.md)
+ [SecretCacheHook](retrieving-secrets_cache-java-ref_SecretCacheHook.md)

**Example Ambil rahasia**  
Contoh kode berikut menunjukkan fungsi Lambda yang mengambil string rahasia. Ini mengikuti [praktik terbaik](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html) untuk membuat instance cache di luar penangan fungsi, sehingga tidak terus memanggil API jika Anda memanggil fungsi Lambda lagi.  

```
package com.amazonaws.secretsmanager.caching.examples;
    
    import com.amazonaws.services.lambda.runtime.Context;
    import com.amazonaws.services.lambda.runtime.RequestHandler;
    import com.amazonaws.services.lambda.runtime.LambdaLogger;
    
    import com.amazonaws.secretsmanager.caching.SecretCache;
    
    public class SampleClass implements RequestHandler<String, String> {
    
         private final SecretCache cache  = new SecretCache();
    
         @Override public String handleRequest(String secretId,  Context context) {
             final String secret  = cache.getSecretString(secretId);
    
            // Use the secret, return success;
    
        }
    }
```

# SecretCache
<a name="retrieving-secrets_cache-java-ref_SecretCache"></a>

Cache dalam memori untuk rahasia yang diminta dari Secrets Manager. Anda menggunakan [getSecretString](#retrieving-secrets_cache-java-ref_SecretCache-methods-getSecretString) atau [getSecretBinary](#retrieving-secrets_cache-java-ref_SecretCache-methods-getSecretBinary) untuk mengambil rahasia dari cache. Anda dapat mengkonfigurasi pengaturan cache dengan meneruskan [SecretCacheConfiguration](retrieving-secrets_cache-java-ref_SecretCacheConfiguration.md) objek di konstruktor. 

Untuk informasi selengkapnya, termasuk contoh, lihat[Dapatkan nilai rahasia Secrets Manager menggunakan Java dengan caching sisi klien](retrieving-secrets_cache-java.md).

## Konstruktor
<a name="retrieving-secrets_cache-java-ref_SecretCache-constructors"></a>

`public SecretCache()`  
Konstruktor default untuk `SecretCache` objek.

`public SecretCache(AWSSecretsManagerClientBuilder builder)`  
Membangun cache baru menggunakan klien Secrets Manager yang dibuat menggunakan yang disediakan [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClientBuilder.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClientBuilder.html). Gunakan konstruktor ini untuk menyesuaikan klien Secrets Manager, misalnya untuk menggunakan Region atau endpoint tertentu.

`public SecretCache(AWSSecretsManager client)`  
Membangun cache rahasia baru menggunakan yang disediakan [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html). Gunakan konstruktor ini untuk menyesuaikan klien Secrets Manager, misalnya untuk menggunakan Region atau endpoint tertentu.

`public SecretCache(SecretCacheConfiguration config)`  
Membangun cache rahasia baru menggunakan yang disediakan`SecretCacheConfiguration`.

## Metode
<a name="retrieving-secrets_cache-java-ref_SecretCache-methods"></a>

### getSecretString
<a name="retrieving-secrets_cache-java-ref_SecretCache-methods-getSecretString"></a>

`public String getSecretString(final String secretId)`

Mengambil rahasia string dari Secrets Manager. Mengembalikan [https://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true).

### getSecretBinary
<a name="retrieving-secrets_cache-java-ref_SecretCache-methods-getSecretBinary"></a>

`public ByteBuffer getSecretBinary(final String secretId)`

Mengambil rahasia biner dari Secrets Manager. Mengembalikan [https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html](https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html).

### RefreshNow
<a name="retrieving-secrets_cache-java-ref_SecretCache-methods-refreshNow"></a>

`public boolean refreshNow(final String secretId) throws InterruptedException`

Memaksa cache untuk menyegarkan. Mengembalikan `true` jika refresh selesai tanpa kesalahan, jika tidak`false`.

### tutup
<a name="retrieving-secrets_cache-java-ref_SecretCache-methods-close"></a>

`public void close()`

Menutup cache.

# SecretCacheConfiguration
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration"></a>

Opsi konfigurasi cache untuk[SecretCache](retrieving-secrets_cache-java-ref_SecretCache.md), seperti ukuran cache maks dan Time to Live (TTL) untuk rahasia cache.

## Konstruktor
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_constructor"></a>

`public SecretCacheConfiguration`

Konstruktor default untuk `SecretCacheConfiguration` objek.

## Metode
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods"></a>

### getClient
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-getClient"></a>

`public AWSSecretsManager getClient()`

Mengembalikan [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html)bahwa cache mengambil rahasia dari.

### SetClient
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-setClient"></a>

`public void setClient(AWSSecretsManager client)`

Menetapkan [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html)klien tempat cache mengambil rahasia dari.

### getCacheHook
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-getCacheHook"></a>

`public SecretCacheHook getCacheHook()`

Mengembalikan [SecretCacheHook](retrieving-secrets_cache-java-ref_SecretCacheHook.md) antarmuka yang digunakan untuk mengaitkan pembaruan cache.

### setCacheHook
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-setCacheHook"></a>

`public void setCacheHook(SecretCacheHook cacheHook)`

Mengatur [SecretCacheHook](retrieving-secrets_cache-java-ref_SecretCacheHook.md) antarmuka yang digunakan untuk mengaitkan pembaruan cache.

### getMaxCacheUkuran
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-getMaxCacheSize"></a>

`public int getMaxCacheSize()`

Mengembalikan ukuran cache maksimum. Defaultnya adalah 1024 rahasia.

### setMaxCacheUkuran
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-setMaxCacheSize"></a>

`public void setMaxCacheSize(int maxCacheSize)`

Menetapkan ukuran cache maksimum. Defaultnya adalah 1024 rahasia.

### getCacheItemTTL
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-getCacheItemTTL"></a>

`public long getCacheItemTTL()`

Mengembalikan TTL dalam milidetik untuk item cache. Ketika rahasia yang di-cache melebihi TTL ini, cache mengambil salinan rahasia baru dari file. [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html) Defaultnya adalah 1 jam dalam milidetik. 

Cache menyegarkan rahasia secara serempak ketika rahasia diminta setelah TTL. Jika penyegaran sinkron gagal, cache mengembalikan rahasia basi. 

### setCacheItemTTL
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-setCacheItemTTL"></a>

`public void setCacheItemTTL(long cacheItemTTL)`

Mengatur TTL dalam milidetik untuk item yang di-cache. Ketika rahasia yang di-cache melebihi TTL ini, cache mengambil salinan rahasia baru dari file. [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html) Defaultnya adalah 1 jam dalam milidetik.

### getVersionStage
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-getVersionStage"></a>

`public String getVersionStage()`

Mengembalikan versi rahasia yang ingin Anda cache. Untuk informasi selengkapnya, lihat [Versi rahasia](whats-in-a-secret.md#term_version). Defaultnya adalah` "AWSCURRENT"`.

### setVersionStage
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-setVersionStage"></a>

`public void setVersionStage(String versionStage)`

Menetapkan versi rahasia yang ingin Anda cache. Untuk informasi selengkapnya, lihat [Versi rahasia](whats-in-a-secret.md#term_version). Nilai default-nya `"AWSCURRENT"`.

### SecretCacheConfiguration denganKlien
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-withClient"></a>

`public SecretCacheConfiguration withClient(AWSSecretsManager client)`

Menetapkan [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html)untuk mengambil rahasia dari. Mengembalikan `SecretCacheConfiguration` objek diperbarui dengan pengaturan baru.

### SecretCacheConfiguration withCacheHook
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-withCacheHook"></a>

`public SecretCacheConfiguration withCacheHook(SecretCacheHook cacheHook)`

Mengatur antarmuka yang digunakan untuk mengaitkan cache dalam memori. Mengembalikan `SecretCacheConfiguration` objek diperbarui dengan pengaturan baru.

### SecretCacheConfiguration withMaxCacheUkuran
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-withMaxCacheSize"></a>

`public SecretCacheConfiguration withMaxCacheSize(int maxCacheSize)`

Menetapkan ukuran cache maksimum. Mengembalikan `SecretCacheConfiguration` objek diperbarui dengan pengaturan baru.

### SecretCacheConfiguration withCacheItemTTL
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-withCacheItemTTL"></a>

`public SecretCacheConfiguration withCacheItemTTL(long cacheItemTTL)`

Mengatur TTL dalam milidetik untuk item yang di-cache. Ketika rahasia yang di-cache melebihi TTL ini, cache mengambil salinan rahasia baru dari file. [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/AWSSecretsManagerClient.html) Defaultnya adalah 1 jam dalam milidetik. Mengembalikan `SecretCacheConfiguration` objek diperbarui dengan pengaturan baru.

### SecretCacheConfiguration withVersionStage
<a name="retrieving-secrets_cache-java-ref_SecretCacheConfiguration_methods-withVersionStage"></a>

`public SecretCacheConfiguration withVersionStage(String versionStage)`

Menetapkan versi rahasia yang ingin Anda cache. Untuk informasi selengkapnya, lihat [Versi rahasia](whats-in-a-secret.md#term_version). Mengembalikan `SecretCacheConfiguration` objek diperbarui dengan pengaturan baru.

# SecretCacheHook
<a name="retrieving-secrets_cache-java-ref_SecretCacheHook"></a>

Antarmuka untuk menghubungkan [SecretCache](retrieving-secrets_cache-java-ref_SecretCache.md) ke dalam untuk melakukan tindakan pada rahasia yang disimpan dalam cache. 

## menempatkan
<a name="retrieving-secrets_cache-java-ref_SecretCacheHook-put"></a>

`Object put(final Object o)`

Siapkan objek untuk disimpan dalam cache.

Mengembalikan objek untuk menyimpan dalam cache.

## memperoleh
<a name="retrieving-secrets_cache-java-ref_SecretCacheHook-get"></a>

`Object get(final Object cachedObject)`

Turunkan objek dari objek yang di-cache.

Mengembalikan objek untuk kembali dari cache

# Connect ke database SQL menggunakan JDBC dengan kredensi dalam rahasia AWS Secrets Manager
<a name="retrieving-secrets_jdbc"></a>

Dalam aplikasi Java, Anda dapat menggunakan driver Secrets Manager SQL Connection untuk terhubung ke MySQL, PostgreSQL, MSSQLServer Oracle,, Db2, dan database Redshift menggunakan kredensil yang disimpan di Secrets Manager. Setiap driver membungkus driver JDBC dasar, sehingga Anda dapat menggunakan panggilan JDBC untuk mengakses database Anda. Namun, alih-alih memberikan nama pengguna dan kata sandi untuk koneksi, Anda memberikan ID rahasia. Pengemudi memanggil Secrets Manager untuk mengambil nilai rahasia, dan kemudian menggunakan kredensil dalam rahasia untuk terhubung ke database. Driver juga menyimpan kredensialnya menggunakan [pustaka caching sisi klien Java](retrieving-secrets_cache-java.md), sehingga koneksi future tidak memerlukan panggilan ke Secrets Manager. Secara default, cache diperbarui setiap jam dan juga ketika rahasia diputar. Untuk mengkonfigurasi cache, lihat[SecretCacheConfiguration](retrieving-secrets_cache-java-ref_SecretCacheConfiguration.md).

Anda dapat mengunduh kode sumber dari [GitHub](https://github.com/aws/aws-secretsmanager-jdbc ).

Untuk menggunakan driver Secrets Manager SQL Connection:
+ Aplikasi Anda harus di Java 8 atau lebih tinggi.
+ Rahasia Anda harus salah satu dari yang berikut:
  + Sebuah [rahasia database dalam struktur JSON diharapkan](reference_secret_json_structure.md). Untuk memeriksa format, di konsol Secrets Manager, lihat rahasia Anda dan pilih **Ambil nilai rahasia**. Atau, dalam AWS CLI, panggilan [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html).
  + [Rahasia yang dikelola](integrating_how-services-use-secrets_RDS.md) Amazon RDS. Untuk jenis rahasia ini, Anda harus menentukan titik akhir dan port saat Anda membuat koneksi.
  + Rahasia yang [dikelola](integrating_how-services-use-secrets_RS.md) Amazon Redshift. Untuk jenis rahasia ini, Anda harus menentukan titik akhir dan port saat Anda membuat koneksi.

Jika database Anda direplikasi ke Wilayah lain, untuk menyambung ke database replika di Wilayah lain, Anda menentukan titik akhir dan port regional saat Anda membuat koneksi. Anda dapat menyimpan informasi koneksi regional secara rahasia sebagai key/value pasangan tambahan, dalam parameter Penyimpanan Parameter SSM, atau dalam konfigurasi kode Anda. 

Untuk menambahkan driver ke proyek Anda, dalam file build Maven Anda`pom.xml`, tambahkan dependensi berikut untuk driver. Untuk informasi selengkapnya, lihat [Secrets Manager SQL Connection Library](https://search.maven.org/artifact/com.amazonaws.secretsmanager/aws-secretsmanager-jdbc) di situs web Maven Central Repository.

```
<dependency>
    <groupId>com.amazonaws.secretsmanager</groupId>
    <artifactId>aws-secretsmanager-jdbc</artifactId>
    <version>1.0.12</version>
</dependency>
```

Pengemudi menggunakan [https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials.html](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials.html). Jika Anda menjalankan driver di Amazon EKS, itu mungkin mengambil kredensil node yang dijalankannya alih-alih peran akun layanan. Untuk mengatasinya, tambahkan versi 1 `com.amazonaws:aws-java-sdk-sts` ke file proyek Gradle atau Maven Anda sebagai dependensi.

Untuk menyetel URL endpoint AWS PrivateLink DNS dan wilayah dalam file: `secretsmanager.properties`

```
drivers.vpcEndpointUrl = endpoint URL
drivers.vpcEndpointRegion = endpoint region
```

Untuk mengganti wilayah primer, atur variabel `AWS_SECRET_JDBC_REGION` lingkungan atau buat perubahan berikut ke `secretsmanager.properties` file:

```
drivers.region = region
```

**Izin yang diperlukan:**
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

Untuk informasi selengkapnya, lihat [Referensi izin](auth-and-access.md#reference_iam-permissions).

**Topics**
+ [Membangun koneksi ke database](#retrieving-secrets_jdbc_example)
+ [Buat koneksi dengan menentukan titik akhir dan port](#retrieving-secrets_jdbc_example_replica)
+ [Gunakan penyatuan koneksi c3p0 untuk membuat koneksi](#retrieving-secrets_jdbc_example_c3po)
+ [Gunakan penyatuan koneksi c3p0 untuk membuat koneksi dengan menentukan titik akhir dan port](#retrieving-secrets_jdbc_example_c3p0_replica)

## Membangun koneksi ke database
<a name="retrieving-secrets_jdbc_example"></a>

Contoh berikut menunjukkan cara membuat koneksi ke database menggunakan kredensil dan informasi koneksi secara rahasia. Setelah Anda memiliki koneksi, Anda dapat menggunakan panggilan JDBC untuk mengakses database. Untuk informasi selengkapnya, lihat [JDBC Basics](https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html) di situs web dokumentasi Java.

------
#### [ MySQL ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerMySQLDriver" ).newInstance();

// Retrieve the connection info from the secret using the secret ARN
String URL = "secretId";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ PostgreSQL ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerPostgreSQLDriver" ).newInstance();

// Retrieve the connection info from the secret using the secret ARN
String URL = "secretId";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ Oracle ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerOracleDriver" ).newInstance();

// Retrieve the connection info from the secret using the secret ARN
String URL = "secretId";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ MSSQLServer ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerMSSQLServerDriver" ).newInstance();

// Retrieve the connection info from the secret using the secret ARN
String URL = "secretId";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ Db2 ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerDb2Driver" ).newInstance();

// Retrieve the connection info from the secret using the secret ARN
String URL = "secretId";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ Redshift ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerRedshiftDriver" ).newInstance();

// Retrieve the connection info from the secret using the secret ARN
String URL = "secretId";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------

## Buat koneksi dengan menentukan titik akhir dan port
<a name="retrieving-secrets_jdbc_example_replica"></a>

Contoh berikut menunjukkan cara membuat koneksi ke database menggunakan kredensil secara rahasia dengan titik akhir dan port yang Anda tentukan. 

[Rahasia terkelola Amazon RDS](integrating_how-services-use-secrets_RDS.md) tidak menyertakan titik akhir dan port database. Untuk menyambung ke database menggunakan kredensi master dalam rahasia yang dikelola oleh Amazon RDS, Anda menentukannya dalam kode Anda. 

[Rahasia yang direplikasi ke Wilayah lain](replicate-secrets.md) dapat meningkatkan latensi untuk koneksi ke database regional, tetapi mereka tidak mengandung informasi koneksi yang berbeda dari rahasia sumber. Setiap replika adalah salinan rahasia sumber. Untuk menyimpan informasi koneksi regional secara rahasia, tambahkan lebih banyak key/value pasangan untuk titik akhir dan informasi port untuk Wilayah. 

Setelah Anda memiliki koneksi, Anda dapat menggunakan panggilan JDBC untuk mengakses database. Untuk informasi selengkapnya, lihat [JDBC Basics](https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html) di situs web dokumentasi Java.

------
#### [ MySQL ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerMySQLDriver" ).newInstance();

// Set the endpoint and port. You can also retrieve it from a key/value pair in the secret.
String URL = "jdbc-secretsmanager:mysql://example.com:3306";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ PostgreSQL ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerPostgreSQLDriver" ).newInstance();

// Set the endpoint and port. You can also retrieve it from a key/value pair in the secret.
String URL = "jdbc-secretsmanager:postgresql://example.com:5432/database";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ Oracle ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerOracleDriver" ).newInstance();

// Set the endpoint and port. You can also retrieve it from a key/value pair in the secret.
String URL = "jdbc-secretsmanager:oracle:thin:@example.com:1521/ORCL";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ MSSQLServer ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.secretsmanager.sql.AWSSecretsManagerMSSQLServerDriver" ).newInstance();

// Set the endpoint and port. You can also retrieve it from a key/value pair in the secret.
String URL = "jdbc-secretsmanager:sqlserver://example.com:1433";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ Db2 ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.com.rproxy.goskope.com.amazonaws.secretsmanager.sql.AWSSecretsManagerDb2Driver" ).newInstance();

// Set the endpoint and port. You can also retrieve it from a key/value pair in the secret.
String URL = "jdbc-secretsmanager:db2://example.com:50000";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------
#### [ Redshift ]

```
// Load the JDBC driver
Class.forName( "com.amazonaws.com.rproxy.goskope.com.amazonaws.secretsmanager.sql.AWSSecretsManagerRedshiftDriver" ).newInstance();

// Set the endpoint and port. You can also retrieve it from a key/value pair in the secret.
String URL = "jdbc-secretsmanager:redshift://example.com:5439";

// Populate the user property with the secret ARN to retrieve user and password from the secret
Properties info = new Properties( );
info.put( "user", "secretId" );

// Establish the connection
conn = DriverManager.getConnection(URL, info);
```

------

## Gunakan penyatuan koneksi c3p0 untuk membuat koneksi
<a name="retrieving-secrets_jdbc_example_c3po"></a>

Contoh berikut menunjukkan cara membuat kolam koneksi dengan `c3p0.properties` file yang menggunakan driver untuk mengambil kredensi dan informasi koneksi dari rahasia. Untuk `user` dan`jdbcUrl`, masukkan ID rahasia untuk mengkonfigurasi kumpulan koneksi. Kemudian Anda dapat mengambil koneksi dari kolam dan menggunakannya sebagai koneksi database lainnya. Untuk informasi selengkapnya, lihat [JDBC Basics](https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html) di situs web dokumentasi Java.

Untuk informasi lebih lanjut tentang c3p0, lihat [c3p0](https://www.mchange.com/projects/c3p0/) di situs web Machinery For Change. 

------
#### [ MySQL ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerMySQLDriver
c3p0.jdbcUrl=secretId
```

------
#### [ PostgreSQL ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerPostgreSQLDriver
c3p0.jdbcUrl=secretId
```

------
#### [ Oracle ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerOracleDriver
c3p0.jdbcUrl=secretId
```

------
#### [ MSSQLServer ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerMSSQLServerDriver
c3p0.jdbcUrl=secretId
```

------
#### [ Db2 ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerDb2Driver
c3p0.jdbcUrl=secretId
```

------
#### [ Redshift ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerRedshiftDriver
c3p0.jdbcUrl=secretId
```

------

## Gunakan penyatuan koneksi c3p0 untuk membuat koneksi dengan menentukan titik akhir dan port
<a name="retrieving-secrets_jdbc_example_c3p0_replica"></a>

Contoh berikut menunjukkan cara membuat kumpulan koneksi dengan `c3p0.properties` file yang menggunakan driver untuk mengambil kredensil secara rahasia dengan titik akhir dan port yang Anda tentukan. Kemudian Anda dapat mengambil koneksi dari kolam dan menggunakannya sebagai koneksi database lainnya. Untuk informasi selengkapnya, lihat [JDBC Basics](https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html) di situs web dokumentasi Java.

[Rahasia terkelola Amazon RDS](integrating_how-services-use-secrets_RDS.md) tidak menyertakan titik akhir dan port database. Untuk menyambung ke database menggunakan kredensi master dalam rahasia yang dikelola oleh Amazon RDS, Anda menentukannya dalam kode Anda. 

[Rahasia yang direplikasi ke Wilayah lain](replicate-secrets.md) dapat meningkatkan latensi untuk koneksi ke database regional, tetapi mereka tidak mengandung informasi koneksi yang berbeda dari rahasia sumber. Setiap replika adalah salinan rahasia sumber. Untuk menyimpan informasi koneksi regional secara rahasia, tambahkan lebih banyak key/value pasangan untuk titik akhir dan informasi port untuk Wilayah. 

------
#### [ MySQL ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerMySQLDriver
c3p0.jdbcUrl=jdbc-secretsmanager:mysql://example.com:3306
```

------
#### [ PostgreSQL ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerPostgreSQLDriver
c3p0.jdbcUrl=jdbc-secretsmanager:postgresql://example.com:5432/database
```

------
#### [ Oracle ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerOracleDriver
c3p0.jdbcUrl=jdbc-secretsmanager:oracle:thin:@example.com:1521/ORCL
```

------
#### [ MSSQLServer ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerMSSQLServerDriver
c3p0.jdbcUrl=jdbc-secretsmanager:sqlserver://example.com:1433
```

------
#### [ Db2 ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerDb2Driver
c3p0.jdbcUrl=jdbc-secretsmanager:db2://example.com:50000
```

------
#### [ Redshift ]

```
c3p0.user=secretId
c3p0.driverClass=com.amazonaws.secretsmanager.sql.AWSSecretsManagerRedshiftDriver
c3p0.jdbcUrl=jdbc-secretsmanager:redshift://example.com:5439
```

------

# Dapatkan nilai rahasia Secrets Manager menggunakan Java AWS SDK
<a name="retrieving-secrets-java-sdk"></a>

Dalam aplikasi, Anda dapat mengambil rahasia Anda dengan menelepon `GetSecretValue` atau `BatchGetSecretValue` di salah satu file. AWS SDKs Namun, kami menyarankan Anda menyimpan nilai rahasia Anda dengan menggunakan caching sisi klien. Rahasia caching meningkatkan kecepatan dan mengurangi biaya Anda.
+ Jika Anda menyimpan kredensyal database dalam rahasia, gunakan [driver koneksi SQL Secrets Manager](retrieving-secrets_jdbc.md) untuk terhubung ke database menggunakan kredensyal dalam rahasia. 
+ Untuk jenis rahasia lainnya, gunakan [komponen caching berbasis Java Secrets Manager](retrieving-secrets_cache-java.md) atau panggil SDK secara langsung dengan atau. [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/model/GetSecretValueResult.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/secretsmanager/model/GetSecretValueResult.html)

Contoh kode berikut menunjukkan cara menggunakan`GetSecretValue`.

**Izin yang diperlukan:** `secretsmanager:GetSecretValue`

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse;
import software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 *
 * We recommend that you cache your secret values by using client-side caching.
 *
 * Caching secrets improves speed and reduces your costs. For more information,
 * see the following documentation topic:
 *
 * https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html
 */
public class GetSecretValue {
    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <secretName>\s

                Where:
                    secretName - The name of the secret (for example, tutorials/MyFirstSecret).\s
                """;

        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }

        String secretName = args[0];
        Region region = Region.US_EAST_1;
        SecretsManagerClient secretsClient = SecretsManagerClient.builder()
                .region(region)
                .build();

        getValue(secretsClient, secretName);
        secretsClient.close();
    }

    public static void getValue(SecretsManagerClient secretsClient, String secretName) {
        try {
            GetSecretValueRequest valueRequest = GetSecretValueRequest.builder()
                    .secretId(secretName)
                    .build();

            GetSecretValueResponse valueResponse = secretsClient.getSecretValue(valueRequest);
            String secret = valueResponse.secretString();
            System.out.println(secret);

        } catch (SecretsManagerException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```