

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

# Membangun fungsi Lambda dengan TypeScript
<a name="lambda-typescript"></a>

Anda dapat menggunakan Node.js runtime untuk menjalankan TypeScript kode. AWS Lambda Karena Node.js tidak menjalankan TypeScript kode secara asli, Anda harus terlebih dahulu mentranspile TypeScript kode Anda ke dalam. JavaScript Kemudian, gunakan JavaScript file untuk menyebarkan kode fungsi Anda ke Lambda. Kode Anda berjalan di lingkungan yang menyertakan AWS SDK for JavaScript, dengan kredensyal dari peran AWS Identity and Access Management (IAM) yang Anda kelola. Untuk mempelajari lebih lanjut tentang versi SDK yang disertakan dengan Node.js runtime, lihat. [Runtime-included Versi SDK](lambda-nodejs.md#nodejs-sdk-included)

Lambda mendukung runtime berikut Node.js .


| Nama | Pengidentifikasi | Sistem operasi | Tanggal pengusangan | Buat fungsi blok | Pembaruan fungsi blok | 
| --- | --- | --- | --- | --- | --- | 
| Node.js 24 | `nodejs24.x` | Amazon Linux 2023 |  30 Apr 2028  |  1 Jun 2028  |  1 Jul 2028  | 
| Node.js 22 | `nodejs22.x` | Amazon Linux 2023 |  30 Apr 2027  |  1 Jun 2027  |  1 Jul 2027  | 

**Topics**
+ [Menyiapkan lingkungan TypeScript pengembangan](#typescript-dev)
+ [Jenis definisi untuk Lambda](#typescript-type-definitions)
+ [Tentukan penangan fungsi Lambda di TypeScript](typescript-handler.md)
+ [Terapkan TypeScript kode yang ditranspilasikan di Lambda dengan arsip file.zip](typescript-package.md)
+ [Terapkan TypeScript kode yang ditranspilasikan di Lambda dengan gambar kontainer](typescript-image.md)
+ [Menggunakan objek konteks Lambda untuk mengambil informasi fungsi TypeScript](typescript-context.md)
+ [Log dan pantau fungsi TypeScript Lambda](typescript-logging.md)
+ [Menelusuri TypeScript kode di AWS Lambda](typescript-tracing.md)

## Menyiapkan lingkungan TypeScript pengembangan
<a name="typescript-dev"></a>

Gunakan lingkungan pengembangan terintegrasi lokal (IDE) atau editor teks untuk menulis kode TypeScript fungsi Anda. Anda tidak dapat membuat TypeScript kode di konsol Lambda.

Anda dapat menggunakan [esbuild](https://esbuild.github.io/) atau TypeScript compiler (`tsc`) Microsoft untuk mentranspile kode Anda TypeScript ke dalam. JavaScript The [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started.html) dan [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)keduanya menggunakan esbuild.

Saat menggunakan esbuild, pertimbangkan hal berikut:
+ Ada beberapa [TypeScript peringatan](https://esbuild.github.io/content-types/#typescript-caveats).
+ Anda harus mengonfigurasi pengaturan TypeScript transpilasi agar sesuai dengan Node.js runtime yang Anda rencanakan untuk digunakan. Untuk informasi selengkapnya, lihat [Target](https://esbuild.github.io/api/#target) dalam dokumentasi esbuild. [Untuk contoh file **tsconfig.json** yang menunjukkan cara menargetkan versi tertentu yang Node.js didukung oleh Lambda, lihat repositori. TypeScript GitHub ](https://github.com/tsconfig/bases/blob/main/bases/node14.json)
+ esbuild tidak melakukan pemeriksaan tipe. Untuk memeriksa jenis, gunakan `tsc` kompiler. Jalankan `tsc -noEmit` atau tambahkan `"noEmit"` parameter ke file **tsconfig.json** Anda, seperti yang ditunjukkan pada contoh berikut. Ini mengkonfigurasi `tsc` untuk tidak memancarkan file JavaScript . Setelah memeriksa jenis, gunakan esbuild untuk mengonversi TypeScript file menjadi JavaScript.

**Example tsconfig.json**  

```
 {
  "compilerOptions": {
    "target": "es2020",
    "strict": true,
    "preserveConstEnums": true,
    "noEmit": true,
    "sourceMap": false,
    "module":"commonjs",
    "moduleResolution":"node",
    "esModuleInterop": true, 
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true, 
    "isolatedModules": true, 
  },
  "exclude": ["node_modules", "**/*.test.ts"]
}
```

## Jenis definisi untuk Lambda
<a name="typescript-type-definitions"></a>

Paket [@ types/aws -lambda](https://www.npmjs.com/package/@types/aws-lambda) menyediakan definisi tipe untuk fungsi Lambda. Instal paket ini ketika fungsi Anda menggunakan salah satu dari berikut ini:
+ Sumber AWS acara umum, seperti:
  + `APIGatewayProxyEvent`: Untuk [integrasi proxy Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html) 
  + `SNSEvent`: Untuk [pemberitahuan Layanan Pemberitahuan Sederhana Amazon](with-sns.md)
  + `SQSEvent`: Untuk pesan [Layanan Antrian Sederhana Amazon](with-sqs.md)
  + `S3Event`: Untuk peristiwa [pemicu S3](with-s3.md)
  + `DynamoDBStreamEvent`: Untuk [Amazon DynamoDB Streams](with-ddb.md)
+ [Objek Konteks Lambda](typescript-context.md)
+ Pola [handler callback](typescript-handler.md#typescript-handler-callback)

Untuk menambahkan definisi tipe Lambda ke fungsi Anda, instal `@types/aws-lambda` sebagai dependensi pengembangan:

```
npm install -D @types/aws-lambda
```

Kemudian, impor jenis dari`aws-lambda`:

```
import { Context, S3Event, APIGatewayProxyEvent } from 'aws-lambda';

export const handler = async (event: S3Event, context: Context) => {
    // Function code
};
```

`import ... from 'aws-lambda'`Pernyataan tersebut mengimpor definisi tipe. Itu tidak mengimpor paket `aws-lambda` npm, yang merupakan alat pihak ketiga yang tidak terkait. Untuk informasi selengkapnya, lihat [aws-lambda](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/aws-lambda) di repositori. DefinitelyTyped GitHub 

**catatan**  
Anda tidak memerlukan [@ types/aws -lambda](https://www.npmjs.com/package/@types/aws-lambda) saat menggunakan definisi tipe kustom Anda sendiri. Untuk fungsi contoh yang mendefinisikan jenisnya sendiri untuk objek peristiwa, lihat[Contoh kode TypeScript fungsi Lambda](typescript-handler.md#typescript-example-code).