Caching kredensial di AWS SDK for Java 2.x - AWS SDK for Java 2.x

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