Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Caching kredensial di AWS SDK for Java 2.x
AWS SDK for Java 2.x Mengimplementasikan caching kredenal untuk meningkatkan kinerja dan mengurangi panggilan ke sumber kredensional. Bagian ini menjelaskan cara kerja caching kredensil dan bagaimana Anda dapat mengonfigurasinya untuk aplikasi Anda.
Memahami caching penyedia kredensi
Penyedia kredensi di SDK for Java 2.x menggunakan strategi caching yang berbeda:
-
Caching kredenal internal: Banyak penyedia menyimpan kredensi cache yang mereka ambil.
-
Penyegaran otomatis: Penyedia dengan kredenal cache menerapkan mekanisme penyegaran.
Penyedia dengan caching kredensil internal
Penyedia kredensial berikut menyimpan kredensil secara internal, bahkan saat Anda membuat instance baru:
-
Penyedia kredensial profil instans: Cache kredensional dari layanan metadata Amazon. EC2
-
Penyedia kredensial kontainer: Cache kredensil dari titik akhir metadata kontainer.
-
Penyedia berbasis STS: Cache kredensi sementara dari AWS Security Token Service (STS).
-
Penyedia token identitas web: Kredensi cache yang diperoleh dari token identitas web.
-
Process credentials provider: Cache kredensial dari proses eksternal.
Penyedia tanpa caching internal
Penyedia berikut tidak menerapkan caching internal:
-
Penyedia Kredensial Variabel Lingkungan
-
Penyedia Kredensial Properti Sistem
-
Penyedia Kredensial Statis
Mengkonfigurasi caching kredenal
Anda dapat menyesuaikan perilaku caching saat membuat penyedia kredensi:
Waktu Basi
Kontrol saat kredensil dianggap basi dan perlu disegarkan:
.staleTime(Duration.ofMinutes(2)) // Consider stale 2 minutes before expiration.
Waktu Prefetch
Menentukan kapan harus mulai menyegarkan kredensil sebelum kedaluwarsa:
.prefetchTime(Duration.ofMinutes(10)) // Start refresh 10 minutes before expiration.
Pembaruan Asinkron
Mengaktifkan penyegaran kredenal latar belakang:
.asyncCredentialUpdateEnabled(true) // Refresh credentials in background thread.
Durasi Sesi
Untuk penyedia berbasis STS, mengontrol berapa lama kredensi sementara tetap valid:
.refreshRequest(r -> r.durationSeconds(3600)) // 1 hour session.
Contoh konfigurasi kredensial caching
Sebagai contoh mengonfigurasi caching untuk implementasi penyedia kredensional, Anda mungkin ingin SDK menggunakan utas latar belakang untuk mengambil (mengambil terlebih dahulu) kredenal sebelum kedaluwarsa. Dengan begitu Anda dapat menghindari panggilan pemblokiran yang mengambil kredensil baru.
Berikut ini menunjukkan contoh yang membuat thread StsAssumeRoleCredentialsProvider
yang menggunakan thread latar belakang untuk mengambil kredenal sebelumnya dengan menyetel asyncCredentialUpdateEnabled
properti ke true
pada builder:
StsAssumeRoleCredentialsProvider provider = StsAssumeRoleCredentialsProvider.builder() .refreshRequest(r -> r .roleArn("arn:aws:iam::111122223333:role/example-role") .roleSessionName("example-session") .durationSeconds(3600)) // 1 hour session .staleTime(Duration.ofMinutes(5)) // Consider stale 5 minutes before expiration .prefetchTime(Duration.ofMinutes(10)) // Start refresh 10 minutes before expiration .asyncCredentialUpdateEnabled(true) // Refresh in background .build(); S3Client s3 = S3Client.builder() .credentialsProvider(provider) .build();
Ketika Anda menjalankan operasi s3Client
untuk pertama kalinya, an AssumeRoleRequest
dikirim ke AWS Security Token Service (STS). STS mengembalikan kredensi sementara yang berlaku selama 15 menit (900 detik). s3Client
Instance menggunakan kredensil yang di-cache hingga waktunya untuk menyegarkannya sebelum 15 menit berlalu. Secara default, SDK mencoba mengambil kredensi baru untuk sesi baru antara 5 menit dan 1 menit sebelum waktu kedaluwarsa sesi saat ini. Jendela pre-fetch dapat dikonfigurasi dengan menggunakan properti and. prefetchTime
staleTime
Anda dapat mengonfigurasi penyedia kredensi berbasis sesi berikut dengan cara yang sama:
-
StsWebIdentityTokenFileCredentialsProvider
-
StsGetSessionTokenCredentialsProvider
-
StsGetFederationTokenCredentialsProvider
-
StsAssumeRoleWithWebIdentityCredentialsProvider
-
StsAssumeRoleWithSamlCredentialsProvider
-
StsAssumeRoleCredentialsProvider
-
DefaultCredentialsProvider
(saat mendelegasikan ke penyedia kredensional yang menggunakan sesi) -
ProcessCredentialsProvider
-
WebIdentityTokenFileCredentialsProvider
-
ContainerCredentialsProvider
-
InstanceProfileCredentialsProvider
Memahami caching kredenal membantu Anda mengoptimalkan kinerja dan keandalan aplikasi saat bekerja dengannya. Layanan AWS