

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

# Memecahkan masalah dalam aplikasi DynamoDB Encryption Client Anda
<a name="troubleshooting"></a>

**catatan**  
Pustaka enkripsi sisi klien kami [diubah namanya menjadi AWS Database Encryption SDK](DDBEC-rename.md). Topik berikut memberikan informasi tentang versi 1. *x* —2. *x* dari DynamoDB Encryption Client untuk Java dan versi 1. *x* —3. *x* dari Klien Enkripsi DynamoDB untuk Python. Untuk informasi selengkapnya, lihat [SDK Enkripsi AWS Database untuk dukungan versi DynamoDB](legacy-dynamodb-encryption-client.md#legacy-support).

Bagian ini menjelaskan masalah yang mungkin Anda alami saat menggunakan DynamoDB Encryption Client dan menawarkan saran-saran untuk menyelesaikannya.

Untuk memberikan umpan balik tentang Klien Enkripsi DynamoDB, ajukan masalah di [aws-dynamodb-encryption-java](https://github.com/aws/aws-dynamodb-encryption-java/)atau repositori. [aws-dynamodb-encryption-python](https://github.com/aws/aws-dynamodb-encryption-python/) GitHub 

Untuk memberikan umpan balik tentang dokumentasi ini, gunakan tautan umpan balik pada halaman mana pun.

**Topics**
+ [Akses ditolak](#kms-permissions)
+ [Verifikasi tanda tangan gagal](#change-data-model)
+ [Masalah dengan tabel global versi lama](#fix-global-tables)
+ [Kinerja yang buruk dari Penyedia Terbaru](#mrp-ttl-delay)

## Akses ditolak
<a name="kms-permissions"></a>

**Masalah**: Aplikasi Anda ditolak aksesnya ke sumber daya yang dibutuhkan.

**Saranan**: Pelajari tentang izin yang diperlukan dan tambahkan izin tersebut ke konteks keamanan di mana aplikasi Anda dijalankan.

**Detail**

Untuk menjalankan aplikasi yang menggunakan pustaka DynamoDB Encryption Client, pemanggil harus memiliki izin untuk menggunakan komponennya. Jika tidak, aksesnya ke elemen yang dibutuhkan akan ditolak. 
+ DynamoDB Encryption Client tidak memerlukan akun Amazon Web Services (AWS) atau tergantung pada layanan AWS mana pun. [Namun, jika aplikasi Anda menggunakan AWS, Anda memerlukan Akun AWS dan [pengguna yang memiliki izin](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) untuk menggunakan akun tersebut.](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/)
+ DynamoDB Encryption Client tidak memerlukan Amazon DynamoDB. Namun, Jika aplikasi yang menggunakan klien membuat tabel DynamoDB, menempatkan item ke dalam tabel, atau mendapatkan item dari tabel, pemanggil harus memiliki izin untuk menggunakan operasi DynamoDB yang diperlukan dalam Anda. Akun AWS Untuk detailnya, lihat [topik kontrol akses](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) di *Panduan Developer Amazon DynamoDB*.
+ Jika aplikasi Anda menggunakan [class client helper](python-using.md#python-helpers) di DynamoDB Encryption Client untuk Python, pemanggil harus memiliki izin untuk memanggil operasi DynamoDB. [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html)
+ Klien Enkripsi DynamoDB tidak AWS Key Management Service memerlukan ().AWS KMS Namun, jika aplikasi Anda menggunakan [Penyedia Materi KMS Langsung](direct-kms-provider.md), atau menggunakan [Penyedia Terbaru dengan toko penyedia](most-recent-provider.md) yang menggunakan AWS KMS, penelepon harus memiliki izin untuk menggunakan AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)dan [Mendekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) operasi.

## Verifikasi tanda tangan gagal
<a name="change-data-model"></a>

**Masalah**: Item tidak dapat didekripsi karena verifikasi tanda tangan gagal. Item juga mungkin tidak dienkripsi dan ditandatangani sesuai keinginan Anda.

**Saranan**: Pastikan bahwa tindakan atribut yang Anda berikan mencakup semua atribut dalam item. Saat mendekripsi item, pastikan untuk memberikan tindakan atribut yang sesuai dengan tindakan yang digunakan untuk mengenkripsi item.

**Detail**

[Tindakan atribut](DDBEC-legacy-concepts.md#legacy-attribute-actions) yang Anda berikan memberi tahu DynamoDB Encryption Client atribut mana yang perlu dienkripsi dan ditandatangani, atribut mana yang perlu ditanandatangani (tapi tidak dienkripsi), dan mana yang diabaikan. 

Jika tindakan atribut yang Anda tentukan tidak mencakup semua atribut dalam item, item mungkin tidak dienkripsi dan ditandatangani sesuai keinginan Anda. Jika tindakan atribut yang Anda berikan saat mendekripsi item berbeda dari tindakan atribut yang Anda berikan saat mengenkripsi item, verifikasi tanda tangan mungkin gagal. Ini adalah masalah khusus untuk aplikasi terdistribusi di mana tindakan atribut baru mungkin tidak disebarkan ke semua host.

Kesalahan validasi tanda tangan sulit untuk diselesaikan. Untuk membantu mencegahnya, lakukan tindakan pencegahan ekstra saat mengubah model data Anda. Lihat perinciannya di [Mengubah model data Anda](data-model.md).

## Masalah dengan tabel global versi lama
<a name="fix-global-tables"></a>

**Masalah**: Item dalam tabel global Amazon DynamoDB versi lama tidak dapat didekripsi karena verifikasi tanda tangan gagal.

**Saran**: Tetapkan tindakan atribut agar bidang replikasi yang dicadangkan tidak dienkripsi atau ditandatangani.

**Detail**

Anda dapat menggunakan Klien Enkripsi DynamoDB dengan tabel global [DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html). Kami menyarankan Anda menggunakan tabel global dengan kunci [KMS Multi-wilayah dan mereplikasi kunci](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) KMS ke semua Wilayah AWS tempat tabel global direplikasi.

Dimulai dengan tabel global [versi 2019.11.21](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V2.html), Anda dapat menggunakan tabel global dengan Klien Enkripsi DynamoDB tanpa konfigurasi khusus. Namun, jika Anda menggunakan tabel global [versi 2017.11.29](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.V1.html), Anda harus memastikan bahwa bidang replikasi yang dicadangkan tidak dienkripsi atau ditandatangani.

[Jika Anda menggunakan tabel global versi 2017.11.29, Anda harus mengatur tindakan atribut untuk atribut berikut `DO_NOTHING` di [`@DoNotTouch`Java](java-using.md#attribute-actions-java) atau Python.](python-using.md#python-attribute-actions)
+ `aws:rep:deleting`
+ `aws:rep:updatetime`
+ `aws:rep:updateregion`

Jika Anda menggunakan versi lain dari tabel global, tidak ada tindakan yang diperlukan.

## Kinerja yang buruk dari Penyedia Terbaru
<a name="mrp-ttl-delay"></a>

**Masalah**: Aplikasi Anda kurang responsif, terutama setelah diperbarui ke versi DynamoDB Encryption Client yang lebih baru.

**Saran**: Sesuaikan time-to-live nilai dan ukuran cache.

**Detail**

Penyedia Terbaru dirancang untuk meningkatkan kinerja aplikasi yang menggunakan DynamoDB Encryption Client dengan mengizinkan penggunaan kembali secara terbatas materi kriptografis. Bila Anda mengonfigurasi Penyedia Terbaru untuk aplikasi Anda, Anda harus menyeimbangkan peningkatan kinerja dengan masalah keamanan yang timbul dari caching dan penggunaan kembali. 

Dalam versi yang lebih baru dari DynamoDB Encryption Client, time-to-live nilai (TTL) menentukan berapa lama penyedia materi kriptografi cache () dapat digunakan. CMPs TTL juga menentukan seberapa sering Penyedia Terbaru memeriksa versi baru dari CMP. 

Jika TTL terlalu lama, aplikasi Anda mungkin melanggar aturan bisnis atau standar keamanan Anda. Jika TTL terlalu singkat, panggilan berulang ke toko penyedia dapat menyebabkan toko penyedia Anda untuk membatasi permintaan dari aplikasi Anda dan aplikasi lain yang juga menggunakan akun layanan Anda. Untuk mengatasi masalah ini, sesuaikan TTL dan ukuran cache ke nilai yang memenuhi sasaran latensi dan ketersediaan Anda serta sesuai dengan standar keamanan Anda. Untuk detailnya, lihat [Menetapkan time-to-live nilai](most-recent-provider.md#most-recent-provider-ttl).