Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Rantai penyedia kredensi default di AWS SDK for Java 2.x
Rantai penyedia kredensi default dalam pencarian AWS kredensional AWS SDK for Java 2.x secara otomatis dalam urutan lokasi yang telah ditentukan sebelumnya, memungkinkan aplikasi untuk mengautentikasi dengan tanpa secara eksplisit menentukan sumber kredensi. Layanan AWS
Rantai penyedia kredensi default diimplementasikan oleh kelas. DefaultCredentialsProvider
Untuk menggunakan rantai penyedia kredensial default untuk menyediakan kredensional sementara, buat pembuat klien layanan tetapi jangan tentukan penyedia kredensional. Cuplikan kode berikut membuat DynamoDbClient
yang menggunakan rantai penyedia kredensial default untuk mencari dan mengambil pengaturan konfigurasi.
// Any external Region configuration is overridden. // The SDK uses the default credentials provider chain because no specific credentials provider is specified. Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build();
Urutan pengambilan setelan kredensialnya
Rantai penyedia kredensial default SDK for Java 2.x mencari konfigurasi di lingkungan Anda menggunakan urutan yang telah ditentukan sebelumnya.
-
Properti sistem Java
-
SDK menggunakan SystemPropertyCredentialsProvider
kelas untuk memuat kredensi sementara dari properti sistem aws.accessKeyId
,aws.secretAccessKey
, danaws.sessionToken
Java.catatan
Untuk informasi tentang cara mengatur properti sistem Java, lihat tutorial System Properties
di situs web resmi Java Tutorial.
-
-
Variabel-variabel lingkungan
-
SDK menggunakan EnvironmentVariableCredentialsProvider
kelas untuk memuat kredenal sementara dari variabel AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
, danAWS_SESSION_TOKEN
lingkungan.
-
-
Token identitas web dan peran IAM ARN
-
SDK menggunakan WebIdentityTokenFileCredentialsProvider
kelas untuk memuat kredensil dengan mengasumsikan peran menggunakan token identitas web. -
Penyedia kredensial mencari variabel lingkungan berikut atau properti sistem JVM:
-
AWS_WEB_IDENTITY_TOKEN_FILE or
aws.webIdentityTokenFile
-
AWS_ROLE_ARN
atauaws.roleArn
-
AWS_ROLE_SESSION_NAME
atauaws.roleSessionName
(opsional)
-
-
Setelah SDK memperoleh nilai, ia memanggil AWS Security Token Service (STS) dan menggunakan kredensil sementara yang dikembalikan untuk menandatangani permintaan.
-
Lingkungan runtime seperti Amazon Elastic Kubernetes Service (EKS) secara otomatis membuat token identitas web AWS SDKs tersedia, memungkinkan aplikasi memperoleh kredensi sementara. AWS
-
-
Yang dibagikan
credentials
danconfig
file-
SDK menggunakan pengaturan masuk tunggal IAM Identity Center atau kredensional sementara dari
[default]
profil di file bersama dan file. ProfileCredentialsProvidercredentials
config
Panduan Referensi AWS SDKs and Tools memiliki informasi terperinci tentang cara kerja SDK for Java dengan token masuk tunggal IAM Identity Center untuk mendapatkan kredenal sementara yang digunakan SDK untuk memanggil. Layanan AWS
catatan
config
Filecredentials
dan dibagikan oleh berbagai AWS SDKs dan Alat. Untuk informasi lebih lanjut, lihat The. aws/credentials and .aws/configfile di Panduan Referensi Alat AWS SDKs dan. -
Karena profil di berbagi
credentials
danconfig
file dapat berisi banyak set pengaturan yang berbeda,ProfileCredentialsProvider
delegasi ke serangkaian penyedia lain untuk mencari pengaturan di bawah[default]
profil:-
Kredensi dasar (kelas
StaticCredentialsProvider
): Ketika profil berisiaws_access_key_id
dan.aws_secret_access_key
-
Kredensial sesi (kelas
StaticSessionCredentialsProvider
): Ketika profil berisiaws_access_key_id
,aws_secret_access_key
, dan.aws_session_token
-
Kredensi proses (kelas
ProcessCredentialsProvider
): Ketika profil berisi.credential_process
-
Kredensial SSO (kelas
SsoCredentialsProvider
): Ketika profil berisi properti terkait SSO seperti,.sso_role_name
sso_account_id
-
Kredensial token identitas web (kelas
WebIdentityTokenCredentialsProvider
): Ketika profil berisirole_arn
dan.web_identity_token_file
-
Kredensial berbasis peran dengan profil sumber (kelas
StsAssumeRoleCredentialsProvider
): Ketika profil berisi dan.role_arn
source_profile
-
Kredensial berbasis peran dengan sumber kredensi (kelas
StsAssumeRoleWithSourceCredentialsProvider
): Saat profil berisi dan.role_arn
credential_source
-
Kapan
credential_source = Environment
: Menggunakan rantaiSystemPropertyCredentialsProvider
danEnvironmentVariableCredentialsProvider
-
Kapan
credential_source = Ec2InstanceMetadata
: Ini menggunakanInstanceProfileCredentialsProvider
-
Kapan
credential_source = EcsContainer
: Ini menggunakanContainerCredentialsProvider
-
-
-
-
Amazon ECS kredensi kontainer
-
SDK menggunakan ContainerCredentialsProvider
kelas untuk memuat kredenal sementara menggunakan variabel lingkungan berikut: -
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
atauAWS_CONTAINER_CREDENTIALS_FULL_URI
-
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
atauAWS_CONTAINER_AUTHORIZATION_TOKEN
-
Agen kontainer ECS secara otomatis menetapkan variabel
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
lingkungan, yang menunjuk ke titik akhir kredensi ECS. Variabel lingkungan lainnya biasanya diatur dalam skenario tertentu di mana titik akhir kredensi ECS standar tidak digunakan. -
-
Amazon EC2 kredensi yang disediakan peran IAM misalnya
-
SDK menggunakan InstanceProfileCredentialsProvider
kelas untuk memuat kredensil sementara dari layanan metadata. Amazon EC2
-
-
Jika SDK tidak dapat menemukan pengaturan konfigurasi yang diperlukan melalui semua langkah yang tercantum di atas, SDK akan menampilkan pengecualian dengan output yang mirip dengan berikut ini:
software.amazon.awssdk.core.exception.SdkClientException: Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain(credentialsProviders=[SystemPropertyCredentialsProvider(), EnvironmentVariableCredentialsProvider(), WebIdentityTokenCredentialsProvider(), ProfileCredentialsProvider(), ContainerCredentialsProvider(), InstanceProfileCredentialsProvider()])
Gunakan kode DefaultCredentialsProvider
dalam
Anda dapat secara eksplisit menggunakan rantai penyedia kredensi default dalam kode Anda. Ini secara fungsional setara dengan Anda yang tidak menentukan penyedia kredensional sama sekali, karena SDK digunakan secara default. DefaultCredentialsProvider
Namun, menggunakannya secara eksplisit dapat membuat kode Anda lebih mudah dibaca dan didokumentasikan sendiri. Ini jelas menunjukkan niat Anda untuk menggunakan rantai kredensil default.
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; public class ExplicitDefaultCredentialsExample { public static void main(String[] args) { // Explicitly create the DefaultCredentialsProvider. DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider .builder().build(); // Use it with any service client. S3Client s3Client = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(defaultCredentialsProvider) .build(); // Now you can use the client with the default credentials chain. s3Client.listBuckets(); } }
Saat Anda membangun penyedia kredensi default, Anda dapat memberikan konfigurasi lebih lanjut:
DefaultCredentialsProvider customizedProvider = DefaultCredentialsProvider.builder() .profileName("custom-profile") // Use a specific profile if the chain gets to the `ProfileCredentialsProvider` stage. .asyncCredentialUpdateEnabled(true) // Enable async credential updates. .build();
Pendekatan ini memberi Anda lebih banyak kontrol sambil tetap memberikan kenyamanan rantai kredensil default.