

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

# Pertimbangan Node.js
<a name="node-js-considerations"></a>

Meskipun kode Node.js adalah JavaScript, menggunakan AWS SDK untuk JavaScript dalam Node.js dapat berbeda dari menggunakan SDK dalam skrip browser. Beberapa metode API bekerja di Node.js tetapi tidak dalam skrip browser, serta sebaliknya. Dan berhasil menggunakan beberapa APIs tergantung pada keakraban Anda dengan pola pengkodean Node.js umum, seperti mengimpor dan menggunakan modul Node.js lainnya seperti modul. `File System (fs)`

**catatan**  
AWS merekomendasikan menggunakan versi Active LTS dari Node.js untuk pengembangan.

## Gunakan modul Node.js bawaan
<a name="node-common-modules"></a>

Node.js menyediakan koleksi modul bawaan yang dapat Anda gunakan tanpa menginstalnya. Untuk menggunakan modul ini, buat objek dengan `require` metode untuk menentukan nama modul. Misalnya, untuk menyertakan modul HTTP bawaan, gunakan yang berikut ini.

```
import http from 'http';
```

Memanggil metode modul seolah-olah mereka adalah metode dari objek itu. Misalnya, berikut adalah kode yang membaca file HTML.

```
// include File System module
import fs from "fs"; 
// Invoke readFile method 
fs.readFile('index.html', function(err, data) {
  if (err) {
    throw err;
  } else {
    // Successful file read
  }
});
```

