

 [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.

# Migrasi dari versi 2.x ke 3.x AWS SDK untuk JavaScript
<a name="migrating"></a>

 AWS SDK untuk JavaScript Versi 3 adalah penulisan ulang utama versi 2. Bagian ini menjelaskan perbedaan antara kedua versi dan menjelaskan cara bermigrasi dari versi 2 ke versi 3 SDK untuk. JavaScript

## Migrasikan kode Anda ke SDK untuk JavaScript v3 menggunakan codemod
<a name="migrating-to-v3"></a>

AWS SDK untuk JavaScript versi 3 (v3) dilengkapi dengan antarmuka modern untuk konfigurasi dan utilitas klien, yang mencakup kredensil, unggahan multipart Amazon S3, klien dokumen DynamoDB, pelayan, dan banyak lagi. Anda dapat menemukan apa yang berubah di v2 dan setara v3 untuk setiap perubahan dalam [panduan migrasi di repo](https://github.com/aws/aws-sdk-js-v3/blob/main/UPGRADING.md). AWS SDK untuk JavaScript GitHub 

Untuk memanfaatkan sepenuhnya AWS SDK untuk JavaScript v3, kami sarankan menggunakan skrip codemod yang dijelaskan di bawah ini.

### Gunakan codemod untuk memigrasikan kode v2 yang ada
<a name="using-codemod"></a>

Kumpulan skrip codemod di [aws-sdk-js-codemod](https://www.npmjs.com/package/aws-sdk-js-codemod)membantu memigrasikan aplikasi AWS SDK untuk JavaScript (v2) Anda yang ada untuk menggunakan v3. APIs Anda dapat menjalankan transformasi sebagai berikut.

```
$ npx aws-sdk-js-codemod -t v2-to-v3 PATH...
```

Misalnya, pertimbangkan Anda memiliki kode berikut, yang membuat klien Amazon DynamoDB dari v2 dan operasi panggilan. `listTables`

```
// example.ts
import AWS from "aws-sdk";

const region = "us-west-2";
const client = new AWS.DynamoDB({ region });
await client.listTables({}).promise()
  .then(console.log)
  .catch(console.error);
```

Anda dapat menjalankan `v2-to-v3` transformasi kami `example.ts` sebagai berikut.

```
$ npx aws-sdk-js-codemod -t v2-to-v3 example.ts
```

Transformasi akan mengonversi impor DynamoDB ke v3, membuat klien v3 dan memanggil operasi sebagai berikut. `listTables`

```
// example.ts
import { DynamoDB } from "@aws-sdk/client-dynamodb";

const region = "us-west-2";
const client = new DynamoDB({ region });
await client.listTables({})
  .then(console.log)
  .catch(console.error);
```

Kami telah menerapkan transformasi untuk kasus penggunaan umum. Jika kode Anda tidak berubah dengan benar, buat [laporan bug](https://github.com/awslabs/aws-sdk-js-codemod/issues/new?assignees=&labels=bug%2Ctriage&template=bug_report.yml&title=%5BBug%3F%5D%3A+) atau [permintaan fitur](https://github.com/awslabs/aws-sdk-js-codemod/issues/new?assignees=&labels=enhancement&template=feature_request.yml&title=%5BFeature%5D%3A+) dengan contoh kode input dan kode observed/expected output. Jika kasus penggunaan spesifik Anda sudah dilaporkan dalam [masalah yang ada](https://github.com/awslabs/aws-sdk-js-codemod/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc), tunjukkan dukungan Anda melalui upvote.

## Apa yang baru di Versi 3
<a name="welcome_whats_new_v3"></a>

Versi 3 SDK for JavaScript (v3) berisi fitur-fitur baru berikut.

Paket termodulasi  
Pengguna sekarang dapat menggunakan paket terpisah untuk setiap layanan.

Tumpukan middleware baru  
Pengguna sekarang dapat menggunakan tumpukan middleware untuk mengontrol siklus hidup panggilan operasi.

Selain itu, SDK ditulis TypeScript, yang memiliki banyak keunggulan, seperti pengetikan statis.

**penting**  
Contoh kode untuk v3 dalam panduan ini ditulis dalam ECMAScript 6 (ES6). ES6membawa sintaks baru dan fitur baru untuk membuat kode Anda lebih modern dan mudah dibaca, dan melakukan lebih banyak lagi. ES6 mengharuskan Anda menggunakan Node.js versi 13.x atau lebih tinggi. Untuk mengunduh dan menginstal versi terbaru dari Node.js, lihat [unduhan Node.js](https://nodejs.org/en/download/). Untuk informasi selengkapnya, lihat [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md).

## Paket termodulasi
<a name="welcome_whats_new_v3_modularized_packages"></a>

Versi 2 SDK for JavaScript (v2) mengharuskan Anda untuk menggunakan seluruh AWS SDK, sebagai berikut.

```
var AWS = require("aws-sdk");
```

Memuat seluruh SDK tidak menjadi masalah jika aplikasi Anda menggunakan banyak AWS layanan. Namun, jika Anda hanya perlu menggunakan beberapa AWS layanan, itu berarti meningkatkan ukuran aplikasi Anda dengan kode yang tidak Anda perlukan atau gunakan.

Di v3, Anda hanya dapat memuat dan menggunakan AWS Layanan individual yang Anda butuhkan. Ini ditunjukkan dalam contoh berikut, yang memberi Anda akses ke Amazon DynamoDB (DynamoDB).

```
import { DynamoDB } from "@aws-sdk/client-dynamodb";
```

Anda tidak hanya dapat memuat dan menggunakan AWS layanan individual, tetapi Anda juga dapat memuat dan hanya menggunakan perintah layanan yang Anda butuhkan. Ini ditunjukkan dalam contoh berikut, yang memberi Anda akses ke klien DynamoDB dan perintah. `ListTablesCommand`

```
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";
```

**penting**  
Anda tidak boleh mengimpor submodul ke dalam modul. Misalnya, kode berikut mungkin mengakibatkan kesalahan.  

```
import { CognitoIdentity } from "@aws-sdk/client-cognito-identity/CognitoIdentity";
```
Berikut ini adalah kode yang benar.  

```
import { CognitoIdentity } from "@aws-sdk/client-cognito-identity";
```

### Membandingkan ukuran kode
<a name="welcome_whats_new_v3_modularized_packages_code_size"></a>

Di Versi 2 (v2), contoh kode sederhana yang mencantumkan semua tabel Amazon DynamoDB Anda di `us-west-2` Wilayah mungkin terlihat seperti berikut.

```
var AWS = require("aws-sdk");
// Set the Region
AWS.config.update({ region: "us-west-2" });
// Create DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

// Call DynamoDB to retrieve the list of tables
ddb.listTables({ Limit: 10 }, function (err, data) {
  if (err) {
    console.log("Error", err.code);
  } else {
    console.log("Tables names are ", data.TableNames);
  }
});
```

v3 terlihat seperti berikut ini.

```
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";

const dbclient = new DynamoDBClient({ region: "us-west-2" });

try {
  const results = await dbclient.send(new ListTablesCommand);
  
  for (const item of results.TableNames) {
    console.log(item);
  }
} catch (err) {
  console.error(err)
}
```

`aws-sdk`Paket menambahkan sekitar 40 MB ke aplikasi Anda. Mengganti `var AWS = require("aws-sdk")` dengan `import {DynamoDB} from "@aws-sdk/client-dynamodb"` mengurangi overhead itu menjadi sekitar 3 MB. Membatasi impor hanya ke klien `ListTablesCommand` dan perintah DynamoDB mengurangi overhead menjadi kurang dari 100 KB.

```
// Load the DynamoDB client and ListTablesCommand command for Node.js
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";
const dbclient = new DynamoDBClient({});
```

### Memanggil perintah di v3
<a name="welcome_whats_new_v3_function_examples"></a>

Anda dapat melakukan operasi di v3 menggunakan perintah v2 atau v3. Untuk menggunakan perintah v3 Anda mengimpor perintah dan klien paket AWS Layanan yang diperlukan, dan menjalankan perintah menggunakan `.send` metode menggunakan async/await pola.

Untuk menggunakan perintah v2, Anda mengimpor paket AWS Layanan yang diperlukan, dan menjalankan perintah v2 secara langsung dalam paket menggunakan callback atau async/await pola.

#### Menggunakan perintah v3
<a name="using_v3_commands"></a>

v3 menyediakan serangkaian perintah untuk setiap paket AWS Layanan untuk memungkinkan Anda melakukan operasi untuk AWS Layanan tersebut. Setelah Anda menginstal AWS Layanan, Anda dapat menelusuri perintah yang tersedia di proyek Anda `node-modules/@aws-sdk/client-PACKAGE_NAME/commands folder.` 

Anda harus mengimpor perintah yang ingin Anda gunakan. Misalnya, kode berikut memuat layanan DynamoDB, dan perintah. `CreateTableCommand` 

```
import { DynamoDB, CreateTableCommand } from "@aws-sdk/client-dynamodb";
```

Untuk memanggil perintah ini dalam async/await pola yang disarankan, gunakan sintaks berikut. 

```
CLIENT.send(new XXXCommand);
```

Misalnya, contoh berikut membuat tabel DynamoDB menggunakan pola yang direkomendasikan. async/await 

```
import { DynamoDB, CreateTableCommand } from "@aws-sdk/client-dynamodb";
const dynamodb = new DynamoDB({ region: "us-west-2" });
const tableParams = {
  TableName: TABLE_NAME
};

try {
  const data = await dynamodb.send(new CreateTableCommand(tableParams));
  console.log("Success", data);
} catch (err) {
  console.log("Error", err);
};
```

#### Menggunakan perintah v2
<a name="using_v2_commands"></a>

Untuk menggunakan perintah v2 di SDK for JavaScript, Anda mengimpor paket AWS Layanan lengkap, seperti yang ditunjukkan dalam kode berikut.

```
const { DynamoDB } = require('@aws-sdk/client-dynamodb');
```

 Untuk memanggil perintah v2 dalam async/await pola yang disarankan, gunakan sintaks berikut. 

```
client.command(parameters);
```

Contoh berikut menggunakan `createTable` perintah v2 untuk membuat tabel DynamoDB menggunakan pola yang direkomendasikan. async/await 

```
const { DynamoDB } = require('@aws-sdk/client-dynamodb');
const dynamoDB = new DynamoDB({ region: 'us-west-2' });
var tableParams = {
  TableName: TABLE_NAME
};
async function run() => {
  try {
    const data = await dynamoDB.createTable(tableParams);
    console.log("Success", data);
  }
  catch (err) {
    console.log("Error", err);
  }
};
run();
```

Contoh berikut menggunakan `createBucket` perintah v2 untuk membuat bucket Amazon S3 menggunakan pola callback.

```
const { S3 } = require('@aws-sdk/client-s3');
const s3 = new S3({ region: 'us-west-2' });
var bucketParams = {
  Bucket : BUCKET_NAME
};
function run() {
  s3.createBucket(bucketParams, function (err, data) {
    if (err) {
      console.log("Error", err);
    } else {
      console.log("Success", data.Location);
    }
  })
};
run();
```

## Tumpukan middleware baru
<a name="welcome_whats_new_v3_middleware_stack"></a>

v2 SDK memungkinkan Anda memodifikasi permintaan selama beberapa tahap siklus hidupnya dengan melampirkan event listener ke permintaan. Pendekatan ini dapat mempersulit debug apa yang salah selama siklus hidup permintaan.

Di v3, Anda dapat menggunakan tumpukan middleware baru untuk mengontrol siklus hidup panggilan operasi. Pendekatan ini memberikan beberapa manfaat. Setiap tahap middleware dalam tumpukan memanggil tahap middleware berikutnya setelah membuat perubahan apa pun pada objek permintaan. Ini juga membuat masalah debugging di tumpukan jauh lebih mudah, karena Anda dapat melihat dengan tepat tahap middleware mana yang dipanggil menjelang kesalahan.

Contoh berikut menambahkan header kustom ke klien Amazon DynamoDB (yang kami buat dan tunjukkan sebelumnya) menggunakan middleware. Argumen pertama adalah fungsi yang menerima`next`, yang merupakan tahap middleware berikutnya dalam tumpukan untuk memanggil, dan`context`, yang merupakan objek yang berisi beberapa informasi tentang operasi yang dipanggil. Fungsi mengembalikan fungsi yang menerima`args`, yang merupakan objek yang berisi parameter yang diteruskan ke operasi dan permintaan. Ia mengembalikan hasil dari memanggil middleware berikutnya dengan. `args`

```
dbclient.middlewareStack.add(
  (next, context) => args => {
    args.request.headers["Custom-Header"] = "value";
    return next(args);
  },
  {
    name: "my-middleware",
    override: true,
    step: "build"
  }
);

dbclient.send(new PutObjectCommand(params));
```

# Apa yang berbeda antara AWS SDK untuk JavaScript v2 dan v3
<a name="migrate-whats-different"></a>

 Bagian ini menangkap perubahan penting dari AWS SDK untuk JavaScript v2 ke v3. Karena v3 adalah penulisan ulang modular v2, beberapa konsep dasar berbeda antara v2 dan v3. Anda dapat mempelajari tentang perubahan ini di [posting blog](https://aws.amazon.com/blogs/developer/category/developer-tools/aws-sdk-for-javascript-in-node-js/) kami. Posting blog berikut akan membuat Anda lebih cepat: 
+  [Paket modular di AWS SDK untuk JavaScript](https://aws.amazon.com/blogs/developer/modular-packages-in-aws-sdk-for-javascript/) 
+  [Memperkenalkan Middleware Stack di Modular AWS SDK untuk JavaScript](https://aws.amazon.com/blogs/developer/middleware-stack-modular-aws-sdk-js/) 

 Ringkasan perubahan antarmuka dari AWS SDK untuk JavaScript v2 ke v3 diberikan di bawah ini. Tujuannya adalah untuk membantu Anda dengan mudah menemukan padanan v3 dari v2 yang sudah APIs Anda kenal. 

**Topics**
+ [Konstruktor klien](migrate-client-constructors.md)
+ [Penyedia kredensi](migrate-credential-providers.md)
+ [Pertimbangan Amazon S3](migrate-s3.md)
+ [Klien dokumen DynamoDB](migrate-dynamodb-doc-client.md)
+ [Pelayan dan penandatangan](migrate-waiters-signers.md)
+ [Catatan tentang klien layanan tertentu](migrate-service-client-notes.md)

# Konstruktor klien
<a name="migrate-client-constructors"></a>

 Daftar ini diindeks oleh parameter [konfigurasi v2](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#computeChecksums-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#computeChecksums-property) 
  +  **v2**: Apakah akan menghitung MD5 checksum untuk badan muatan saat layanan menerimanya (saat ini hanya didukung di S3). 
  +  **v3**: perintah yang berlaku dari S3 (PutObject, PutBucketCors, dll.) akan secara otomatis menghitung MD5 checksum untuk payload permintaan. Anda juga dapat menentukan algoritma checksum yang berbeda dalam `ChecksumAlgorithm` parameter perintah untuk menggunakan algoritma checksum yang berbeda. Anda dapat menemukan informasi lebih lanjut di [pengumuman fitur S3](https://aws.amazon.com/blogs/aws/new-additional-checksum-algorithms-for-amazon-s3/). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#convertResponseTypes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#convertResponseTypes-property) 
  +  **v2**: Apakah jenis dikonversi saat mengurai data respons. 
  +  **v3**: **Usang**. Opsi ini dianggap tidak aman untuk tipe karena tidak mengonversi tipe seperti stempel waktu atau binari base64 dari respons JSON. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#correctClockSkew-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#correctClockSkew-property) 
  +  **v2**: Apakah akan menerapkan koreksi kemiringan jam dan permintaan coba lagi yang gagal karena jam klien yang miring. 
  +  **v3**: **Usang**. SDK *selalu* menerapkan koreksi kemiringan jam. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#systemClockOffset-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#systemClockOffset-property) 
  +  **v2**: Nilai offset dalam milidetik untuk diterapkan ke semua waktu penandatanganan. 
  +  **v3**: Tidak ada perubahan. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#credentials-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#credentials-property) 
  +  **v2**: AWS Kredensi untuk menandatangani permintaan dengan. 
  +  **v3**: Tidak ada perubahan. Ini juga bisa menjadi fungsi async yang mengembalikan kredensil. Jika fungsi mengembalikan`expiration (Date)`, fungsi akan dipanggil lagi ketika datetime kedaluwarsa mendekati. Lihat [referensi API v3 untuk `AwsAuthInputConfig` kredensialnya](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-signing/Interface/AwsAuthInputConfig/). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointCacheSize-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointCacheSize-property) 
  +  **v2**: Ukuran cache global yang menyimpan titik akhir dari operasi penemuan titik akhir. 
  +  **v3**: Tidak ada perubahan. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointDiscoveryEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointDiscoveryEnabled-property) 
  +  **v2**: Apakah akan memanggil operasi dengan titik akhir yang diberikan oleh layanan secara dinamis. 
  +  **v3**: Tidak ada perubahan. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#hostPrefixEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#hostPrefixEnabled-property) 
  +  **v2**: Apakah akan meminta parameter marshal ke awalan nama host. 
  +  **v3**: **Usang**. SDK *selalu* menyuntikkan awalan nama host bila diperlukan. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#httpOptions-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#httpOptions-property) 

   Satu set opsi untuk diteruskan ke permintaan HTTP tingkat rendah. Opsi ini digabungkan secara berbeda di v3. Anda dapat mengonfigurasinya dengan memasok yang baru`requestHandler`. Berikut adalah contoh pengaturan opsi http di runtime Node.js. Anda dapat menemukan lebih banyak di [referensi API v3 untuk NodeHttpHandler](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/). 

   Semua permintaan v3 menggunakan HTTPS secara default. Anda hanya perlu menyediakan httpAgent khusus. 

  ```
  const { Agent } = require("https");
  const { Agent: HttpAgent } = require("http");
  const { NodeHttpHandler } = require("@smithy/node-http-handler");
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new NodeHttpHandler({
          httpsAgent: new Agent({
              /*params*/
          }),
          connectionTimeout: /*number in milliseconds*/,
          socketTimeout: /*number in milliseconds*/
      }),
  });
  ```

   Jika Anda melewati titik akhir kustom yang menggunakan http, maka Anda perlu menyediakan HttpAgent. 

  ```
  const { Agent } = require("http");
  const { NodeHttpHandler } = require("@smithy/node-http-handler");
  
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new NodeHttpHandler({
          httpAgent: new Agent({
              /*params*/
          }),
      }),
      endpoint: "http://example.com",
  });
  ```

   Jika klien berjalan di browser, serangkaian opsi yang berbeda tersedia. Anda dapat menemukan lebih banyak di [referensi API v3 untuk FetchHttpHandler](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-fetch-http-handler/). 

  ```
  const { FetchHttpHandler } = require("@smithy/fetch-http-handler");
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new FetchHttpHandler({
          requestTimeout: /* number in milliseconds */
      }),
  });
  ```

   Setiap opsi `httpOptions` ditentukan di bawah ini: 
  +  `proxy` 
    +  **v2**: URL ke permintaan proxy melalui. 
    +  **v3**: Anda dapat mengatur proxy dengan agen berikut [Mengonfigurasi proxy untuk Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-proxies.html). 
  +  `agent` 
    +  **v2**: Objek Agen untuk melakukan permintaan HTTP dengan. Digunakan untuk penyatuan koneksi. 
    +  **v3**: Anda dapat mengkonfigurasi `httpAgent` atau `httpsAgent` seperti yang ditunjukkan pada contoh di atas. 
  +  `connectTimeout` 
    +  **v2**: Mengatur soket ke batas waktu setelah gagal membuat koneksi dengan server setelah `connectTimeout` milidetik. 
    +  **v3**: `connectionTimeout` tersedia [dalam `NodeHttpHandler` opsi](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/). 
  +  `timeout` 
    +  **v2**: Jumlah milidetik yang dapat diambil permintaan sebelum dihentikan secara otomatis. 
    +  **v3**: `socketTimeout` tersedia [dalam `NodeHttpHandler` opsi](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/). 
  +  `xhrAsync` 
    +  **v2**: Apakah SDK akan mengirim permintaan HTTP asinkron. 
    +  **v3**: **Usang**. Permintaan *selalu* asinkron. 
  +  `xhrWithCredentials` 
    +  **v2**: Menetapkan properti “withCredentials” dari objek XMLHttp Request. 
    +  **v3**: Tidak tersedia. SDK mewarisi [konfigurasi pengambilan default](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#logger-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#logger-property) 
  +  **v2**: Objek yang merespons `.write()` (seperti aliran) atau `.log()` (seperti objek konsol) untuk mencatat informasi tentang permintaan. 
  +  **v3**: Tidak ada perubahan. Lebih banyak log granular tersedia di v3. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRedirects-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRedirects-property) 
  +  **v2**: Jumlah maksimum pengalihan yang harus diikuti untuk permintaan layanan. 
  +  **v3**: **Usang**. SDK *tidak* mengikuti pengalihan untuk menghindari permintaan lintas wilayah yang tidak disengaja. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRetries-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRetries-property) 
  +  **v2**: Jumlah maksimum percobaan ulang untuk melakukan permintaan layanan. 
  +  **v3**: Diubah menjadi`maxAttempts`. Lihat selengkapnya di [referensi API v3 untuk RetryInputConfig](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-middleware-retry/Interface/RetryInputConfig/). Perhatikan bahwa `maxAttempts` seharusnya`maxRetries + 1`. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#paramValidation-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#paramValidation-property) 
  +  **v2**: Apakah parameter input harus divalidasi terhadap deskripsi operasi sebelum mengirim permintaan. 
  +  **v3**: **Usang**. SDK *tidak* melakukan validasi di sisi klien saat runtime. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#region-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#region-property) 
  +  **v2**: Wilayah untuk mengirim permintaan layanan ke. 
  +  **v3**: Tidak ada perubahan. Ini juga bisa menjadi fungsi async yang mengembalikan string wilayah. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#retryDelayOptions-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#retryDelayOptions-property) 
  +  **v2**: Satu set opsi untuk mengonfigurasi penundaan coba lagi pada kesalahan yang dapat dicoba ulang. 
  +  **v3**: **Usang**. SDK mendukung strategi coba ulang yang lebih fleksibel dengan opsi konstruktor `retryStrategy` klien. Lihat selengkapnya [di referensi API v3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3BucketEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3BucketEndpoint-property) 
  +  **v2**: Apakah titik akhir yang disediakan menangani bucket individual (false jika membahas titik akhir API root). 
  +  **v3**: Diubah menjadi`bucketEndpoint`. Lihat selengkapnya di [referensi API v3 untuk BucketEndPoint](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-bucket-endpoint/Interface/BucketEndpointInputConfig/). Perhatikan bahwa ketika diatur ke`true`, Anda menentukan titik akhir permintaan dalam parameter `Bucket` permintaan, titik akhir asli akan ditimpa. Sedangkan di v2, titik akhir permintaan di konstruktor klien menimpa parameter permintaan. `Bucket` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3DisableBodySigning-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3DisableBodySigning-property) 
  +  **v2**: Apakah akan menonaktifkan penandatanganan badan S3 saat menggunakan versi tanda tangan v4. 
  +  **v3**: Berganti nama menjadi. `applyChecksum` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3ForcePathStyle-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3ForcePathStyle-property) 
  +  **v2**: Apakah akan memaksa gaya jalur URLs untuk objek S3. 
  +  **v3**: Berganti nama menjadi. `forcePathStyle` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UseArnRegion-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UseArnRegion-property) 
  +  **v2**: Apakah akan mengganti wilayah permintaan dengan wilayah yang disimpulkan dari ARN sumber daya yang diminta. 
  +  **v3**: Berganti nama menjadi. `useArnRegion` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UsEast1RegionalEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UsEast1RegionalEndpoint-property) 
  +  **v2**: Ketika wilayah disetel ke 'us-east-1', apakah akan mengirim permintaan s3 ke titik akhir global atau titik akhir regional 'us-east-1'. 
  +  **v3**: **Usang**. Klien S3 akan selalu menggunakan titik akhir regional jika wilayah disetel ke. `us-east-1` Anda dapat mengatur wilayah untuk mengirim permintaan `aws-global` ke titik akhir global S3. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureCache-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureCache-property) 
  +  **v2**: Apakah tanda tangan untuk menandatangani permintaan dengan (mengganti konfigurasi API) di-cache. 
  +  **v3**: **Usang**. SDK *selalu* menyimpan kunci penandatanganan yang di-hash. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureVersion-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureVersion-property) 
  +  **v2**: Versi tanda tangan untuk menandatangani permintaan dengan (mengganti konfigurasi API). 
  +  **v3**: **Usang**. *Signature V2 yang didukung di v2 SDK tidak digunakan lagi oleh AWS. v3 hanya mendukung signature v4.* 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#sslEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#sslEnabled-property) 
  +  **v2**: Apakah SSL diaktifkan untuk permintaan. 
  +  **v3**: Berganti nama menjadi. `tls` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#stsRegionalEndpoints-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#stsRegionalEndpoints-property) 
  +  **v2**: Apakah akan mengirim permintaan sts ke titik akhir global atau titik akhir regional. 
  +  **v3**: **Usang**. Klien STS akan *selalu* menggunakan titik akhir regional jika disetel ke wilayah tertentu. Anda dapat mengatur wilayah untuk mengirim permintaan `aws-global` ke titik akhir global STS. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#useAccelerateEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#useAccelerateEndpoint-property) 
  +  **v2**: Apakah akan menggunakan titik akhir Accelerate dengan layanan S3. 
  +  **v3**: Tidak ada perubahan. 

# Penyedia kredensi
<a name="migrate-credential-providers"></a>

 Di v2, SDK untuk JavaScript menyediakan daftar penyedia kredensi untuk dipilih, serta rantai penyedia kredensial, tersedia secara default di Node.js, yang mencoba memuat AWS kredenal dari semua penyedia yang paling umum. SDK untuk JavaScript v3 menyederhanakan antarmuka penyedia kredensi, membuatnya lebih mudah untuk menggunakan dan menulis penyedia kredensi khusus. Di atas rantai penyedia kredensi baru, SDK untuk JavaScript v3 semuanya menyediakan daftar penyedia kredensi yang bertujuan untuk menyediakan setara dengan v2. 

 Berikut adalah semua penyedia kredensyal di v2 dan padanannya di v3. 

## Penyedia Kredensyal Default
<a name="default-credential-provider"></a>

 Penyedia kredensi default adalah cara SDK untuk JavaScript menyelesaikan AWS kredensi jika Anda *tidak* memberikannya secara eksplisit. 
+  **v2**: [CredentialProviderChain](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html)di Node.js menyelesaikan kredensi dari sumber sebagai berikut urutan: 
  +  [Variabel lingkungan](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-environment.html) 
  +  [File kredensyal bersama](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html) 
  +  [Kredensyal kontainer ECS](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html) 
  +  [Proses eksternal pemijahan](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html) 
  +  [Token OIDC dari file tertentu](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html) 
  +  [ EC2Metadata contoh Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) 

   Jika salah satu penyedia kredensi di atas gagal menyelesaikan AWS kredensi, rantai akan kembali ke penyedia berikutnya hingga kredensi yang valid diselesaikan, dan rantai akan menimbulkan kesalahan ketika semua penyedia gagal. 

   Di runtime Browser dan React Native, rantai kredensialnya kosong, dan kredensyal harus disetel secara eksplisit. 
+  **v3**: [DefaultProvider](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers#fromnodejsproviderchain-1). Sumber kredensyal dan urutan fallback *tidak* berubah di v3. Ini juga mendukung [AWS IAM Identity Center kredensyal](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html). 

## Kredensial Sementara
<a name="temporary-credentials"></a>
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html)mewakili kredensyal sementara yang diambil dari. `AWS.STS` Tanpa parameter tambahan, kredensyal akan diambil dari operasi. `AWS.STS.getSessionToken()` Jika peran IAM disediakan, `AWS.STS.assumeRole()` operasi akan digunakan untuk mengambil kredensyal untuk peran sebagai gantinya. `AWS.ChainableTemporaryCredentials`berbeda dari `AWS.TemporaryCredentials` cara MasterCredentials dan refresh ditangani. `AWS.ChainableTemporaryCredentials`menyegarkan kredensyal kedaluwarsa menggunakan MasterCredentials yang diteruskan oleh pengguna untuk mendukung rantai kredensyal STS. Namun, `AWS.TemporaryCredentials` secara rekursif menciutkan MasterCredentials selama instantiation, menghalangi kemampuan untuk menyegarkan kredenal yang memerlukan kredensial sementara menengah. 

   Asli [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TemporaryCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TemporaryCredentials.html)telah tidak **digunakan lagi** demi di v2. `ChainableTemporaryCredentials` 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtemporarycredentials](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtemporarycredentials). Anda dapat menelepon `fromTemporaryCredentials()` dari `@aws-sdk/credential-providers` paket. Inilah contohnya: 

  ```
  import { FooClient } from "@aws-sdk/client-foo";
  import { fromTemporaryCredentials } from "@aws-sdk/credential-providers"; // ES6 import
  // const { FooClient } = require("@aws-sdk/client-foo");
  // const { fromTemporaryCredentials } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const sourceCredentials = {
    // A credential can be a credential object or an async function that returns a credential object
  };
  const client = new FooClient({
    credentials: fromTemporaryCredentials({
      masterCredentials: sourceCredentials,
      params: { RoleArn },
    }),
  });
  ```

