Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Penyedia kredensyal
Urutan di mana rantai penyedia kredensyal default menyelesaikan kredensyal diubah dengan versi 1.4.0 Untuk detailnya, lihat catatan di bawah ini.
Saat Anda mengirim permintaan ke Amazon Web Services menggunakan AWS SDK untuk Kotlin, permintaan harus ditandatangani secara kriptografis dengan kredensyal yang dikeluarkan oleh. AWS Kotlin SDK menandatangani permintaan secara otomatis untuk Anda. Untuk memperoleh kredensyal, SDK dapat menggunakan pengaturan konfigurasi yang terletak di beberapa tempat, misalnya properti sistem JVM, variabel lingkungan, AWS config file bersama dan filecredentials, dan metadata instans Amazon. EC2
SDK menggunakan abstraksi penyedia kredensyal untuk menyederhanakan proses pengambilan kredensyal dari berbagai sumber. SDK berisi beberapa implementasi penyedia kredensional.
Misalnya, Jika konfigurasi yang diambil menyertakan setelan akses masuk tunggal Pusat Identitas IAM dari config file bersama, SDK bekerja dengan Pusat Identitas IAM untuk mengambil kredensyal sementara yang digunakan untuk membuat permintaan. Layanan AWS Dengan pendekatan ini untuk memperoleh kredensyal, SDK menggunakan penyedia IAM Identity Center (juga dikenal sebagai penyedia kredensyal SSO). Bagian penyiapan panduan ini menjelaskan konfigurasi ini.
Untuk menggunakan penyedia kredensyal tertentu, Anda dapat menentukannya saat membuat klien layanan. Atau, Anda dapat menggunakan rantai penyedia kredensyal default untuk mencari pengaturan konfigurasi secara otomatis.
Rantai penyedia kredensyal default
Jika tidak ditentukan secara eksplisit pada konstruksi klien, SDK untuk Kotlin menggunakan penyedia kredensyal yang secara berurutan memeriksa setiap tempat di mana Anda dapat menyediakan kredensyal. Penyedia kredensyal default ini diimplementasikan sebagai rantai penyedia kredensyal.
Untuk menggunakan rantai default untuk menyediakan kredensyal dalam aplikasi Anda, buat klien layanan tanpa menyediakan properti secara eksplisit. credentialsProvider
val ddb = DynamoDbClient { region = "us-east-2" }
Untuk informasi selengkapnya tentang pembuatan klien layanan, lihat membangun dan mengonfigurasi klien.
Pelajari tentang rantai penyedia kredensial default
Rantai penyedia kredensyal default mencari konfigurasi kredensyal menggunakan urutan yang telah ditentukan berikut. Ketika pengaturan yang dikonfigurasi memberikan kredensyal yang valid, rantai berhenti.
- 1. AWS kunci akses (properti sistem JVM)
-
SDK mencari properti sistem
aws.accessKeyId,aws.secretAccessKey, danaws.sessionTokenJVM. - 2. AWS kunci akses (variabel lingkungan)
-
SDK mencoba memuat kredensyal dari variabel
AWS_ACCESS_KEY_IDdanAWS_SECRET_ACCESS_KEY, danAWS_SESSION_TOKENlingkungan. - 3. Token identitas web
-
SDK mencari variabel lingkungan
AWS_WEB_IDENTITY_TOKEN_FILEdanAWS_ROLE_ARN(atau propertiaws.webIdentityTokenFilesistem JVM dan).aws.roleArnBerdasarkan informasi token dan perannya, SDK memperoleh kredensyal sementara. - 4. Profil dalam file konfigurasi
-
Pada langkah ini, SDK menggunakan pengaturan yang terkait dengan profil. Secara default, SDK menggunakan
credentialsfile bersama AWSconfigdan, tetapi jika variabelAWS_CONFIG_FILElingkungan disetel, SDK menggunakan nilai itu. Jika variabelAWS_PROFILElingkungan (atau properti sistemaws.profileJVM) tidak disetel, SDK mencari profil “default”, jika tidak maka akan mencari profil yang cocok dengan nilai.AWS_PROFILE’sSDK mencari profil berdasarkan konfigurasi yang dijelaskan dalam paragraf sebelumnya dan menggunakan pengaturan yang ditentukan di sana. Jika setelan yang ditemukan oleh SDK berisi campuran setelan untuk pendekatan penyedia kredensyal yang berbeda, SDK menggunakan urutan berikut:
-
AWS tombol akses (file konfigurasi) - SDK menggunakan pengaturan untuk
aws_access_key_id,aws_access_key_id, danaws_session_token. -
Asumsikan konfigurasi peran - Jika SDK menemukan
role_arndansource_profileataucredential_sourcepengaturan, SDK mencoba untuk mengambil peran. Jika SDK menemukansource_profilesetelan, SDK akan mendapatkan kredensyal dari profil lain untuk menerima kredensyal sementara untuk peran yang ditentukan oleh.role_arnJika SDK menemukancredential_sourcesetelan, SDK akan mendapatkan kredensyal dari wadah Amazon ECS, EC2 instans Amazon, atau dari variabel lingkungan tergantung pada nilai setelan.credential_sourceKemudian menggunakan kredensil tersebut untuk memperoleh kredensil sementara untuk peran tersebut.Profil harus berisi
source_profilepengaturan ataucredential_sourcepengaturan, tetapi tidak keduanya. -
Konfigurasi token identitas web - Jika SDK menemukan
role_arndanweb_identity_token_filemengatur, ia memperoleh kredensyal sementara untuk mengakses AWS sumber daya berdasarkan dan token.role_arn -
Konfigurasi token SSO - Jika SDK menemukan
sso_session,sso_account_id,sso_role_namepengaturan (bersama dengansso-sessionbagian pendamping dalam file konfigurasi), SDK mengambil kredensyal sementara dari layanan Pusat Identitas IAM. -
Konfigurasi SSO lama - Jika SDK menemukan
sso_start_url,,, dansso_role_namepengaturansso_regionsso_account_id, SDK mengambil kredensyal sementara dari layanan Pusat Identitas IAM. -
Konfigurasi login - Jika SDK menemukan
login_sessionsetelan, SDK menggunakan kredensyal sementara dari sesi login, atau mencoba untuk menyegarkannya jika kedaluwarsa dalam waktu kurang dari 5 menit. Untuk mempelajari cara memulai sesi login, lihat panduan pengguna AWS CLI. -
Konfigurasi proses - Jika SDK menemukan
credential_processsetelan, SDK menggunakan nilai jalur untuk memanggil proses dan memperoleh kredensyal sementara.
-
- 5. Kredensyal kontainer
-
SDK mencari variabel lingkungan
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIatauAWS_CONTAINER_CREDENTIALS_FULL_URIdanAWS_CONTAINER_AUTHORIZATION_TOKEN_FILEatauAWS_CONTAINER_AUTHORIZATION_TOKEN. Ini menggunakan nilai-nilai ini untuk memuat kredensyal dari titik akhir HTTP yang ditentukan melalui permintaan GET. - 6. Kredensyal IMDS
-
SDK mencoba mengambil kredensyal dari Layanan Metadata Instance di titik akhir HTTP default atau yang dikonfigurasi. SDK hanya mendukung IMDSv2.
Jika kredensyal masih belum diselesaikan pada saat ini, pembuatan klien gagal dengan pengecualian.
Catatan: Ubah urutan resolusi kredensil
Urutan resolusi kredensyal yang dijelaskan di atas adalah terkini untuk 1.4.x+ rilis SDK untuk Kotlin. Sebelum 1.4.0 rilis, item nomor 3 dan 4 diaktifkan dan item 4a saat ini mengikuti item 4g saat ini.
Tentukan penyedia kredensyal
Anda dapat menentukan penyedia kredensyal alih-alih menggunakan rantai penyedia default. Pendekatan ini memberi Anda kontrol langsung atas kredensi mana yang digunakan SDK.
Misalnya, untuk menggunakan kredensyal untuk peran IAM yang diasumsikan, tentukan StsAssumeRoleCredentialsProvider kapan Anda membuat klien:
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = StsAssumeRoleCredentialsProvider() }
Anda juga dapat membuat rantai khusus (CredentialsProviderChain) yang menggabungkan beberapa penyedia dalam pesanan pilihan Anda.
Cache kredensyal dengan penyedia mandiri
penting
Rantai default menyimpan kredensil secara otomatis. Penyedia mandiri tidak menyimpan kredensyal cache. Untuk menghindari pengambilan kredensyal pada setiap panggilan API, bungkus penyedia Anda dengan file. CachedCredentialsProvider Penyedia yang di-cache mengambil kredensil baru hanya ketika kredensi saat ini kedaluwarsa.
Untuk menyimpan kredensi cache dengan penyedia mandiri, gunakan kelas: CachedCredentialsProvider
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = CachedCredentialsProvider(StsAssumeRoleCredentialsProvider()) }
Atau, gunakan fungsi cached() ekstensi untuk kode yang lebih ringkas:
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = StsAssumeRoleCredentialsProvider().cached() }