Untuk daftar lengkap semua modul bawaan yang disediakan Node.js, lihat [dokumentasi Node.js](https://nodejs.org/api/modules.html) di situs web Node.js.

## Gunakan paket npm
<a name="node-npm-packages"></a>

Selain modul bawaan, Anda juga dapat menyertakan dan menggabungkan kode pihak ketiga dari`npm`, manajer paket Node.js. Ini adalah repositori paket Node.js open source dan antarmuka baris perintah untuk menginstal paket-paket tersebut. Untuk informasi selengkapnya `npm` dan daftar paket yang tersedia saat ini, lihat [ https://www.npmjs.com](https://www.npmjs.com). Anda juga dapat mempelajari tentang paket Node.js tambahan yang dapat Anda gunakan [di sini GitHub](https://github.com/sindresorhus/awesome-nodejs).

# Konfigurasikan MaxSockets di Node.js
<a name="node-configuring-maxsockets"></a>

Di Node.js, Anda dapat mengatur jumlah maksimum koneksi per asal. Jika ` maxSockets` diatur, klien HTTP tingkat rendah mengantri permintaan dan menetapkannya ke soket saat tersedia.

Ini memungkinkan Anda menetapkan batas atas pada jumlah permintaan bersamaan ke asal tertentu pada suatu waktu. Menurunkan nilai ini dapat mengurangi jumlah kesalahan pelambatan atau batas waktu yang diterima. Namun, itu juga dapat meningkatkan penggunaan memori karena permintaan antri sampai soket tersedia.

Contoh berikut menunjukkan bagaimana mengatur `maxSockets` untuk klien DynamoDB.

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import https from "https";    
let agent = new https.Agent({
  maxSockets: 25
});

let dynamodbClient = new DynamoDBClient({
  requestHandler: new NodeHttpHandler({
    requestTimeout: 3_000,
    httpsAgent: agent
  });
});
```

SDK untuk JavaScript menggunakan `maxSockets` nilai 50 jika Anda tidak memberikan nilai atau `Agent` objek. Jika Anda menyediakan `Agent` objek, `maxSockets` nilainya akan digunakan. Untuk informasi selengkapnya tentang pengaturan `maxSockets` di Node.js, lihat [dokumentasi Node.js](https://nodejs.org/dist/latest/docs/api/http.html#http_agent_maxsockets).

Pada v3.521.0 dari AWS SDK untuk JavaScript, Anda dapat menggunakan sintaks [singkatan](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#new-in-v35210) berikut untuk mengkonfigurasi. `requestHandler`

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

const client = new DynamoDBClient({
  requestHandler: {
    requestTimeout: 3_000,
    httpsAgent: { maxSockets: 25 },
  },
});
```

# Gunakan kembali koneksi dengan keep-alive di Node.js
<a name="node-reusing-connections"></a>

 HTTP/HTTPS Agen Node.js default membuat koneksi TCP baru untuk setiap permintaan baru. *Untuk menghindari biaya membangun koneksi baru, AWS SDK untuk JavaScript menggunakan kembali koneksi TCP secara default.*

Untuk operasi jangka pendek, seperti kueri Amazon DynamoDB, overhead latensi pengaturan koneksi TCP mungkin lebih besar daripada operasi itu sendiri. Selain itu, karena [enkripsi DynamoDB saat](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html) istirahat terintegrasi [AWS KMS](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html), Anda mungkin mengalami latensi dari database yang harus membuat kembali entri cache AWS KMS baru untuk setiap operasi. 

Jika Anda tidak ingin menggunakan kembali koneksi TCP, Anda dapat menonaktifkan penggunaan kembali koneksi ini hidup dengan `keepAlive` basis klien per layanan seperti yang ditunjukkan dalam contoh berikut untuk klien DynamoDB.

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { Agent } from "https";

const dynamodbClient = new DynamoDBClient({
    requestHandler: new NodeHttpHandler({
        httpsAgent: new Agent({ keepAlive: false })
    })
});
```

Jika `keepAlive` diaktifkan, Anda juga dapat mengatur penundaan awal untuk paket TCP Keep-Alive`keepAliveMsecs`, yang secara default adalah 1000 ms. Lihat [dokumentasi Node.js](https://nodejs.org/api/http.html#new-agentoptions) untuk detailnya.

# Konfigurasikan proxy untuk Node.js
<a name="node-configuring-proxies"></a>

Jika Anda tidak dapat terhubung langsung ke internet, SDK untuk JavaScript mendukung penggunaan proxy HTTP atau HTTPS melalui agen HTTP pihak ketiga.

Untuk menemukan agen HTTP pihak ketiga, cari “HTTP proxy” di [npm](https://www.npmjs.com/).

Untuk menginstal proxy agen HTTP pihak ketiga, masukkan yang berikut ini di prompt perintah, di mana *PROXY* nama `npm` paket. 

```
npm install PROXY --save
```

Untuk menggunakan proxy dalam aplikasi Anda, gunakan ` httpsAgent` properti `httpAgent` and, seperti yang ditunjukkan pada contoh berikut untuk klien DynamoDB. 

```
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { HttpsProxyAgent } from "hpagent";
const agent = new HttpsProxyAgent({ proxy: "http://internal.proxy.com" });
const dynamodbClient = new DynamoDBClient({
    requestHandler: new NodeHttpHandler({
        httpAgent: agent,
        httpsAgent: agent
    }),
});
```

**catatan**  
`httpAgent`tidak sama dengan`httpsAgent`, dan karena sebagian besar panggilan dari klien akan ke`https`, keduanya harus disetel.

# Daftarkan bundel sertifikat di Node.js
<a name="node-registering-certs"></a>

Penyimpanan kepercayaan default untuk Node.js menyertakan sertifikat yang diperlukan untuk mengakses AWS layanan. Dalam beberapa kasus, mungkin lebih baik untuk menyertakan hanya satu set sertifikat tertentu.

Dalam contoh ini, sertifikat khusus pada disk digunakan untuk membuat ` https.Agent` yang menolak koneksi kecuali sertifikat yang ditunjuk disediakan. Yang baru dibuat kemudian `https.Agent` digunakan oleh klien DynamoDB.

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { Agent } from "https";
import { readFileSync } from "fs";
const certs = [readFileSync("/path/to/cert.pem")];
const agent = new Agent({
  rejectUnauthorized: true,
  ca: certs
});
const dynamodbClient = new DynamoDBClient({
  requestHandler: new NodeHttpHandler({
    httpAgent: agent,
    httpsAgent: agent
  })
});
```