## Kredensyal Identitas Amazon Cognito
<a name="cognito-identity-credentials"></a>

 Muat kredensyal dari layanan Identitas Amazon Cognito, biasanya digunakan di browser. 
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html)Merupakan kredensi yang diambil dari Federasi Identitas Web STS menggunakan layanan Identitas Amazon Cognito. 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html)[Paket](https://www.npmjs.com/package/@aws-sdk/credential-providers) ini menyediakan dua fungsi penyedia kredensi, salah satunya [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html)mengambil ID identitas dan panggilan`cognitoIdentity:GetCredentialsForIdentity`, sementara yang lain [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html)mengambil ID kumpulan identitas, panggilan `cognitoIdentity:GetId` pada pemanggilan pertama, dan kemudian panggilan. `fromCognitoIdentity` Pemanggilan selanjutnya dari yang terakhir tidak dipanggil kembali. GetId 

   Penyedia mengimplementasikan “Aliran Sederhana” yang dijelaskan dalam Panduan Pengembang [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html). “Aliran Klasik” yang melibatkan panggilan `cognito:GetOpenIdToken` dan kemudian panggilan `sts:AssumeRoleWithWebIdentity` *tidak* didukung. Silakan buka [permintaan fitur](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=) kepada kami jika Anda membutuhkannya. 

  ```
  // fromCognitoIdentityPool example
  import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromCognitoIdentityPool } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    region: "us-east-1",
    credentials: fromCognitoIdentityPool({
      clientConfig: cognitoIdentityClientConfig, // Optional
      identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030",
      customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional
      logins: {
        // Optional
        "graph.facebook.com": "FBTOKEN",
        "www.amazon.com": "AMAZONTOKEN",
        "api.twitter.com": "TWITTERTOKEN",
      },
    }),
  });
  ```

  ```
  // fromCognitoIdentity example
  import { fromCognitoIdentity } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromCognitoIdentity } = require("@aws-sdk/credential-provider-cognito-identity"); // CommonJS import
  
  const client = new FooClient({
    region: "us-east-1",
    credentials: fromCognitoIdentity({
      clientConfig: cognitoIdentityClientConfig, // Optional
      identityId: "us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f",
      customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional
      logins: {
        // Optional
        "graph.facebook.com": "FBTOKEN",
        "www.amazon.com": "AMAZONTOKEN",
        "api.twitter.com": "TWITTERTOKEN",
      },
    }),
  });
  ```

## EC2 Kredensyal Metadata Amazon (IMDS)
<a name="ec2-metadataimds-credential"></a>

 Merupakan kredensyal yang diterima dari layanan metadata pada instans Amazon. EC2 
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata). Membuat penyedia kredensyal yang akan mendapatkan kredensyal dari Amazon EC2 Instance Metadata Service. 

  ```
  import { fromInstanceMetadata } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromInstanceMetadata } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromInstanceMetadata({
      maxRetries: 3, // Optional
      timeout: 0, // Optional
    }),
  });
  ```

