

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

# Bekerja dengan AWS layanan di SDK untuk JavaScript
<a name="working-with-services"></a>

 AWS SDK untuk JavaScript V3 menyediakan akses ke layanan yang didukungnya melalui kumpulan kelas klien. Dari kelas klien ini, Anda membuat objek antarmuka layanan, yang biasa disebut *objek layanan*. Setiap AWS layanan yang didukung memiliki satu atau lebih kelas klien yang menawarkan tingkat rendah APIs untuk menggunakan fitur dan sumber daya layanan. Misalnya, Amazon APIs DynamoDB tersedia melalui kelas. `DynamoDB`

Layanan yang diekspos melalui SDK untuk JavaScript mengikuti pola permintaan-respons untuk bertukar pesan dengan aplikasi panggilan. Dalam pola ini, kode yang memanggil layanan mengirimkan HTTP/HTTPS permintaan ke titik akhir untuk layanan. Permintaan berisi parameter yang diperlukan untuk berhasil memanggil fitur tertentu yang dipanggil. Layanan yang dipanggil menghasilkan respons yang dikirim kembali ke pemohon. Respons berisi data jika operasi berhasil atau informasi kesalahan jika operasi tidak berhasil. 

Memanggil AWS layanan mencakup siklus hidup permintaan dan respons penuh dari operasi pada objek layanan, termasuk percobaan ulang apa pun yang dicoba. Permintaan berisi nol atau lebih properti sebagai parameter JSON. Respons dienkapsulasi dalam objek yang terkait dengan operasi, dan dikembalikan ke pemohon melalui salah satu dari beberapa teknik, seperti fungsi callback atau janji. JavaScript 

**Topics**
+ [Membuat dan memanggil objek layanan](creating-and-calling-service-objects.md)
+ [Layanan panggilan secara asinkron](calling-services-asynchronously.md)
+ [Buat permintaan klien layanan](the-request-object.md)
+ [Menangani tanggapan klien layanan](the-response-object.md)
+ [Bekerja dengan JSON](working-with-json.md)
+ [AWS SDK untuk JavaScript Panggilan Pencatatan](logging-sdk-calls.md)
+ [Gunakan endpoint AWS berbasis akun dengan DynamoDB](ddb-account-based-endpoints-v3.md)
+ [Perlindungan integritas data dengan checksum Amazon S3](s3-checksums.md)
+ [SDK untuk contoh JavaScript kode](sdk-code-samples.md)

# Membuat dan memanggil objek layanan
<a name="creating-and-calling-service-objects"></a>

 JavaScript API mendukung sebagian besar AWS layanan yang tersedia. Setiap layanan di JavaScript API menyediakan kelas klien dengan `send` metode yang Anda gunakan untuk menjalankan setiap API yang didukung layanan. Untuk informasi selengkapnya tentang kelas layanan, operasi, dan parameter di JavaScript API, lihat [Referensi API](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/).

Saat menggunakan SDK di Node.js, Anda menambahkan paket SDK untuk setiap layanan yang Anda butuhkan ke aplikasi Anda menggunakan`import`, yang menyediakan dukungan untuk semua layanan saat ini. Contoh berikut membuat objek layanan Amazon S3 di Wilayah. `us-west-1`

```
// Import the Amazon S3 service client
import { S3Client } from "@aws-sdk/client-s3"; 
// Create an S3 client in the us-west-1 Region
const s3Client = new S3Client({
    region: "us-west-1"
});
```

## Tentukan parameter objek layanan
<a name="specifying-service-object-parameters"></a>

Saat memanggil metode objek layanan, berikan parameter di JSON seperti yang dipersyaratkan oleh API. Misalnya, di Amazon S3, untuk mendapatkan objek untuk bucket dan kunci tertentu, teruskan parameter berikut ke `GetObjectCommand` metode dari. `S3Client` Untuk informasi selengkapnya tentang meneruskan parameter JSON, lihat[Bekerja dengan JSON](working-with-json.md).

```
s3Client.send(new GetObjectCommand({Bucket: 'bucketName', Key: 'keyName'}));
```

Untuk informasi selengkapnya tentang parameter Amazon S3, lihat [@aws -sdk/client-s3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/) di Referensi API.

## Gunakan @smithy /types untuk klien yang dihasilkan di TypeScript
<a name="smithy-types"></a>

Jika Anda menggunakan TypeScript, `@smithy/types` paket memungkinkan Anda untuk memanipulasi bentuk input dan output klien.

### Skenario: hapus `undefined` dari struktur input dan output
<a name="remove-undefined-from-input"></a>

Anggota bentuk yang dihasilkan disatukan dengan `undefined` bentuk input dan `?` (opsional) untuk bentuk keluaran. Untuk input, ini menunda validasi ke layanan. Untuk output, ini sangat menyarankan agar Anda harus memeriksa data output secara runtime.

Jika Anda ingin melewati langkah-langkah ini, gunakan `AssertiveClient` atau `UncheckedClient` ketik pembantu. Contoh berikut menggunakan pembantu tipe dengan layanan Amazon S3.

```
import { S3 } from "@aws-sdk/client-s3";
import type { AssertiveClient, UncheckedClient } from "@smithy/types";

const s3a = new S3({}) as AssertiveClient<S3>;
const s3b = new S3({}) as UncheckedClient<S3>;

// AssertiveClient enforces required inputs are not undefined
// and required outputs are not undefined.
const get = await s3a.getObject({
  Bucket: "",
  // @ts-expect-error (undefined not assignable to string)
  Key: undefined,
});

// UncheckedClient makes output fields non-nullable.
// You should still perform type checks as you deem
// necessary, but the SDK will no longer prompt you
// with nullability errors.
const body = await (
  await s3b.getObject({
    Bucket: "",
    Key: "",
  })
).Body.transformToString();
```

Saat menggunakan transformasi pada klien non-agregat dengan `Command` sintaks, input tidak dapat divalidasi karena melewati kelas lain seperti yang ditunjukkan pada contoh di bawah ini.

```
import { S3Client, ListBucketsCommand, GetObjectCommand, GetObjectCommandInput } from "@aws-sdk/client-s3";
import type { AssertiveClient, UncheckedClient, NoUndefined } from "@smithy/types";

const s3 = new S3Client({}) as UncheckedClient<S3Client>;

const list = await s3.send(
  new ListBucketsCommand({
    // command inputs are not validated by the type transform.
    // because this is a separate class.
  })
);

/**
 * Although less ergonomic, you can use the NoUndefined<T>
 * transform on the input type.
 */
const getObjectInput: NoUndefined<GetObjectCommandInput> = {
  Bucket: "undefined",
  // @ts-expect-error (undefined not assignable to string)
  Key: undefined,
  // optional params can still be undefined.
  SSECustomerAlgorithm: undefined,
};

const get = s3.send(new GetObjectCommand(getObjectInput));

// outputs are still transformed.
await get.Body.TransformToString();
```

### Skenario: mempersempit jenis gumpalan muatan keluaran klien TypeScript yang dihasilkan Smithy
<a name="remove-undefined-from-input"></a>

Skenario ini sebagian besar relevan dengan operasi dengan badan streaming seperti di `S3Client` dalam AWS SDK untuk JavaScript v3.

Karena jenis muatan gumpalan bergantung pada platform, Anda mungkin ingin menunjukkan dalam aplikasi Anda bahwa klien berjalan di lingkungan tertentu. Ini mempersempit jenis muatan gumpalan seperti yang ditunjukkan pada contoh berikut.

```
import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3";
import type { NodeJsClient, SdkStream, StreamingBlobPayloadOutputTypes } from "@smithy/types";
import type { IncomingMessage } from "node:http";

// default client init.
const s3Default = new S3Client({});

// client init with type narrowing.
const s3NarrowType = new S3Client({}) as NodeJsClient<S3Client>;

// The default type of blob payloads is a wide union type including multiple possible
// request handlers.
const body1: StreamingBlobPayloadOutputTypes = (await s3Default.send(new GetObjectCommand({ Key: "", Bucket: "" })))
  .Body!;

// This is of the narrower type SdkStream<IncomingMessage> representing
// blob payload responses using specifically the node:http request handler.
const body2: SdkStream<IncomingMessage> = (await s3NarrowType.send(new GetObjectCommand({ Key: "", Bucket: "" })))
  .Body!;
```

# Layanan panggilan secara asinkron
<a name="calling-services-asynchronously"></a>

Semua permintaan yang dibuat melalui SDK bersifat asinkron. Ini penting untuk diingat saat menulis skrip browser. JavaScript berjalan di browser web biasanya hanya memiliki satu thread eksekusi. Setelah melakukan panggilan asinkron ke AWS layanan, skrip browser terus berjalan dan dalam proses dapat mencoba mengeksekusi kode yang bergantung pada hasil asinkron sebelum kembali.

Membuat panggilan asinkron ke AWS layanan termasuk mengelola panggilan tersebut sehingga kode Anda tidak mencoba menggunakan data sebelum data tersedia. Topik di bagian ini menjelaskan perlunya mengelola panggilan asinkron dan merinci berbagai teknik yang dapat Anda gunakan untuk mengelolanya.

Meskipun Anda dapat menggunakan salah satu teknik ini untuk mengelola panggilan asinkron, kami sarankan Anda menggunakan async/await untuk semua kode baru.

async/menunggu  
Kami menyarankan Anda menggunakan teknik ini karena ini adalah perilaku default di V3.

janji  
Gunakan teknik ini di browser yang tidak mendukung async/await.

panggilan balik  
Hindari menggunakan callback kecuali dalam kasus yang sangat sederhana. Namun, Anda mungkin merasa berguna untuk skenario migrasi.

**Topics**
+ [Kelola panggilan asinkron](making-asynchronous-calls.md)
+ [Gunakan async/await](using-async-await.md)
+ [Gunakan JavaScript janji](using-promises.md)
+ [Gunakan fungsi callback anonim](using-a-callback-function.md)

# Kelola panggilan asinkron
<a name="making-asynchronous-calls"></a>

Misalnya, halaman beranda situs web e-commerce memungkinkan pelanggan yang kembali masuk. Bagian dari manfaat bagi pelanggan yang masuk adalah bahwa, setelah masuk, situs kemudian menyesuaikan diri dengan preferensi khusus mereka. Untuk membuat ini terjadi:

1. Pelanggan harus masuk dan divalidasi dengan kredensi masuk mereka.

1. Preferensi pelanggan diminta dari database pelanggan.

1. Basis data menyediakan preferensi pelanggan yang digunakan untuk menyesuaikan situs sebelum halaman dimuat.

Jika tugas-tugas ini dijalankan secara serempak, maka masing-masing harus selesai sebelum tugas berikutnya dapat dimulai. Halaman web tidak akan dapat menyelesaikan pemuatan sampai preferensi pelanggan kembali dari database. Namun, setelah kueri database dikirim ke server, penerimaan data pelanggan dapat ditunda atau bahkan gagal karena kemacetan jaringan, lalu lintas basis data yang sangat tinggi, atau koneksi perangkat seluler yang buruk.

Agar situs web tidak membeku dalam kondisi tersebut, hubungi database secara asinkron. Setelah panggilan database dijalankan, mengirimkan permintaan asinkron Anda, kode Anda terus dijalankan seperti yang diharapkan. Jika Anda tidak mengelola respons panggilan asinkron dengan benar, kode Anda dapat mencoba menggunakan informasi yang diharapkan kembali dari database ketika data tersebut belum tersedia.

