

 [Panduan Referensi API AWS SDK untuk JavaScript V3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) menjelaskan secara rinci semua operasi API untuk AWS SDK untuk JavaScript versi 3 (V3). 

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

# Tetapkan kredensialnya
<a name="setting-credentials"></a>

AWS menggunakan kredensi untuk mengidentifikasi siapa yang memanggil layanan dan apakah akses ke sumber daya yang diminta diizinkan. 

Baik berjalan di browser web atau di server Node.js, JavaScript kode Anda harus mendapatkan kredensi yang valid sebelum dapat mengakses layanan melalui API. Kredensial dapat diatur per layanan, dengan meneruskan kredensional langsung ke objek layanan.

Ada beberapa cara untuk mengatur kredensi yang berbeda antara Node.js dan JavaScript di browser web. Topik di bagian ini menjelaskan cara mengatur kredensional di Node.js atau browser web. Dalam setiap kasus, opsi disajikan dalam urutan yang disarankan.

## Praktik terbaik untuk kredensional
<a name="credentials-best-practices"></a>

Menetapkan kredensional dengan benar memastikan bahwa aplikasi atau skrip browser Anda dapat mengakses layanan dan sumber daya yang diperlukan sambil meminimalkan paparan terhadap masalah keamanan yang dapat memengaruhi aplikasi penting misi atau membahayakan data sensitif.

Prinsip penting untuk diterapkan saat menetapkan kredensional adalah selalu memberikan hak istimewa paling sedikit yang diperlukan untuk tugas Anda. Lebih aman untuk memberikan izin minimal pada sumber daya Anda dan menambahkan izin lebih lanjut sesuai kebutuhan, daripada memberikan izin yang melebihi hak istimewa paling sedikit dan, sebagai hasilnya, diminta untuk memperbaiki masalah keamanan yang mungkin Anda temukan nanti. Misalnya, kecuali Anda perlu membaca dan menulis sumber daya individual, seperti objek di bucket Amazon S3 atau tabel DynamoDB, setel izin tersebut hanya untuk dibaca.

Untuk informasi selengkapnya tentang pemberian hak istimewa paling sedikit, lihat bagian [Hibah hak istimewa terkecil](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) dari topik Praktik Terbaik di Panduan Pengguna *IAM*.