## Kredensyal Amazon ECS
<a name="ecs-credentials"></a>

 Merupakan kredensyal yang diterima dari URL tertentu. Penyedia ini akan meminta kredensyal sementara dari URI yang ditentukan oleh `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` atau variabel `AWS_CONTAINER_CREDENTIALS_FULL_URI` lingkungan. 
+  **v2**: `ECSCredentials` atau [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata). Membuat penyedia kredensyal yang akan mendapatkan kredensyal dari Amazon ECS Container Metadata Service. 

  ```
  import { fromContainerMetadata } from "@aws-sdk/credential-providers"; // ES6 import
  
  const client = new FooClient({
    credentials: fromContainerMetadata({
      maxRetries: 3, // Optional
      timeout: 0, // Optional
    }),
  });
  ```

## Kredensyal Sistem File
<a name="file-system-credentials"></a>
+ **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FileSystemCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FileSystemCredentials.html). Merupakan kredensyal dari file JSON pada disk.
+  **v3**: **Usang**. Anda dapat secara eksplisit membaca file JSON dan memasok ke klien. Silakan buka [permintaan fitur](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=) kepada kami jika Anda membutuhkannya. 

## Penyedia Kredensi SALL
<a name="saml-credential-provider"></a>
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SAMLCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SAMLCredentials.html)Merupakan kredensyal yang diambil dari dukungan STS SALL. 
+  **v3**: **Tidak tersedia**. Silakan buka [permintaan fitur](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=) kepada kami jika Anda membutuhkannya. 

