

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

# Membaca kredensi peran IAM di Amazon EC2 menggunakan SDK for Java 2.x
<a name="ec2-iam-roles"></a>

 Anda dapat menggunakan peran IAM untuk mengelola kredensional sementara untuk aplikasi yang berjalan pada instans EC2 dan membuat AWS CLI atau permintaan API. AWS Cara ini lebih dianjurkan daripada menyimpan kunci akses dalam instans EC2. Untuk menetapkan AWS peran ke instans EC2 dan membuatnya tersedia untuk semua aplikasinya, Anda membuat profil instance yang dilampirkan ke instance. Profil instans berisi peran dan memungkinkan program yang berjalan di instans EC2 mendapatkan kredensial sementara. Untuk informasi selengkapnya, lihat [Gunakan peran IAM untuk memberikan izin ke aplikasi yang berjalan di instans Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) dalam *Panduan Pengguna IAM*. 

Topik ini memberikan informasi tentang cara mengatur aplikasi Java Anda untuk berjalan pada instans EC2 dan memungkinkan AWS SDK for Java 2.x untuk memperoleh kredensi IAM peran.

## Memperoleh kredensi peran IAM dari lingkungan
<a name="default-provider-chain"></a>

Jika aplikasi Anda membuat klien AWS layanan menggunakan metode (atau `create` `builder().build()` metode), SDK for Java menggunakan rantai penyedia *kredensial default*. Rantai penyedia kredensial default mencari lingkungan eksekusi untuk elemen konfigurasi yang dapat diperdagangkan SDK untuk kredenal sementara. [Rantai penyedia kredensi default di AWS SDK for Java 2.x](credentials-chain.md)Bagian ini menjelaskan proses pencarian lengkap.

Langkah terakhir dalam rantai penyedia default hanya tersedia ketika aplikasi Anda berjalan pada sebuah Amazon EC2 instance. Pada langkah ini, SDK menggunakan `InstanceProfileCredentialsProvider` untuk membaca peran IAM yang ditentukan dalam profil instans EC2. SDK kemudian memperoleh kredensi sementara untuk peran IAM tersebut.

Meskipun kredensi ini bersifat sementara dan pada akhirnya akan kedaluwarsa, `InstanceProfileCredentialsProvider` secara berkala menyegarkannya untuk Anda sehingga mereka terus mengizinkan akses ke. AWS

## Memperoleh kredensi peran IAM secara terprogram
<a name="programmatic-configuration-for-IAM-role"></a>

Sebagai alternatif dari rantai penyedia kredensial default yang pada akhirnya menggunakan `InstanceProfileCredentialsProvider` on EC2, Anda dapat mengonfigurasi klien layanan secara eksplisit dengan file. `InstanceProfileCredentialsProvider` Pendekatan ini ditunjukkan dalam cuplikan berikut.

```
S3Client s3 = S3Client.builder()
       .credentialsProvider(InstanceProfileCredentialsProvider.create())
       .build();
```

## Dapatkan kredensi peran IAM dengan aman
<a name="securely-read-IAM-role_credentials"></a>

Secara default, instans EC2 menjalankan [IMDS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) (Layanan Metadata Instans) yang memungkinkan SDK mengakses informasi seperti `InstanceProfileCredentialsProvider` peran IAM yang telah dikonfigurasi. Instans EC2 menjalankan dua versi IMDS secara default:
+ Layanan Metadata Instance Versi 1 (IMDSv1) — sebuah metode request/response 
+ Instance Metadata Service Version 2 (IMDSv2) — metode berorientasi sesi

[IMDSv2 adalah pendekatan yang lebih aman](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/) daripada IMDSv1.

Secara default, Java SDK pertama kali mencoba IMDSv2 untuk mendapatkan peran IAM, tetapi jika gagal, ia mencoba. IMDSv1 Namun, karena kurang IMDSv1 aman, AWS merekomendasikan penggunaan IMDSv2 hanya dan untuk menonaktifkan SDK agar tidak mencoba IMDSv1. 

Untuk menggunakan pendekatan yang lebih aman, nonaktifkan SDK agar tidak digunakan IMDSv1 dengan memberikan salah satu pengaturan berikut dengan nilai. `true`
+ Variabel lingkungan: `AWS_EC2_METADATA_V1_DISABLED`
+ Properti sistem JVM: aws. `disableEc2MetadataV1`
+ Pengaturan file konfigurasi bersama: `ec2_metadata_v1_disabled`

Dengan salah satu pengaturan ini disetel ke`true`, SDK tidak memuat kredensi peran IMDS dengan menggunakan IMDSv1 jika panggilan awal gagal. IMDSv2 