**Topics**
+ [Praktik terbaik untuk kredensional](#credentials-best-practices)
+ [Setel kredensial di Node.js](setting-credentials-node.md)
+ [Mengatur kredensi di browser web](setting-credentials-browser.md)

# Setel kredensial di Node.js
<a name="setting-credentials-node"></a>

Kami merekomendasikan bahwa pengguna baru yang mengembangkan secara lokal dan tidak diberikan metode otentikasi oleh majikan mereka untuk mengatur. AWS IAM Identity Center Untuk informasi selengkapnya, lihat [Otentikasi SDK dengan AWS](getting-your-credentials.md).

Ada beberapa cara di Node.js untuk memasok kredensialmu ke SDK. Beberapa di antaranya lebih aman dan yang lain memberikan kenyamanan yang lebih besar saat mengembangkan aplikasi. Saat mendapatkan kredensi di Node.js, berhati-hatilah untuk mengandalkan lebih dari satu sumber, seperti variabel lingkungan dan file JSON yang Anda muat. Anda dapat mengubah izin di mana kode Anda berjalan tanpa menyadari perubahan telah terjadi.

AWS SDK untuk JavaScript V3 menyediakan rantai penyedia kredensi default di Node.js, sehingga Anda tidak diharuskan untuk menyediakan penyedia kredensi secara eksplisit. [Rantai penyedia kredensi](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain) default mencoba menyelesaikan kredensi dari berbagai sumber berbeda dalam prioritas tertentu, hingga kredensi dikembalikan dari salah satu sumber. [Anda dapat menemukan rantai penyedia kredensi untuk SDK untuk JavaScript V3 di sini.](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromnodeproviderchain)

## Rantai penyedia kredensi
<a name="credchain"></a>

Semua SDKs memiliki serangkaian tempat (atau sumber) yang mereka periksa untuk mendapatkan kredensi yang valid untuk digunakan untuk membuat permintaan ke sebuah. Layanan AWS Setelah kredensi yang valid ditemukan, pencarian dihentikan. Pencarian sistematis ini disebut rantai penyedia kredensi default. 

Untuk setiap langkah dalam rantai, ada berbagai cara untuk mengatur nilai. Menetapkan nilai secara langsung dalam kode selalu diutamakan, diikuti dengan pengaturan sebagai variabel lingkungan, dan kemudian di file bersama AWS `config`. Untuk informasi selengkapnya, lihat [Prioritas pengaturan di Panduan Referensi](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#precedenceOfSettings) *Alat AWS SDKs dan Alat*. 

*Panduan Referensi AWS SDKs dan Alat* memiliki informasi tentang pengaturan konfigurasi SDK yang digunakan oleh semua AWS SDKs dan. AWS CLI Untuk mempelajari lebih lanjut tentang cara mengonfigurasi SDK melalui AWS `config` file bersama, lihat File [konfigurasi dan kredensial bersama](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html). Untuk mempelajari lebih lanjut tentang cara mengonfigurasi SDK melalui pengaturan variabel lingkungan, lihat [Dukungan variabel lingkungan](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html).

Untuk mengautentikasi dengan AWS, AWS SDK untuk JavaScript memeriksa penyedia kredensi dalam urutan yang tercantum dalam tabel berikut.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html)

Jika Anda mengikuti pendekatan yang disarankan bagi pengguna baru untuk memulai, Anda menyiapkan AWS IAM Identity Center [Otentikasi SDK dengan AWS](getting-your-credentials.md) autentikasi selama topik Memulai. Metode otentikasi lainnya berguna untuk situasi yang berbeda. Untuk menghindari risiko keamanan, kami sarankan untuk selalu menggunakan kredensi jangka pendek. Untuk prosedur metode otentikasi lainnya, lihat [Otentikasi dan akses di Panduan](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) *Referensi Alat AWS SDKs dan Alat*.

Topik di bagian ini menjelaskan cara memuat kredensi ke dalam Node.js.

**Topics**
+ [Rantai penyedia kredensi](#credchain)
+ [Memuat kredensi di Node.js dari peran IAM untuk Amazon EC2](loading-node-credentials-iam.md)
+ [Memuat kredensi untuk fungsi Lambda Node.js](loading-node-credentials-lambda.md)

# Memuat kredensi di Node.js dari peran IAM untuk Amazon EC2
<a name="loading-node-credentials-iam"></a>

Jika Anda menjalankan aplikasi Node.js di instans Amazon EC2, Anda dapat memanfaatkan peran IAM untuk Amazon EC2 agar secara otomatis memberikan kredensi ke instans. Jika Anda mengonfigurasi instans Anda untuk menggunakan peran IAM, SDK secara otomatis memilih kredenal IAM untuk aplikasi Anda, sehingga tidak perlu menyediakan kredenal secara manual.

Untuk informasi selengkapnya tentang menambahkan peran IAM ke instans Amazon EC2, [lihat peran IAM untuk Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) EC2.

# Memuat kredensi untuk fungsi Lambda Node.js
<a name="loading-node-credentials-lambda"></a>

Saat Anda membuat AWS Lambda fungsi, Anda harus membuat peran IAM khusus yang memiliki izin untuk menjalankan fungsi tersebut. Peran ini disebut *peran eksekusi*. Saat menyiapkan fungsi Lambda, Anda harus menentukan peran IAM yang Anda buat sebagai peran eksekusi yang sesuai.

Peran eksekusi menyediakan fungsi Lambda dengan kredenal yang dibutuhkan untuk menjalankan dan memanggil layanan web lainnya. Akibatnya, Anda tidak perlu memberikan kredensi ke kode Node.js yang Anda tulis dalam fungsi Lambda.

*Untuk informasi selengkapnya tentang membuat peran eksekusi Lambda, lihat [Mengelola izin: Menggunakan peran IAM (peran eksekusi)](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role) di Panduan Pengembang.AWS Lambda *

# Mengatur kredensi di browser web
<a name="setting-credentials-browser"></a>

Ada beberapa cara untuk memasok kredensional Anda ke SDK dari skrip browser. Beberapa di antaranya lebih aman dan yang lain memberikan kenyamanan yang lebih besar saat mengembangkan skrip.

 Berikut adalah cara-cara Anda dapat memberikan kredensi Anda, dalam urutan rekomendasi:

1. Menggunakan Identitas Amazon Cognito untuk mengautentikasi pengguna dan menyediakan kredensional

1. Menggunakan identitas federasi web

**Awas**  
Kami tidak menyarankan hard coding AWS kredensional Anda dalam skrip Anda. Kredensi pengkodean keras menimbulkan risiko mengekspos ID kunci akses dan kunci akses rahasia Anda.

**Topics**
+ [Menggunakan Identitas Amazon Cognito untuk mengautentikasi pengguna](loading-browser-credentials-cognito.md)

# Menggunakan Identitas Amazon Cognito untuk mengautentikasi pengguna
<a name="loading-browser-credentials-cognito"></a>

Cara yang disarankan untuk mendapatkan AWS kredensi untuk skrip browser Anda adalah dengan menggunakan klien kredensi Identitas Amazon Cognito. `CognitoIdentityClient` Amazon Cognito memungkinkan otentikasi pengguna melalui penyedia identitas pihak ketiga.

Untuk menggunakan Identitas Amazon Cognito, Anda harus terlebih dahulu membuat kumpulan identitas di konsol Amazon Cognito. Kumpulan identitas mewakili grup identitas yang disediakan aplikasi Anda kepada pengguna Anda. Identitas yang diberikan kepada pengguna secara unik mengidentifikasi setiap akun pengguna. Identitas Amazon Cognito identitas bukan kredensial. Mereka ditukar dengan kredensional menggunakan dukungan federasi identitas web di AWS Security Token Service ().AWS STS

Amazon Cognito membantu Anda mengelola abstraksi identitas di beberapa penyedia identitas. Identitas yang dimuat kemudian ditukar dengan kredensi di. AWS STS

## Konfigurasikan objek kredensial Identitas Amazon Cognito
<a name="browser-cognito-configuration"></a>

Jika Anda belum membuatnya, buat kumpulan identitas untuk digunakan dengan skrip browser Anda di konsol Amazon [Cognito sebelum Anda mengonfigurasi klien Amazon Cognito](https://console.aws.amazon.com/cognito) Anda. Buat dan kaitkan peran IAM yang diautentikasi dan tidak diautentikasi untuk kumpulan identitas Anda. Untuk informasi selengkapnya, lihat [Tutorial: Membuat kumpulan identitas](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-identity-pool.html) di Panduan *Pengembang Amazon Cognito*.

Pengguna yang tidak diautentikasi tidak memverifikasi identitasnya, membuat peran ini sesuai untuk pengguna tamu aplikasi Anda atau jika tidak masalah jika pengguna telah memverifikasi identitasnya. Pengguna yang diautentikasi masuk ke aplikasi Anda melalui penyedia identitas pihak ketiga yang memverifikasi identitas mereka. Pastikan Anda menjangkau izin sumber daya dengan tepat sehingga Anda tidak memberikan akses kepada mereka dari pengguna yang tidak terautentikasi.

Setelah Anda mengonfigurasi kumpulan identitas, gunakan `fromCognitoIdentityPool` metode dari `@aws-sdk/credential-providers` untuk mengambil kredensional dari kumpulan identitas. Dalam contoh berikut membuat klien Amazon S3, ganti *AWS\$1REGION* dengan wilayah dan *IDENTITY\$1POOL\$1ID* dengan ID kumpulan identitas.

```
// Import required AWS SDK clients and command for Node.js
import {S3Client} from "@aws-sdk/client-s3";
import {fromCognitoIdentityPool} from "@aws-sdk/credential-providers";

const REGION = AWS_REGION;

const s3Client = new S3Client({
  region: REGION,
  credentials: fromCognitoIdentityPool({
    clientConfig: { region: REGION }, // Configure the underlying CognitoIdentityClient.
    identityPoolId: 'IDENTITY_POOL_ID',
    logins: {
            // Optional tokens, used for authenticated login.
        },
  })
});
```

Properti opsional `logins` adalah peta nama penyedia identitas untuk token identitas bagi penyedia tersebut. Bagaimana Anda bisa mendapatkan token dari penyedia identitas Anda tergantung pada penyedia yang Anda gunakan. Misalnya, jika Anda menggunakan kumpulan pengguna Amazon Cognito sebagai penyedia otentikasi, Anda dapat menggunakan metode yang mirip dengan yang di bawah ini.

```
// Get the Amazon Cognito ID token for the user. 'getToken()' below.
let idToken = getToken();
let COGNITO_ID = "COGNITO_ID"; // 'COGNITO_ID' has the format 'cognito-idp.REGION.amazonaws.com/COGNITO_USER_POOL_ID'
let loginData = {
  [COGNITO_ID]: idToken,
};
const s3Client = new S3Client({
    region: REGION,
    credentials: fromCognitoIdentityPool({
    clientConfig: { region: REGION }, // Configure the underlying CognitoIdentityClient.
    identityPoolId: 'IDENTITY_POOL_ID',
    logins: loginData
  })
});

// Strips the token ID from the URL after authentication.
window.getToken = function () {
  var idtoken = window.location.href;
  var idtoken1 = idtoken.split("=")[1];
  var idtoken2 = idtoken1.split("&")[0];
  var idtoken3 = idtoken2.split("&")[0];
  return idtoken3;
};
```

## Mengalihkan Pengguna yang Tidak Diautentikasi ke Pengguna yang Diautentikasi
<a name="browser-switching-unauthenticated-users"></a>

Amazon Cognito mendukung pengguna yang diautentikasi dan tidak diautentikasi. Pengguna yang tidak diautentikasi menerima akses ke sumber daya Anda meskipun mereka tidak masuk dengan penyedia identitas Anda. Tingkat akses ini berguna untuk menampilkan konten kepada pengguna sebelum masuk. Setiap pengguna yang tidak diautentikasi memiliki identitas unik di Amazon Cognito meskipun mereka belum masuk dan diautentikasi secara individual.

### Pengguna Awalnya Tidak Diautentikasi
<a name="browser-initially-unauthenticated-user"></a>

Pengguna biasanya memulai dengan peran yang tidak diautentikasi, di mana Anda menetapkan properti kredensial objek konfigurasi Anda tanpa properti. `logins` Dalam hal ini, kredensi default Anda mungkin terlihat seperti berikut:

```
// Import the required AWS SDK untuk JavaScript v3 modules.                   
import {fromCognitoIdentityPool} from "@aws-sdk/credential-providers";
// Set the default credentials.
const creds = fromCognitoIdentityPool({
  identityPoolId: 'IDENTITY_POOL_ID',
  clientConfig: { region: REGION } // Configure the underlying CognitoIdentityClient.
});
```

### Beralih ke Pengguna Terautentikasi
<a name="switch-to-authenticated"></a>

Ketika pengguna yang tidak diautentikasi masuk ke penyedia identitas dan Anda memiliki token, Anda dapat mengalihkan pengguna dari yang tidak diautentikasi ke otentikasi dengan memanggil fungsi khusus yang memperbarui objek kredensional dan menambahkan token. `logins`

```
// Called when an identity provider has a token for a logged in user
function userLoggedIn(providerName, token) {
  creds.params.Logins = creds.params.logins || {};
  creds.params.Logins[providerName] = token;
                    
  // Expire credentials to refresh them on the next request
  creds.expired = true;
}
```