## Kredensyal Berkas Kredensyal Bersama
<a name="shared-credential-file-credentials"></a>

 Memuat kredensyal dari file kredensyal bersama (default ke `~/.aws/credentials` atau ditentukan oleh variabel lingkungan). `AWS_SHARED_CREDENTIALS_FILE` File ini didukung di berbagai alat AWS SDKs dan. Anda dapat merujuk ke [dokumen file konfigurasi dan kredensial bersama](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) untuk informasi selengkapnya. 
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SharedIniFileCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SharedIniFileCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html) 

  ```
  import { fromIni } from "@aws-sdk/credential-providers";
  // const { fromIni } from("@aws-sdk/credential-providers");
  
  const client = new FooClient({
    credentials: fromIni({
      configFilepath: "~/.aws/config", // Optional
      filepath: "~/.aws/credentials", // Optional
      mfaCodeProvider: async (mfaSerial) => {
        // implement a pop-up asking for MFA code
        return "some_code";
      }, // Optional
      profile: "default", // Optional
      clientConfig: { region }, // Optional
    }),
  });
  ```

## Kredensyal Identitas Web
<a name="web-identity-credentials"></a>

 Mengambil kredensyal menggunakan token OIDC dari file pada disk. Biasa digunakan di Amazon EKS. 
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtokenfile](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtokenfile) 

  ```
  import { fromTokenFile } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromTokenFile } from("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromTokenFile({
      // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable
      roleArn: "arn:xxxx",
      // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable
      roleSessionName: "session:a",
      // Optional. STS client config to make the assume role request.
      clientConfig: { region },
    }),
  });
  ```