![\[Menampilkan perbedaan antara eksekusi sinkron dan asinkron.\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/async-vs-sync.png)


# Gunakan async/await
<a name="using-async-await"></a>

Daripada menggunakan janji, Anda harus mempertimbangkan untuk menggunakan async/await. Fungsi asinkron lebih sederhana dan membutuhkan lebih sedikit boilerplate daripada menggunakan janji. Await hanya dapat digunakan dalam fungsi asinkron untuk menunggu nilai secara asinkron.

Contoh berikut digunakan async/await untuk mencantumkan semua tabel Amazon DynamoDB Anda di. ` us-west-2`

**catatan**  
Untuk contoh ini untuk menjalankan:  
Instal klien AWS SDK untuk JavaScript DynamoDB dengan `npm install @aws-sdk/client-dynamodb` memasukkan baris perintah proyek Anda.
Pastikan Anda telah mengonfigurasi AWS kredensialnya dengan benar. Untuk informasi selengkapnya, lihat [Tetapkan kredensialnya](setting-credentials.md). 

```
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";
(async function () {
  const dbClient = new DynamoDBClient({ region: "us-west-2" });
  const command = new ListTablesCommand({});

  try {
    const results = await dbClient.send(command);
    console.log(results.TableNames.join('\n'));
  } catch (err) {
    console.error(err)
  }
})();
```

**catatan**  
 Tidak semua browser mendukung async/await. Lihat [Fungsi async](https://caniuse.com/#feat=async-functions) untuk daftar browser dengan async/await dukungan. 

# Gunakan JavaScript janji
<a name="using-promises"></a>

Gunakan metode AWS SDK untuk JavaScript v3 klien layanan (`ListTablesCommand`) untuk membuat panggilan layanan dan mengelola aliran asinkron alih-alih menggunakan panggilan balik. Contoh berikut menunjukkan cara mendapatkan nama tabel Amazon DynamoDB Anda. `us-west-2`

```
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";
const dbClient = new DynamoDBClient({ region: 'us-west-2' });

dbClient.listtables(new ListTablesCommand({}))
  .then(response => {
    console.log(response.TableNames.join('\n'));
  })
  .catch((error) => {
    console.error(error);
  });
```

## Koordinasikan beberapa janji
<a name="multiple-promises"></a>

Dalam beberapa situasi, kode Anda harus membuat beberapa panggilan asinkron yang memerlukan tindakan hanya jika semuanya berhasil dikembalikan. Jika Anda mengelola panggilan metode asinkron individual tersebut dengan janji, Anda dapat membuat janji tambahan yang menggunakan metode ini. `all` 

Metode ini memenuhi janji payung ini jika dan ketika berbagai janji yang Anda berikan ke metode terpenuhi. Fungsi callback dilewatkan sebuah array dari nilai-nilai dari janji-janji yang diteruskan ke `all` metode.

Dalam contoh berikut, AWS Lambda fungsi harus membuat tiga panggilan asinkron ke Amazon DynamoDB tetapi hanya dapat diselesaikan setelah janji untuk setiap panggilan terpenuhi.

```
const values = await Promise.all([firstPromise, secondPromise, thirdPromise]);

console.log("Value 0 is " + values[0].toString);
console.log("Value 1 is " + values[1].toString);
console.log("Value 2 is " + values[2].toString);

return values;
```

## Browser dan dukungan Node.js untuk janji
<a name="browser-node-promise-support"></a>

Support for native JavaScript promises (ECMAScript 2015) tergantung pada JavaScript mesin dan versi di mana kode Anda dijalankan. Untuk membantu menentukan dukungan untuk JavaScript janji di setiap lingkungan tempat kode Anda perlu dijalankan, lihat [tabel ECMAScript kompatibilitas](https://compat-table.github.io/compat-table/es6/) di GitHub.

# Gunakan fungsi callback anonim
<a name="using-a-callback-function"></a>

Setiap metode objek layanan dapat menerima fungsi callback anonim sebagai parameter terakhir. Tanda tangan dari fungsi callback ini adalah sebagai berikut.

```
function(error, data) {
    // callback handling code
};
```

Fungsi callback ini dijalankan ketika respon berhasil atau data kesalahan kembali. Jika pemanggilan metode berhasil, isi respons tersedia untuk fungsi callback dalam parameter. `data` Jika panggilan tidak berhasil, detail tentang kegagalan disediakan dalam `error` parameter.

Biasanya kode di dalam fungsi callback menguji kesalahan, yang diproses jika dikembalikan. Jika kesalahan tidak dikembalikan, kode kemudian mengambil data dalam respons dari `data` parameter. Bentuk dasar dari fungsi callback terlihat seperti contoh ini.

```
function(error, data) {
    if (error) {
        // error handling code
        console.log(error);
    } else {
        // data handling code
        console.log(data);
    }
};
```

Pada contoh sebelumnya, detail kesalahan atau data yang dikembalikan dicatat ke konsol. Berikut adalah contoh yang menunjukkan fungsi callback diteruskan sebagai bagian dari memanggil metode pada objek layanan.

```
ec2.describeInstances(function(error, data) {
  if (error) {
    console.log(error); // an error occurred
  } else {
    console.log(data); // request succeeded
  }
});
```

# Buat permintaan klien layanan
<a name="the-request-object"></a>

Membuat permintaan untuk AWS melayani klien sangat mudah. Versi 3 (V3) SDK untuk JavaScript memungkinkan Anda mengirim permintaan. 

**catatan**  
Anda juga dapat melakukan operasi menggunakan perintah versi 2 (V2) saat menggunakan V3 SDK untuk. JavaScript Untuk informasi selengkapnya, lihat [Menggunakan perintah v2](migrating.md#using_v2_commands).

**Untuk mengirim permintaan:**

1. Inisialisasi objek klien dengan konfigurasi yang diinginkan, seperti AWS Region tertentu.

1. (Opsional) Buat objek permintaan JSON dengan nilai untuk permintaan, seperti nama bucket Amazon S3 tertentu. Anda dapat memeriksa parameter permintaan dengan melihat topik Referensi API untuk antarmuka dengan nama yang terkait dengan metode klien. Misalnya, jika Anda menggunakan metode *AbcCommand* klien, antarmuka permintaan adalah*AbcInput*.

1. Inisialisasi perintah layanan, opsional, dengan objek permintaan sebagai input.

1. Panggil `send` klien dengan objek perintah sebagai input.

Misalnya, untuk membuat daftar tabel `us-west-2` Amazon DynamoDB Anda, Anda dapat melakukannya dengan async/await.

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

(async function () {
  const dbClient = new DynamoDBClient({ region: 'us-west-2' });
  const command = new ListTablesCommand({});

  try {
    const results = await dbClient.send(command);
    console.log(results.TableNames.join('\n'));
  } catch (err) {
    console.error(err);
  }
})();
```

# Menangani tanggapan klien layanan
<a name="the-response-object"></a>

Setelah metode klien layanan telah dipanggil, ia mengembalikan contoh objek respon dari antarmuka dengan nama yang terkait dengan metode klien. Misalnya, jika Anda menggunakan metode * AbcCommand* klien, objek respons adalah tipe *AbcResponse* (antarmuka).

## Akses data yang dikembalikan dalam respons
<a name="response-data-property"></a>

Objek respon berisi data, sebagai properti, yang dikembalikan oleh permintaan layanan.

Dalam[Buat permintaan klien layanan](the-request-object.md), ` ListTablesCommand` perintah mengembalikan nama tabel di `TableNames` properti respons.

## Mengakses informasi kesalahan
<a name="response-error-property"></a>

Jika perintah gagal, itu melempar pengecualian. Cuplikan kode berikut menunjukkan cara menangani pengecualian layanan.

```
try {
  await client.send(someCommand);
} catch (e) {
  if (e.name === "InvalidSignatureException") {
    // Handle InvalidSignatureException
  } else if (e.name === "ResourceNotFoundException") {
    // Handle ResourceNotFoundException
  } else if (e.name === "FooServiceException") {
    // Handle all other server-side exceptions from Foo service
  } else {
    // Handle errors from SDK
  }
}
```

# Bekerja dengan JSON
<a name="working-with-json"></a>

JSON adalah format untuk pertukaran data yang dapat dibaca manusia dan dapat dibaca mesin. Meskipun nama JSON adalah akronim dari *JavaScript Object Notation*, format JSON tidak tergantung pada bahasa pemrograman apa pun.

 AWS SDK untuk JavaScript Menggunakan JSON untuk mengirim data ke objek layanan saat membuat permintaan dan menerima data dari objek layanan sebagai JSON. Untuk informasi lebih lanjut tentang JSON, lihat [json.org](https://json.org).

![\[Menampilkan format umum dan bagian dari JSON.\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/json-format.png)


JSON mewakili data dalam dua cara:
+ Sebagai *objek*, yang merupakan kumpulan pasangan nama-nilai yang tidak berurutan. Sebuah objek didefinisikan dalam kurung kurung kiri (`{`) dan kanan (`}`). Setiap pasangan nilai dimulai dengan nama, diikuti dengan titik dua, diikuti dengan nilai. Pasangan nama-nilai dipisahkan koma.
+ Sebagai *array*, yang merupakan kumpulan nilai yang diurutkan. Array didefinisikan dalam tanda kurung kiri (`[`) dan kanan (`]`). Item dalam array dipisahkan koma.

Berikut adalah contoh objek JSON yang berisi array objek di mana objek mewakili kartu dalam permainan kartu. Setiap kartu didefinisikan oleh dua pasangan nama-nilai, satu yang menentukan nilai unik untuk mengidentifikasi kartu itu dan satu lagi yang menentukan URL yang menunjuk ke gambar kartu yang sesuai.

```
var cards = [
  {"CardID":"defaultname", "Image":"defaulturl"},
  {"CardID":"defaultname", "Image":"defaulturl"},
  {"CardID":"defaultname", "Image":"defaulturl"},
  {"CardID":"defaultname", "Image":"defaulturl"},
  {"CardID":"defaultname", "Image":"defaulturl"}
];
```

## JSON sebagai parameter objek layanan
<a name="json-as-parameters-passed"></a>

Berikut adalah contoh JSON sederhana yang digunakan untuk menentukan parameter panggilan ke objek AWS Lambda layanan.

```
const params = {
   FunctionName : funcName,
   Payload : JSON.stringify(payload),
   LogType : LogType.Tail,
};
```

`params`Objek didefinisikan oleh tiga pasangan nama-nilai, dipisahkan oleh koma di dalam kurung kiri dan kanan. Saat memberikan parameter ke panggilan metode objek layanan, nama ditentukan oleh nama parameter untuk metode objek layanan yang Anda rencanakan untuk dipanggil. Saat menjalankan fungsi Lambda`FunctionName`,,`Payload`, ` LogType` dan merupakan parameter yang digunakan untuk memanggil metode `invoke` pada objek layanan Lambda.

Saat meneruskan parameter ke panggilan metode objek layanan, berikan objek JSON ke panggilan metode, seperti yang ditunjukkan pada contoh berikut untuk menjalankan fungsi Lambda.

```
const invoke = async (funcName, payload) => {
  const client = new LambdaClient({});
  const command = new InvokeCommand({
    FunctionName: funcName,
    Payload: JSON.stringify(payload),
    LogType: LogType.Tail,
  });

  const { Payload, LogResult } = await client.send(command);
  const result = Buffer.from(Payload).toString();
  const logs = Buffer.from(LogResult, "base64").toString();
  return { logs, result };
};
```

# AWS SDK untuk JavaScript Panggilan Pencatatan
<a name="logging-sdk-calls"></a>

 AWS SDK untuk JavaScript Ini diinstrumentasi dengan logger bawaan sehingga Anda dapat mencatat panggilan API yang Anda buat dengan SDK untuk. JavaScript

Untuk mengaktifkan logger dan mencetak entri log di konsol, konfigurasikan klien layanan menggunakan parameter opsional`logger`. Contoh di bawah ini memungkinkan pencatatan klien sambil mengabaikan keluaran jejak dan debug.

```
new S3Client({
  logger: {
    ...console,
    debug(...args) {},
    trace(...args) {},
  },
});
```

## Menggunakan middleware untuk mencatat permintaan
<a name="middleware-logger"></a>

 AWS SDK untuk JavaScript Menggunakan tumpukan middleware untuk mengontrol siklus hidup panggilan operasi. Setiap middleware di tumpukan memanggil 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 middleware mana yang dipanggil mengarah ke kesalahan. Berikut adalah contoh permintaan logging menggunakan middleware:

```
const client = new DynamoDB({ region: "us-west-2" });

client.middlewareStack.add(
  (next, context) => async (args) => {
    console.log("AWS SDK context", context.clientName, context.commandName);
    console.log("AWS SDK request input", args.input);
    const result = await next(args);
    console.log("AWS SDK request output:", result.output);
    return result;
  },
  {
    name: "MyMiddleware",
    step: "build",
    override: true,
  }
);

await client.listTables({});
```

Pada contoh di atas, middleware ditambahkan ke tumpukan middleware klien DynamoDB. Argumen pertama adalah fungsi yang menerima`next`, middleware berikutnya dalam tumpukan untuk memanggil, dan`context`, objek yang berisi beberapa informasi tentang operasi yang dipanggil. Ia mengembalikan fungsi yang menerima`args`, objek yang berisi parameter yang diteruskan ke operasi dan permintaan, dan mengembalikan hasil dari memanggil middleware berikutnya dengan. `args`

# Gunakan endpoint AWS berbasis akun dengan DynamoDB
<a name="ddb-account-based-endpoints-v3"></a>

DynamoDB [AWS menawarkan endpoint berbasis akun](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.SDKOverview.html#Programming.SDKs.endpoints) yang dapat meningkatkan kinerja dengan menggunakan ID akun AWS Anda untuk merampingkan perutean permintaan. 

Untuk memanfaatkan fitur ini, Anda perlu menggunakan versi 3.656.0 atau lebih tinggi dari AWS SDK untuk JavaScript versi 3. Fitur endpoint berbasis akun ini diaktifkan secara default di versi baru ini.

Jika Anda ingin memilih keluar dari perutean berbasis akun, Anda memiliki opsi berikut:
+ Konfigurasikan klien layanan DynamoDB dengan parameter yang disetel `accountIdEndpointMode` ke. `disabled`
+ Atur variabel lingkungan `AWS_ACCOUNT_ID_ENDPOINT_MODE` ke`disabled`.
+ Perbarui pengaturan file AWS konfigurasi bersama `account_id_endpoint_mode` ke`disabled`.

Cuplikan berikut adalah contoh cara menonaktifkan routing berbasis akun dengan mengonfigurasi klien layanan DynamoDB:

```
const ddbClient = new DynamoDBClient({
  region: "us-west-2",
  accountIdEndpointMode: "disabled" // Disable account ID in the endpoint
});
```

Panduan Referensi AWS SDKs and Tools memberikan informasi lebih lanjut tentang [opsi konfigurasi lainnya](https://docs.aws.amazon.com/sdkref/latest/guide/feature-account-endpoints.html).

# Perlindungan integritas data dengan checksum Amazon S3
<a name="s3-checksums"></a>

Amazon Simple Storage Service (Amazon S3) menyediakan kemampuan untuk menentukan checksum saat Anda mengunggah objek. Ketika Anda menentukan checksum, itu disimpan dengan objek dan dapat divalidasi ketika objek diunduh.

Checksum menyediakan lapisan integritas data tambahan saat Anda mentransfer file. Dengan checksum, Anda dapat memverifikasi konsistensi data dengan mengonfirmasi bahwa file yang diterima cocok dengan file asli. [Untuk informasi selengkapnya tentang checksum dengan Amazon S3, lihat Panduan [Pengguna Layanan Penyimpanan Sederhana Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html), termasuk algoritme yang didukung.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#using-additional-checksums)

Anda memiliki fleksibilitas untuk memilih algoritma yang paling sesuai dengan kebutuhan Anda dan membiarkan SDK menghitung checksum. Atau, Anda dapat memberikan nilai checksum yang telah dihitung sebelumnya dengan menggunakan salah satu algoritme yang didukung.

**catatan**  
Dimulai dengan versi 3.729.0 AWS SDK untuk JavaScript, SDK menyediakan perlindungan integritas default dengan menghitung checksum secara otomatis untuk unggahan. `CRC32` SDK menghitung checksum ini jika Anda tidak memberikan nilai checksum yang telah dihitung sebelumnya atau jika Anda tidak menentukan algoritme yang harus digunakan SDK untuk menghitung checksum.  
SDK juga menyediakan pengaturan global untuk perlindungan integritas data yang dapat Anda atur secara eksternal, yang dapat Anda baca di Panduan Referensi Alat [AWS SDKs dan](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) Alat.

## Mengunggah objek
<a name="use-service-S3-checksum-upload"></a>

Anda mengunggah objek ke Amazon S3 dengan menggunakan [PutObject](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectCommand/)perintah dari file. `S3Client` Gunakan `ChecksumAlgorithm` parameter pembangun `PutObjectRequest` untuk mengaktifkan perhitungan checksum dan menentukan algoritma. Lihat [algoritma checksum yang didukung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#using-additional-checksums) untuk nilai yang valid.

Cuplikan kode berikut menunjukkan permintaan untuk mengunggah objek dengan checksum CRC-32. Ketika SDK mengirimkan permintaan, ia menghitung checksum CRC-32 dan mengunggah objek. Amazon S3 menyimpan checksum dengan objek.

```
import { ChecksumAlgorithm, S3 } from "@aws-sdk/client-s3";

const client = new S3();
const response = await client.putObject({
  Bucket: "my-bucket",
  Key: "my-key",
  Body: "Hello, world!",
  ChecksumAlgorithm: ChecksumAlgorithm.CRC32,
});
```

Jika Anda tidak menyediakan algoritma checksum dengan permintaan, perilaku checksum bervariasi tergantung pada versi SDK yang Anda gunakan seperti yang ditunjukkan pada tabel berikut.

**Perilaku checksum ketika tidak ada algoritma checksum yang disediakan**


| SDK untuk versi JavaScript  | Perilaku checksum | 
| --- | --- | 
| Lebih awal dari 3.729.0 | SDK tidak secara otomatis menghitung checksum berbasis CRC dan menyediakannya dalam permintaan. | 
| 3.729.0 atau yang lebih baru | SDK menggunakan CRC32 algoritma untuk menghitung checksum dan menyediakannya dalam permintaan. Amazon S3 memvalidasi integritas transfer dengan menghitung checksumnya sendiri dan membandingkannya dengan CRC32 checksum yang disediakan oleh SDK. Jika checksum cocok, checksum disimpan dengan objek. | 

Jika checksum yang dihitung SDK tidak cocok dengan checksum yang dihitung Amazon S3 saat menerima permintaan, kesalahan akan dikembalikan.

### Gunakan nilai checksum yang telah dihitung sebelumnya
<a name="use-service-S3-checksum-upload-pre"></a>

Nilai checksum yang telah dihitung sebelumnya yang disertakan dengan permintaan menonaktifkan komputasi otomatis oleh SDK dan menggunakan nilai yang disediakan sebagai gantinya.

Contoh berikut menunjukkan permintaan dengan checksum SHA-256 yang telah dihitung sebelumnya.

```
import { S3 } from "@aws-sdk/client-s3";
import { createHash } from "node:crypto";

const client = new S3();

const Body = "Hello, world!";
const ChecksumSHA256 = await createHash("sha256").update(Body).digest("base64");

const response = await client.putObject({
  Bucket: "my-bucket",
  Key: "my-key",
  Body,
  ChecksumSHA256,
});
```

Jika Amazon S3 menentukan nilai checksum salah untuk algoritme yang ditentukan, layanan akan mengembalikan respons kesalahan.

### Unggahan multipart
<a name="use-service-S3-checksum-upload-multi"></a>

Anda juga dapat menggunakan checksum dengan unggahan multipart. AWS SDK untuk JavaScript Dapat menggunakan opsi `Upload` pustaka untuk dari `@aws-sdk/lib-storage` untuk menggunakan checksum dengan unggahan multibagian.

```
import { ChecksumAlgorithm, S3 } from "@aws-sdk/client-s3";
import { Upload } from "@aws-sdk/lib-storage";
import { createReadStream } from "node:fs";

const client = new S3();
const filePath = "/path/to/file";
const Body = createReadStream(filePath);

const upload = new Upload({
  client,
  params: {
    Bucket: "my-bucket",
    Key: "my-key",
    Body,
    ChecksumAlgorithm: ChecksumAlgorithm.CRC32,
  },
});
await upload.done();
```

# SDK untuk contoh JavaScript kode
<a name="sdk-code-samples"></a>

Topik di bagian ini berisi contoh bagaimana menggunakan AWS SDK untuk JavaScript dengan APIs berbagai layanan untuk melaksanakan tugas-tugas umum.

Temukan kode sumber untuk contoh-contoh ini dan lainnya di [Repositori Contoh AWS Kode](https://github.com/awsdocs/aws-doc-sdk-examples) di. GitHub Untuk mengusulkan contoh kode baru agar tim AWS dokumentasi mempertimbangkan untuk memproduksi, buat permintaan. Tim ingin menghasilkan contoh kode yang mencakup skenario dan kasus penggunaan yang lebih luas, dibandingkan cuplikan kode sederhana yang hanya mencakup panggilan API individual. Untuk petunjuknya, lihat *bagian Penulisan kode* [di GitHub pedoman kontribusi](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/CONTRIBUTING.md).

**penting**  
Contoh-contoh ini menggunakan ECMAScript6 sintaks impor/ekspor.   
Ini memerlukan Node.js versi 14.17 atau lebih tinggi. Untuk mengunduh dan menginstal versi terbaru dari Node.js, lihat [unduhan Node.js.](https://nodejs.org/en/download) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md) pedoman konversi.

**Topics**
+ [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)
+ [AWS Elemental MediaConvert contoh](emc-examples.md)
+ [AWS Lambda contoh](lambda-examples.md)
+ [Contoh Amazon Lex](lex-examples.md)
+ [Contoh Amazon Polly](polly-examples.md)
+ [Contoh Amazon Redshift](redshift-examples.md)
+ [Contoh Layanan Email Sederhana Amazon](ses-examples.md)
+ [Contoh Layanan Pemberitahuan Sederhana Amazon](sns-examples.md)
+ [Contoh Amazon Transcribe](Transcribe-examples.md)
+ [Menyiapkan Node.js pada instans Amazon EC2](setting-up-node-on-ec2-instance.md)
+ [Memanggil Lambda dengan API Gateway](api-gateway-invoking-lambda-example.md)
+ [Membuat acara terjadwal untuk menjalankan AWS Lambda fungsi](scheduled-events-invoking-lambda-example.md)
+ [Membangun chatbot Amazon Lex](lex-bot-example.md)

# JavaScript ES6/CommonJS sintaks
<a name="sdk-example-javascript-syntax"></a>

Contoh AWS SDK untuk JavaScript kode ditulis dalam ECMAScript 6 (ES6). ES6 membawa 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) Namun, jika Anda mau, Anda dapat mengonversi salah satu contoh kami ke sintaks CommonJS menggunakan pedoman berikut:
+ Hapus `"type" : "module"` dari `package.json` lingkungan proyek Anda.
+ Mengkonversi semua ES6 `import` pernyataan ke pernyataan CommonJS`require`. Misalnya, konversi:

  ```
  import { CreateBucketCommand } from "@aws-sdk/client-s3";
  import { s3 } from "./libs/s3Client.js";
  ```

  Untuk CommonJS-nya yang setara:

  ```
  const { CreateBucketCommand } = require("@aws-sdk/client-s3");
  const { s3 } = require("./libs/s3Client.js");
  ```
+ Mengkonversi semua ES6 `export` pernyataan ke pernyataan CommonJS`module.exports`. Misalnya, konversi:

  ```
  export {s3}
  ```

  Untuk CommonJS-nya yang setara:

  ```
  module.exports = {s3}
  ```

Contoh berikut menunjukkan contoh kode untuk membuat bucket Amazon S3 di ES6 keduanya dan CommonJS.

------
#### [ ES6 ]

libs/s3Client.js

```
// Create service client module using ES6 syntax.
import { S3Client } from "@aws-sdk/client-s3";
// Set the AWS region
const REGION = "eu-west-1"; //e.g. "us-east-1"
// Create Amazon S3 service object.
const s3 = new S3Client({ region: REGION });
// Export 's3' constant.
export {s3};
```

s3\$1createbucket.js

```
// Get service clients module and commands using ES6 syntax.
 import { CreateBucketCommand } from "@aws-sdk/client-s3";
 import { s3 } from "./libs/s3Client.js";

// Get service clients module and commands using CommonJS syntax.
// const { CreateBucketCommand } = require("@aws-sdk/client-s3");
// const { s3 } = require("./libs/s3Client.js");

// Set the bucket parameters
const bucketParams = { Bucket: "BUCKET_NAME" };

// Create the Amazon S3 bucket.
const run = async () => {
  try {
    const data = await s3.send(new CreateBucketCommand(bucketParams));
    console.log("Success", data.Location);
    return data;
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------
#### [ CommonJS ]

libs/s3Client.js

```
// Create service client module using CommonJS syntax.
 const { S3Client } = require("@aws-sdk/client-s3");
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
 // Create Amazon S3 service object.
const s3 = new S3Client({ region: REGION });
// Export 's3' constant.
 module.exports ={s3};
```

s3\$1createbucket.js

```
// Get service clients module and commands using CommonJS syntax.
const { CreateBucketCommand } = require("@aws-sdk/client-s3");
const { s3 } = require("./libs/s3Client.js");

// Set the bucket parameters
const bucketParams = { Bucket: "BUCKET_NAME" };

// Create the Amazon S3 bucket.
const run = async () => {
  try {
    const data = await s3.send(new CreateBucketCommand(bucketParams));
    console.log("Success", data.Location);
    return data;
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

# AWS Elemental MediaConvert contoh
<a name="emc-examples"></a>

AWS Elemental MediaConvert adalah layanan transcoding video berbasis file dengan fitur tingkat siaran. Anda dapat menggunakannya untuk membuat aset untuk siaran dan untuk pengiriman video-on-demand (VOD) di internet. Untuk informasi selengkapnya, silakan lihat [Panduan Pengguna *AWS Elemental MediaConvert *](https://docs.aws.amazon.com/mediaconvert/latest/ug/).

 JavaScript API untuk MediaConvert diekspos melalui kelas `MediaConvert` klien. Untuk informasi selengkapnya, lihat [Kelas: MediaConvert](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/) di Referensi API.

**Topics**
+ [Membuat dan mengelola pekerjaan transcoding di MediaConvert](emc-examples-jobs.md)
+ [Menggunakan template pekerjaan di MediaConvert](emc-examples-templates.md)

# Membuat dan mengelola pekerjaan transcoding di MediaConvert
<a name="emc-examples-jobs"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Cara membuat pekerjaan transcoding di MediaConvert.
+ Cara membatalkan pekerjaan transcoding.
+ Cara mengambil JSON untuk pekerjaan transcoding yang selesai.
+ Cara mengambil array JSON hingga 20 pekerjaan yang paling baru dibuat.

## Skenario
<a name="emc-examples-jobs-scenario"></a>

Dalam contoh ini, Anda menggunakan modul Node.js untuk memanggil MediaConvert untuk membuat dan mengelola pekerjaan transcoding. Kode menggunakan SDK JavaScript untuk melakukan ini dengan menggunakan metode kelas MediaConvert klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/CreateJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/CreateJobCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/CancelJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/CancelJobCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/GetJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/GetJobCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/ListJobsCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/ListJobsCommand/)

## Tugas prasyarat
<a name="emc-examples-jobs-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, pertama-tama selesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascriptv3/example_code/mediaconvert/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *
+ Buat dan konfigurasikan bucket Amazon S3 yang menyediakan penyimpanan untuk file input pekerjaan dan file output. Untuk detailnya, lihat [Membuat penyimpanan untuk file](https://docs.aws.amazon.com/mediaconvert/latest/ug/set-up-file-locations.html) di *Panduan AWS Elemental MediaConvert Pengguna*.
+ Unggah video input ke bucket Amazon S3 yang Anda sediakan untuk penyimpanan input. *Untuk daftar codec dan container video masukan yang didukung, lihat [Codec dan container input yang didukung di Panduan Pengguna](https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers-input.html).AWS Elemental MediaConvert *
+ Buat peran IAM yang memberikan MediaConvert akses ke file input Anda dan bucket Amazon S3 tempat file output Anda disimpan. Untuk detailnya, lihat [Mengatur izin IAM](https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html) di *AWS Elemental MediaConvert Panduan Pengguna*.

**penting**  
Contoh ini menggunakan ECMAScript6 (ES6). Ini membutuhkan 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) .  
Namun, jika Anda lebih suka menggunakan sintaks CommonJS, silakan merujuk ke. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Mendefinisikan pekerjaan transcoding sederhana
<a name="emc-examples-jobs-spec"></a>

Buat modul Node.js dengan nama file`emc_createjob.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat JSON yang mendefinisikan parameter pekerjaan transcode.

Parameter ini cukup rinci. Anda dapat menggunakan [AWS Elemental MediaConvert konsol](https://console.aws.amazon.com/mediaconvert/) untuk menghasilkan parameter pekerjaan JSON dengan memilih pengaturan pekerjaan di konsol, lalu memilih **Tampilkan pekerjaan JSON** di bagian bawah bagian **Job**. Contoh ini menunjukkan JSON untuk pekerjaan sederhana.

**catatan**  
Ganti *JOB\$1QUEUE\$1ARN* dengan antrian MediaConvert pekerjaan, *IAM\$1ROLE\$1ARN* dengan Amazon Resource Name (ARN) dari peran IAM*OUTPUT\$1BUCKET\$1NAME*, dengan nama bucket tujuan - misalnya, "s3://OUTPUT\$1BUCKET\$1NAME/ “, *INPUT\$1BUCKET\$1AND\$1FILENAME* dan dengan bucket input dan nama file - misalnya," s3://INPUT\$1BUCKET/FILE\$1NAME”.

```
const params = {
  Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN
  UserMetadata: {
    Customer: "Amazon",
  },
  Role: "IAM_ROLE_ARN", //IAM_ROLE_ARN
  Settings: {
    OutputGroups: [
      {
        Name: "File Group",
        OutputGroupSettings: {
          Type: "FILE_GROUP_SETTINGS",
          FileGroupSettings: {
            Destination: "OUTPUT_BUCKET_NAME", //OUTPUT_BUCKET_NAME, e.g., "s3://BUCKET_NAME/"
          },
        },
        Outputs: [
          {
            VideoDescription: {
              ScalingBehavior: "DEFAULT",
              TimecodeInsertion: "DISABLED",
              AntiAlias: "ENABLED",
              Sharpness: 50,
              CodecSettings: {
                Codec: "H_264",
                H264Settings: {
                  InterlaceMode: "PROGRESSIVE",
                  NumberReferenceFrames: 3,
                  Syntax: "DEFAULT",
                  Softness: 0,
                  GopClosedCadence: 1,
                  GopSize: 90,
                  Slices: 1,
                  GopBReference: "DISABLED",
                  SlowPal: "DISABLED",
                  SpatialAdaptiveQuantization: "ENABLED",
                  TemporalAdaptiveQuantization: "ENABLED",
                  FlickerAdaptiveQuantization: "DISABLED",
                  EntropyEncoding: "CABAC",
                  Bitrate: 5000000,
                  FramerateControl: "SPECIFIED",
                  RateControlMode: "CBR",
                  CodecProfile: "MAIN",
                  Telecine: "NONE",
                  MinIInterval: 0,
                  AdaptiveQuantization: "HIGH",
                  CodecLevel: "AUTO",
                  FieldEncoding: "PAFF",
                  SceneChangeDetect: "ENABLED",
                  QualityTuningLevel: "SINGLE_PASS",
                  FramerateConversionAlgorithm: "DUPLICATE_DROP",
                  UnregisteredSeiTimecode: "DISABLED",
                  GopSizeUnits: "FRAMES",
                  ParControl: "SPECIFIED",
                  NumberBFramesBetweenReferenceFrames: 2,
                  RepeatPps: "DISABLED",
                  FramerateNumerator: 30,
                  FramerateDenominator: 1,
                  ParNumerator: 1,
                  ParDenominator: 1,
                },
              },
              AfdSignaling: "NONE",
              DropFrameTimecode: "ENABLED",
              RespondToAfd: "NONE",
              ColorMetadata: "INSERT",
            },
            AudioDescriptions: [
              {
                AudioTypeControl: "FOLLOW_INPUT",
                CodecSettings: {
                  Codec: "AAC",
                  AacSettings: {
                    AudioDescriptionBroadcasterMix: "NORMAL",
                    RateControlMode: "CBR",
                    CodecProfile: "LC",
                    CodingMode: "CODING_MODE_2_0",
                    RawFormat: "NONE",
                    SampleRate: 48000,
                    Specification: "MPEG4",
                    Bitrate: 64000,
                  },
                },
                LanguageCodeControl: "FOLLOW_INPUT",
                AudioSourceName: "Audio Selector 1",
              },
            ],
            ContainerSettings: {
              Container: "MP4",
              Mp4Settings: {
                CslgAtom: "INCLUDE",
                FreeSpaceBox: "EXCLUDE",
                MoovPlacement: "PROGRESSIVE_DOWNLOAD",
              },
            },
            NameModifier: "_1",
          },
        ],
      },
    ],
    AdAvailOffset: 0,
    Inputs: [
      {
        AudioSelectors: {
          "Audio Selector 1": {
            Offset: 0,
            DefaultSelection: "NOT_DEFAULT",
            ProgramSelection: 1,
            SelectorType: "TRACK",
            Tracks: [1],
          },
        },
        VideoSelector: {
          ColorSpace: "FOLLOW",
        },
        FilterEnable: "AUTO",
        PsiControl: "USE_PSI",
        FilterStrength: 0,
        DeblockFilter: "DISABLED",
        DenoiseFilter: "DISABLED",
        TimecodeSource: "EMBEDDED",
        FileInput: "INPUT_BUCKET_AND_FILENAME", //INPUT_BUCKET_AND_FILENAME, e.g., "s3://BUCKET_NAME/FILE_NAME"
      },
    ],
    TimecodeConfig: {
      Source: "EMBEDDED",
    },
  },
};
```

## Membuat pekerjaan transcoding
<a name="emc-examples-jobs-create"></a>

Setelah membuat parameter pekerjaan JSON, panggil `run` metode asinkron untuk memanggil objek layanan `MediaConvert` klien, melewati parameter. ID pekerjaan yang dibuat dikembalikan dalam respons`data`.

```
const run = async () => {
  try {
    const data = await emcClient.send(new CreateJobCommand(params));
    console.log("Job created!", data);
    return data;
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node emc_createjob.js 
```

Kode contoh lengkap ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/mediaconvert/src/emc_createjob.js).

## Membatalkan pekerjaan transcoding
<a name="emc-examples-jobs-cancel"></a>

Buat modul Node.js dengan nama file`emc_canceljob.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk mengunduh klien dan paket yang diperlukan. Buat JSON yang menyertakan ID pekerjaan yang akan dibatalkan. Kemudian panggil `CancelJobCommand` metode dengan membuat janji untuk memanggil objek layanan `MediaConvert` klien, melewati parameter. Tangani respons dalam callback janji.

**catatan**  
Ganti *JOB\$1ID* dengan ID pekerjaan yang akan dibatalkan.

```
// Import required AWS-SDK clients and commands for Node.js
import { CancelJobCommand } from "@aws-sdk/client-mediaconvert";
import { emcClient } from "./libs/emcClient.js";

// Set the parameters
const params = { Id: "JOB_ID" }; //JOB_ID

const run = async () => {
  try {
    const data = await emcClient.send(new CancelJobCommand(params));
    console.log(`Job  ${params.Id} is canceled`);
    return data;
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node ec2_canceljob.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/mediaconvert/src/emc_canceljob.js).

## Daftar pekerjaan transcoding terbaru
<a name="emc-examples-jobs-listing"></a>

Buat modul Node.js dengan nama file`emc_listjobs.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat parameter JSON, termasuk nilai untuk menentukan apakah akan mengurutkan daftar dalam`ASCENDING`, atau `DESCENDING` urutan, Nama Sumber Daya Amazon (ARN) dari antrian pekerjaan yang akan diperiksa, dan status pekerjaan yang akan disertakan. Kemudian panggil `ListJobsCommand` metode dengan membuat janji untuk memanggil objek layanan `MediaConvert` klien, melewati parameter. 

**catatan**  
Ganti *QUEUE\$1ARN* dengan Nama Sumber Daya Amazon (ARN) dari antrian pekerjaan yang akan diperiksa, dan *STATUS* dengan status antrian.

```
// Import required AWS-SDK clients and commands for Node.js
import { ListJobsCommand } from "@aws-sdk/client-mediaconvert";
import { emcClient } from "./libs/emcClient.js";

// Set the parameters
const params = {
  MaxResults: 10,
  Order: "ASCENDING",
  Queue: "QUEUE_ARN",
  Status: "SUBMITTED", // e.g., "SUBMITTED"
};

const run = async () => {
  try {
    const data = await emcClient.send(new ListJobsCommand(params));
    console.log("Success. Jobs: ", data.Jobs);
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node emc_listjobs.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/mediaconvert/src/emc_listjobs.js).

# Menggunakan template pekerjaan di MediaConvert
<a name="emc-examples-templates"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Cara membuat template AWS Elemental MediaConvert pekerjaan.
+ Cara menggunakan template pekerjaan untuk membuat pekerjaan transcoding.
+ Cara membuat daftar semua templat pekerjaan Anda.
+ Cara menghapus template pekerjaan.

## Skenario
<a name="emc-examples-templates-scenario"></a>

JSON yang diperlukan untuk membuat pekerjaan transcoding MediaConvert secara rinci, berisi sejumlah besar pengaturan. Anda dapat sangat menyederhanakan penciptaan lapangan kerja dengan menyimpan pengaturan yang diketahui baik dalam templat pekerjaan yang dapat Anda gunakan untuk membuat pekerjaan berikutnya. Dalam contoh ini, Anda menggunakan modul Node.js untuk memanggil MediaConvert untuk membuat, menggunakan, dan mengelola template pekerjaan. Kode menggunakan SDK JavaScript untuk melakukan ini dengan menggunakan metode kelas MediaConvert klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/CreateJobTemplateCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/CreateJobTemplateCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/CreateJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/CreateJobCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/DeleteJobTemplateCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/DeleteJobTemplateCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/ListJobTemplatesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-mediaconvert/Class/ListJobTemplatesCommand/)

## Tugas prasyarat
<a name="emc-example-templates-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, pertama-tama selesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascriptv3/example_code/mediaconvert/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *
+ Buat peran IAM yang memberikan MediaConvert akses ke file input Anda dan bucket Amazon S3 tempat file output Anda disimpan. Untuk detailnya, lihat [Mengatur izin IAM](https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html) di *AWS Elemental MediaConvert Panduan Pengguna*.

**penting**  
Contoh-contoh ini menggunakan ECMAScript6 (ES6). Ini membutuhkan 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) .  
Namun, jika Anda lebih suka menggunakan sintaks CommonJS, silakan merujuk ke. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Membuat template pekerjaan
<a name="emc-examples-templates-create"></a>

Buat modul Node.js dengan nama file`emc_create_jobtemplate.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Tentukan parameter JSON untuk pembuatan template. Anda dapat menggunakan sebagian besar parameter JSON dari pekerjaan sebelumnya yang berhasil untuk menentukan `Settings` nilai dalam template. Contoh ini menggunakan pengaturan pekerjaan dari[Membuat dan mengelola pekerjaan transcoding di MediaConvert](emc-examples-jobs.md).

Panggil `CreateJobTemplateCommand` metode dengan membuat janji untuk memanggil objek layanan `MediaConvert` klien, melewati parameter.

**catatan**  
Ganti *JOB\$1QUEUE\$1ARN* dengan Nama Sumber Daya Amazon (ARN) dari antrian pekerjaan untuk diperiksa, dan *BUCKET\$1NAME* dengan nama bucket Amazon S3 tujuan - misalnya, "s3://BUCKET\$1NAME/”. 

```
// Import required AWS-SDK clients and commands for Node.js
import { CreateJobTemplateCommand } from "@aws-sdk/client-mediaconvert";
import { emcClient } from "./libs/emcClient.js";

const params = {
  Category: "YouTube Jobs",
  Description: "Final production transcode",
  Name: "DemoTemplate",
  Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN
  Settings: {
    OutputGroups: [
      {
        Name: "File Group",
        OutputGroupSettings: {
          Type: "FILE_GROUP_SETTINGS",
          FileGroupSettings: {
            Destination: "BUCKET_NAME", // BUCKET_NAME e.g., "s3://BUCKET_NAME/"
          },
        },
        Outputs: [
          {
            VideoDescription: {
              ScalingBehavior: "DEFAULT",
              TimecodeInsertion: "DISABLED",
              AntiAlias: "ENABLED",
              Sharpness: 50,
              CodecSettings: {
                Codec: "H_264",
                H264Settings: {
                  InterlaceMode: "PROGRESSIVE",
                  NumberReferenceFrames: 3,
                  Syntax: "DEFAULT",
                  Softness: 0,
                  GopClosedCadence: 1,
                  GopSize: 90,
                  Slices: 1,
                  GopBReference: "DISABLED",
                  SlowPal: "DISABLED",
                  SpatialAdaptiveQuantization: "ENABLED",
                  TemporalAdaptiveQuantization: "ENABLED",
                  FlickerAdaptiveQuantization: "DISABLED",
                  EntropyEncoding: "CABAC",
                  Bitrate: 5000000,
                  FramerateControl: "SPECIFIED",
                  RateControlMode: "CBR",
                  CodecProfile: "MAIN",
                  Telecine: "NONE",
                  MinIInterval: 0,
                  AdaptiveQuantization: "HIGH",
                  CodecLevel: "AUTO",
                  FieldEncoding: "PAFF",
                  SceneChangeDetect: "ENABLED",
                  QualityTuningLevel: "SINGLE_PASS",
                  FramerateConversionAlgorithm: "DUPLICATE_DROP",
                  UnregisteredSeiTimecode: "DISABLED",
                  GopSizeUnits: "FRAMES",
                  ParControl: "SPECIFIED",
                  NumberBFramesBetweenReferenceFrames: 2,
                  RepeatPps: "DISABLED",
                  FramerateNumerator: 30,
                  FramerateDenominator: 1,
                  ParNumerator: 1,
                  ParDenominator: 1,
                },
              },
              AfdSignaling: "NONE",
              DropFrameTimecode: "ENABLED",
              RespondToAfd: "NONE",
              ColorMetadata: "INSERT",
            },
            AudioDescriptions: [
              {
                AudioTypeControl: "FOLLOW_INPUT",
                CodecSettings: {
                  Codec: "AAC",
                  AacSettings: {
                    AudioDescriptionBroadcasterMix: "NORMAL",
                    RateControlMode: "CBR",
                    CodecProfile: "LC",
                    CodingMode: "CODING_MODE_2_0",
                    RawFormat: "NONE",
                    SampleRate: 48000,
                    Specification: "MPEG4",
                    Bitrate: 64000,
                  },
                },
                LanguageCodeControl: "FOLLOW_INPUT",
                AudioSourceName: "Audio Selector 1",
              },
            ],
            ContainerSettings: {
              Container: "MP4",
              Mp4Settings: {
                CslgAtom: "INCLUDE",
                FreeSpaceBox: "EXCLUDE",
                MoovPlacement: "PROGRESSIVE_DOWNLOAD",
              },
            },
            NameModifier: "_1",
          },
        ],
      },
    ],
    AdAvailOffset: 0,
    Inputs: [
      {
        AudioSelectors: {
          "Audio Selector 1": {
            Offset: 0,
            DefaultSelection: "NOT_DEFAULT",
            ProgramSelection: 1,
            SelectorType: "TRACK",
            Tracks: [1],
          },
        },
        VideoSelector: {
          ColorSpace: "FOLLOW",
        },
        FilterEnable: "AUTO",
        PsiControl: "USE_PSI",
        FilterStrength: 0,
        DeblockFilter: "DISABLED",
        DenoiseFilter: "DISABLED",
        TimecodeSource: "EMBEDDED",
      },
    ],
    TimecodeConfig: {
      Source: "EMBEDDED",
    },
  },
};

const run = async () => {
  try {
    // Create a promise on a MediaConvert object
    const data = await emcClient.send(new CreateJobTemplateCommand(params));
    console.log("Success!", data);
    return data;
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node emc_create_jobtemplate.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/mediaconvert/src/emc_create_jobtemplate.js).

## Membuat pekerjaan transcoding dari template pekerjaan
<a name="emc-examples-templates-createjob"></a>

Buat modul Node.js dengan nama file`emc_template_createjob.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat parameter pembuatan pekerjaan JSON, termasuk nama template pekerjaan yang akan digunakan, dan penggunaan yang khusus untuk pekerjaan yang Anda buat. `Settings` Kemudian panggil `CreateJobsCommand` metode dengan membuat janji untuk memanggil objek layanan `MediaConvert` klien, melewati parameter. 

**catatan**  
Ganti *JOB\$1QUEUE\$1ARN* dengan Amazon Resource Name (ARN) dari antrean pekerjaan untuk memeriksa, *KEY\$1PAIR\$1NAME* dengan, *TEMPLATE\$1NAME* dengan, *ROLE\$1ARN* dengan Amazon Resource Name (ARN) peran, dan * INPUT\$1BUCKET\$1AND\$1FILENAME* dengan bucket input dan nama file - misalnya, "s3://BUCKET\$1NAME/FILE\$1NAME”.

```
// Import required AWS-SDK clients and commands for Node.js
import { CreateJobCommand } from "@aws-sdk/client-mediaconvert";
import { emcClient } from "./libs/emcClient.js";

const params = {
  Queue: "QUEUE_ARN", //QUEUE_ARN
  JobTemplate: "TEMPLATE_NAME", //TEMPLATE_NAME
  Role: "ROLE_ARN", //ROLE_ARN
  Settings: {
    Inputs: [
      {
        AudioSelectors: {
          "Audio Selector 1": {
            Offset: 0,
            DefaultSelection: "NOT_DEFAULT",
            ProgramSelection: 1,
            SelectorType: "TRACK",
            Tracks: [1],
          },
        },
        VideoSelector: {
          ColorSpace: "FOLLOW",
        },
        FilterEnable: "AUTO",
        PsiControl: "USE_PSI",
        FilterStrength: 0,
        DeblockFilter: "DISABLED",
        DenoiseFilter: "DISABLED",
        TimecodeSource: "EMBEDDED",
        FileInput: "INPUT_BUCKET_AND_FILENAME", //INPUT_BUCKET_AND_FILENAME, e.g., "s3://BUCKET_NAME/FILE_NAME"
      },
    ],
  },
};

const run = async () => {
  try {
    const data = await emcClient.send(new CreateJobCommand(params));
    console.log("Success! ", data);
    return data;
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node emc_template_createjob.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/mediaconvert/src/emc_template_createjob.js).

## Daftar template pekerjaan Anda
<a name="emc-examples-templates-listing"></a>

Buat modul Node.js dengan nama file`emc_listtemplates.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk melewati parameter permintaan untuk `listTemplates` metode kelas `MediaConvert` klien. Sertakan nilai untuk menentukan templat apa yang akan dicantumkan (`NAME`,`CREATION DATE`,`SYSTEM`), berapa banyak yang akan dicantumkan, dan urutan urutannya. Untuk memanggil `ListTemplatesCommand` metode, buat janji untuk memanggil objek layanan MediaConvert klien, melewati parameter. 

```
// Import required AWS-SDK clients and commands for Node.js
import { ListJobTemplatesCommand } from "@aws-sdk/client-mediaconvert";
import { emcClient } from "./libs/emcClient.js";

const params = {
  ListBy: "NAME",
  MaxResults: 10,
  Order: "ASCENDING",
};

const run = async () => {
  try {
    const data = await emcClient.send(new ListJobTemplatesCommand(params));
    console.log("Success ", data.JobTemplates);
    return data;
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node emc_listtemplates.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/mediaconvert/src/emc_template_createjob.js).

## Menghapus template pekerjaan
<a name="emc-examples-templates-delete"></a>

Buat modul Node.js dengan nama file`emc_deletetemplate.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk meneruskan nama template pekerjaan yang ingin Anda hapus sebagai parameter untuk `DeleteJobTemplateCommand` metode kelas `MediaConvert` klien. Untuk memanggil `DeleteJobTemplateCommand` metode, buat janji untuk memanggil objek layanan MediaConvert klien, melewati parameter. 

```
// Import required AWS-SDK clients and commands for Node.js
import { DeleteJobTemplateCommand } from "@aws-sdk/client-mediaconvert";
import { emcClient } from "./libs/emcClient.js";

// Set the parameters
const params = { Name: "test" }; //TEMPLATE_NAME

const run = async () => {
  try {
    const data = await emcClient.send(new DeleteJobTemplateCommand(params));
    console.log(
      "Success, template deleted! Request ID:",
      data.$metadata.requestId,
    );
    return data;
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node emc_deletetemplate.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/mediaconvert/src/emc_deletetemplate.js).

# AWS Lambda contoh
<a name="lambda-examples"></a>

AWS Lambda adalah layanan komputasi tanpa server yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server, membuat logika penskalaan klaster sadar beban kerja, mempertahankan integrasi peristiwa, atau mengelola runtime. 

 JavaScript API untuk AWS Lambda diekspos melalui kelas [LambdaService](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-lambda/)klien.

Berikut adalah daftar contoh yang menunjukkan cara membuat dan menggunakan fungsi Lambda dengan v3: AWS SDK untuk JavaScript 
+ [Memanggil Lambda dengan API Gateway](api-gateway-invoking-lambda-example.md)
+ [Membuat acara terjadwal untuk menjalankan AWS Lambda fungsi](scheduled-events-invoking-lambda-example.md)

# Contoh Amazon Lex
<a name="lex-examples"></a>

Amazon Lex adalah AWS layanan untuk membangun antarmuka percakapan ke dalam aplikasi menggunakan suara dan teks. 

 JavaScript API untuk Amazon Lex diekspos melalui kelas klien [Lex Runtime Service](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-lex-runtime-service/).
+ [Membangun chatbot Amazon Lex](lex-bot-example.md)

# Contoh Amazon Polly
<a name="polly-examples"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Unggah audio yang direkam menggunakan Amazon Polly ke Amazon S3

## Skenario
<a name="polly-example-synthesize-to-s3-scenario"></a>

Dalam contoh ini, serangkaian modul Node.js digunakan untuk mengunggah audio yang direkam secara otomatis menggunakan Amazon Polly ke Amazon S3 menggunakan metode kelas klien Amazon S3 ini:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-polly/Class/StartSpeechSynthesisTaskCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-polly/Class/StartSpeechSynthesisTaskCommand/)

## Tugas prasyarat
<a name="polly-example-synthesize-to-s3-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan JavaScript contoh Node dengan mengikuti petunjuk pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascriptv3/example_code/s3/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *
+ Buat AWS Identity and Access Management (IAM) Peran pengguna Amazon Cognito yang tidak diautentikasi polly: izinSynthesizeSpeech , dan kumpulan identitas Amazon Cognito dengan peran IAM yang dilampirkan padanya. [Buat AWS sumber daya menggunakan CloudFormation](#polly-example-synthesize-to-s3-create-resources)Bagian di bawah ini menjelaskan cara membuat sumber daya ini.

**catatan**  
Contoh ini menggunakan Amazon Cognito, tetapi jika Anda tidak menggunakan Amazon Cognito maka pengguna AWS Anda harus mengikuti kebijakan izin IAM  

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "mobileanalytics:PutEvents",
        "cognito-sync:*"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "polly:SynthesizeSpeech",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

## Buat AWS sumber daya menggunakan CloudFormation
<a name="polly-example-synthesize-to-s3-create-resources"></a>

CloudFormation memungkinkan Anda untuk membuat dan menyediakan penyebaran AWS infrastruktur yang dapat diprediksi dan berulang kali. Untuk informasi selengkapnya CloudFormation, lihat [Panduan AWS CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/).

Untuk membuat CloudFormation tumpukan:

1. Instal dan konfigurasikan petunjuk AWS CLI berikut di [Panduan AWS CLI Pengguna](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html).

1. Buat file bernama `setup.yaml` di direktori root folder proyek Anda, dan salin konten [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/polly/general-examples/src/setup.yaml) ke dalamnya. 
**catatan**  
 CloudFormation Template dibuat menggunakan yang AWS CDK tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/resources/cdk/javascript_example_code_polly_aws_service/). Untuk informasi selengkapnya tentang ini AWS CDK, lihat [Panduan AWS Cloud Development Kit (AWS CDK) Pengembang](https://docs.aws.amazon.com/cdk/latest/guide/).

1. Jalankan perintah berikut dari baris perintah, ganti *STACK\$1NAME* dengan nama unik untuk tumpukan.
**penting**  
Nama tumpukan harus unik dalam AWS Wilayah dan AWS akun. Anda dapat menentukan hingga 128 karakter, dan angka serta tanda hubung diizinkan.

   ```
   aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM
   ```

   Untuk informasi selengkapnya tentang parameter `create-stack` perintah, lihat [panduan Referensi AWS CLI Perintah](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html), dan [Panduan CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-creating-stack.html).

1. Arahkan ke konsol CloudFormation manajemen, pilih **Tumpukan**, pilih nama tumpukan, dan pilih tab **Sumber Daya** untuk melihat daftar sumber daya yang dibuat.  
![\[CloudFormation sumber daya\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/cfn_polly.png)

## Unggah audio yang direkam menggunakan Amazon Polly ke Amazon S3
<a name="polly-example-synthesize-to-s3-example"></a>

Buat modul Node.js dengan nama file`polly_synthesize_to_s3.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Dalam kode, masukkan*REGION*, dan*BUCKET\$1NAME*. Untuk mengakses Amazon Polly, buat objek layanan `Polly` klien. Ganti *"IDENTITY\$1POOL\$1ID"* dengan `IdentityPoolId` dari **halaman Contoh** kumpulan identitas Amazon Cognito yang Anda buat untuk contoh ini. Ini juga diteruskan ke setiap objek klien.

Panggil `StartSpeechSynthesisCommand` metode objek layanan klien Amazon Polly mensintesis pesan suara dan mengunggahnya ke bucket Amazon S3. 

```
import { StartSpeechSynthesisTaskCommand } from "@aws-sdk/client-polly";
import { pollyClient } from "./libs/pollyClient.js";

// Create the parameters
const params = {
  OutputFormat: "mp3",
  OutputS3BucketName: "videoanalyzerbucket",
  Text: "Hello David, How are you?",
  TextType: "text",
  VoiceId: "Joanna",
  SampleRate: "22050",
};

const run = async () => {
  try {
    await pollyClient.send(new StartSpeechSynthesisTaskCommand(params));
    console.log(`Success, audio file added to ${params.OutputS3BucketName}`);
  } catch (err) {
    console.log("Error putting object", err);
  }
};
run();
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javascriptv3/example_code/polly/general-examples/src/polly_synthesize_to_s3.js).

# Contoh Amazon Redshift
<a name="redshift-examples"></a>

Amazon Redshift adalah layanan gudang data dengan skala petabyte yang terkelola penuh di cloud. *Gudang data Amazon Redshift adalah kumpulan sumber daya komputasi yang disebut *node*, yang diatur ke dalam grup yang disebut cluster.* Setiap klaster menjalankan mesin Amazon Redshift dan berisi satu atau lebih database.

![\[Hubungan antara JavaScript lingkungan, SDK, dan Amazon Redshift\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/code-samples-redshift.png)


 JavaScript API untuk Amazon Redshift diekspos melalui kelas klien [Amazon Redshift](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/Redshift/).

**Topics**
+ [Contoh Amazon Redshift](redshift-examples-section.md)

# Contoh Amazon Redshift
<a name="redshift-examples-section"></a>

Dalam contoh ini, serangkaian modul Node.js digunakan untuk membuat, memodifikasi, menjelaskan parameter, dan kemudian menghapus klaster Amazon Redshift menggunakan metode berikut dari kelas klien: `Redshift`
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/CreateClusterCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/CreateClusterCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/ModifyClusterCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/ModifyClusterCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/DescribeClustersCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/DescribeClustersCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/DeleteClusterCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-redshift/Class/DeleteClusterCommand/)

Untuk informasi selengkapnya tentang pengguna Amazon Redshift, lihat panduan memulai [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html).

## Tugas prasyarat
<a name="s3-example-configuring-buckets-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/redshift/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana mengimpor/mengekspor objek layanan klien dan perintah menggunakan ECMAScript6 ()ES6.  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Membuat cluster Amazon Redshift
<a name="redshift-create-cluster"></a>

Contoh ini menunjukkan cara membuat cluster Amazon Redshift menggunakan file. AWS SDK untuk JavaScript Untuk informasi selengkapnya, lihat [CreateCluster](https://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateCluster).

**penting**  
*Cluster yang akan Anda buat adalah live (dan tidak berjalan di kotak pasir). Anda dikenakan biaya penggunaan Amazon Redshift standar untuk klaster hingga Anda menghapusnya. Jika Anda menghapus cluster di tempat yang sama seperti saat Anda membuatnya, total biaya minimal.* 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`redshiftClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Redshift. Ganti *REGION* dengan AWS wilayah Anda.

```
import  { RedshiftClient }  from  "@aws-sdk/client-redshift";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create Redshift service object.
const redshiftClient = new RedshiftClient({ region: REGION });
export { redshiftClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/redshift/src/libs/redshiftClient.js).

Buat modul Node.js dengan nama file`redshift-create-cluster.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat objek parameter, tentukan tipe node yang akan disediakan, dan kredenal masuk master untuk instance database yang dibuat secara otomatis di cluster, dan terakhir tipe cluster.

**catatan**  
Ganti *CLUSTER\$1NAME* dengan nama cluster. Untuk *NODE\$1TYPE* menentukan jenis node yang akan disediakan, seperti 'dc2.large', misalnya. *MASTER\$1USERNAME*dan *MASTER\$1USER\$1PASSWORD* merupakan kredensional masuk dari pengguna utama instans DB Anda di cluster. Untuk*CLUSTER\$1TYPE*, masukkan jenis cluster. Jika Anda menentukan`single-node`, Anda tidak memerlukan `NumberOfNodes` parameter. Parameter yang tersisa adalah opsional. 

```
// Import required AWS SDK clients and commands for Node.js
import { CreateClusterCommand } from "@aws-sdk/client-redshift";
import { redshiftClient } from "./libs/redshiftClient.js";

const params = {
  ClusterIdentifier: "CLUSTER_NAME", // Required
  NodeType: "NODE_TYPE", //Required
  MasterUsername: "MASTER_USER_NAME", // Required - must be lowercase
  MasterUserPassword: "MASTER_USER_PASSWORD", // Required - must contain at least one uppercase letter, and one number
  ClusterType: "CLUSTER_TYPE", // Required
  IAMRoleARN: "IAM_ROLE_ARN", // Optional - the ARN of an IAM role with permissions your cluster needs to access other AWS services on your behalf, such as Amazon S3.
  ClusterSubnetGroupName: "CLUSTER_SUBNET_GROUPNAME", //Optional - the name of a cluster subnet group to be associated with this cluster. Defaults to 'default' if not specified.
  DBName: "DATABASE_NAME", // Optional - defaults to 'dev' if not specified
  Port: "PORT_NUMBER", // Optional - defaults to '5439' if not specified
};

const run = async () => {
  try {
    const data = await redshiftClient.send(new CreateClusterCommand(params));
    console.log(
      `Cluster ${data.Cluster.ClusterIdentifier} successfully created`,
    );
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node redshift-create-cluster.js  
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/redshift/src/redshift-create-cluster.js).

## Memodifikasi cluster Amazon Redshift
<a name="redshift-modify-cluster"></a>

Contoh ini menunjukkan cara memodifikasi kata sandi pengguna utama cluster Amazon Redshift menggunakan. AWS SDK untuk JavaScript Untuk informasi selengkapnya tentang pengaturan lain yang dapat Anda ubah, lihat [ModifyCluster](https://docs.aws.amazon.com/redshift/latest/APIReference/API_ModifyCluster.html).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`redshiftClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Redshift. Ganti *REGION* dengan AWS wilayah Anda.

```
import  { RedshiftClient }  from  "@aws-sdk/client-redshift";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create Redshift service object.
const redshiftClient = new RedshiftClient({ region: REGION });
export { redshiftClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/redshift/src/libs/redshiftClient.js).

Buat modul Node.js dengan nama file`redshift-modify-cluster.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Tentukan AWS Wilayah, nama cluster yang ingin Anda modifikasi, dan kata sandi pengguna master baru.

**catatan**  
Ganti *CLUSTER\$1NAME* dengan nama cluster, dan *MASTER\$1USER\$1PASSWORD* dengan kata sandi pengguna master baru. 

```
// Import required AWS SDK clients and commands for Node.js
import { ModifyClusterCommand } from "@aws-sdk/client-redshift";
import { redshiftClient } from "./libs/redshiftClient.js";

// Set the parameters
const params = {
  ClusterIdentifier: "CLUSTER_NAME",
  MasterUserPassword: "NEW_MASTER_USER_PASSWORD",
};

const run = async () => {
  try {
    const data = await redshiftClient.send(new ModifyClusterCommand(params));
    console.log("Success was modified.", data);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node redshift-modify-cluster.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/redshift/src/redshift-modify-cluster.js).

## Melihat detail cluster Amazon Redshift
<a name="redshift-describe-cluster"></a>

Contoh ini menunjukkan cara melihat detail cluster Amazon Redshift menggunakan file. AWS SDK untuk JavaScript Untuk informasi lebih lanjut tentang opsional, lihat [DescribeClusters](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`redshiftClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Redshift. Ganti *REGION* dengan AWS wilayah Anda.

```
import  { RedshiftClient }  from  "@aws-sdk/client-redshift";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create Redshift service object.
const redshiftClient = new RedshiftClient({ region: REGION });
export { redshiftClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/redshift/src/libs/redshiftClient.js).

Buat modul Node.js dengan nama file`redshift-describe-clusters.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Tentukan AWS Wilayah, nama cluster yang ingin Anda modifikasi, dan kata sandi pengguna master baru.

**catatan**  
Ganti *CLUSTER\$1NAME* dengan nama cluster. 

```
// Import required AWS SDK clients and commands for Node.js
import { DescribeClustersCommand } from "@aws-sdk/client-redshift";
import { redshiftClient } from "./libs/redshiftClient.js";

const params = {
  ClusterIdentifier: "CLUSTER_NAME",
};

const run = async () => {
  try {
    const data = await redshiftClient.send(new DescribeClustersCommand(params));
    console.log("Success", data);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node redshift-describe-clusters.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/redshift/src/redshift-describe-clusters.js).

## Menghapus klaster Amazon Redshift
<a name="redshift-delete-cluster"></a>

Contoh ini menunjukkan cara melihat detail cluster Amazon Redshift menggunakan file. AWS SDK untuk JavaScript Untuk informasi selengkapnya tentang pengaturan lain yang dapat Anda ubah, lihat [DeleteCluster](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteCluster.html).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`redshiftClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Redshift. Ganti *REGION* dengan AWS wilayah Anda.

```
import  { RedshiftClient }  from  "@aws-sdk/client-redshift";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create Redshift service object.
const redshiftClient = new RedshiftClient({ region: REGION });
export { redshiftClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/redshift/src/libs/redshiftClient.js).

Buat modul Node.js dengan file bernama`redshift-delete-clusters.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Tentukan AWS Wilayah, nama cluster yang ingin Anda modifikasi, dan kata sandi pengguna master baru. Tentukan apakah Anda ingin menyimpan snapshot akhir cluster sebelum menghapus, dan jika demikian ID snapshot.

**catatan**  
Ganti *CLUSTER\$1NAME* dengan nama cluster. Untuk*SkipFinalClusterSnapshot*, tentukan apakah akan membuat snapshot akhir cluster sebelum menghapusnya. Jika Anda menentukan 'false', tentukan id snapshot cluster terakhir di*CLUSTER\$1SNAPSHOT\$1ID*. **Anda bisa mendapatkan ID ini dengan mengklik tautan di kolom **Snapshots** untuk cluster di dasbor **Clusters**, dan menggulir ke bawah ke panel Snapshots.** Perhatikan bahwa batang `rs:` bukan bagian dari ID snapshot.

```
// Import required AWS SDK clients and commands for Node.js
import { DeleteClusterCommand } from "@aws-sdk/client-redshift";
import { redshiftClient } from "./libs/redshiftClient.js";

const params = {
  ClusterIdentifier: "CLUSTER_NAME",
  SkipFinalClusterSnapshot: false,
  FinalClusterSnapshotIdentifier: "CLUSTER_SNAPSHOT_ID",
};

const run = async () => {
  try {
    const data = await redshiftClient.send(new DeleteClusterCommand(params));
    console.log("Success, cluster deleted. ", data);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node redshift-delete-cluster.js  
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/redshift/src/redshift-delete-cluster.js).

# Contoh Layanan Email Sederhana Amazon
<a name="ses-examples"></a>

Amazon Simple Email Service (Amazon SES) adalah layanan pengiriman email berbasis cloud yang dirancang untuk membantu pemasar digital dan pengembang aplikasi mengirim email pemasaran, pemberitahuan, dan transaksional. Ini adalah layanan yang andal dan hemat biaya untuk bisnis dari semua ukuran yang menggunakan email untuk tetap berhubungan dengan pelanggan mereka.

![\[Hubungan antara JavaScript lingkungan, SDK, dan Amazon SES\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/code-samples-ses.png)


 JavaScript API untuk Amazon SES diekspos melalui kelas `SES` klien. Untuk informasi selengkapnya tentang menggunakan kelas klien Amazon SES, lihat [Kelas: SES](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SES/) di Referensi API.

**Topics**
+ [Mengelola identitas Amazon SES](ses-examples-managing-identities.md)
+ [Bekerja dengan template email di Amazon SES](ses-examples-creating-template.md)
+ [Mengirim email menggunakan Amazon SES](ses-examples-sending-email.md)

# Mengelola identitas Amazon SES
<a name="ses-examples-managing-identities"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Cara memverifikasi alamat email dan domain yang digunakan dengan Amazon SES.
+ Cara menetapkan kebijakan AWS Identity and Access Management (IAM) ke identitas Amazon SES Anda.
+ Cara membuat daftar semua identitas Amazon SES untuk AWS akun Anda.
+ Cara menghapus identitas yang digunakan dengan Amazon SES.

*Identitas* Amazon SES adalah alamat email atau domain yang digunakan Amazon SES untuk mengirim email. Amazon SES mengharuskan Anda untuk memverifikasi identitas email Anda, mengonfirmasi bahwa Anda memilikinya dan mencegah orang lain menggunakannya.

Untuk detail tentang cara memverifikasi alamat email dan domain di Amazon SES, lihat [Memverifikasi alamat email dan domain di Amazon SES di Panduan](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html) Pengembang Layanan Email Sederhana Amazon. Untuk informasi tentang mengirim otorisasi di Amazon SES, lihat [Ikhtisar otorisasi pengiriman Amazon SES](Amazon Simple Email Service Developer Guidesending-authorization-overview.html).

## Skenario
<a name="ses-examples-verifying-identities-scenario"></a>

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk memverifikasi dan mengelola identitas Amazon SES. Modul Node.js menggunakan SDK JavaScript untuk memverifikasi alamat email dan domain, menggunakan metode kelas `SES` klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/ListIdentitiesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/ListIdentitiesCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/DeleteIdentityCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/DeleteIdentityCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/VerifyEmailIdentityCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/VerifyEmailIdentityCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/VerifyDomainIdentityCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/VerifyDomainIdentityCommand/)

## Tugas prasyarat
<a name="ses-examples-verifying-identities-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/ses/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Daftar identitas Anda
<a name="ses-examples-listing-identities"></a>

Dalam contoh ini, gunakan modul Node.js untuk mencantumkan alamat email dan domain yang akan digunakan dengan Amazon SES.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_listidentities.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk melewati `IdentityType` dan parameter lainnya untuk `ListIdentitiesCommand` metode kelas `SES` klien. Untuk memanggil `ListIdentitiesCommand` metode, panggil objek layanan Amazon SES, melewati objek parameter. 

 Yang `data` dikembalikan berisi array identitas domain seperti yang ditentukan oleh `IdentityType` parameter.

**catatan**  
Ganti *IdentityType* dengan tipe identitas, yang bisa jadi "EmailAddress" atau “Domain”.

```
import { ListIdentitiesCommand } from "@aws-sdk/client-ses";
import { sesClient } from "./libs/sesClient.js";

const createListIdentitiesCommand = () =>
  new ListIdentitiesCommand({ IdentityType: "EmailAddress", MaxItems: 10 });

const run = async () => {
  const listIdentitiesCommand = createListIdentitiesCommand();

  try {
    return await sesClient.send(listIdentitiesCommand);
  } catch (err) {
    console.log("Failed to list identities.", err);
    return err;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node ses_listidentities.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_listidentities.js).

## Memverifikasi identitas alamat email
<a name="ses-examples-verifying-email"></a>

Dalam contoh ini, gunakan modul Node.js untuk memverifikasi pengirim email yang akan digunakan dengan Amazon SES.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_verifyemailidentity.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk mengunduh klien dan paket yang diperlukan. 

Buat objek untuk melewati `EmailAddress` parameter untuk `VerifyEmailIdentityCommand` metode kelas `SES` klien. Untuk memanggil `VerifyEmailIdentityCommand` metode, panggil objek layanan klien Amazon SES, meneruskan parameter. 

**catatan**  
Ganti *EMAIL\$1ADDRESS* dengan alamat email, seperti name@example.com.

```
// Import required AWS SDK clients and commands for Node.js
import { VerifyEmailIdentityCommand } from "@aws-sdk/client-ses";
import { sesClient } from "./libs/sesClient.js";

const EMAIL_ADDRESS = "name@example.com";

const createVerifyEmailIdentityCommand = (emailAddress) => {
  return new VerifyEmailIdentityCommand({ EmailAddress: emailAddress });
};

const run = async () => {
  const verifyEmailIdentityCommand =
    createVerifyEmailIdentityCommand(EMAIL_ADDRESS);
  try {
    return await sesClient.send(verifyEmailIdentityCommand);
  } catch (err) {
    console.log("Failed to verify email identity.", err);
    return err;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Domain ditambahkan ke Amazon SES untuk diverifikasi.

```
node ses_verifyemailidentity.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_verifyemailidentity.js).

## Memverifikasi identitas Domain
<a name="ses-examples-verifying-domains"></a>

Dalam contoh ini, gunakan modul Node.js untuk memverifikasi domain email yang akan digunakan dengan Amazon SES.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_verifydomainidentity.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk melewati `Domain` parameter untuk `VerifyDomainIdentityCommand` metode kelas `SES` klien. Untuk memanggil `VerifyDomainIdentityCommand` metode, panggil objek layanan klien Amazon SES, meneruskan objek parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *DOMAIN\$1NAME* dengan nama domain.

```
import { VerifyDomainIdentityCommand } from "@aws-sdk/client-ses";
import {
  getUniqueName,
  postfix,
} from "@aws-doc-sdk-examples/lib/utils/util-string.js";
import { sesClient } from "./libs/sesClient.js";

/**
 * You must have access to the domain's DNS settings to complete the
 * domain verification process.
 */
const DOMAIN_NAME = postfix(getUniqueName("Domain"), ".example.com");

const createVerifyDomainIdentityCommand = () => {
  return new VerifyDomainIdentityCommand({ Domain: DOMAIN_NAME });
};

const run = async () => {
  const VerifyDomainIdentityCommand = createVerifyDomainIdentityCommand();

  try {
    return await sesClient.send(VerifyDomainIdentityCommand);
  } catch (err) {
    console.log("Failed to verify domain.", err);
    return err;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Domain ditambahkan ke Amazon SES untuk diverifikasi.

```
node ses_verifydomainidentity.js  
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_verifydomainidentity.js).

## Menghapus identitas
<a name="ses-examples-deleting-identities"></a>

Dalam contoh ini, gunakan modul Node.js untuk menghapus alamat email atau domain yang digunakan dengan Amazon SES.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_deleteidentity.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk melewati `Identity` parameter untuk `DeleteIdentityCommand` metode kelas `SES` klien. Untuk memanggil `DeleteIdentityCommand` metode, buat `request` untuk memanggil objek layanan klien Amazon SES, melewati parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *IDENTITY\$1EMAIL* dengan email identitas yang akan dihapus.

```
import { DeleteIdentityCommand } from "@aws-sdk/client-ses";
import { sesClient } from "./libs/sesClient.js";

const IDENTITY_EMAIL = "fake@example.com";

const createDeleteIdentityCommand = (identityName) => {
  return new DeleteIdentityCommand({
    Identity: identityName,
  });
};

const run = async () => {
  const deleteIdentityCommand = createDeleteIdentityCommand(IDENTITY_EMAIL);

  try {
    return await sesClient.send(deleteIdentityCommand);
  } catch (err) {
    console.log("Failed to delete identity.", err);
    return err;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node ses_deleteidentity.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_deleteidentity.js).

# Bekerja dengan template email di Amazon SES
<a name="ses-examples-creating-template"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Cara mendapatkan daftar semua template email Anda.
+ Cara mengambil dan memperbarui template email.
+ Cara membuat dan menghapus template email.

Amazon SES memungkinkan Anda mengirim pesan email yang dipersonalisasi menggunakan templat email. Untuk detail tentang cara membuat dan menggunakan templat email di Amazon SES, lihat [Mengirim email yang dipersonalisasi menggunakan Amazon SES API](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html) di Panduan Pengembang Layanan Email Sederhana Amazon.

## Skenario
<a name="ses-examples-creating-template-scenario"></a>

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk bekerja dengan template email. Modul Node.js menggunakan SDK JavaScript untuk membuat dan menggunakan templat email menggunakan metode kelas `SES` klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/ListTemplatesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/ListTemplatesCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/CreateTemplateCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/CreateTemplateCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/GetTemplateCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/GetTemplateCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/DeleteTemplateCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/DeleteTemplateCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/UpdateTemplateCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/UpdateTemplateCommand/)

## Tugas prasyarat
<a name="ses-examples-creating-template-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/ses/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Daftar template email Anda
<a name="ses-examples-listing-templates"></a>

Dalam contoh ini, gunakan modul Node.js untuk membuat template email untuk digunakan dengan Amazon SES. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_listtemplates.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk melewati parameter untuk `ListTemplatesCommand` metode kelas `SES` klien. Untuk memanggil `ListTemplatesCommand` metode, panggil objek layanan klien Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

```
import { ListTemplatesCommand } from "@aws-sdk/client-ses";
import { sesClient } from "./libs/sesClient.js";

const createListTemplatesCommand = (maxItems) =>
  new ListTemplatesCommand({ MaxItems: maxItems });

const run = async () => {
  const listTemplatesCommand = createListTemplatesCommand(10);

  try {
    return await sesClient.send(listTemplatesCommand);
  } catch (err) {
    console.log("Failed to list templates.", err);
    return err;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Amazon SES mengembalikan daftar templat.

```
node ses_listtemplates.js  
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_listtemplates.js).

## Mendapatkan template email
<a name="ses-examples-get-template"></a>

Dalam contoh ini, gunakan modul Node.js untuk mendapatkan template email untuk digunakan dengan Amazon SES.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_gettemplate.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk melewati `TemplateName` parameter untuk `GetTemplateCommand` metode kelas `SES` klien. Untuk memanggil `GetTemplateCommand` metode, panggil objek layanan klien Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *TEMPLATE\$1NAME* dengan nama template untuk kembali.

```
import { GetTemplateCommand } from "@aws-sdk/client-ses";
import { getUniqueName } from "@aws-doc-sdk-examples/lib/utils/util-string.js";
import { sesClient } from "./libs/sesClient.js";

const TEMPLATE_NAME = getUniqueName("TemplateName");

const createGetTemplateCommand = (templateName) =>
  new GetTemplateCommand({ TemplateName: templateName });

const run = async () => {
  const getTemplateCommand = createGetTemplateCommand(TEMPLATE_NAME);

  try {
    return await sesClient.send(getTemplateCommand);
  } catch (caught) {
    if (caught instanceof Error && caught.name === "MessageRejected") {
      /** @type { import('@aws-sdk/client-ses').MessageRejected} */
      const messageRejectedError = caught;
      return messageRejectedError;
    }
    throw caught;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Amazon SES mengembalikan detail template.

```
node ses_gettemplate.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_gettemplate.js).

## Membuat template email
<a name="ses-examples-create-template"></a>

Dalam contoh ini, gunakan modul Node.js untuk membuat template email untuk digunakan dengan Amazon SES. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_createtemplate.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk melewati parameter untuk `CreateTemplateCommand` metode kelas `SES` klien, termasuk,`TemplateName`, `HtmlPart``SubjectPart`, dan`TextPart`. Untuk memanggil `CreateTemplateCommand` metode, panggil objek layanan klien Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *TEMPLATE\$1NAME* dengan nama untuk template baru, *HtmlPart* dengan HTML tag konten email, dan *SubjectPart* dengan subjek email.

```
import { CreateTemplateCommand } from "@aws-sdk/client-ses";
import { sesClient } from "./libs/sesClient.js";
import { getUniqueName } from "@aws-doc-sdk-examples/lib/utils/util-string.js";

const TEMPLATE_NAME = getUniqueName("TestTemplateName");

const createCreateTemplateCommand = () => {
  return new CreateTemplateCommand({
    /**
     * The template feature in Amazon SES is based on the Handlebars template system.
     */
    Template: {
      /**
       * The name of an existing template in Amazon SES.
       */
      TemplateName: TEMPLATE_NAME,
      HtmlPart: `
        <h1>Hello, {{contact.firstName}}!</h1>
        <p>
        Did you know Amazon has a mascot named Peccy?
        </p>
      `,
      SubjectPart: "Amazon Tip",
    },
  });
};

const run = async () => {
  const createTemplateCommand = createCreateTemplateCommand();

  try {
    return await sesClient.send(createTemplateCommand);
  } catch (err) {
    console.log("Failed to create template.", err);
    return err;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Template ditambahkan ke Amazon SES.

```
node ses_createtemplate.js  
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_createtemplate.js).

## Memperbarui templat email
<a name="ses-examples-update-template"></a>

Dalam contoh ini, gunakan modul Node.js untuk membuat template email untuk digunakan dengan Amazon SES. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_updatetemplate.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk meneruskan nilai `Template` parameter yang ingin Anda perbarui di template, dengan `TemplateName` parameter yang diperlukan diteruskan ke `UpdateTemplateCommand` metode kelas `SES` klien. Untuk memanggil `UpdateTemplateCommand` metode, panggil objek layanan Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *TEMPLATE\$1NAME* dengan nama template dan *HTML\$1PART* dengan konten email yang diberi tag HTML.

```
import { UpdateTemplateCommand } from "@aws-sdk/client-ses";
import { getUniqueName } from "@aws-doc-sdk-examples/lib/utils/util-string.js";
import { sesClient } from "./libs/sesClient.js";

const TEMPLATE_NAME = getUniqueName("TemplateName");
const HTML_PART = "<h1>Hello, World!</h1>";

const createUpdateTemplateCommand = () => {
  return new UpdateTemplateCommand({
    Template: {
      TemplateName: TEMPLATE_NAME,
      HtmlPart: HTML_PART,
      SubjectPart: "Example",
      TextPart: "Updated template text.",
    },
  });
};

const run = async () => {
  const updateTemplateCommand = createUpdateTemplateCommand();

  try {
    return await sesClient.send(updateTemplateCommand);
  } catch (err) {
    console.log("Failed to update template.", err);
    return err;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Amazon SES mengembalikan detail template.

```
node ses_updatetemplate.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_updatetemplate.js).

## Menghapus templat email
<a name="ses-examples-delete-template"></a>

Dalam contoh ini, gunakan modul Node.js untuk membuat template email untuk digunakan dengan Amazon SES. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_deletetemplate.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk meneruskan `TemplateName` parameter yang diperlukan ke `DeleteTemplateCommand` metode kelas `SES` klien. Untuk memanggil `DeleteTemplateCommand` metode, panggil objek layanan Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *TEMPLATE\$1NAME* dengan nama template yang akan dihapus.

```
import { DeleteTemplateCommand } from "@aws-sdk/client-ses";
import { getUniqueName } from "@aws-doc-sdk-examples/lib/utils/util-string.js";
import { sesClient } from "./libs/sesClient.js";

const TEMPLATE_NAME = getUniqueName("TemplateName");

const createDeleteTemplateCommand = (templateName) =>
  new DeleteTemplateCommand({ TemplateName: templateName });

const run = async () => {
  const deleteTemplateCommand = createDeleteTemplateCommand(TEMPLATE_NAME);

  try {
    return await sesClient.send(deleteTemplateCommand);
  } catch (err) {
    console.log("Failed to delete template.", err);
    return err;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Amazon SES mengembalikan detail template.

```
node ses_deletetemplate.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_deletetemplate.js).

# Mengirim email menggunakan Amazon SES
<a name="ses-examples-sending-email"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Kirim teks atau email HTML.
+ Kirim email berdasarkan template email.
+ Kirim email massal berdasarkan template email.

Amazon SES API menyediakan dua cara berbeda bagi Anda untuk mengirim email, tergantung pada seberapa banyak kontrol yang Anda inginkan atas komposisi pesan email: diformat dan mentah. Untuk detailnya, lihat [Mengirim email berformat menggunakan Amazon SES API](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-formatted.html) dan [Mengirim email mentah menggunakan Amazon SES API](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html).

## Skenario
<a name="ses-examples-sending-email-scenario"></a>

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk mengirim email dengan berbagai cara. Modul Node.js menggunakan SDK JavaScript untuk membuat dan menggunakan templat email menggunakan metode kelas `SES` klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendEmailCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendEmailCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendTemplatedEmailCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendTemplatedEmailCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendBulkTemplatedEmailCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendBulkTemplatedEmailCommand/)

## Tugas prasyarat
<a name="ses-examples-sending-emails-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/ses/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Persyaratan pengiriman pesan email
<a name="ses-examples-sending-msail-reqs"></a>

Amazon SES membuat pesan email dan segera mengantri untuk dikirim. Untuk mengirim email menggunakan `SendEmailCommand` metode ini, pesan Anda harus memenuhi persyaratan berikut:
+ Anda harus mengirim pesan dari alamat email atau domain yang diverifikasi. Jika Anda mencoba mengirim email menggunakan alamat atau domain yang tidak diverifikasi, operasi akan menghasilkan `"Email address not verified"` kesalahan.
+ Jika akun Anda masih dalam kotak pasir Amazon SES, Anda hanya dapat mengirim ke alamat atau domain terverifikasi, atau ke alamat email yang terkait dengan Simulator Kotak Surat Amazon SES. Untuk informasi selengkapnya, lihat [Memverifikasi alamat email dan domain](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html) di Panduan Pengembang Layanan Email Sederhana Amazon.
+ Ukuran total pesan, termasuk lampiran, harus lebih kecil dari 10 MB.
+ Pesan harus menyertakan setidaknya satu alamat email penerima. Alamat penerima dapat berupa alamat Kepada:, alamat CC:, atau alamat BCC:. Jika alamat email penerima tidak valid (yaitu, tidak dalam format`UserName@[SubDomain.]Domain.TopLevelDomain`), seluruh pesan ditolak, bahkan jika pesan berisi penerima lain yang valid.
+ Pesan tidak dapat menyertakan lebih dari 50 penerima di bidang Kepada:, CC: dan BCC:. Jika Anda perlu mengirim pesan email ke audiens yang lebih besar, Anda dapat membagi daftar penerima Anda menjadi grup 50 atau kurang, dan kemudian memanggil `sendEmail` metode beberapa kali untuk mengirim pesan ke setiap grup.

## Mengirim email
<a name="ses-examples-sendmail"></a>

Dalam contoh ini, gunakan modul Node.js untuk mengirim email dengan Amazon SES. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_sendemail.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk meneruskan nilai parameter yang menentukan email yang akan dikirim, termasuk alamat pengirim dan penerima, subjek, dan badan email dalam format teks biasa dan HTML, ke `SendEmailCommand` metode kelas `SES` klien. Untuk memanggil `SendEmailCommand` metode, panggil objek layanan Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *toAddress* dengan alamat untuk mengirim email ke, dan *fromAddress* dengan alamat email untuk mengirim email dari.

```
import { SendEmailCommand } from "@aws-sdk/client-ses";
import { sesClient } from "./libs/sesClient.js";

const createSendEmailCommand = (toAddress, fromAddress) => {
  return new SendEmailCommand({
    Destination: {
      /* required */
      CcAddresses: [
        /* more items */
      ],
      ToAddresses: [
        toAddress,
        /* more To-email addresses */
      ],
    },
    Message: {
      /* required */
      Body: {
        /* required */
        Html: {
          Charset: "UTF-8",
          Data: "HTML_FORMAT_BODY",
        },
        Text: {
          Charset: "UTF-8",
          Data: "TEXT_FORMAT_BODY",
        },
      },
      Subject: {
        Charset: "UTF-8",
        Data: "EMAIL_SUBJECT",
      },
    },
    Source: fromAddress,
    ReplyToAddresses: [
      /* more items */
    ],
  });
};

const run = async () => {
  const sendEmailCommand = createSendEmailCommand(
    "recipient@example.com",
    "sender@example.com",
  );

  try {
    return await sesClient.send(sendEmailCommand);
  } catch (caught) {
    if (caught instanceof Error && caught.name === "MessageRejected") {
      /** @type { import('@aws-sdk/client-ses').MessageRejected} */
      const messageRejectedError = caught;
      return messageRejectedError;
    }
    throw caught;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Email diantrian untuk dikirim oleh Amazon SES.

```
node ses_sendemail.js 
```

Kode contoh ini dapat [ditemukan di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_sendemail.js). 

## Mengirim email menggunakan template
<a name="ses-examples-sendtemplatedemail"></a>

Dalam contoh ini, gunakan modul Node.js untuk mengirim email dengan Amazon SES. Buat modul Node.js dengan nama file`ses_sendtemplatedemail.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk meneruskan nilai parameter yang menentukan email yang akan dikirim, termasuk alamat pengirim dan penerima, subjek, badan email dalam format teks biasa dan HTML, ke `SendTemplatedEmailCommand` metode kelas `SES` klien. Untuk memanggil `SendTemplatedEmailCommand` metode, panggil objek layanan klien Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *REGION* dengan AWS Wilayah Anda, *USER* dengan nama dan alamat email untuk mengirim email ke, *VERIFIED\$1EMAIL* dengan alamat email untuk mengirim email dari, dan *TEMPLATE\$1NAME* dengan nama template.

```
import { SendTemplatedEmailCommand } from "@aws-sdk/client-ses";
import {
  getUniqueName,
  postfix,
} from "@aws-doc-sdk-examples/lib/utils/util-string.js";
import { sesClient } from "./libs/sesClient.js";

/**
 * Replace this with the name of an existing template.
 */
const TEMPLATE_NAME = getUniqueName("ReminderTemplate");

/**
 * Replace these with existing verified emails.
 */
const VERIFIED_EMAIL = postfix(getUniqueName("Bilbo"), "@example.com");

const USER = { firstName: "Bilbo", emailAddress: VERIFIED_EMAIL };

/**
 *
 * @param { { emailAddress: string, firstName: string } } user
 * @param { string } templateName - The name of an existing template in Amazon SES.
 * @returns { SendTemplatedEmailCommand }
 */
const createReminderEmailCommand = (user, templateName) => {
  return new SendTemplatedEmailCommand({
    /**
     * Here's an example of how a template would be replaced with user data:
     * Template: <h1>Hello {{contact.firstName}},</h1><p>Don't forget about the party gifts!</p>
     * Destination: <h1>Hello Bilbo,</h1><p>Don't forget about the party gifts!</p>
     */
    Destination: { ToAddresses: [user.emailAddress] },
    TemplateData: JSON.stringify({ contact: { firstName: user.firstName } }),
    Source: VERIFIED_EMAIL,
    Template: templateName,
  });
};

const run = async () => {
  const sendReminderEmailCommand = createReminderEmailCommand(
    USER,
    TEMPLATE_NAME,
  );
  try {
    return await sesClient.send(sendReminderEmailCommand);
  } catch (caught) {
    if (caught instanceof Error && caught.name === "MessageRejected") {
      /** @type { import('@aws-sdk/client-ses').MessageRejected} */
      const messageRejectedError = caught;
      return messageRejectedError;
    }
    throw caught;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Email diantrian untuk dikirim oleh Amazon SES.

```
node ses_sendtemplatedemail.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_sendtemplatedemail.js).

## Mengirim email massal menggunakan template
<a name="ses-examples-sendbulktemplatedemail"></a>

Dalam contoh ini, gunakan modul Node.js untuk mengirim email dengan Amazon SES. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_sendbulktemplatedemail.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. 

Buat objek untuk meneruskan nilai parameter yang menentukan email yang akan dikirim, termasuk alamat pengirim dan penerima, subjek, dan badan email dalam format teks biasa dan HTML, ke `SendBulkTemplatedEmailCommand` metode kelas `SES` klien. Untuk memanggil `SendBulkTemplatedEmailCommand` metode, panggil objek layanan Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *USERS* dengan nama dan alamat email untuk mengirim email ke, *VERIFIED\$1EMAIL\$11* dengan alamat email untuk mengirim email dari, dan *TEMPLATE\$1NAME* dengan nama template.

```
import { SendBulkTemplatedEmailCommand } from "@aws-sdk/client-ses";
import {
  getUniqueName,
  postfix,
} from "@aws-doc-sdk-examples/lib/utils/util-string.js";
import { sesClient } from "./libs/sesClient.js";

/**
 * Replace this with the name of an existing template.
 */
const TEMPLATE_NAME = getUniqueName("ReminderTemplate");

/**
 * Replace these with existing verified emails.
 */
const VERIFIED_EMAIL_1 = postfix(getUniqueName("Bilbo"), "@example.com");
const VERIFIED_EMAIL_2 = postfix(getUniqueName("Frodo"), "@example.com");

const USERS = [
  { firstName: "Bilbo", emailAddress: VERIFIED_EMAIL_1 },
  { firstName: "Frodo", emailAddress: VERIFIED_EMAIL_2 },
];

/**
 *
 * @param { { emailAddress: string, firstName: string }[] } users
 * @param { string } templateName the name of an existing template in SES
 * @returns { SendBulkTemplatedEmailCommand }
 */
const createBulkReminderEmailCommand = (users, templateName) => {
  return new SendBulkTemplatedEmailCommand({
    /**
     * Each 'Destination' uses a corresponding set of replacement data. We can map each user
     * to a 'Destination' and provide user specific replacement data to create personalized emails.
     *
     * Here's an example of how a template would be replaced with user data:
     * Template: <h1>Hello {{name}},</h1><p>Don't forget about the party gifts!</p>
     * Destination 1: <h1>Hello Bilbo,</h1><p>Don't forget about the party gifts!</p>
     * Destination 2: <h1>Hello Frodo,</h1><p>Don't forget about the party gifts!</p>
     */
    Destinations: users.map((user) => ({
      Destination: { ToAddresses: [user.emailAddress] },
      ReplacementTemplateData: JSON.stringify({ name: user.firstName }),
    })),
    DefaultTemplateData: JSON.stringify({ name: "Shireling" }),
    Source: VERIFIED_EMAIL_1,
    Template: templateName,
  });
};

const run = async () => {
  const sendBulkTemplateEmailCommand = createBulkReminderEmailCommand(
    USERS,
    TEMPLATE_NAME,
  );
  try {
    return await sesClient.send(sendBulkTemplateEmailCommand);
  } catch (caught) {
    if (caught instanceof Error && caught.name === "MessageRejected") {
      /** @type { import('@aws-sdk/client-ses').MessageRejected} */
      const messageRejectedError = caught;
      return messageRejectedError;
    }
    throw caught;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Email diantrian untuk dikirim oleh Amazon SES.

```
node ses_sendbulktemplatedemail.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_sendbulktemplatedemail.js). 

# Contoh Layanan Pemberitahuan Sederhana Amazon
<a name="sns-examples"></a>

Amazon Simple Notification Service (Amazon SNS) adalah layanan web yang mengoordinasikan dan mengelola pengiriman atau pengiriman pesan untuk berlangganan titik akhir atau klien. 

Di Amazon SNS, ada dua jenis klien — penerbit dan pelanggan — juga disebut sebagai produsen dan konsumen. 

![\[Hubungan antara JavaScript lingkungan, SDK, dan Amazon SNS\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/code-samples-sns.png)


Penerbit berkomunikasi secara asinkron dengan pelanggan dengan memproduksi dan mengirim pesan ke suatu topik, yang merupakan jalur akses logis dan saluran komunikasi. Pelanggan (server web, alamat email, antrian Amazon SQS, AWS Lambda fungsi) mengkonsumsi atau menerima pesan atau pemberitahuan melalui salah satu protokol yang didukung (Amazon SQS, HTTP/S, email, AWS Lambda SMS,) ketika mereka berlangganan topik. 

 JavaScript API untuk Amazon SNS diekspos melalui [Kelas:](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SNS/) SNS. 

**Topics**
+ [Mengelola Topik di Amazon SNS](sns-examples-managing-topics.md)
+ [Menerbitkan Pesan di Amazon SNS](sns-examples-publishing-messages.md)
+ [Mengelola Langganan di Amazon SNS](sns-examples-subscribing-unsubscribing-topics.md)
+ [Mengirim Pesan SMS dengan Amazon SNS](sns-examples-sending-sms.md)

# Mengelola Topik di Amazon SNS
<a name="sns-examples-managing-topics"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Cara membuat topik di Amazon SNS tempat Anda dapat mempublikasikan notifikasi.
+ Cara menghapus topik yang dibuat di Amazon SNS.
+ Cara mendapatkan daftar topik yang tersedia.
+ Cara mendapatkan dan mengatur atribut topik.

## Skenario
<a name="sns-examples-managing-topics-scenario"></a>

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk membuat, membuat daftar, dan menghapus topik Amazon SNS, dan untuk menangani atribut topik. Modul Node.js menggunakan SDK JavaScript untuk mengelola topik menggunakan metode kelas `SNS` klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/CreateTopicCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/CreateTopicCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListTopicsCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListTopicsCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/DeleteTopicCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/DeleteTopicCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/GetTopicAttributesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/GetTopicAttributesCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SetTopicAttributesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SetTopicAttributesCommand/)

## Tugas Prasyarat
<a name="sns-examples-managing-topics-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Membuat Topik
<a name="sns-examples-managing-topics-createtopic"></a>

Dalam contoh ini, gunakan modul Node.js untuk membuat topik Amazon SNS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`create-topic.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk meneruskan topik baru ke `CreateTopicCommand` metode kelas `SNS` klien. `Name` Untuk memanggil `CreateTopicCommand` metode, buat fungsi asinkron yang menjalankan objek layanan Amazon SNS, melewati objek parameter. Yang `data` dikembalikan berisi ARN topik.

**catatan**  
Ganti *TOPIC\$1NAME* dengan nama topik.

```
import { CreateTopicCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicName - The name of the topic to create.
 */
export const createTopic = async (topicName = "TOPIC_NAME") => {
  const response = await snsClient.send(
    new CreateTopicCommand({ Name: topicName }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '087b8ad2-4593-50c4-a496-d7e90b82cf3e',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:TOPIC_NAME'
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node create-topic.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/create-topic.js).

## Daftar Topik Anda
<a name="sns-examples-managing-topics-listtopics"></a>

Dalam contoh ini, gunakan modul Node.js untuk mencantumkan semua topik Amazon SNS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`list-topics.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek kosong untuk diteruskan ke `ListTopicsCommand` metode kelas `SNS` klien. Untuk memanggil `ListTopicsCommand` metode, buat fungsi asinkron yang menjalankan objek layanan Amazon SNS, melewati objek parameter. Yang `data` dikembalikan berisi larik topik Anda Amazon Resource Names (ARNs).

```
import { ListTopicsCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

export const listTopics = async () => {
  const response = await snsClient.send(new ListTopicsCommand({}));
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '936bc5ad-83ca-53c2-b0b7-9891167b909e',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   Topics: [ { TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic' } ]
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node list-topics.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/list-topics.js).

## Menghapus Topik
<a name="sns-examples-managing-topics-deletetopic"></a>

Dalam contoh ini, gunakan modul Node.js untuk menghapus topik Amazon SNS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`delete-topic.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek yang `TopicArn` berisi topik yang akan dihapus untuk diteruskan ke `DeleteTopicCommand` metode kelas `SNS` klien. Untuk memanggil `DeleteTopicCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *TOPIC\$1ARN* dengan Nama Sumber Daya Amazon (ARN) dari topik yang Anda hapus.

```
import { DeleteTopicCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic to delete.
 */
export const deleteTopic = async (topicArn = "TOPIC_ARN") => {
  const response = await snsClient.send(
    new DeleteTopicCommand({ TopicArn: topicArn }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'a10e2886-5a8f-5114-af36-75bd39498332',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node delete-topic.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/delete-topic.js).

## Mendapatkan Atribut Topik
<a name="sns-examples-managing-topicsgettopicattributes"></a>

Dalam contoh ini, gunakan modul Node.js untuk mengambil atribut topik Amazon SNS.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`get-topic-attributes.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang `TopicArn` berisi topik yang akan dihapus untuk diteruskan ke `GetTopicAttributesCommand` metode kelas `SNS` klien. Untuk memanggil `GetTopicAttributesCommand` metode, memanggil objek layanan klien Amazon SNS, meneruskan objek parameter. 

**catatan**  
Ganti *TOPIC\$1ARN* dengan ARN topik.

```
import { GetTopicAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic to retrieve attributes for.
 */
export const getTopicAttributes = async (topicArn = "TOPIC_ARN") => {
  const response = await snsClient.send(
    new GetTopicAttributesCommand({
      TopicArn: topicArn,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '36b6a24e-5473-5d4e-ac32-ff72d9a73d94',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   Attributes: {
  //     Policy: '{...}',
  //     Owner: 'xxxxxxxxxxxx',
  //     SubscriptionsPending: '1',
  //     TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic',
  //     TracingConfig: 'PassThrough',
  //     EffectiveDeliveryPolicy: '{"http":{"defaultHealthyRetryPolicy":{"minDelayTarget":20,"maxDelayTarget":20,"numRetries":3,"numMaxDelayRetries":0,"numNoDelayRetries":0,"numMinDelayRetries":0,"backoffFunction":"linear"},"disableSubscriptionOverrides":false,"defaultRequestPolicy":{"headerContentType":"text/plain; charset=UTF-8"}}}',
  //     SubscriptionsConfirmed: '0',
  //     DisplayName: '',
  //     SubscriptionsDeleted: '1'
  //   }
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node get-topic-attributes.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/get-topic-attributes.js).

## Mengatur Atribut Topik
<a name="sns-examples-managing-topicssttopicattributes"></a>

Dalam contoh ini, gunakan modul Node.js untuk menyetel atribut yang dapat berubah dari topik Amazon SNS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`set-topic-attributes.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang berisi parameter untuk pembaruan atribut, termasuk topik yang atributnya ingin Anda tetapkan, nama atribut yang akan ditetapkan, dan nilai baru untuk atribut tersebut. `TopicArn` Anda hanya dapat mengatur`Policy`,`DisplayName`, dan `DeliveryPolicy` atribut. Lewati parameter ke `SetTopicAttributesCommand` metode kelas `SNS` klien. Untuk memanggil `SetTopicAttributesCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *ATTRIBUTE\$1NAME* dengan nama atribut yang Anda setel, *TOPIC\$1ARN* dengan Amazon Resource Name (ARN) dari topik yang atributnya ingin Anda tetapkan, dan *NEW\$1ATTRIBUTE\$1VALUE* dengan nilai baru untuk atribut tersebut.

```
import { SetTopicAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

export const setTopicAttributes = async (
  topicArn = "TOPIC_ARN",
  attributeName = "DisplayName",
  attributeValue = "Test Topic",
) => {
  const response = await snsClient.send(
    new SetTopicAttributesCommand({
      AttributeName: attributeName,
      AttributeValue: attributeValue,
      TopicArn: topicArn,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'd1b08d0e-e9a4-54c3-b8b1-d03238d2b935',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node set-topic-attributes.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/set-topic-attributes.js).

# Menerbitkan Pesan di Amazon SNS
<a name="sns-examples-publishing-messages"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Cara mempublikasikan pesan ke topik Amazon SNS.

## Skenario
<a name="sns-examples-publishing-messages-scenario"></a>

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk mempublikasikan pesan dari Amazon SNS ke titik akhir topik, email, atau nomor telepon. Modul Node.js menggunakan SDK JavaScript untuk mengirim pesan menggunakan metode kelas `SNS` klien ini:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/PublishCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/PublishCommand/)

## Tugas Prasyarat
<a name="sns-examples-publishing-messages-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Menerbitkan Pesan ke Topik SNS
<a name="sns-examples-publishing-text-messages"></a>

Dalam contoh ini, gunakan modul Node.js untuk mempublikasikan pesan ke topik Amazon SNS.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

 Buat modul Node.js dengan nama file`publish-topic.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang berisi parameter untuk menerbitkan pesan, termasuk teks pesan dan Amazon Resource Name (ARN) Amazon. SNStopic Untuk detail tentang atribut SMS yang tersedia, lihat [Mengatur SMSAttributes](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property).

Teruskan parameter ke `PublishCommand` metode kelas `SNS` klien. buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *MESSAGE\$1TEXT* dengan teks pesan, dan *TOPIC\$1ARN* dengan ARN dari topik SNS.

```
import { PublishCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string | Record<string, any>} message - The message to send. Can be a plain string or an object
 *                                                 if you are using the `json` `MessageStructure`.
 * @param {string} topicArn - The ARN of the topic to which you would like to publish.
 */
export const publish = async (
  message = "Hello from SNS!",
  topicArn = "TOPIC_ARN",
) => {
  const response = await snsClient.send(
    new PublishCommand({
      Message: message,
      TopicArn: topicArn,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'e7f77526-e295-5325-9ee4-281a43ad1f05',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   MessageId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node publish-topic.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/publish-topic.js).

# Mengelola Langganan di Amazon SNS
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Cara membuat daftar semua langganan ke topik Amazon SNS.
+ Cara berlangganan alamat email, titik akhir aplikasi, atau AWS Lambda fungsi ke topik Amazon SNS.
+ Cara berhenti berlangganan dari topik Amazon SNS.

## Skenario
<a name="sns-examples-subscribing-unsubscribing-topics-scenario"></a>

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk mempublikasikan pesan notifikasi ke topik Amazon SNS. Modul Node.js menggunakan SDK JavaScript untuk mengelola topik menggunakan metode kelas `SNS` klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListSubscriptionsByTopicCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListSubscriptionsByTopicCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SubscribeCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SubscribeCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ConfirmSubscriptionCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ConfirmSubscriptionCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/UnsubscribeCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/UnsubscribeCommand/)

## Tugas Prasyarat
<a name="sns-examples-subscribing-unsubscribing-topics-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Daftar Langganan ke Topik
<a name="sns-examples-list-subscriptions-email"></a>

Dalam contoh ini, gunakan modul Node.js untuk mencantumkan semua langganan ke topik Amazon SNS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

 Buat modul Node.js dengan nama file`list-subscriptions-by-topic.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang berisi `TopicArn` parameter untuk topik yang langganannya ingin Anda daftarkan. Lewati parameter ke `ListSubscriptionsByTopicCommand` metode kelas `SNS` klien. Untuk memanggil `ListSubscriptionsByTopicCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, dan meneruskan objek parameter. 

**catatan**  
Ganti *TOPIC\$1ARN* dengan Nama Sumber Daya Amazon (ARN) untuk topik yang langganannya ingin Anda daftarkan.

```
import { ListSubscriptionsByTopicCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic for which you wish to list subscriptions.
 */
export const listSubscriptionsByTopic = async (topicArn = "TOPIC_ARN") => {
  const response = await snsClient.send(
    new ListSubscriptionsByTopicCommand({ TopicArn: topicArn }),
  );

  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '0934fedf-0c4b-572e-9ed2-a3e38fadb0c8',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   Subscriptions: [
  //     {
  //       SubscriptionArn: 'PendingConfirmation',
  //       Owner: '901487484989',
  //       Protocol: 'email',
  //       Endpoint: 'corepyle@amazon.com',
  //       TopicArn: 'arn:aws:sns:us-east-1:901487484989:mytopic'
  //     }
  //   ]
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node list-subscriptions-by-topic.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/list-subscriptions-by-topic.js).

## Berlangganan Alamat Email ke Topik
<a name="sns-examples-subscribing-email"></a>

Dalam contoh ini, gunakan modul Node.js untuk berlangganan alamat email sehingga menerima pesan email SMTP dari topik Amazon SNS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`subscribe-email.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang berisi `Protocol` parameter untuk menentukan `email` protokol, topik `TopicArn` untuk berlangganan, dan alamat email sebagai pesan`Endpoint`. Lewati parameter ke `SubscribeCommand` metode kelas `SNS` klien. Anda dapat menggunakan `subscribe` metode ini untuk berlangganan beberapa titik akhir yang berbeda ke topik Amazon SNS, tergantung pada nilai yang digunakan untuk parameter yang diteruskan, seperti contoh lain dalam topik ini akan ditampilkan.

Untuk memanggil `SubscribeCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, dan meneruskan objek parameter. 

**catatan**  
Ganti *TOPIC\$1ARN* dengan Nama Sumber Daya Amazon (ARN) untuk topik tersebut, dan *EMAIL\$1ADDRESS* dengan alamat email untuk berlangganan.

```
import { SubscribeCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic for which you wish to confirm a subscription.
 * @param {string} emailAddress - The email address that is subscribed to the topic.
 */
export const subscribeEmail = async (
  topicArn = "TOPIC_ARN",
  emailAddress = "usern@me.com",
) => {
  const response = await snsClient.send(
    new SubscribeCommand({
      Protocol: "email",
      TopicArn: topicArn,
      Endpoint: emailAddress,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   SubscriptionArn: 'pending confirmation'
  // }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node subscribe-email.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/subscribe-email.js).

### Mengonfirmasi Langganan
<a name="sns-confirm-subscription-email"></a>

Dalam contoh ini, gunakan modul Node.js untuk memverifikasi maksud pemilik endpoint untuk menerima email dengan memvalidasi token yang dikirim ke titik akhir dengan tindakan berlangganan sebelumnya.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`confirm-subscription.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Tentukan parameter, termasuk `TOPIC_ARN` dan`TOKEN`, dan tentukan nilai `TRUE` atau `FALSE` untuk`AuthenticateOnUnsubscribe`.

Token adalah token berumur pendek yang dikirim ke pemilik titik akhir selama tindakan sebelumnya`SUBSCRIBE`. Misalnya, untuk titik akhir email `TOKEN` ada di URL email Konfirmasi Langganan yang dikirim ke pemilik email. Misalnya, `abc123` adalah token di URL berikut.

![\[Amazon Web Services Simple Notification Service subscription confirmation page.\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/token.png)


Untuk memanggil `ConfirmSubscriptionCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *TOPIC\$1ARN* dengan Nama Sumber Daya Amazon (ARN) untuk topik, *TOKEN* dengan nilai token dari URL yang dikirim ke pemilik titik akhir dalam `Subscribe` tindakan sebelumnya, dan tentukan*AuthenticateOnUnsubscribe*. dengan nilai atau. `TRUE` `FALSE`

```
import { ConfirmSubscriptionCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} token - This token is sent the subscriber. Only subscribers
 *                         that are not AWS services (HTTP/S, email) need to be confirmed.
 * @param {string} topicArn - The ARN of the topic for which you wish to confirm a subscription.
 */
export const confirmSubscription = async (
  token = "TOKEN",
  topicArn = "TOPIC_ARN",
) => {
  const response = await snsClient.send(
    // A subscription only needs to be confirmed if the endpoint type is
    // HTTP/S, email, or in another AWS account.
    new ConfirmSubscriptionCommand({
      Token: token,
      TopicArn: topicArn,
      // If this is true, the subscriber cannot unsubscribe while unauthenticated.
      AuthenticateOnUnsubscribe: "false",
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '4bb5bce9-805a-5517-8333-e1d2cface90b',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   SubscriptionArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:TOPIC_NAME:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node confirm-subscription.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/confirm-subscription.js).

## Berlangganan Endpoint Aplikasi ke Topik
<a name="sns-examples-subscribing-apps"></a>

Dalam contoh ini, gunakan modul Node.js untuk berlangganan titik akhir aplikasi seluler sehingga menerima pemberitahuan dari topik Amazon SNS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`subscribe-app.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal modul dan paket yang diperlukan.

Buat objek yang berisi `Protocol` parameter untuk menentukan `application` protokol, topik `TopicArn` untuk berlangganan, dan Nama Sumber Daya Amazon (ARN) dari titik akhir aplikasi seluler untuk parameter tersebut. `Endpoint` Lewati parameter ke `SubscribeCommand` metode kelas `SNS` klien.

Untuk memanggil `SubscribeCommand` metode, buat fungsi asinkron yang menjalankan objek layanan Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *TOPIC\$1ARN* dengan Nama Sumber Daya Amazon (ARN) untuk topik tersebut, dan *MOBILE\$1ENDPOINT\$1ARN* dengan titik akhir Anda berlangganan topik tersebut.

```
import { SubscribeCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic the subscriber is subscribing to.
 * @param {string} endpoint - The Endpoint ARN of an application. This endpoint is created
 *                            when an application registers for notifications.
 */
export const subscribeApp = async (
  topicArn = "TOPIC_ARN",
  endpoint = "ENDPOINT",
) => {
  const response = await snsClient.send(
    new SubscribeCommand({
      Protocol: "application",
      TopicArn: topicArn,
      Endpoint: endpoint,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   SubscriptionArn: 'pending confirmation'
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node subscribe-app.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/subscribe-app.js).

## Berlangganan Fungsi Lambda ke Topik
<a name="sns-examples-subscribing-lambda"></a>

Dalam contoh ini, gunakan modul Node.js untuk berlangganan suatu AWS Lambda fungsi sehingga menerima pemberitahuan dari topik Amazon SNS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`subscribe-lambda.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya.

Buat objek yang berisi `Protocol` parameter, tentukan `lambda` protokol, topik `TopicArn` untuk berlangganan, dan Nama Sumber Daya Amazon (ARN) dari fungsi AWS Lambda sebagai `Endpoint` parameter. Lewati parameter ke `SubscribeCommand` metode kelas `SNS` klien.

Untuk memanggil `SubscribeCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *TOPIC\$1ARN* dengan Amazon Resource Name (ARN) untuk topik, dan *LAMBDA\$1FUNCTION\$1ARN* dengan Amazon Resource Name (ARN) dari fungsi Lambda.

```
import { SubscribeCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic the subscriber is subscribing to.
 * @param {string} endpoint - The Endpoint ARN of and AWS Lambda function.
 */
export const subscribeLambda = async (
  topicArn = "TOPIC_ARN",
  endpoint = "ENDPOINT",
) => {
  const response = await snsClient.send(
    new SubscribeCommand({
      Protocol: "lambda",
      TopicArn: topicArn,
      Endpoint: endpoint,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   SubscriptionArn: 'pending confirmation'
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node subscribe-lambda.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/subscribe-lambda.js).

## Berhenti berlangganan dari Topik
<a name="sns-examples-unsubscribing"></a>

Dalam contoh ini, gunakan modul Node.js untuk berhenti berlangganan langganan topik Amazon SNS.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`unsubscribe.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek yang berisi `SubscriptionArn` parameter, tentukan Nama Sumber Daya Amazon (ARN) langganan untuk berhenti berlangganan. Lewati parameter ke `UnsubscribeCommand` metode kelas `SNS` klien.

Untuk memanggil `UnsubscribeCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *TOPIC\$1SUBSCRIPTION\$1ARN* dengan Nama Sumber Daya Amazon (ARN) dari langganan untuk berhenti berlangganan.

```
import { UnsubscribeCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} subscriptionArn - The ARN of the subscription to cancel.
 */
const unsubscribe = async (
  subscriptionArn = "arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
) => {
  const response = await snsClient.send(
    new UnsubscribeCommand({
      SubscriptionArn: subscriptionArn,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '0178259a-9204-507c-b620-78a7570a44c6',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node unsubscribe.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/unsubscribe.js).

# Mengirim Pesan SMS dengan Amazon SNS
<a name="sns-examples-sending-sms"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Cara mendapatkan dan mengatur preferensi pesan SMS untuk Amazon SNS.
+ Cara memeriksa nomor telepon untuk melihat apakah telah memilih untuk tidak menerima pesan SMS.
+ Cara mendapatkan daftar nomor telepon yang telah memilih untuk tidak menerima pesan SMS.
+ Cara mengirim pesan SMS.

## Skenario
<a name="sns-examples-sending-sms-scenario"></a>

Anda dapat menggunakan Amazon SNS untuk mengirim pesan teks, atau pesan SMS, ke perangkat yang mendukung SMS. Anda dapat mengirim pesan langsung ke sebuah nomor telepon, atau Anda dapat mengirim pesan ke beberapa nomor telepon sekaligus dengan berlangganan topik untuk nomor telepon tersebut dan mengirim pesan Anda ke topik tersebut.

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk mempublikasikan pesan teks SMS dari Amazon SNS ke perangkat berkemampuan SMS. Modul Node.js menggunakan SDK JavaScript untuk mempublikasikan pesan SMS menggunakan metode kelas `SNS` klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/GetSMSAttributesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/GetSMSAttributesCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SetSMSAttributesCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/SetSMSAttributesCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/CheckIfPhoneNumberIsOptedOutCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/CheckIfPhoneNumberIsOptedOutCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListPhoneNumbersOptedOutCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/ListPhoneNumbersOptedOutCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/PublishCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sns/Class/PublishCommand/)

## Tugas Prasyarat
<a name="sns-examples-sending-sms-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Mendapatkan Atribut SMS
<a name="sending-sms-getattributes"></a>

Gunakan Amazon SNS untuk menentukan preferensi untuk pesan SMS, seperti bagaimana pengiriman Anda dioptimalkan (untuk biaya atau untuk pengiriman yang andal), batas pengeluaran bulanan Anda, cara pengiriman pesan dicatat, dan apakah akan berlangganan laporan penggunaan SMS harian. Preferensi ini diambil dan ditetapkan sebagai atribut SMS untuk Amazon SNS.

Dalam contoh ini, gunakan modul Node.js untuk mendapatkan atribut SMS saat ini di Amazon SNS.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

 Buat modul Node.js dengan nama file`get-sms-attributes.js`.

Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk mengunduh klien dan paket yang diperlukan. Buat objek yang berisi parameter untuk mendapatkan atribut SMS, termasuk nama-nama atribut individual yang akan didapat. Untuk detail tentang atribut SMS yang tersedia, lihat [Mengatur SMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) Referensi API Layanan Pemberitahuan Sederhana Amazon.

Contoh ini mendapatkan `DefaultSMSType` atribut, yang mengontrol apakah pesan SMS dikirim sebagai`Promotional`, yang mengoptimalkan pengiriman pesan untuk menimbulkan biaya terendah, atau as`Transactional`, yang mengoptimalkan pengiriman pesan untuk mencapai keandalan tertinggi. Lewati parameter ke `SetTopicAttributesCommand` metode kelas `SNS` klien. Untuk memanggil `SetSMSAttributesCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *ATTRIBUTE\$1NAME* dengan nama atribut.

```
import { GetSMSAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

export const getSmsAttributes = async () => {
  const response = await snsClient.send(
    // If you have not modified the account-level mobile settings of SNS,
    // the DefaultSMSType is undefined. For this example, it was set to
    // Transactional.
    new GetSMSAttributesCommand({ attributes: ["DefaultSMSType"] }),
  );

  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '67ad8386-4169-58f1-bdb9-debd281d48d5',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   attributes: { DefaultSMSType: 'Transactional' }
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node get-sms-attributes.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/get-sms-attributes.js).

## Mengatur Atribut SMS
<a name="sending-sms-setattributes"></a>

Dalam contoh ini, gunakan modul Node.js untuk mendapatkan atribut SMS saat ini di Amazon SNS.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

 Buat modul Node.js dengan nama file`set-sms-attribute-type.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat objek yang berisi parameter untuk mengatur atribut SMS, termasuk nama atribut individual yang akan ditetapkan dan nilai yang akan ditetapkan untuk masing-masing. Untuk detail tentang atribut SMS yang tersedia, lihat [Mengatur SMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) Referensi API Layanan Pemberitahuan Sederhana Amazon.

Contoh ini menetapkan `DefaultSMSType` atribut ke`Transactional`, yang mengoptimalkan pengiriman pesan untuk mencapai keandalan tertinggi. Lewati parameter ke `SetTopicAttributesCommand` metode kelas `SNS` klien. Untuk memanggil `SetSMSAttributesCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

```
import { SetSMSAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {"Transactional" | "Promotional"} defaultSmsType
 */
export const setSmsType = async (defaultSmsType = "Transactional") => {
  const response = await snsClient.send(
    new SetSMSAttributesCommand({
      attributes: {
        // Promotional – (Default) Noncritical messages, such as marketing messages.
        // Transactional – Critical messages that support customer transactions,
        // such as one-time passcodes for multi-factor authentication.
        DefaultSMSType: defaultSmsType,
      },
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '1885b977-2d7e-535e-8214-e44be727e265',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node set-sms-attribute-type.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/set-sms-attribute-type.js).

## Memeriksa Apakah Nomor Telepon Telah Memilih Keluar
<a name="sending-sms-checkifphonenumberisoptedout"></a>

Dalam contoh ini, gunakan modul Node.js untuk memeriksa nomor telepon untuk melihat apakah telah memilih keluar dari menerima pesan SMS. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`check-if-phone-number-is-opted-out.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya. Buat objek yang berisi nomor telepon untuk diperiksa sebagai parameter.

Contoh ini menetapkan `PhoneNumber` parameter untuk menentukan nomor telepon yang akan diperiksa. Lewati objek ke `CheckIfPhoneNumberIsOptedOutCommand` metode kelas `SNS` klien. Untuk memanggil `CheckIfPhoneNumberIsOptedOutCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

**catatan**  

Ganti *PHONE\$1NUMBER* dengan nomor telepon.

```
import { CheckIfPhoneNumberIsOptedOutCommand } from "@aws-sdk/client-sns";

import { snsClient } from "../libs/snsClient.js";

export const checkIfPhoneNumberIsOptedOut = async (
  phoneNumber = "5555555555",
) => {
  const command = new CheckIfPhoneNumberIsOptedOutCommand({
    phoneNumber,
  });

  const response = await snsClient.send(command);
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '3341c28a-cdc8-5b39-a3ee-9fb0ee125732',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   isOptedOut: false
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node check-if-phone-number-is-opted-out.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/check-if-phone-number-is-opted-out.js).

## Daftar Nomor Telepon yang Dipilih Keluar
<a name="sending-sms-listphonenumbersoptedout"></a>

Dalam contoh ini, gunakan modul Node.js untuk mendapatkan daftar nomor telepon yang telah memilih keluar dari menerima pesan SMS.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`list-phone-numbers-opted-out.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya. Buat objek kosong sebagai parameter.

Lewati objek ke `ListPhoneNumbersOptedOutCommand` metode kelas `SNS` klien. Untuk memanggil `ListPhoneNumbersOptedOutCommand` metode, buat fungsi asinkron yang menjalankan objek layanan klien Amazon SNS, melewati objek parameter. 

```
import { ListPhoneNumbersOptedOutCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

export const listPhoneNumbersOptedOut = async () => {
  const response = await snsClient.send(
    new ListPhoneNumbersOptedOutCommand({}),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '44ff72fd-1037-5042-ad96-2fc16601df42',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   phoneNumbers: ['+15555550100']
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node list-phone-numbers-opted-out.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/list-phone-numbers-opted-out.js).

## Menerbitkan Pesan SMS
<a name="sending-sms-publishsms"></a>

Dalam contoh ini, gunakan modul Node.js untuk mengirim pesan SMS ke nomor telepon.

Buat `libs` direktori, dan buat modul Node.js dengan nama file`snsClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SNS. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/libs/snsClient.js).

Buat modul Node.js dengan nama file`publish-sms.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat objek yang berisi `PhoneNumber` parameter `Message` dan.

Saat Anda mengirim pesan SMS, tentukan nomor telepon menggunakan format E.164. E.164 adalah standar untuk struktur nomor telepon yang digunakan untuk telekomunikasi internasional. Nomor telepon yang mengikuti format ini dapat memiliki maksimum 15 digit, dan diawali dengan karakter plus (\$1) dan kode negara. Misalnya, nomor telepon AS dalam format E.164 akan muncul sebagai \$11001. XXX5550100 

Contoh ini menetapkan `PhoneNumber` parameter untuk menentukan nomor telepon untuk mengirim pesan. Lewati objek ke `PublishCommand` metode kelas `SNS` klien. Untuk memanggil `PublishCommand` metode, buat fungsi asinkron yang menjalankan objek layanan Amazon SNS, melewati objek parameter. 

**catatan**  
Ganti *TEXT\$1MESSAGE* dengan pesan teks, dan *PHONE\$1NUMBER* dengan nomor telepon.

```
import { PublishCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string | Record<string, any>} message - The message to send. Can be a plain string or an object
 *                                                 if you are using the `json` `MessageStructure`.
 * @param {*} phoneNumber - The phone number to send the message to.
 */
export const publish = async (
  message = "Hello from SNS!",
  phoneNumber = "+15555555555",
) => {
  const response = await snsClient.send(
    new PublishCommand({
      Message: message,
      // One of PhoneNumber, TopicArn, or TargetArn must be specified.
      PhoneNumber: phoneNumber,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '7410094f-efc7-5f52-af03-54737569ab77',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   MessageId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
  // }
  return response;
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node publish-sms.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/sns/actions/publish-sms.js).

# Contoh Amazon Transcribe
<a name="Transcribe-examples"></a>

Amazon Transcribe memudahkan pengembang untuk menambahkan kemampuan ucapan ke teks ke aplikasi mereka. 

![\[Hubungan antara JavaScript lingkungan, SDK, dan Amazon Transcribe\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/code-samples-transcribe.png)


 JavaScript API untuk Amazon Transcribe diekspos melalui kelas [TranscribeService](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/Transcribe/)klien.

**Topics**
+ [Contoh Amazon Transcribe](transcribe-examples-section.md)
+ [Contoh medis Amazon Transcribe](transcribe-medical-examples-section.md)

# Contoh Amazon Transcribe
<a name="transcribe-examples-section"></a>

Dalam contoh ini, serangkaian modul Node.js digunakan untuk membuat, membuat daftar, dan menghapus pekerjaan transkripsi menggunakan metode berikut dari kelas `TranscribeService` klien:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/StartTranscriptionJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/StartTranscriptionJobCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/ListTranscriptionJobsCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/ListTranscriptionJobsCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/DeleteTranscriptionJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/DeleteTranscriptionJobCommand/)

Untuk informasi selengkapnya tentang pengguna Amazon Transcribe, lihat panduan developer [Amazon Transcribe](https://docs.aws.amazon.com//transcribe/latest/dg/what-is-transcribe.html).

## Tugas prasyarat
<a name="transcribe-example-transcription-jobs"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Memulai pekerjaan Amazon Transcribe
<a name="transcribe-start-transcription"></a>

Contoh ini menunjukkan cara memulai pekerjaan transkripsi Amazon Transcribe menggunakan. AWS SDK untuk JavaScript Untuk informasi selengkapnya, lihat [StartTranscriptionJobCommand](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/StartTranscriptionJobCommand/).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`transcribeClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Transcribe. Ganti *REGION* dengan AWS wilayah Anda.

```
import { TranscribeClient } from "@aws-sdk/client-transcribe";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create an Amazon Transcribe service client object.
const transcribeClient = new TranscribeClient({ region: REGION });
export { transcribeClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/libs/transcribeClient.js).

Buat modul Node.js dengan nama file`transcribe-create-job.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat objek parameter, tentukan parameter yang diperlukan. Mulai pekerjaan menggunakan `StartMedicalTranscriptionJobCommand` perintah.

**catatan**  
Ganti *MEDICAL\$1JOB\$1NAME* dengan nama untuk pekerjaan transkripsi. Untuk *OUTPUT\$1BUCKET\$1NAME* tentukan bucket Amazon S3 tempat output disimpan. Untuk *JOB\$1TYPE* menentukan jenis pekerjaan. Untuk *SOURCE\$1LOCATION* menentukan lokasi file sumber. Untuk *SOURCE\$1FILE\$1LOCATION* menentukan lokasi file media input.

```
// Import the required AWS SDK clients and commands for Node.js
import { StartTranscriptionJobCommand } from "@aws-sdk/client-transcribe";
import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parameters
export const params = {
  TranscriptionJobName: "JOB_NAME",
  LanguageCode: "LANGUAGE_CODE", // For example, 'en-US'
  MediaFormat: "SOURCE_FILE_FORMAT", // For example, 'wav'
  Media: {
    MediaFileUri: "SOURCE_LOCATION",
    // For example, "https://transcribe-demo.s3-REGION.amazonaws.com/hello_world.wav"
  },
  OutputBucketName: "OUTPUT_BUCKET_NAME",
};

export const run = async () => {
  try {
    const data = await transcribeClient.send(
      new StartTranscriptionJobCommand(params),
    );
    console.log("Success - put", data);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node transcribe-create-job.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/transcribe_create_job.js).

## Daftar pekerjaan Amazon Transcribe
<a name="transcribe-list-jobs"></a>

Contoh ini menunjukkan caranya daftar pekerjaan transkripsi Amazon Transcribe menggunakan. AWS SDK untuk JavaScript Untuk informasi selengkapnya tentang pengaturan lain yang dapat Anda ubah, lihat [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/ListTranscriptionJobsCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/ListTranscriptionJobsCommand/).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`transcribeClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Transcribe. Ganti *REGION* dengan AWS wilayah Anda.

```
import { TranscribeClient } from "@aws-sdk/client-transcribe";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create an Amazon Transcribe service client object.
const transcribeClient = new TranscribeClient({ region: REGION });
export { transcribeClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/libs/transcribeClient.js).

Buat modul Node.js dengan nama file`transcribe-list-jobs.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat objek parameter dengan parameter yang diperlukan.

**catatan**  
Ganti *KEY\$1WORD* dengan kata kunci yang harus berisi nama pekerjaan yang dikembalikan.

```
// Import the required AWS SDK clients and commands for Node.js

import { ListTranscriptionJobsCommand } from "@aws-sdk/client-transcribe";
import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parameters
export const params = {
  JobNameContains: "KEYWORD", // Not required. Returns only transcription
  // job names containing this string
};

export const run = async () => {
  try {
    const data = await transcribeClient.send(
      new ListTranscriptionJobsCommand(params),
    );
    console.log("Success", data.TranscriptionJobSummaries);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node transcribe-list-jobs.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/transcribe_list_jobs.js).

## Menghapus pekerjaan Amazon Transcribe
<a name="transcribe-delete-job"></a>

Contoh ini menunjukkan cara menghapus pekerjaan transkripsi Amazon Transcribe menggunakan. AWS SDK untuk JavaScript Untuk informasi lebih lanjut tentang opsional, lihat [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/DeleteTranscriptionJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/DeleteTranscriptionJobCommand/).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`transcribeClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Transcribe. Ganti *REGION* dengan AWS wilayah Anda.

```
import  { TranscribeClient }  from  "@aws-sdk/client-transcribe";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create Transcribe service object.
const transcribeClient = new TranscribeClient({ region: REGION });
export { transcribeClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/libs/transcribeClient.js).

Buat modul Node.js dengan nama file`transcribe-delete-job.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Tentukan AWS Wilayah, dan nama pekerjaan yang ingin Anda hapus.

**catatan**  
Ganti *JOB\$1NAME* dengan nama pekerjaan yang akan dihapus. 

```
// Import the required AWS SDK clients and commands for Node.js
import { DeleteTranscriptionJobCommand } from "@aws-sdk/client-transcribe";
import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parameters
export const params = {
  TranscriptionJobName: "JOB_NAME", // Required. For example, 'transciption_demo'
};

export const run = async () => {
  try {
    const data = await transcribeClient.send(
      new DeleteTranscriptionJobCommand(params),
    );
    console.log("Success - deleted");
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node transcribe-delete-job.js  
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/transcribe_delete_job.js).

# Contoh medis Amazon Transcribe
<a name="transcribe-medical-examples-section"></a>

Dalam contoh ini, serangkaian modul Node.js digunakan untuk membuat, membuat daftar, dan menghapus pekerjaan transkripsi medis menggunakan metode berikut dari kelas `TranscribeService` klien:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/StartMedicalTranscriptionJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/StartMedicalTranscriptionJobCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/ListTranscriptionJobsCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/ListTranscriptionJobsCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/DeleteTranscriptionJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/DeleteTranscriptionJobCommand/)

Untuk informasi selengkapnya tentang pengguna Amazon Transcribe, lihat panduan developer [Amazon Transcribe](https://docs.aws.amazon.com//transcribe/latest/dg/what-is-transcribe.html).

## Tugas prasyarat
<a name="transcribe-example-transcription-medical-jobs"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan 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) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Memulai pekerjaan transkripsi medis Amazon Transcribe
<a name="transcribe-start-medical-transcription"></a>

Contoh ini menunjukkan cara memulai pekerjaan transkripsi medis Amazon Transcribe menggunakan. AWS SDK untuk JavaScript Untuk informasi lebih lanjut, lihat [startMedicalTranscriptionJob](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/StartMedicalTranscriptionJobCommand/).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`transcribeClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Transcribe. Ganti *REGION* dengan AWS wilayah Anda.

```
import  { TranscribeClient }  from  "@aws-sdk/client-transcribe";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create Transcribe service object.
const transcribeClient = new TranscribeClient({ region: REGION });
export { transcribeClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/libs/transcribeClient.js).

Buat modul Node.js dengan nama file`transcribe-create-medical-job.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat objek parameter, tentukan parameter yang diperlukan. Mulai pekerjaan medis menggunakan `StartMedicalTranscriptionJobCommand` perintah.

**catatan**  
Ganti *MEDICAL\$1JOB\$1NAME* dengan nama untuk pekerjaan transkripsi medis. Untuk *OUTPUT\$1BUCKET\$1NAME* tentukan bucket Amazon S3 tempat output disimpan. Untuk *JOB\$1TYPE* menentukan jenis pekerjaan. Untuk *SOURCE\$1LOCATION* menentukan lokasi file sumber. Untuk *SOURCE\$1FILE\$1LOCATION* menentukan lokasi file media input.

```
// Import the required AWS SDK clients and commands for Node.js
import { StartMedicalTranscriptionJobCommand } from "@aws-sdk/client-transcribe";
import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parameters
export const params = {
  MedicalTranscriptionJobName: "MEDICAL_JOB_NAME", // Required
  OutputBucketName: "OUTPUT_BUCKET_NAME", // Required
  Specialty: "PRIMARYCARE", // Required. Possible values are 'PRIMARYCARE'
  Type: "JOB_TYPE", // Required. Possible values are 'CONVERSATION' and 'DICTATION'
  LanguageCode: "LANGUAGE_CODE", // For example, 'en-US'
  MediaFormat: "SOURCE_FILE_FORMAT", // For example, 'wav'
  Media: {
    MediaFileUri: "SOURCE_FILE_LOCATION",
    // The S3 object location of the input media file. The URI must be in the same region
    // as the API endpoint that you are calling.For example,
    // "https://transcribe-demo.s3-REGION.amazonaws.com/hello_world.wav"
  },
};

export const run = async () => {
  try {
    const data = await transcribeClient.send(
      new StartMedicalTranscriptionJobCommand(params),
    );
    console.log("Success - put", data);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node transcribe-create-medical-job.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/transcribe_create_medical_job.js).

## Daftar pekerjaan medis Amazon Transcribe
<a name="transcribe-list-medical-jobs"></a>

Contoh ini menunjukkan cara membuat daftar pekerjaan transkripsi Amazon Transcribe menggunakan. AWS SDK untuk JavaScript Untuk informasi selengkapnya, lihat [ListTranscriptionMedicalJobsCommand](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/ListMedicalTranscriptionJobsCommand/).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`transcribeClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Transcribe. Ganti *REGION* dengan AWS wilayah Anda.

```
import { TranscribeClient } from "@aws-sdk/client-transcribe";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create an Amazon Transcribe service client object.
const transcribeClient = new TranscribeClient({ region: REGION });
export { transcribeClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/libs/transcribeClient.js).

Buat modul Node.js dengan nama file`transcribe-list-medical-jobs.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat objek parameter dengan parameter yang diperlukan, dan daftar pekerjaan medis menggunakan `ListMedicalTranscriptionJobsCommand` perintah.

**catatan**  
Ganti *KEYWORD* dengan kata kunci yang harus berisi nama pekerjaan yang dikembalikan.

```
// Import the required AWS SDK clients and commands for Node.js

import { ListMedicalTranscriptionJobsCommand } from "@aws-sdk/client-transcribe";
import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parameters
export const params = {
  JobNameContains: "KEYWORD", // Returns only transcription job names containing this string
};

export const run = async () => {
  try {
    const data = await transcribeClient.send(
      new ListMedicalTranscriptionJobsCommand(params),
    );
    console.log("Success", data.MedicalTranscriptionJobName);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node transcribe-list-medical-jobs.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/transcribe_list_medical_jobs.js).

## Menghapus pekerjaan medis Amazon Transcribe
<a name="transcribe-delete-medical-job"></a>

Contoh ini menunjukkan cara menghapus pekerjaan transkripsi Amazon Transcribe menggunakan. AWS SDK untuk JavaScript Untuk informasi lebih lanjut tentang opsional, lihat [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/DeleteMedicalTranscriptionJobCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-transcribe/Class/DeleteMedicalTranscriptionJobCommand/).

Buat `libs` direktori, dan buat modul Node.js dengan nama file`transcribeClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon Transcribe. Ganti *REGION* dengan AWS wilayah Anda.

```
import  { TranscribeClient }  from  "@aws-sdk/client-transcribe";
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create Transcribe service object.
const transcribeClient = new TranscribeClient({ region: REGION });
export { transcribeClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/libs/transcribeClient.js).

Buat modul Node.js dengan nama file`transcribe-delete-job.js`. Pastikan untuk mengonfigurasi SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. Buat objek parameter dengan parameter yang diperlukan, dan hapus pekerjaan medis menggunakan `DeleteMedicalJobCommand` perintah.

**catatan**  
Ganti *JOB\$1NAME* dengan nama pekerjaan yang akan dihapus. 

```
// Import the required AWS SDK clients and commands for Node.js
import { DeleteMedicalTranscriptionJobCommand } from "@aws-sdk/client-transcribe";
import { transcribeClient } from "./libs/transcribeClient.js";

// Set the parameters
export const params = {
  MedicalTranscriptionJobName: "MEDICAL_JOB_NAME", // For example, 'medical_transciption_demo'
};

export const run = async () => {
  try {
    const data = await transcribeClient.send(
      new DeleteMedicalTranscriptionJobCommand(params),
    );
    console.log("Success - deleted");
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt.

```
node transcribe-delete-medical-job.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/transcribe/src/transcribe_delete_medical_job.js).

# Menyiapkan Node.js pada instans Amazon EC2
<a name="setting-up-node-on-ec2-instance"></a>

Skenario umum untuk menggunakan Node.js dengan SDK for JavaScript adalah menyiapkan dan menjalankan aplikasi web Node.js pada instance Amazon Elastic Compute Cloud (Amazon EC2). Dalam tutorial ini, Anda akan membuat instance Linux, menghubungkannya menggunakan SSH, dan kemudian menginstal Node.js untuk menjalankan instance itu. 

## Prasyarat
<a name="setting-up-node-on-ec2-instance.prerequisites"></a>

Tutorial ini mengasumsikan bahwa Anda telah meluncurkan instance Linux dengan nama DNS publik yang dapat dijangkau dari internet dan yang dapat Anda sambungkan menggunakan SSH. Untuk informasi selengkapnya, lihat [Langkah 1: Luncurkan instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance) dalam *Panduan Pengguna Amazon EC2*.

**penting**  
Gunakan **Amazon Linux 2023** Amazon Machine Image (AMI) saat meluncurkan instans Amazon EC2 baru.

Anda juga harus mengonfigurasi grup keamanan Anda untuk mengizinkan koneksi `SSH` (port 22), ` HTTP` (port 80), dan `HTTPS` (port 443). *Untuk informasi selengkapnya tentang prasyarat ini, lihat [Menyiapkan dengan Amazon EC2 di Panduan Pengguna Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html) EC2.*

## Prosedur
<a name="setting-up-node-on-ec2-instance-procedure"></a>

Prosedur berikut membantu Anda menginstal Node.js pada instance Amazon Linux. Anda dapat menggunakan server ini untuk meng-host aplikasi web Node.js.

**Untuk mengatur Node.js pada instance Linux Anda**

1. Connect ke instance Linux Anda seperti `ec2-user` menggunakan SSH.

1. Instal node version manager (`nvm`) dengan mengetikkan berikut ini di baris perintah.
**Awas**  
AWS tidak mengontrol kode berikut. Sebelum Anda menjalankannya, pastikan untuk memverifikasi keaslian dan integritasnya. Informasi lebih lanjut tentang kode ini dapat ditemukan di repositori [nvm](https://github.com/nvm-sh/nvm/blob/master/README.md) GitHub.

   ```
   curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
   ```

   Kami akan menggunakan `nvm` untuk menginstal Node.js karena `nvm` dapat menginstal beberapa versi Node.js dan memungkinkan Anda untuk beralih di antara mereka.

1. Muat `nvm` dengan mengetikkan berikut ini di baris perintah.

   ```
   source ~/.bashrc
   ```

1. Gunakan nvm untuk menginstal versi LTS terbaru dari Node.js dengan mengetikkan berikut ini di baris perintah.

   ```
   nvm install --lts
   ```

   Menginstal Node.js juga menginstal Node Package Manager (`npm`) sehingga Anda dapat menginstal modul tambahan sesuai kebutuhan.

1. Uji bahwa Node.js diinstal dan berjalan dengan benar dengan mengetikkan berikut ini di baris perintah.

   ```
   node -e "console.log('Running Node.js ' + process.version)"
   ```

   Ini menampilkan pesan berikut yang menunjukkan versi Node.js yang sedang berjalan.

    `Running Node.js VERSION` 

**catatan**  
Instalasi node hanya berlaku untuk sesi Amazon EC2 saat ini. Jika Anda memulai ulang sesi CLI Anda, Anda perlu menggunakan nvm lagi untuk mengaktifkan versi node yang diinstal. Jika instance dihentikan, Anda perlu menginstal node lagi.Alternatifnya adalah membuat Amazon Machine Image (AMI) dari instans Amazon EC2 setelah Anda memiliki konfigurasi yang ingin Anda simpan, seperti yang dijelaskan dalam topik berikut.

## Membuat Gambar Mesin Amazon (AMI)
<a name="setting-up-node-on-ec2-instance-create-image"></a>

Setelah menginstal Node.js pada instans Amazon EC2, Anda dapat membuat Amazon Machine Image (AMI) dari instance tersebut. Membuat AMI memudahkan penyediaan beberapa instans Amazon EC2 dengan instalasi Node.js yang sama. Untuk informasi selengkapnya tentang membuat AMI dari instans yang ada, lihat [Membuat AMI Linux yang didukung Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html) di Panduan Pengguna *Amazon EC2*.

## Sumber daya terkait
<a name="setting-up-node-on-ec2-instance-related-resource"></a>

Untuk informasi selengkapnya tentang perintah dan perangkat lunak yang digunakan dalam topik ini, lihat halaman web berikut:
+ Manajer versi node (`nvm`) —Lihat repo [nvm aktif](https://github.com/creationix/nvm). GitHub
+ Node Package Manager (`npm`) —Lihat situs web [npm](https://www.npmjs.com).

# Memanggil Lambda dengan API Gateway
<a name="api-gateway-invoking-lambda-example"></a>

Anda dapat menjalankan fungsi Lambda dengan menggunakan Amazon API Gateway, yang AWS merupakan layanan untuk membuat, menerbitkan, memelihara, memantau, dan mengamankan REST, HTTP, WebSocket APIs dan dalam skala besar. Pengembang API dapat membuat akses APIs itu AWS atau layanan web lainnya, serta data yang disimpan di AWS Cloud. Sebagai pengembang API Gateway, Anda dapat membuat APIs untuk digunakan dalam aplikasi klien Anda sendiri. Untuk informasi selengkapnya, lihat [Apa itu Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html). 

AWS Lambda adalah layanan komputasi yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Anda dapat membuat fungsi Lambda dalam berbagai bahasa pemrograman. Untuk informasi lebih lanjut tentang AWS Lambda, lihat [Apa itu AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html).

Dalam contoh ini, Anda membuat fungsi Lambda dengan menggunakan API runtime JavaScript Lambda. Contoh ini memanggil AWS layanan yang berbeda untuk melakukan kasus penggunaan tertentu. Misalnya, asumsikan bahwa organisasi mengirim pesan teks seluler kepada karyawannya yang memberi selamat kepada mereka pada tanggal peringatan satu tahun, seperti yang ditunjukkan dalam ilustrasi ini.

![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picPhone.png)


Contoh harus memakan waktu sekitar 20 menit untuk menyelesaikannya.

Contoh ini menunjukkan kepada Anda cara menggunakan JavaScript logika untuk membuat solusi yang melakukan kasus penggunaan ini. Misalnya, Anda akan mempelajari cara membaca database untuk menentukan karyawan mana yang telah mencapai tanggal ulang tahun satu tahun, cara memproses data, dan mengirim pesan teks semuanya dengan menggunakan fungsi Lambda. Kemudian Anda akan belajar cara menggunakan API Gateway untuk menjalankan AWS Lambda fungsi ini dengan menggunakan endpoint Istirahat. Misalnya, Anda dapat menjalankan fungsi Lambda dengan menggunakan perintah curl ini:

```
curl -XGET "https://xxxxqjko1o3.execute-api.us-east-1.amazonaws.com/cronstage/employee" 
```

 AWS Tutorial ini menggunakan tabel Amazon DynamoDB bernama Employee yang berisi bidang-bidang ini.
+ **id** - kunci utama untuk tabel.
+ **FirstName - nama depan** karyawan.
+ **telepon** - nomor telepon karyawan.
+ **StartDate - tanggal** mulai karyawan.

![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/pic00.png)


**penting**  
Biaya untuk menyelesaikan: AWS Layanan yang termasuk dalam dokumen ini termasuk dalam Tingkat AWS Gratis. Namun, pastikan untuk menghentikan semua sumber daya setelah Anda menyelesaikan contoh ini untuk memastikan bahwa Anda tidak dikenakan biaya.

**Untuk membangun aplikasi:**

1. [Prasyarat lengkap](#api-gateway-invoking-lambda-provision-resources)

1. [Buat sumber AWS daya](#api-gateway-invoking-lambda-provision-resources)

1. [Siapkan skrip browser](#api-gateway-invoking-lambda-browser-script)

1. [Buat dan unggah fungsi Lambda](#api-gateway-invoking-lambda-browser-script)

1. [Menyebarkan fungsi Lambda](#api-gateway-invoking-lambda-deploy-function)

1. [Jalankan aplikasi](#api-gateway-invoking-lambda-run)

1. [Hapus sumber daya](#api-gateway-invoking-lambda-destroy)

## Tugas prasyarat
<a name="api-gateway-invoking-lambda-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/cross-services/lambda-api-gateway/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

## Buat sumber AWS daya
<a name="api-gateway-invoking-lambda-provision-resources"></a>

Tutorial ini membutuhkan sumber daya berikut:
+ Tabel Amazon DynamoDB `Employee` bernama dengan kunci `Id` bernama dan bidang yang ditunjukkan pada ilustrasi sebelumnya. Pastikan Anda memasukkan data yang benar, termasuk ponsel yang valid yang ingin Anda uji kasus penggunaan ini. Untuk informasi selengkapnya, lihat [Membuat Tabel](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html).
+ Peran IAM dengan izin terlampir untuk menjalankan fungsi Lambda.
+ Bucket Amazon S3 untuk menampung fungsi Lambda.

Anda dapat membuat sumber daya ini secara manual, tetapi kami merekomendasikan penyediaan sumber daya ini menggunakan CloudFormation seperti yang dijelaskan dalam tutorial ini.

### Buat sumber AWS daya menggunakan CloudFormation
<a name="api-gateway-invoking-lambda-resources-cli"></a>

CloudFormation memungkinkan Anda untuk membuat dan menyediakan penyebaran AWS infrastruktur yang dapat diprediksi dan berulang kali. Untuk informasi selengkapnya CloudFormation, lihat [Panduan AWS CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/).

Untuk membuat CloudFormation tumpukan menggunakan AWS CLI:

1. Instal dan konfigurasikan petunjuk AWS CLI berikut di [Panduan AWS CLI Pengguna](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html).

1. Buat file bernama `setup.yaml` di direktori root folder proyek Anda, dan salin konten [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-api-gateway/setup.yaml) ke dalamnya.
**catatan**  
 CloudFormation Template dibuat menggunakan yang AWS CDK tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/resources/cdk/lambda_using_api_gateway). Untuk informasi selengkapnya tentang ini AWS CDK, lihat [Panduan AWS Cloud Development Kit (AWS CDK) Pengembang](https://docs.aws.amazon.com/cdk/latest/guide/).

1. Jalankan perintah berikut dari baris perintah, ganti *STACK\$1NAME* dengan nama unik untuk tumpukan.
**penting**  
Nama tumpukan harus unik dalam AWS Wilayah dan AWS akun. Anda dapat menentukan hingga 128 karakter, dan angka serta tanda hubung diizinkan.

   ```
   aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM
   ```

   Untuk informasi selengkapnya tentang parameter `create-stack` perintah, lihat [panduan Referensi AWS CLI Perintah](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html), dan [Panduan CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-creating-stack.html).

1. Selanjutnya, isi tabel dengan mengikuti prosedur[Mengisi tabel](#api-gateway-invoking-lambda-resources-create-table).

### Mengisi tabel
<a name="api-gateway-invoking-lambda-resources-create-table"></a>

Untuk mengisi tabel, pertama membuat direktori bernama`libs`, dan di dalamnya membuat file bernama`dynamoClient.js`, dan paste konten di bawah ini ke dalamnya. 

```
const { DynamoDBClient } = require ( "@aws-sdk/client-dynamodb" );
// Set the AWS Region.
const REGION = "REGION"; // e.g. "us-east-1"
 // Create an Amazon Lambda service client object.
const dynamoClient = new DynamoDBClient({region:REGION});
module.exports = { dynamoClient };
```

 Kode ini tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-api-gateway/src/libs/dynamoClient.js).

Selanjutnya, buat file bernama `populate-table.js` di direktori root folder proyek Anda, dan salin konten [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-api-gateway/src/helper-functions/populate-table.js) ke dalamnya. Untuk salah satu item, ganti nilai `phone` properti dengan nomor ponsel yang valid dalam format E.164, dan nilai untuk `startDate` dengan tanggal hari ini.

Jalankan perintah berikut dari baris perintah.

```
node populate-table.js
```

```
const { BatchWriteItemCommand } = require ( "aws-sdk/client-dynamodb" );
const {dynamoClient} = require ( "./libs/dynamoClient" );

// Set the parameters.
export const params = {
  RequestItems: {
    Employees: [
      {
        PutRequest: {
          Item: {
            id: { N: "1" },
            firstName: { S: "Bob" },
            phone: { N: "155555555555654" },
            startDate: { S: "2019-12-20" },
          },
        },
      },
      {
        PutRequest: {
          Item: {
            id: { N: "2" },
            firstName: { S: "Xing" },
            phone: { N: "155555555555653" },
            startDate: { S: "2019-12-17" },
          },
        },
      },
      {
        PutRequest: {
          Item: {
            id: { N: "55" },
            firstName: { S: "Harriette" },
            phone: { N: "155555555555652" },
            startDate: { S: "2019-12-19" },
          },
        },
      },
    ],
  },
};

export const run = async () => {
  try {
    const data = await dbclient.send(new BatchWriteItemCommand(params));
    console.log("Success", data);
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

 Kode ini tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-api-gateway/src/helper-functions/populate-table.js).

## Membuat AWS Lambda fungsi
<a name="api-gateway-invoking-lambda-browser-script"></a>

### Mengkonfigurasi SDK
<a name="api-gateway-invoking-lambda-configure-sdk"></a>

Di `libs` direktori, buat file bernama `snsClient.js` dan`lambdaClient.js`, dan tempelkan konten di bawah ini ke dalam file-file ini, masing-masing. 

```
const { SNSClient } = require("@aws-sdk/client-sns");
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create an Amazon SNS service client object.
const snsClient = new SNSClient({ region: REGION });
module.exports = { snsClient };
```

 Ganti *REGION* dengan AWS Region Kode ini tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-api-gateway/src/libs/snsClient.js).

```
const { LambdaClient } = require("@aws-sdk/client-lambda");
// Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"
// Create an Amazon Lambda service client object.
const lambdaClient = new LambdaClient({ region: REGION });
module.exports = { lambdaClient };
```

Ganti *REGION* dengan AWS Region Kode ini tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-api-gateway/src/libs/lambdaClient.js).

Pertama, impor modul dan perintah yang diperlukan AWS SDK untuk JavaScript (v3). Kemudian hitung tanggal hari ini dan tetapkan ke parameter. Ketiga, buat parameter untuk`ScanCommand`. Ganti *TABLE\$1NAME* dengan nama tabel yang Anda buat di [Buat sumber AWS daya](#api-gateway-invoking-lambda-provision-resources) bagian contoh ini.

Cuplikan kode berikut menunjukkan langkah ini. (Lihat [Bundling fungsi Lambda](#api-gateway-invoking-lambda-full) contoh lengkapnya.)

```
const { ScanCommand } = require("@aws-sdk/client-dynamodb");
const { PublishCommand } = require("@aws-sdk/client-sns");
const { snsClient } = require("./libs/snsClient");
const { dynamoClient } = require("./libs/dynamoClient");

// Get today's date.
const today = new Date();
const dd = String(today.getDate()).padStart(2, "0");
const mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!
const yyyy = today.getFullYear();
const date = `${yyyy}-${mm}-${dd}`;

// Set the parameters for the ScanCommand method.
const params = {
  // Specify which items in the results are returned.
  FilterExpression: "startDate = :topic",
  // Define the expression attribute value, which are substitutes for the values you want to compare.
  ExpressionAttributeValues: {
    ":topic": { S: date },
  },
  // Set the projection expression, which are the attributes that you want.
  ProjectionExpression: "firstName, phone",
  TableName: "Employees",
};
```

### Memindai tabel DynamoDB
<a name="api-gateway-invoking-lambda-scan-table"></a>

Pertama, buat async/await fungsi yang dipanggil `sendText` untuk mempublikasikan pesan teks menggunakan Amazon SNS`PublishCommand`. Kemudian, tambahkan pola `try` blok yang memindai tabel DynamoDB untuk karyawan dengan ulang tahun kerja mereka hari ini, dan kemudian memanggil fungsi untuk mengirim pesan `sendText` teks kepada karyawan ini. Jika terjadi kesalahan, `catch` blok dipanggil.

Cuplikan kode berikut menunjukkan langkah ini. (Lihat [Bundling fungsi Lambda](#api-gateway-invoking-lambda-full) contoh lengkapnya.)

```
// Helper function to send message using Amazon SNS.
exports.handler = async () => {
  // Helper function to send message using Amazon SNS.
  async function sendText(textParams) {
    try {
      await snsClient.send(new PublishCommand(textParams));
      console.log("Message sent");
    } catch (err) {
      console.log("Error, message not sent ", err);
    }
  }
  try {
    // Scan the table to identify employees with work anniversary today.
    const data = await dynamoClient.send(new ScanCommand(params));
    for (const element of data.Items) {
      const textParams = {
        PhoneNumber: element.phone.N,
        Message: `Hi ${element.firstName.S}; congratulations on your work anniversary!`,
      };
      // Send message using Amazon SNS.
      sendText(textParams);
    }
  } catch (err) {
    console.log("Error, could not scan table ", err);
  }
};
```

### Bundling fungsi Lambda
<a name="api-gateway-invoking-lambda-full"></a>

Topik ini menjelaskan cara menggabungkan `mylambdafunction.ts` dan AWS SDK untuk JavaScript modul yang diperlukan untuk contoh ini ke dalam file yang dibundel yang disebut`index.js`. 

1. Jika Anda belum melakukannya, ikuti contoh ini [Tugas prasyarat](#api-gateway-invoking-lambda-prerequisites) untuk menginstal webpack. 
**catatan**  
Untuk informasi tentang *webpack*, lihat[Bundel aplikasi dengan webpack](webpack.md).

1. Jalankan yang berikut ini di baris perintah untuk menggabungkan JavaScript untuk contoh ini ke dalam file bernama`<index.js>`:

   ```
   webpack mylambdafunction.ts --mode development --target node --devtool false --output-library-target umd -o index.js
   ```
**penting**  
Perhatikan output diberi nama`index.js`. Ini karena fungsi Lambda harus memiliki `index.js` handler untuk bekerja.

1. Kompres file output yang dibundel,`index.js`, ke dalam file ZIP bernama`mylambdafunction.zip`.

1. Unggah `mylambdafunction.zip` ke bucket Amazon S3 yang Anda buat dalam [Buat sumber AWS daya](#api-gateway-invoking-lambda-provision-resources) topik tutorial ini. 

## Deploy fungsi Lambda
<a name="api-gateway-invoking-lambda-deploy-function"></a>

Di root proyek Anda, buat `lambda-function-setup.ts` file, dan tempel konten di bawah ini ke dalamnya.

Ganti *BUCKET\$1NAME* dengan nama bucket Amazon S3 tempat Anda mengunggah versi ZIP fungsi Lambda Anda. Ganti *ZIP\$1FILE\$1NAME* dengan nama nama versi ZIP dari fungsi Lambda Anda. Ganti *ROLE* dengan Amazon Resource Number (ARN) dari peran IAM yang Anda buat dalam [Buat sumber AWS daya](#api-gateway-invoking-lambda-provision-resources) topik tutorial ini. Ganti *LAMBDA\$1FUNCTION\$1NAME* dengan nama untuk fungsi Lambda.

```
// Load the required Lambda client and commands.
const {
  CreateFunctionCommand
} = require ( "@aws-sdk/client-lambda" );
const { lambdaClient} = require ( "./libs/lambdaClient.js );

// Set the parameters.
const params = {
  Code: {
    S3Bucket: "BUCKET_NAME", // BUCKET_NAME
    S3Key: "ZIP_FILE_NAME", // ZIP_FILE_NAME
  },
  FunctionName: "LAMBDA_FUNCTION_NAME",
  Handler: "index.handler",
  Role: "IAM_ROLE_ARN", // IAM_ROLE_ARN; e.g., arn:aws:iam::650138640062:role/v3-lambda-tutorial-lambda-role
  Runtime: "nodejs12.x",
  Description:
    "Scans a DynamoDB table of employee details and using Amazon Simple Notification Services (Amazon SNS) to " +
    "send employees an email on each anniversary of their start-date.",
};

const run = async () => {
  try {
    const data = await lambdaClient.send(new CreateFunctionCommand(params));
    console.log("Success", data); // successful response
  } catch (err) {
    console.log("Error", err); // an error occurred
  }
};
run();
```

Masukkan yang berikut ini di baris perintah untuk menyebarkan fungsi Lambda.

```
node lambda-function-setup.ts
```

Contoh kode ini tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-api-gateway/src/helper-functions/lambda-function-setup.js).

## Konfigurasikan API Gateway untuk menjalankan fungsi Lambda
<a name="api-gateway-invoking-lambda-run"></a>

**Untuk membangun aplikasi:**

1. [Buat API sisanya](#api-gateway-invoking-lambda-run-create)

1. [Uji metode API Gateway](#api-gateway-invoking-lambda-run-test)

1. [Menerapkan metode API Gateway](#api-gateway-invoking-lambda-run-deploy)

### Buat API sisanya
<a name="api-gateway-invoking-lambda-run-create"></a>

Anda dapat menggunakan konsol API Gateway untuk membuat titik akhir istirahat untuk fungsi Lambda. Setelah selesai, Anda dapat menjalankan fungsi Lambda menggunakan panggilan tenang.



1. Masuk ke [konsol Amazon API Gateway](https://console.aws.amazon.com/apigateway).

1. Di bawah Rest API, pilih **Build**.

1. Pilih **API Baru**.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/PicNewAPI.png)

1. Tentukan **Karyawan** sebagai nama API dan berikan deskripsi.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picEmployeeAPI.png)

1. Pilih **Buat API**.

1. Pilih **Sumber Daya** di bawah bagian **Karyawan**.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picResources.png)

1. Di bidang nama, tentukan **karyawan**.

1. Pilih **Buat sumber daya**.

1. Dari dropdown **Actions**, pilih **Create** Resources.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picCreateResources.png)

1. **Pilih **/employees**, pilih **Create Method** dari **Actions**, lalu pilih **GET** dari menu drop-down di bawah /employees.** Pilih ikon tanda centang.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picGet.png)

1. Pilih **fungsi Lambda** dan masukkan **mylambdafunction** sebagai nama fungsi Lambda. Pilih **Simpan**.

### Uji metode API Gateway
<a name="api-gateway-invoking-lambda-run-test"></a>

Pada titik ini dalam tutorial, Anda dapat menguji metode API Gateway yang memanggil fungsi Lambda **mylambdafunction**. Untuk menguji metode, pilih **Uji**, seperti yang ditunjukkan pada ilustrasi berikut.

![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picTest.png)


Setelah fungsi Lambda dipanggil, Anda dapat melihat file log untuk melihat pesan yang berhasil.

### Menerapkan metode API Gateway
<a name="api-gateway-invoking-lambda-run-deploy"></a>

Setelah pengujian berhasil, Anda dapat menerapkan metode dari [konsol Amazon API Gateway](https://console.aws.amazon.com/apigateway).

1. Pilih **Dapatkan**.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picGetDeploy.png)

1. Dari dropdown **Actions**, pilih **Deploy** API.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picDeployMethod.png)

1. Isi formulir **Deploy API** dan pilih **Deploy**.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picDeployMethod.png)

1.  Pilih **Simpan Perubahan**.

1.  Pilih **Dapatkan** lagi dan perhatikan bahwa URL berubah. Ini adalah URL pemanggilan yang dapat Anda gunakan untuk menjalankan fungsi Lambda.  
![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picURL2.png)

## Hapus sumber daya
<a name="api-gateway-invoking-lambda-destroy"></a>

Selamat\$1 Anda telah memanggil fungsi Lambda melalui Amazon API Gateway menggunakan. AWS SDK untuk JavaScript Seperti yang dinyatakan di awal tutorial ini, pastikan untuk menghentikan semua sumber daya yang Anda buat saat melalui tutorial ini untuk memastikan bahwa Anda tidak dikenakan biaya. Anda dapat melakukan ini dengan menghapus CloudFormation tumpukan yang Anda buat dalam [Buat sumber AWS daya](#api-gateway-invoking-lambda-provision-resources) topik tutorial ini, sebagai berikut:

1. Buka [CloudFormation di konsol AWS manajemen]( https://console.aws.amazon.com/cloudformation/home).

1. Buka halaman **Stacks**, dan pilih tumpukan.

1. Pilih **Hapus**.

# Membuat acara terjadwal untuk menjalankan AWS Lambda fungsi
<a name="scheduled-events-invoking-lambda-example"></a>

Anda dapat membuat acara terjadwal yang memanggil AWS Lambda fungsi dengan menggunakan CloudWatch Acara Amazon. Anda dapat mengonfigurasi CloudWatch Peristiwa untuk menggunakan ekspresi cron untuk menjadwalkan saat fungsi Lambda dipanggil. Misalnya, Anda dapat menjadwalkan CloudWatch Acara untuk menjalankan fungsi Lambda setiap hari kerja.

AWS Lambda adalah layanan komputasi yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. Anda dapat membuat fungsi Lambda dalam berbagai bahasa pemrograman. Untuk informasi lebih lanjut tentang AWS Lambda, lihat [Apa itu AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html).

Dalam tutorial ini, Anda membuat fungsi Lambda dengan menggunakan JavaScript Lambda runtime API. Contoh ini memanggil AWS layanan yang berbeda untuk melakukan kasus penggunaan tertentu. Misalnya, asumsikan bahwa organisasi mengirim pesan teks seluler kepada karyawannya yang memberi selamat kepada mereka pada tanggal peringatan satu tahun, seperti yang ditunjukkan dalam ilustrasi ini.

![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/picPhone.png)


Tutorial akan memakan waktu sekitar 20 menit untuk menyelesaikannya.

Tutorial ini menunjukkan cara menggunakan JavaScript logika untuk membuat solusi yang melakukan kasus penggunaan ini. Misalnya, Anda akan mempelajari cara membaca database untuk menentukan karyawan mana yang telah mencapai tanggal ulang tahun satu tahun, cara memproses data, dan mengirim pesan teks semuanya dengan menggunakan fungsi Lambda. Kemudian Anda akan belajar cara menggunakan ekspresi cron untuk menjalankan fungsi Lambda setiap hari kerja.

 AWS Tutorial ini menggunakan tabel Amazon DynamoDB bernama Employee yang berisi bidang-bidang ini.
+ **id** - kunci utama untuk tabel.
+ **FirstName - nama depan** karyawan.
+ **telepon** - nomor telepon karyawan.
+ **StartDate - tanggal** mulai karyawan.

![\[Tabel DynamoDB\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/apigateway_example/pic00.png)


**penting**  
Biaya untuk menyelesaikan: AWS Layanan yang termasuk dalam dokumen ini termasuk dalam Tingkat AWS Gratis. Namun, pastikan untuk menghentikan semua sumber daya setelah Anda menyelesaikan tutorial ini untuk memastikan bahwa Anda tidak dikenakan biaya.

**Untuk membangun aplikasi:**

1. [Prasyarat lengkap](#scheduled-events-invoking-lambda-provision-resources)

1. [Buat sumber AWS daya](#scheduled-events-invoking-lambda-provision-resources)

1. [Siapkan skrip browser](#scheduled-events-invoking-lambda-browser-script)

1. [Buat dan unggah fungsi Lambda](#scheduled-events-invoking-lambda-browser-script)

1. [Menyebarkan fungsi Lambda](#scheduled-events-invoking-lambda-deploy-function)

1. [Jalankan aplikasi](#scheduled-events-invoking-lambda-run)

1. [Hapus sumber daya](#scheduled-events-invoking-lambda-destroy)

## Tugas prasyarat
<a name="scheduled-events-invoking-lambda-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node.js ini, dan instal modul wajib AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lex-bot/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

## Buat sumber AWS daya
<a name="scheduled-events-invoking-lambda-provision-resources"></a>

Tutorial ini membutuhkan sumber daya berikut.
+ Tabel Amazon DynamoDB **bernama** Employee dengan kunci **bernama** Id dan bidang yang ditunjukkan pada ilustrasi sebelumnya. Pastikan Anda memasukkan data yang benar, termasuk ponsel yang valid yang ingin Anda uji kasus penggunaan ini. Untuk informasi selengkapnya, lihat [Membuat Tabel](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html).
+ Peran IAM dengan izin terlampir untuk menjalankan fungsi Lambda.
+ Bucket Amazon S3 untuk menampung fungsi Lambda.

Anda dapat membuat sumber daya ini secara manual, tetapi kami merekomendasikan penyediaan sumber daya ini menggunakan CloudFormation seperti yang dijelaskan dalam tutorial ini.

### Buat sumber AWS daya menggunakan CloudFormation
<a name="scheduled-events-invoking-lambda-resources-cli"></a>

CloudFormation memungkinkan Anda untuk membuat dan menyediakan penyebaran AWS infrastruktur yang dapat diprediksi dan berulang kali. Untuk informasi selengkapnya CloudFormation, lihat [Panduan AWS CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/).

Untuk membuat CloudFormation tumpukan menggunakan AWS CLI:

1. Instal dan konfigurasikan petunjuk AWS CLI berikut di [Panduan AWS CLI Pengguna](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html).

1. Buat file bernama `setup.yaml` di direktori root folder proyek Anda, dan salin konten [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-scheduled-events/setup.yaml) ke dalamnya.
**catatan**  
 CloudFormation Template dibuat menggunakan yang AWS CDK tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/resources/cdk/lambda_using_scheduled_events). Untuk informasi selengkapnya tentang AWS CDK, lihat [Panduan AWS Cloud Development Kit (AWS CDK) Pengembang](https://docs.aws.amazon.com/cdk/latest/guide/).

1. Jalankan perintah berikut dari baris perintah, ganti *STACK\$1NAME* dengan nama unik untuk tumpukan.
**penting**  
Nama tumpukan harus unik dalam AWS Wilayah dan AWS akun. Anda dapat menentukan hingga 128 karakter, dan angka serta tanda hubung diizinkan.

   ```
   aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM
   ```

   Untuk informasi selengkapnya tentang parameter `create-stack` perintah, lihat [panduan Referensi AWS CLI Perintah](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html), dan [Panduan CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-creating-stack.html).

   Lihat daftar sumber daya di konsol dengan membuka tumpukan di CloudFormation dasbor, dan memilih tab **Sumber Daya**. Anda membutuhkan ini untuk tutorial. 

1. Saat tumpukan dibuat, gunakan AWS SDK untuk JavaScript untuk mengisi tabel DynamoDB, seperti yang dijelaskan dalam. [Mengisi tabel DynamoDB](#scheduled-events-invoking-lambda-resources-create-table)

### Mengisi tabel DynamoDB
<a name="scheduled-events-invoking-lambda-resources-create-table"></a>

Untuk mengisi tabel, pertama membuat direktori bernama`libs`, dan di dalamnya membuat file bernama`dynamoClient.js`, dan paste konten di bawah ini ke dalamnya. 

```
const { DynamoDBClient } = require( "@aws-sdk/client-dynamodb" );
// Set the AWS Region.
const REGION = "REGION"; // e.g. "us-east-1"
// Create an Amazon DynamoDB service client object.
const dynamoClient = new DynamoDBClient({region:REGION});
module.exports = { dynamoClient };
```

 Kode ini tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-scheduled-events/src/libs/dynamoClient.js).

Selanjutnya, buat file bernama `populate-table.js` di direktori root folder proyek Anda, dan salin konten [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-api-gateway/src/helper-functions/populate-table.js) ke dalamnya. Untuk salah satu item, ganti nilai `phone` properti dengan nomor ponsel yang valid dalam format E.164, dan nilai untuk `startDate` dengan tanggal hari ini.

Jalankan perintah berikut dari baris perintah.

```
node populate-table.js
```

```
const {
BatchWriteItemCommand } = require( "aws-sdk/client-dynamodb" );
const {dynamoClient} = require(  "./libs/dynamoClient" );
// Set the parameters.
const params = {
  RequestItems: {
    Employees: [
      {
        PutRequest: {
          Item: {
            id: { N: "1" },
            firstName: { S: "Bob" },
            phone: { N: "155555555555654" },
            startDate: { S: "2019-12-20" },
          },
        },
      },
      {
        PutRequest: {
          Item: {
            id: { N: "2" },
            firstName: { S: "Xing" },
            phone: { N: "155555555555653" },
            startDate: { S: "2019-12-17" },
          },
        },
      },
      {
        PutRequest: {
          Item: {
            id: { N: "55" },
            firstName: { S: "Harriette" },
            phone: { N: "155555555555652" },
            startDate: { S: "2019-12-19" },
          },
        },
      },
    ],
  },
};

export const run = async () => {
  try {
    const data = await dbclient.send(new BatchWriteItemCommand(params));
    console.log("Success", data);
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

 Kode ini tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-scheduled-events/src/helper-functions/populate-table.js).

## Membuat AWS Lambda fungsi
<a name="scheduled-events-invoking-lambda-browser-script"></a>

### Mengkonfigurasi SDK
<a name="scheduled-events-invoking-lambda-configure-sdk"></a>

Pertama impor modul dan perintah yang diperlukan AWS SDK untuk JavaScript (v3): `DynamoDBClient` dan `ScanCommand` DynamoDB, dan dan perintah Amazon `SNSClient` SNS. `PublishCommand` Ganti *REGION* dengan AWS Region. Kemudian hitung tanggal hari ini dan tetapkan ke parameter. Kemudian buat parameter untuk `ScanCommand` .Replace *TABLE\$1NAME* dengan nama tabel yang Anda buat di [Buat sumber AWS daya](#scheduled-events-invoking-lambda-provision-resources) bagian contoh ini.

Cuplikan kode berikut menunjukkan langkah ini. (Lihat [Bundling fungsi Lambda](#scheduled-events-invoking-lambda-full) contoh lengkapnya.)

```
"use strict";
// Load the required clients and commands.
const { DynamoDBClient, ScanCommand } = require("@aws-sdk/client-dynamodb");
const { SNSClient, PublishCommand } = require("@aws-sdk/client-sns");

//Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"

// Get today's date.
const today = new Date();
const dd = String(today.getDate()).padStart(2, "0");
const mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!
const yyyy = today.getFullYear();
const date = yyyy + "-" + mm + "-" + dd;

// Set the parameters for the ScanCommand method.
const params = {
  // Specify which items in the results are returned.
  FilterExpression: "startDate = :topic",
  // Define the expression attribute value, which are substitutes for the values you want to compare.
  ExpressionAttributeValues: {
    ":topic": { S: date },
  },
  // Set the projection expression, which the the attributes that you want.
  ProjectionExpression: "firstName, phone",
  TableName: "TABLE_NAME",
};
```

### Memindai tabel DynamoDB
<a name="scheduled-events-invoking-lambda-scan-table"></a>

Pertama buat async/await fungsi yang dipanggil `sendText` untuk mempublikasikan pesan teks menggunakan Amazon SNS`PublishCommand`. Kemudian, tambahkan pola `try` blok yang memindai tabel DynamoDB untuk karyawan dengan ulang tahun kerja mereka hari ini, dan kemudian memanggil fungsi untuk mengirim pesan `sendText` teks kepada karyawan ini. Jika terjadi kesalahan, `catch` blok dipanggil.

Cuplikan kode berikut menunjukkan langkah ini. (Lihat [Bundling fungsi Lambda](#scheduled-events-invoking-lambda-full) contoh lengkapnya.)

```
exports.handler = async (event, context, callback) => {
  // Helper function to send message using Amazon SNS.
  async function sendText(textParams) {
    try {
      const data = await snsclient.send(new PublishCommand(textParams));
      console.log("Message sent");
    } catch (err) {
      console.log("Error, message not sent ", err);
    }
  }
  try {
    // Scan the table to check identify employees with work anniversary today.
    const data = await dbclient.send(new ScanCommand(params));
    data.Items.forEach(function (element, index, array) {
      const textParams = {
        PhoneNumber: element.phone.N,
        Message:
          "Hi " +
          element.firstName.S +
          "; congratulations on your work anniversary!",
      };
      // Send message using Amazon SNS.
      sendText(textParams);
    });
  } catch (err) {
    console.log("Error, could not scan table ", err);
  }
};
```

### Bundling fungsi Lambda
<a name="scheduled-events-invoking-lambda-full"></a>

Topik ini menjelaskan cara menggabungkan `mylambdafunction.js` dan AWS SDK untuk JavaScript modul yang diperlukan untuk contoh ini ke dalam file yang dibundel yang disebut`index.js`. 

1. Jika Anda belum melakukannya, ikuti contoh ini [Tugas prasyarat](#scheduled-events-invoking-lambda-prerequisites) untuk menginstal webpack. 
**catatan**  
Untuk informasi tentang *webpack*, lihat[Bundel aplikasi dengan webpack](webpack.md).

1. Jalankan yang berikut ini di baris perintah untuk menggabungkan JavaScript untuk contoh ini ke dalam file bernama`<index.js>`:

   ```
   webpack mylamdbafunction.js --mode development --target node --devtool false --output-library-target umd -o index.js
   ```
**penting**  
Perhatikan output diberi nama`index.js`. Ini karena fungsi Lambda harus memiliki `index.js` handler untuk bekerja.

1. Kompres file output yang dibundel,`index.js`, ke dalam file ZIP bernama`my-lambda-function.zip`.

1. Unggah `mylambdafunction.zip` ke bucket Amazon S3 yang Anda buat dalam [Buat sumber AWS daya](#scheduled-events-invoking-lambda-provision-resources) topik tutorial ini. 

Berikut adalah kode skrip browser lengkap untuk`mylambdafunction.js`.

```
"use strict";
// Load the required clients and commands.
const { DynamoDBClient, ScanCommand } = require("@aws-sdk/client-dynamodb");
const { SNSClient, PublishCommand } = require("@aws-sdk/client-sns");

//Set the AWS Region.
const REGION = "REGION"; //e.g. "us-east-1"

// Get today's date.
const today = new Date();
const dd = String(today.getDate()).padStart(2, "0");
const mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!
const yyyy = today.getFullYear();
const date = yyyy + "-" + mm + "-" + dd;

// Set the parameters for the ScanCommand method.
const params = {
  // Specify which items in the results are returned.
  FilterExpression: "startDate = :topic",
  // Define the expression attribute value, which are substitutes for the values you want to compare.
  ExpressionAttributeValues: {
    ":topic": { S: date },
  },
  // Set the projection expression, which the the attributes that you want.
  ProjectionExpression: "firstName, phone",
  TableName: "TABLE_NAME",
};

// Create the client service objects.
const dbclient = new DynamoDBClient({ region: REGION });
const snsclient = new SNSClient({ region: REGION });

exports.handler = async (event, context, callback) => {
  // Helper function to send message using Amazon SNS.
  async function sendText(textParams) {
    try {
      const data = await snsclient.send(new PublishCommand(textParams));
      console.log("Message sent");
    } catch (err) {
      console.log("Error, message not sent ", err);
    }
  }
  try {
    // Scan the table to check identify employees with work anniversary today.
    const data = await dbclient.send(new ScanCommand(params));
    data.Items.forEach(function (element, index, array) {
      const textParams = {
        PhoneNumber: element.phone.N,
        Message:
          "Hi " +
          element.firstName.S +
          "; congratulations on your work anniversary!",
      };
      // Send message using Amazon SNS.
      sendText(textParams);
    });
  } catch (err) {
    console.log("Error, could not scan table ", err);
  }
};
```

## Deploy fungsi Lambda
<a name="scheduled-events-invoking-lambda-deploy-function"></a>

Di root proyek Anda, buat `lambda-function-setup.js` file, dan tempel konten di bawah ini ke dalamnya.

Ganti *BUCKET\$1NAME* dengan nama bucket Amazon S3 tempat Anda mengunggah versi ZIP fungsi Lambda Anda. Ganti *ZIP\$1FILE\$1NAME* dengan nama nama versi ZIP dari fungsi Lambda Anda. Ganti *IAM\$1ROLE\$1ARN* dengan Amazon Resource Number (ARN) dari peran IAM yang Anda buat dalam [Buat sumber AWS daya](#scheduled-events-invoking-lambda-provision-resources) topik tutorial ini. Ganti *LAMBDA\$1FUNCTION\$1NAME* dengan nama untuk fungsi Lambda.

```
// Load the required Lambda client and commands.
const {
   CreateFunctionCommand,
} = require("@aws-sdk/client-lambda");
const {
   lambdaClient
} = require("..libs/lambdaClient.js");

// Instantiate an Lambda client service object.
const lambda = new LambdaClient({ region: REGION });

// Set the parameters.
const params = {
  Code: {
    S3Bucket: "BUCKET_NAME", // BUCKET_NAME
    S3Key: "ZIP_FILE_NAME", // ZIP_FILE_NAME
  },
  FunctionName: "LAMBDA_FUNCTION_NAME",
  Handler: "index.handler",
  Role: "IAM_ROLE_ARN", // IAM_ROLE_ARN; e.g., arn:aws:iam::650138640062:role/v3-lambda-tutorial-lambda-role
  Runtime: "nodejs12.x",
  Description:
    "Scans a DynamoDB table of employee details and using Amazon Simple Notification Services (Amazon SNS) to " +
    "send employees an email the each anniversary of their start-date.",
};

const run = async () => {
  try {
    const data = await lambda.send(new CreateFunctionCommand(params));
    console.log("Success", data); // successful response
  } catch (err) {
    console.log("Error", err); // an error occurred
  }
};
run();
```

Masukkan yang berikut ini di baris perintah untuk menyebarkan fungsi Lambda.

```
node lambda-function-setup.js
```

Contoh kode ini tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lambda-scheduled-events/src/helper-functions/lambda-function-setup.js).

## Konfigurasikan CloudWatch untuk menjalankan fungsi Lambda
<a name="scheduled-events-invoking-lambda-run"></a>

Untuk mengkonfigurasi CloudWatch untuk menjalankan fungsi Lambda:

1. Buka **halaman Fungsi** di konsol Lambda.

1. Pilih fungsi Lambda.

1. Di bawah **Desainer**, pilih **Tambahkan pemicu**.

1. Atur tipe pemicu ke **CloudWatch EventBridgeEvents/**.

1. Untuk Aturan, pilih **Buat aturan baru**.

1.  Isi nama aturan dan deskripsi aturan.

1. Untuk jenis aturan, pilih **Ekspresi jadwal**.

1. Di bidang **Ekspresi Jadwal**, masukkan ekspresi cron. Misalnya, **cron (0 12? \$1 SEN-JUMAT** \$1).

1. Pilih **Tambahkan**.
**catatan**  
Untuk informasi selengkapnya, lihat [Menggunakan Lambda dengan CloudWatch Acara](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents.html).

## Hapus sumber daya
<a name="scheduled-events-invoking-lambda-destroy"></a>

Selamat\$1 Anda telah memanggil fungsi Lambda melalui acara terjadwal CloudWatch Amazon menggunakan. AWS SDK untuk JavaScript Seperti yang dinyatakan di awal tutorial ini, pastikan untuk menghentikan semua sumber daya yang Anda buat saat melalui tutorial ini untuk memastikan bahwa Anda tidak dikenakan biaya. Anda dapat melakukan ini dengan menghapus CloudFormation tumpukan yang Anda buat dalam [Buat sumber AWS daya](#scheduled-events-invoking-lambda-provision-resources) topik tutorial ini, sebagai berikut:

1. Buka [konsol CloudFormation]( https://console.aws.amazon.com/cloudformation/home).

1. Pada halaman **Stacks**, pilih tumpukan.

1. Pilih **Hapus**.

# Membangun chatbot Amazon Lex
<a name="lex-bot-example"></a>

Anda dapat membuat chatbot Amazon Lex dalam aplikasi web untuk melibatkan pengunjung situs web Anda. Chatbot Amazon Lex adalah fungsi yang melakukan percakapan obrolan online dengan pengguna tanpa memberikan kontak langsung dengan seseorang. Misalnya, ilustrasi berikut menunjukkan chatbot Amazon Lex yang melibatkan pengguna tentang pemesanan kamar hotel.

![\[Chatbot interface demonstrating a hotel booking conversation with user inputs and bot responses.\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/lex_example/chatintro.png)


Chatbot Amazon Lex yang dibuat dalam AWS tutorial ini mampu menangani beberapa bahasa. Misalnya, pengguna yang berbicara bahasa Prancis dapat memasukkan teks Prancis dan mendapatkan kembali tanggapan dalam bahasa Prancis.

![\[Chatbot interface demonstrating Amazon Lex integration with French language support.\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/lex_example/LanChatBot2.png)


Demikian juga, pengguna dapat berkomunikasi dengan chatbot Amazon Lex dalam bahasa Italia.

![\[Chat interface showing Italian language exchange between user and Amazon Lex chatbot.\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/lex_example/LanChatBot3.png)


 AWS Tutorial ini memandu Anda melalui pembuatan chatbot Amazon Lex dan mengintegrasikannya ke dalam aplikasi web Node.js. AWS SDK untuk JavaScript (v3) digunakan untuk memanggil layanan ini AWS :
+ Amazon Lex
+ Amazon Comprehend
+ Amazon Translate

**Biaya untuk menyelesaikan:** AWS Layanan yang termasuk dalam dokumen ini termasuk dalam [Tingkat AWS Gratis](https://aws.amazon.com/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc).

**Catatan:** Pastikan untuk menghentikan semua sumber daya yang Anda buat saat mengikuti tutorial ini untuk memastikan bahwa Anda tidak dikenakan biaya.

**Untuk membangun aplikasi:**

1. [Prasyarat](#lex-bot-example-prerequisites)

1. [Sumber daya penyediaan](#lex-bot-provision-resources)

1. [Buat chatbot Amazon Lex](#lex-bot-example-create-lex-bot)

1. [Buat HTML](#lex-bot-example-html)

1. [Buat skrip browser](#lex-bot-example-script)

1. [Langkah selanjutnya](#lex-bot-example-next-steps)

## Prasyarat
<a name="lex-bot-example-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/cross-services/lambda-scheduled-events/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh ini menggunakan ECMAScript6 (ES6). Ini membutuhkan 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) .  
Namun, jika Anda lebih suka menggunakan sintaks CommonJS, silakan merujuk ke. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Buat sumber AWS daya
<a name="lex-bot-provision-resources"></a>

Tutorial ini membutuhkan sumber daya berikut.
+ Peran IAM yang tidak diautentikasi dengan izin terlampir untuk:
  + Amazon Comprehend
  + Amazon Translate
  + Amazon Lex

Anda dapat membuat sumber daya ini secara manual, tetapi kami merekomendasikan penyediaan sumber daya ini menggunakan AWS CloudFormation seperti yang dijelaskan dalam tutorial ini.

### Buat sumber AWS daya menggunakan CloudFormation
<a name="lex-bot-example-resources-cli"></a>

CloudFormation memungkinkan Anda untuk membuat dan menyediakan penyebaran AWS infrastruktur yang dapat diprediksi dan berulang kali. Untuk informasi selengkapnya CloudFormation, lihat [Panduan AWS CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/).

Untuk membuat CloudFormation tumpukan menggunakan AWS CLI:

1. Instal dan konfigurasikan petunjuk AWS CLI berikut di [Panduan AWS CLI Pengguna](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html).

1. Buat file bernama `setup.yaml` di direktori root folder proyek Anda, dan salin konten [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/cross-services/lex-bot/setup.yaml) ke dalamnya.
**catatan**  
 CloudFormation Template dibuat menggunakan yang AWS CDK tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/resources/cdk/lex_bot_example_iam_unauth_role). Untuk informasi selengkapnya tentang AWS CDK, lihat [Panduan AWS Cloud Development Kit (AWS CDK) Pengembang](https://docs.aws.amazon.com/cdk/latest/guide/).

1. Jalankan perintah berikut dari baris perintah, ganti *STACK\$1NAME* dengan nama unik untuk tumpukan.
**penting**  
Nama tumpukan harus unik dalam AWS Wilayah dan AWS akun. Anda dapat menentukan hingga 128 karakter, dan angka serta tanda hubung diizinkan.

   ```
   aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM
   ```

   Untuk informasi selengkapnya tentang parameter `create-stack` perintah, lihat [panduan Referensi AWS CLI Perintah](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html), dan [Panduan CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-creating-stack.html).

   Untuk melihat sumber daya yang dibuat, buka konsol Amazon Lex, pilih tumpukan, dan pilih tab **Sumber Daya**.

## Buat bot Amazon Lex
<a name="lex-bot-example-create-lex-bot"></a>

**penting**  
Gunakan V1 dari konsol Amazon Lex untuk membuat bot. Contoh ini tidak berfungsi dengan bot yang dibuat menggunakan V2.

Langkah pertama adalah membuat chatbot Amazon Lex dengan menggunakan Amazon Web Services Management Console. Dalam contoh ini, contoh Amazon Lex **BookTrip**digunakan. Untuk informasi selengkapnya, lihat [Pesan Perjalanan](https://docs.aws.amazon.com/lex/latest/dg/ex-book-trip.html).
+ Masuk ke Amazon Web Services Management Console dan buka konsol Amazon Lex di [Amazon Web Services Console](https://console.aws.amazon.com/lex/).
+ Pada halaman Bots, pilih **Buat**.
+ Pilih **BookTrip**cetak biru (tinggalkan nama bot default). **BookTrip**  
![\[Interface for creating a chatbot, showing BookTrip sample with conversation flow and components.\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/lex_example/pic2.png)
+ Isi pengaturan default dan pilih **Buat** (konsol menunjukkan **BookTrip**bot). Pada tab Editor, tinjau detail maksud yang telah dikonfigurasi sebelumnya.
+ Uji bot di jendela uji. Mulai tes dengan mengetik *Saya ingin memesan kamar hotel*.  
![\[Chat interface showing a hotel booking conversation with a bot asking for the city.\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/lex_example/ChatBotTest.png)
+ Pilih **Publikasikan** dan tentukan nama alias (Anda akan memerlukan nilai ini saat menggunakan AWS SDK untuk JavaScript).

**catatan**  
 Anda perlu mereferensikan **nama bot** dan **alias bot** dalam JavaScript kode Anda.

## Buat HTML
<a name="lex-bot-example-html"></a>

Buat file bernama `index.html`. Salin dan tempel kode di bawah ini ke`index.html`. Referensi HTML ini`main.js`. Ini adalah versi bundel dari index.js, yang mencakup AWS SDK untuk JavaScript modul yang diperlukan. Anda akan membuat file ini di[Buat HTML](#lex-bot-example-html). `index.html`juga referensi`style.css`, yang menambahkan gaya. 

```
<!doctype html>
<head>
  <title>Amazon Lex - Sample Application (BookTrip)</title>
  <link type="text/css" rel="stylesheet" href="style.css" />
</head>

<body>
  <h1 id="title">Amazon Lex - BookTrip</h1>
  <p id="intro">
    This multiple language chatbot shows you how easy it is to incorporate
    <a
      href="https://aws.amazon.com/lex/"
      title="Amazon Lex (product)"
      target="_new"
      >Amazon Lex</a
    >
    into your web apps. Try it out.
  </p>
  <div id="conversation"></div>
  <input
    type="text"
    id="wisdom"
    size="80"
    value=""
    placeholder="J'ai besoin d'une chambre d'hôtel"
  />
  <br />
  <button onclick="createResponse()">Send Text</button>
  <script type="text/javascript" src="./main.js"></script>
</body>
```

Kode ini juga tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/resources/cdk#running-a-cdk-app).

## Buat skrip browser
<a name="lex-bot-example-script"></a>

Buat file bernama `index.js`. Salin dan tempel kode di bawah ini ke dalam`index.js`. Impor AWS SDK untuk JavaScript modul dan perintah yang diperlukan. Buat klien untuk Amazon Lex, Amazon Comprehend, dan Amazon Translate. Ganti *REGION* dengan AWS Region, dan *IDENTITY\$1POOL\$1ID* dengan ID kumpulan identitas yang Anda buat di[Buat sumber AWS daya](#lex-bot-provision-resources). Untuk mengambil ID kumpulan identitas ini, buka kumpulan identitas di konsol Amazon Cognito, **pilih Edit kumpulan identitas**, dan **pilih Contoh** kode di menu samping. ID kumpulan identitas ditampilkan dalam teks merah di konsol.

Pertama, buat `libs` direktori buat objek klien layanan yang diperlukan dengan membuat tiga file,`comprehendClient.js`,`lexClient.js`, dan`translateClient.js`. Tempelkan kode yang sesuai di bawah ini ke masing-masing, *REGION* dan ganti dan *IDENTITY\$1POOL\$1ID* di setiap file.

**catatan**  
Gunakan ID kumpulan identitas Amazon Cognito yang Anda buat. [Buat sumber AWS daya menggunakan CloudFormation](#lex-bot-example-resources-cli)

```
import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity";
import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity";
import { ComprehendClient } from "@aws-sdk/client-comprehend";

const REGION = "REGION";
const IDENTITY_POOL_ID = "IDENTITY_POOL_ID"; // An Amazon Cognito Identity Pool ID.

// Create an Amazon Comprehend service client object.
const comprehendClient = new ComprehendClient({
  region: REGION,
  credentials: fromCognitoIdentityPool({
    client: new CognitoIdentityClient({ region: REGION }),
    identityPoolId: IDENTITY_POOL_ID,
  }),
});

export { comprehendClient };
```

```
import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity";
import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity";
import { LexRuntimeServiceClient } from "@aws-sdk/client-lex-runtime-service";

const REGION = "REGION";
const IDENTITY_POOL_ID = "IDENTITY_POOL_ID"; // An Amazon Cognito Identity Pool ID.

// Create an Amazon Lex service client object.
const lexClient = new LexRuntimeServiceClient({
  region: REGION,
  credentials: fromCognitoIdentityPool({
    client: new CognitoIdentityClient({ region: REGION }),
    identityPoolId: IDENTITY_POOL_ID,
  }),
});

export { lexClient };
```

```
import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity";
import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity";
import { TranslateClient } from "@aws-sdk/client-translate";

const REGION = "REGION";
const IDENTITY_POOL_ID = "IDENTITY_POOL_ID"; // An Amazon Cognito Identity Pool ID.

// Create an Amazon Translate service client object.
const translateClient = new TranslateClient({
  region: REGION,
  credentials: fromCognitoIdentityPool({
    client: new CognitoIdentityClient({ region: REGION }),
    identityPoolId: IDENTITY_POOL_ID,
  }),
});

export { translateClient };
```

Kode ini tersedia [di sini GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/cross-services/lex-bot/src/libs) .

Selanjutnya, buat `index.js` file, dan tempel kode di bawah ini ke dalamnya.

 Ganti *BOT\$1ALIAS* dan *BOT\$1NAME* dengan alias dan nama bot Amazon Lex Anda masing-masing, dan *USER\$1ID* dengan id pengguna. Fungsi `createResponse` asinkron melakukan hal berikut:
+ Mengambil teks yang dimasukkan oleh pengguna ke browser dan menggunakan Amazon Comprehend untuk menentukan kode bahasanya.
+ Mengambil kode bahasa dan menggunakan Amazon Translate untuk menerjemahkan teks ke dalam bahasa Inggris.
+ Mengambil teks yang diterjemahkan dan menggunakan Amazon Lex untuk menghasilkan respons.
+ Memposting respons ke halaman browser.

```
import { DetectDominantLanguageCommand } from "@aws-sdk/client-comprehend";
import { TranslateTextCommand } from "@aws-sdk/client-translate";
import { PostTextCommand } from "@aws-sdk/client-lex-runtime-service";
import { lexClient } from "./libs/lexClient.js";
import { translateClient } from "./libs/translateClient.js";
import { comprehendClient } from "./libs/comprehendClient.js";

let g_text = "";
// Set the focus to the input box.
document.getElementById("wisdom").focus();

function showRequest() {
  const conversationDiv = document.getElementById("conversation");
  const requestPara = document.createElement("P");
  requestPara.className = "userRequest";
  requestPara.appendChild(document.createTextNode(g_text));
  conversationDiv.appendChild(requestPara);
  conversationDiv.scrollTop = conversationDiv.scrollHeight;
}

function showResponse(lexResponse) {
  const conversationDiv = document.getElementById("conversation");
  const responsePara = document.createElement("P");
  responsePara.className = "lexResponse";

  const lexTextResponse = lexResponse;

  responsePara.appendChild(document.createTextNode(lexTextResponse));
  responsePara.appendChild(document.createElement("br"));
  conversationDiv.appendChild(responsePara);
  conversationDiv.scrollTop = conversationDiv.scrollHeight;
}

function handletext(text) {
  g_text = text;
  const xhr = new XMLHttpRequest();
  xhr.addEventListener("load", loadNewItems, false);
  xhr.open("POST", "../text", true); // A Spring MVC controller
  xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //necessary
  xhr.send(`text=${text}`);
}

function loadNewItems() {
  showRequest();

  // Re-enable input.
  const wisdomText = document.getElementById("wisdom");
  wisdomText.value = "";
  wisdomText.locked = false;
}

// Respond to user's input.
const createResponse = async () => {
  // Confirm there is text to submit.
  const wisdomText = document.getElementById("wisdom");
  if (wisdomText?.value && wisdomText.value.trim().length > 0) {
    // Disable input to show it is being sent.
    const wisdom = wisdomText.value.trim();
    wisdomText.value = "...";
    wisdomText.locked = true;
    handletext(wisdom);

    const comprehendParams = {
      Text: wisdom,
    };
    try {
      const data = await comprehendClient.send(
        new DetectDominantLanguageCommand(comprehendParams),
      );
      console.log(
        "Success. The language code is: ",
        data.Languages[0].LanguageCode,
      );
      const translateParams = {
        SourceLanguageCode: data.Languages[0].LanguageCode,
        TargetLanguageCode: "en", // For example, "en" for English.
        Text: wisdom,
      };
      try {
        const data = await translateClient.send(
          new TranslateTextCommand(translateParams),
        );
        console.log("Success. Translated text: ", data.TranslatedText);
        const lexParams = {
          botName: "BookTrip",
          botAlias: "mynewalias",
          inputText: data.TranslatedText,
          userId: "chatbot", // For example, 'chatbot-demo'.
        };
        try {
          const data = await lexClient.send(new PostTextCommand(lexParams));
          console.log("Success. Response is: ", data.message);
          const msg = data.message;
          showResponse(msg);
        } catch (err) {
          console.log("Error responding to message. ", err);
        }
      } catch (err) {
        console.log("Error translating text. ", err);
      }
    } catch (err) {
      console.log("Error identifying language. ", err);
    }
  }
};
// Make the function available to the browser.
window.createResponse = createResponse;
```

Kode ini tersedia [di sini GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/cross-services/lex-bot/src/index.html) .

Sekarang gunakan webpack untuk menggabungkan AWS SDK untuk JavaScript modul `index.js` dan ke dalam satu file,`main.js`.

1. Jika Anda belum melakukannya, ikuti contoh ini [Prasyarat](#lex-bot-example-prerequisites) untuk menginstal webpack. 
**catatan**  
Untuk informasi tentang *webpack*, lihat[Bundel aplikasi dengan webpack](webpack.md).

1. Jalankan yang berikut ini di baris perintah untuk menggabungkan JavaScript untuk contoh ini ke dalam file bernama`main.js`:

   ```
   webpack index.js --mode development --target web --devtool false -o main.js
   ```

## Langkah selanjutnya
<a name="lex-bot-example-next-steps"></a>

Selamat\$1 Anda telah membuat aplikasi Node.js yang menggunakan Amazon Lex untuk menciptakan pengalaman pengguna yang interaktif. Seperti yang dinyatakan di awal tutorial ini, pastikan untuk menghentikan semua sumber daya yang Anda buat saat melalui tutorial ini untuk memastikan bahwa Anda tidak dikenakan biaya. Anda dapat melakukan ini dengan menghapus CloudFormation tumpukan yang Anda buat dalam [Buat sumber AWS daya](#lex-bot-provision-resources) topik tutorial ini, sebagai berikut:

1. Buka [konsol CloudFormation]( https://console.aws.amazon.com/cloudformation/home).

1. Pada halaman **Stacks**, pilih tumpukan.

1. Pilih **Hapus**.

Untuk contoh AWS lintas layanan lainnya, lihat contoh [AWS SDK untuk JavaScript lintas layanan](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/tutorials.html).