## Kredensyal Federasi Identitas Web
<a name="web-identity-federation-credentials"></a>

 Mengambil kredensyal dari dukungan federasi identitas web STS. 
+  **v2**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/WebIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/WebIdentityCredentials.html) 
+  **v3**: [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromwebtoken](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromwebtoken) 

  ```
  import { fromWebToken } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromWebToken } from("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromWebToken({
      // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable
      roleArn: "arn:xxxx",
      // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable
      roleSessionName: "session:a",
      // Optional. STS client config to make the assume role request.
      clientConfig: { region },
    }),
  });
  ```

# Pertimbangan Amazon S3
<a name="migrate-s3"></a>

## Unggahan multipart Amazon S3
<a name="s3-multipart-upload"></a>

 Di v2, klien Amazon S3 berisi [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property)operasi yang mendukung pengunggahan objek besar dengan [fitur unggahan multipart yang ditawarkan oleh Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) S3. 

 Di v3, [https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage)paket tersedia. Ini mendukung semua fitur yang ditawarkan dalam `upload()` operasi v2 dan mendukung runtime Node.js dan browser. 

## URL yang telah ditetapkan sebelumnya Amazon S3
<a name="s3-presigned-url"></a>

 Di v2, klien Amazon S3 berisi [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property)dan [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property)operasi untuk menghasilkan URL yang dapat digunakan pengguna untuk mengunggah atau mengunduh objek dari Amazon S3. 

 Di v3, [https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner](https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner)paket tersedia. Paket ini berisi fungsi untuk keduanya `getSignedUrl()` dan ` getSignedUrlPromise()` operasi. [Posting blog](https://aws.amazon.com/blogs/developer/generate-presigned-url-modular-aws-sdk-javascript/) ini membahas detail paket ini.

## Pengalihan wilayah Amazon S3
<a name="s3-global-client-region-redirects"></a>

Jika wilayah yang salah diteruskan ke klien Amazon S3 dan kesalahan berikutnya ` PermanentRedirect` (status 301) dilemparkan, klien Amazon S3 di v3 mendukung pengalihan wilayah (sebelumnya dikenal sebagai Klien Global Amazon S3 di v2). Anda dapat menggunakan [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-sdk-s3/Interface/S3InputConfig/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-sdk-s3/Interface/S3InputConfig/)bendera dalam konfigurasi klien untuk membuat klien Amazon S3 mengikuti pengalihan wilayah dan mendukung fungsinya sebagai klien global.

**catatan**  
Perhatikan bahwa fitur ini dapat menghasilkan latensi tambahan karena permintaan yang gagal dicoba ulang dengan wilayah yang diperbaiki saat menerima `PermanentRedirect` kesalahan dengan status 301. Fitur ini hanya boleh digunakan jika Anda tidak mengetahui wilayah bucket Anda sebelumnya. 

## Streaming Amazon S3 dan respons buffer
<a name="amazon-s3-stream-vs-buffer"></a>

 SDK v3 memilih untuk tidak menyangga respons yang berpotensi besar. Ini biasanya ditemui dalam `GetObject` operasi Amazon S3, yang mengembalikan `Buffer` in v2, tetapi mengembalikan a `Stream` di v3. 

 Untuk Node.js, Anda harus mengkonsumsi aliran atau sampah mengumpulkan klien atau penangan permintaannya untuk menjaga koneksi tetap terbuka untuk lalu lintas baru dengan membebaskan soket. 

```
// v2
const get = await s3.getObject({ ... }).promise(); // this buffers consumes the stream already.
```

```
// v3, consume the stream to free the socket
const get = await s3.getObject({ ... }); // object .Body has unconsumed stream
const str = await get.Body.transformToString(); // consumes the stream

// other ways to consume the stream include writing it to a file,
// passing it to another consumer like an upload, or buffering to
// a string or byte array.
```

 Untuk informasi lebih lanjut, lihat bagian tentang [kelelahan soket](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#request-handler-requesthandler). 

# Klien dokumen DynamoDB
<a name="migrate-dynamodb-doc-client"></a>

## Penggunaan dasar klien dokumen DynamoDB di v3
<a name="basic-usage-of-dynamodb-document-client-in-v3"></a>
+  Di v2, Anda dapat menggunakan [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html)kelas untuk memanggil APIs DynamoDB dengan tipe JavaScript asli seperti Array, Number, dan Object. Dengan demikian menyederhanakan bekerja dengan item di Amazon DynamoDB dengan mengabstraksi gagasan nilai atribut. 
+  Di v3, [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html)klien yang setara tersedia. Ini mirip dengan klien layanan normal dari v3 SDK, dengan perbedaan bahwa dibutuhkan klien DynamoDB dasar dalam konstruktornya. 

 Contoh: 

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; // ES6 import
// const { DynamoDBClient } = require("@aws-sdk/client-dynamodb"); // CommonJS import
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb"; // ES6 import
// const { DynamoDBDocumentClient, PutCommand } = require("@aws-sdk/lib-dynamodb"); // CommonJS import

// Bare-bones DynamoDB Client
const client = new DynamoDBClient({});

// Bare-bones document client
const ddbDocClient = DynamoDBDocumentClient.from(client); // client is DynamoDB client

await ddbDocClient.send(
  new PutCommand({
    TableName,
    Item: {
      id: "1",
      content: "content from DynamoDBDocumentClient",
    },
  })
);
```

## `Undefined`nilai saat menyusun
<a name="undefined-values-in-when-marshalling"></a>
+  Di v2, `undefined` nilai dalam objek secara otomatis dihilangkan selama proses marshalling ke DynamoDB. 
+  Di v3, perilaku penyusunan default `@aws-sdk/lib-dynamodb` telah berubah: objek dengan `undefined` nilai tidak lagi dihilangkan. Untuk menyelaraskan dengan fungsionalitas v2, pengembang harus secara eksplisit mengatur `removeUndefinedValues` ke `true` dalam Klien Dokumen DynamoDB. `marshallOptions` 

 Contoh: 

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb";

const client = new DynamoDBClient({});

// The DynamoDBDocumentClient is configured to handle undefined values properly
const ddbDocClient = DynamoDBDocumentClient.from(client, {
  marshallOptions: {
    removeUndefinedValues: true
  }
});

await ddbDocClient.send(
  new PutCommand({
    TableName,
    Item: {
      id: "123",
      content: undefined // This value will be automatically omitted.
      array: [1, undefined], // The undefined value will be automatically omitted.
      map: { key: undefined }, // The "key" will be automatically omitted.
      set: new Set([1, undefined]), // The undefined value will be automatically omitted.
    };
  })
);
```

 Lebih banyak contoh dan konfigurasi tersedia dalam [paket README](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-dynamodb/README.md). 

# Pelayan dan penandatangan
<a name="migrate-waiters-signers"></a>

Halaman ini menjelaskan penggunaan pelayan dan penandatangan di v3. AWS SDK untuk JavaScript 

## Pelayan
<a name="waiters"></a>

 Di v2, semua pelayan terikat ke kelas klien layanan, dan Anda perlu menentukan dalam input pelayan yang dirancang status klien akan menunggu. Misalnya, Anda perlu menelepon [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#bucketExists-waiter](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#bucketExists-waiter)untuk menunggu ember yang baru dibuat siap.

 Di v3, Anda tidak perlu mengimpor pelayan jika aplikasi Anda tidak membutuhkannya. Selain itu, Anda hanya dapat mengimpor pelayan yang Anda butuhkan untuk menunggu keadaan tertentu yang diinginkan yang Anda inginkan. Dengan demikian, Anda dapat mengurangi ukuran bundel dan meningkatkan kinerja. Berikut adalah contoh menunggu ember siap setelah pembuatan: 

```
import { S3Client, CreateBucketCommand, waitUntilBucketExists } from "@aws-sdk/client-s3"; // ES6 import
// const { S3Client, CreateBucketCommand, waitUntilBucketExists } = require("@aws-sdk/client-s3"); // CommonJS import

const Bucket = "BUCKET_NAME";
const client = new S3Client({ region: "REGION" });
const command = new CreateBucketCommand({ Bucket });

await client.send(command);
await waitUntilBucketExists({ client, maxWaitTime: 60 }, { Bucket });
```

 Anda dapat menemukan segalanya tentang cara mengkonfigurasi pelayan di [posting blog pelayan](https://aws.amazon.com/blogs/developer/waiters-in-modular-aws-sdk-for-javascript/) di v3. AWS SDK untuk JavaScript 

## CloudFront Penandatangan Amazon
<a name="cloudfront-signer"></a>

 Di v2, Anda dapat menandatangani permintaan untuk mengakses CloudFront distribusi Amazon yang dibatasi dengan [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront/Signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront/Signer.html).

 Di v3, Anda memiliki utilitas yang sama yang disediakan dalam [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_cloudfront_signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_cloudfront_signer.html)paket.

## Penandatangan Amazon RDS
<a name="rds-signer"></a>

 Di v2, Anda dapat membuat token autentikasi ke database Amazon RDS menggunakan. [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDS/Signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDS/Signer.html) 

 Di v3, kelas utilitas serupa tersedia dalam [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html)paket.

## Penandatangan Amazon Polly
<a name="polly-signer"></a>

 Di v2, Anda dapat membuat URL yang ditandatangani ke pidato yang disintesis oleh layanan Amazon Polly. [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Polly/Presigner.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Polly/Presigner.html)

 Di v3, fungsi utilitas serupa tersedia dalam [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_polly_request_presigner.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_polly_request_presigner.html)paket. 

# Catatan tentang klien layanan tertentu
<a name="migrate-service-client-notes"></a>

## AWS Lambda
<a name="aws-lambda-notes"></a>

 Jenis respons pemanggilan Lambda berbeda di v2 dan v3. 

```
// v2
import { Lambda } from "@aws-sdk/client-lambda";
import AWS from "aws-sdk";

const lambda = new AWS.Lambda({ REGION });
const invoke = await lambda.invoke({
  FunctionName: "echo",
  Payload: JSON.stringify({ message: "hello" }),
}).promise();

// in v2, Lambda::invoke::Payload is automatically converted to string via a
// specific code customization.
const payloadIsString = typeof invoke.Payload === "string";
console.log("Invoke response payload type is string:", payloadIsString);

const payloadObject = JSON.parse(invoke.Payload);
console.log("Invoke response object", payloadObject);
```

```
// v3
const lambda = new Lambda({ REGION });
const invoke = await lambda.invoke({
  FunctionName: "echo",
  Payload: JSON.stringify({ message: "hello" }),
});

// in v3, Lambda::invoke::Payload is not automatically converted to a string.
// This is to reduce the number of customizations that create inconsistent behaviors.
const payloadIsByteArray = invoke.Payload instanceof Uint8Array;
console.log("Invoke response payload type is Uint8Array:", payloadIsByteArray);

// To maintain the old functionality, only one additional method call is needed:
// v3 adds a method to the Uint8Array called transformToString.
const payloadObject = JSON.parse(invoke.Payload.transformToString());
console.log("Invoke response object", payloadObject);
```

## Amazon SQS
<a name="amazon-sqs-notes"></a>

### MD5 Checksum
<a name="md5-checksum"></a>

 Untuk melewati perhitungan MD5 checksum badan pesan, atur `md5` ke *false* pada objek konfigurasi. Jika tidak, SDK secara default akan menghitung checksum untuk mengirim pesan, serta memvalidasi checksum untuk pesan yang diambil.

```
// Example: Skip MD5 checksum in Amazon SQS
import { SQS } from "@aws-sdk/client-sqs";

new SQS({
  md5: false // note: only available in v3.547.0 and higher
});
```

Saat menggunakan kustom `QueueUrl` dalam operasi Amazon SQS yang memiliki ini sebagai parameter input, di v2 dimungkinkan untuk menyediakan kustom `QueueUrl` yang akan mengganti titik akhir default Klien Amazon SQS. 

### Pesan multi-wilayah
<a name="multi-region-messages"></a>

 Anda harus menggunakan satu klien per wilayah di v3. AWS Wilayah ini dimaksudkan untuk diinisialisasi di tingkat klien dan tidak diubah di antara permintaan. 

```
import { SQS } from "@aws-sdk/client-sqs";

const sqsClients = {
  "us-east-1": new SQS({ region: "us-east-1" }),
  "us-west-2": new SQS({ region: "us-west-2" }),
};

const queues = [
  { region: "us-east-1", url: "https://sqs.us-east-1.amazonaws.com/{AWS_ACCOUNT}/MyQueue" },
  { region: "us-west-2", url: "https://sqs.us-west-2.amazonaws.com/{AWS_ACCOUNT}/MyOtherQueue" },
];

for (const { region, url } of queues) {
  const params = {
    MessageBody: "Hello",
    QueueUrl: url,
  };
  await sqsClients[region].sendMessage(params);
}
```

### Titik akhir kustom
<a name="custom-endpoint"></a>

 Di v3, saat menggunakan titik akhir kustom, yaitu titik akhir yang berbeda dari titik akhir Amazon SQS publik default, Anda harus selalu menyetel titik akhir pada Klien Amazon SQS serta bidangnya. ` QueueUrl` 

```
import { SQS } from "@aws-sdk/client-sqs";

const sqs = new SQS({
  // client endpoint should be specified in v3 when not the default public SQS endpoint for your region.
  // This is required for versions <= v3.506.0
  // This is optional but recommended for versions >= v3.507.0 (a warning will be emitted)
  endpoint: "https://my-custom-endpoint:8000/",
});

await sqs.sendMessage({
  QueueUrl: "https://my-custom-endpoint:8000/1234567/MyQueue",
  Message: "hello",
});
```

 Jika Anda tidak menggunakan endpoint khusus, maka Anda tidak perlu mengatur `endpoint` klien.

```
import { SQS } from "@aws-sdk/client-sqs";

const sqs = new SQS({
  region: "us-west-2",
});

await sqs.sendMessage({
  QueueUrl: "https://sqs.us-west-2.amazonaws.com/1234567/MyQueue",
  Message: "hello",
});
```

# Dokumentasi tambahan
<a name="migrate-supp-docs"></a>

Tabel berikut mencakup tautan ke dokumentasi tambahan yang akan membantu Anda menggunakan dan memahami AWS SDK untuk JavaScript (v3).


****  

| Nama | Catatan | 
| --- | --- | 
| [Klien SDK](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md) | Informasi tentang menginisialisasi klien SDK dan parameter konstruktor umum yang dapat dikonfigurasi. | 
| [Memutakhirkan Catatan (2.x ke 3.x)](https://github.com/aws/aws-sdk-js-v3/blob/main/UPGRADING.md) | Informasi mengenai peningkatan dari AWS SDK untuk JavaScript (v2). | 
| [Menggunakan AWS SDK untuk JavaScript (v3) pada runtime AWS Lambda Node.js](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/AWS_LAMBDA.md) | Praktik terbaik untuk bekerja dalam AWS Lambda menggunakan AWS SDK untuk JavaScript (v3). | 
| [Performa](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/performance/README.md) | Informasi tentang bagaimana tim AWS SDK mengoptimalkan kinerja SDK dan mencakup tips untuk mengonfigurasi SDK agar berjalan secara efisien. | 
| [TypeScript](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/TYPESCRIPT.md) | TypeScript tips dan FAQs terkait dengan AWS SDK untuk JavaScript (v3). | 
| [Penanganan Kesalahan](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/ERROR_HANDLING.md) | Tips untuk menangani kesalahan yang terkait dengan AWS SDK untuk JavaScript (v3). | 
| [Praktik yang Efektif](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/EFFECTIVE_PRACTICES.md) | Rekomendasi umum untuk menggunakan AWS SDK untuk JavaScript (v3). | 