

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

# AWS Lambda debugging jarak jauh
<a name="lambda-remote-debug"></a>

 AWS Toolkit for Visual Studio Code Ini memungkinkan Anda untuk men-debug AWS Lambda fungsi Anda yang berjalan di cloud, langsung di VS Code. Dengan debugging AWS Lambda jarak jauh, Anda dapat memeriksa fungsi yang sedang berjalan, mengatur breakpoint, memeriksa variabel, dan debugging step-through tanpa memodifikasi alur kerja pengembangan yang ada.

Bagian berikut menjelaskan cara bekerja dengan debugging jarak jauh Lambda di file. AWS Toolkit for Visual Studio Code

## Cara kerja debugging jarak jauh Lambda
<a name="w2aac17c43c19b7"></a>

 AWS Toolkit memungkinkan debugging jarak jauh dengan memodifikasi sementara fungsi Lambda Anda dengan lapisan debugging Lambda tambahan dan memperpanjang batas waktu pemanggilan Lambda hingga 900 detik. Koneksi aman dibuat antara debugger lokal Anda dan lingkungan runtime Lambda menggunakan Tunneling Aman. AWS IoT Koneksi ini memungkinkan Anda untuk menggunakan breakpoint kode lokal Anda untuk melangkah melalui fungsi saat dijalankan dari jarak jauh. Setelah sesi debugging Anda selesai, semua modifikasi sementara secara otomatis dikembalikan ke pengaturan aslinya.

## Memulai
<a name="w2aac17c43c19b9"></a>

### Waktu aktif yang didukung
<a name="w2aac17c43c19b9b3"></a>

Runtime berikut didukung oleh debugging jarak jauh Lambda.
+ Python (Amazon Linux 2023)
+ Java
+ Typescript/JavaScript/Node.js (Amazon Linux 2023)

**catatan**  
Instans terkelola Lambda dan tipe fungsi gambar OCI tidak didukung oleh debugging jarak jauh Lambda.

### Prasyarat
<a name="w2aac17c43c19b9b5"></a>

Sebelum Anda mulai, prasyarat berikut harus dipenuhi.
+ Anda harus memiliki AWS kredenal yang valid yang dikonfigurasi di Toolkit. AWS Untuk detail tambahan tentang menginstal AWS Toolkit dan mengonfigurasi kredensional Anda, lihat topik [Memulai](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/setting-up.html) di panduan pengguna ini. 
+ Fungsi Lambda telah diterapkan ke akun Anda. AWS Untuk detail tentang penerapan fungsi Lambda, lihat topik [Membuat fungsi Lambda pertama](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html) Anda di Panduan Pengembang. *AWS Lambda*
+ Anda harus memiliki kebijakan dan izin AWS Identity and Access Management (IAM) yang sesuai untuk men-debug fungsi Anda. Untuk detail tambahan tentang izin Lambda, lihat [kebijakan AWS terkelola untuk AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/security-iam-awsmanpol.html) topik di Panduan Pengembang. *AWS Lambda* Berikut ini adalah contoh kebijakan yang berisi izin minimum yang diperlukan untuk bekerja dengan debugging jarak jauh Lambda di Toolkit. AWS 
**catatan**  
Debugging jarak jauh diaktifkan melalui Tunneling AWS AWS IoT Aman. Ini memungkinkan debugger lokal Anda untuk membuat koneksi aman ke lingkungan runtime Lambda.

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lambda:ListFunctions",
          "lambda:GetFunction",
          "lambda:GetFunctionConfiguration",
          "lambda:GetLayerVersion",
          "lambda:UpdateFunctionConfiguration",
          "lambda:InvokeFunction",
          "lambda:PublishVersion",
          "lambda:DeleteFunction",
          "iot:OpenTunnel",
          "iot:RotateTunnelAccessToken",
          "iot:ListTunnels"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

## Mengakses debugging jarak jauh Lambda
<a name="w2aac17c43c19c11"></a>

Ada dua jalur utama untuk mengakses Lambda remote debugging di AWS Toolkit: AWS explorer atau Application Builder explorer. Dari AWS penjelajah, Anda dapat mengakses debugging jarak jauh Lambda melalui node Anda. AWS Lambda Dari penjelajah Application Builder, Anda dapat mengakses debugging jarak jauh Lambda melalui proyek lokal Anda. AWS SAM 

**Mengakses debugging jarak jauh Lambda dari penjelajah AWS**

1. Dari VS Code, buka ekstensi AWS Toolkit.

1. Dari AWS Toolkit, perluas AWS penjelajah.

1. Dari penjelajah, perluas simpul **Lambda**.

1. Arahkan ke fungsi yang ingin Anda debug, lalu pilih ikon **Panggil jarak jauh** dari menu konteks untuk membuka layar konfigurasi pemanggilan **jarak jauh.**

**Mengakses debugging jarak jauh Lambda dari penjelajah Application Builder.**

1. Dari VS Code, buka ekstensi AWS Toolkit.

1. Dari AWS Toolkit, perluas explorer pembuat aplikasi.

1. Dari penjelajah, perluas `AWS SAM` proyek yang berisi proyek Lambda yang ingin Anda debug.

1. Perluas `Lambda` fungsi yang digunakan yang ingin Anda debug.

1. Arahkan ke fungsi remote, lalu pilih ikon **Invoke remote** dari menu konteks untuk membuka layar konfigurasi **pemanggilan jarak jauh**.

## Bekerja dengan debugging jarak jauh Lambda
<a name="w2aac17c43c19c13"></a>

Bagian berikut menjelaskan cara bekerja dengan debugging jarak jauh Lambda di file. AWS Toolkit for Visual Studio Code

**catatan**  
Fungsi Lambda memiliki batas 5 lapisan dan batas gabungan 250MB untuk kode fungsi dan semua lapisan terlampir. Debugging jarak jauh Lambda membutuhkan setidaknya 1 lapisan gratis untuk dijalankan.

### Menyiapkan sesi debugging
<a name="w2aac17c43c19c13b7"></a>

Sebelum memulai, konfigurasikan sesi debugging Anda dengan menyelesaikan prosedur berikut.

1. Buka menu **konfigurasi panggilan Jarak Jauh** dengan menyelesaikan proses debug jarak jauh *Accessing Lambda dari explorer AWS atau debugging jarak jauh* Accessing *Lambda dari prosedur explorer Application Builder, yang terletak di bagian sebelumnya*.

1. Dari menu **konfigurasi panggilan jarak jauh**, pilih kotak centang **Remote Debugging** untuk menampilkan properti debugging jarak jauh.

1. Tentukan **Local Root Path** ke file handler lokal Anda.
**catatan**  
Jalur root lokal adalah lokasi kode sumber Anda yang cocok dengan fungsi Lambda yang diterapkan. Jika Anda bekerja dari fungsi yang di-deploy di Application Builder explorer, jalur root lokal Anda akan terdeteksi secara otomatis.  
Jika Anda tidak memiliki kode sumber yang disimpan secara lokal, pilih tombol **Unduh kode jarak jauh untuk mengambil kode** sumber fungsi Lambda Anda. Ini akan membuka Anda `handler file` di editor VS Code.

1. Dari bagian **Payload**, tentukan di mana data ujian-acara Anda diperoleh.

### Mengatur breakpoint dan debugging
<a name="w2aac17c43c19c13b9"></a>

Atur breakpoint dan mulai debugging dengan menyelesaikan prosedur berikut.

1. Dari editor VS Code Anda`handler file`, klik margin selokan untuk mengatur breakpoint pada nomor baris tempat Anda ingin menjeda debugging.

1. Ketika Anda puas dengan breakpoint, kembali **ke menu konfigurasi pemanggilan jarak jauh untuk memverifikasi bahwa pengaturan Anda dikonfigurasi** dengan benar, lalu pilih tombol **Remote invoke** untuk memulai debugging.

1.  AWS Toolkit memperbarui fungsi Lambda Anda dengan kemampuan debugging, membuat terowongan aman untuk sesi debugging, memanggil fungsi Anda dengan muatan yang ditentukan, lalu menjeda proses saat mencapai breakpoint.

1. **Pada jeda breakpoint, gunakan panel **RUN AND DEBUG** untuk melihat **VARIABLES**, **CALL STACK**, dan BREAKPOINTS Anda.**

### Memperbarui dan menguji fungsi Anda
<a name="w2aac17c43c19c13c11"></a>

Untuk memodifikasi kode Anda dan menguji perubahan dengan penerapan cepat, selesaikan prosedur berikut.

1. Dengan sesi debugging Anda aktif, buat perubahan `handler file` pada editor VS Code Anda.

1. Simpan perubahan Anda (**Command\$1S on macOS**,**Ctrl\$1S on Windows**)

1. Saat diminta, konfirmasikan bahwa Anda ingin melanjutkan untuk menerapkan perubahan Anda. AWS Toolkit akan memperbarui fungsi Lambda Anda dengan kode yang dimodifikasi.

1. Lanjutkan debugging dan uji perubahan Anda dengan mengatur breakpoint baru dan memilih tombol **Remote invoke lagi**.
**catatan**  
 Atau, Anda dapat membatalkan pilihan opsi **Attach debugger** di kontrol debugging VS Code dan memilih tombol **Remote invoke** untuk menjalankan fungsi Anda tanpa debugging.

### Mengakhiri sesi debugging
<a name="w2aac17c43c19c13c13"></a>

Masing-masing opsi berikut mengakhiri sesi debugging jarak jauh Anda dan menghapus lapisan debug dari proyek Anda.
+ Memilih opsi **Hapus Pengaturan Debug** dari layar **konfigurasi pemanggilan jarak jauh**.
+ Memilih ikon **putuskan sambungan** dari kontrol debugging VS Code.
+ Menutup `handler file` di editor Kode VS.

**catatan**  
Perhatikan hal-hal berikut ini:  
Lapisan debug Lambda secara otomatis dihapus setelah 60 detik tidak aktif. Hitungan dimulai saat pemanggilan terakhir Anda selesai.
Jika Anda membuat perubahan kode pada fungsi infrastructure-as-code (IAc) yang dikelola (AWS SAM, AWS CDK, Terraform) selama proses debugging, simpan ke proyek lokal Anda dan pertimbangkan untuk memperbarui repositori kontrol sumber Anda. Perubahan yang belum disimpan akan ditimpa saat fungsi IAc Anda di-deploy ulang.
Jika Anda membuat perubahan sementara hanya untuk tujuan debugging, Anda mungkin ingin menerapkan ulang fungsi Anda dari kontrol sumber untuk memastikannya cocok dengan kode produksi Anda.

### Mendebug fungsi TypeScript Lambda dengan peta sumber
<a name="typescript-source-maps"></a>

Bagian berikut menjelaskan cara men-debug fungsi TypeScript Lambda Anda dengan peta sumber.

#### Prasyarat
<a name="w2aac17c43c19c13c15b5"></a>

Untuk men-debug fungsi TypeScript Lambda Anda, prasyarat berikut harus dipenuhi.
+ Anda TypeScript harus dikompilasi dengan opsi peta sumber diaktifkan. Untuk informasi tambahan, lihat topik [dukungan peta JavaScript sumber](https://code.visualstudio.com/docs/typescript/typescript-debugging#_javascript-source-map-support) dalam dokumentasi VS Code.
+ Peta sumber in-line tidak didukung. Anda harus menggunakan `.js.map` file terpisah untuk menyimpan peta sumber.

#### Konfigurasi
<a name="w2aac17c43c19c13c15b7"></a>

Untuk mengonfigurasi debugging jarak jauh Lambda untuk fungsi TypeScript Lambda di AWS Toolkit, selesaikan langkah-langkah berikut.

1. Dari AWS Toolkit, perluas AWS penjelajah.

1. Dari penjelajah, perluas simpul **Lambda**.

1. Arahkan ke fungsi yang ingin Anda konfigurasikan TypeScript, lalu pilih ikon **Panggil jarak jauh** dari menu konteks untuk membuka layar konfigurasi **pemanggilan jarak jauh**.

1. Aktifkan debugging jarak jauh dengan memilih kotak centang **Remote debugging**.

1. Konfigurasikan **Jalur Root Lokal** Anda dengan menunjuk ke direktori yang berisi Anda`TypeScript handler file`.
**catatan**  
Di `TypeScript handler file` sinilah Anda mengatur breakpoint debugging Anda.

1. Perluas pengaturan **konfigurasi tambahan debug jarak jauh**.

1. Aktifkan pemetaan sumber dengan memilih kotak centang **Peta Sumber**.

1. Atur bidang **Keluar file** ke direktori lokal salinan fungsi Lambda Anda.  
**Example**  

   Jika `app.js` dan `app.map` berada di`.aws-sam/build/HelloWorldFunction`, maka buatlah lokasi **file Keluar**`/Users/user/project/aws-sam/build/HelloWorldFunction/*`.
**catatan**  
Jalur **file Out** harus menjadi jalur absolut.  
Untuk AWS SAM dan AWS CDK proyek, AWS Toolkit mendukung deteksi peta sumber otomatis. Jika bidang **Out files** dibiarkan kosong untuk proyek-proyek ini, toolkit akan secara otomatis mencoba mendeteksi lokasi peta sumber.

1. Ketika Anda puas dengan pengaturan, pilih tombol **Remote invoke** untuk mulai men-debug fungsi Anda TypeScript .

## Pemecahan masalah dan kasus penggunaan lanjutan
<a name="troubleshooting"></a>

Jika sesi debug Anda gagal, mulailah proses pemecahan masalah dengan menyelesaikan langkah-langkah ini.

1. Perbarui AWS Toolkit ke versi terbaru.

1. Segarkan tampilan web dengan menutup tampilan web **konfigurasi panggilan Remote** dan membukanya kembali.

1. Mulai ulang VS Code dengan menutupnya sepenuhnya dan membukanya kembali.

1. Buka Palet Perintah Kode VS dan masukkan perintah**AWS: Reset Lambda Remote Debugging Snapshot**, pilih saat diisi dalam hasil untuk mengatur ulang snapshot debugging jarak jauh Lambda Anda.

1. [Jika Anda tidak dapat memecahkan masalah, kirimkan masalah ke AWS Toolkit for Visual Studio Code GitHub Masalah.](https://github.com/aws/aws-toolkit-vscode/issues)

### Kasus penggunaan lanjutan: konfigurasi penandatanganan kode
<a name="troubleshooting-code-signing-configuration"></a>

Debugging jarak jauh membutuhkan melampirkan lapisan debug ke fungsi Lambda Anda. Jika fungsi Anda memiliki konfigurasi penandatanganan kode diaktifkan dan diberlakukan, AWS Toolkit tidak dapat secara otomatis melampirkan lapisan debug ke fungsi Anda.

Ada dua opsi untuk mengatasi masalah konfigurasi penandatanganan kode.
+ Hapus penandatanganan kode untuk sementara.
+ Gunakan layer debug yang ditandatangani.

#### Menghapus penandatanganan kode untuk sementara
<a name="troubleshooting-code-signing-configuration-temp-remove"></a>

Perbarui konfigurasi penandatanganan kode dengan menyetel`UntrustedArtifactOnDeployment : Warn`, lalu aktifkan kembali `Enforced` setelah proses debugging selesai.

Untuk informasi selengkapnya, lihat [UpdateCodeSigningConfig](https://docs.aws.amazon.com//lambda/latest/api/API_UpdateCodeSigningConfig.html)referensi di *Referensi AWS Lambda API*.

#### Menggunakan lapisan debug yang ditandatangani
<a name="troubleshooting-code-signing-configuration-signed-debug-layer"></a>

1. Dari debugging jarak jauh Lambda di AWS Toolkit, perluas bagian konfigurasi tambahan **debug jarak jauh**.

1. Dari bagian **konfigurasi tambahan debug jarak jauh**, salin ARN layer Region Anda dari bidang penggantian **Layer**.

1. Dari AWS CLI, gunakan perintah berikut untuk men-download versi layer`aws lambda get-layer-version-by-arn --arn layer-arn`, menggantikan *layer-arn dengan layer ARN* Anda. *Untuk petunjuk rinci tentang cara mengunduh layer debug yang ditandatangani, lihat referensi [get-layer-version-by-arn di Command](https://docs.aws.amazon.com/cli/latest/reference/lambda/get-layer-version-by-arn.html) Reference.AWS CLI *

1. Tanda tangani layer dengan konfigurasi penandatanganan kode Anda dan publikasikan ke akun Anda. Untuk panduan penandatanganan dan penerbitan, lihat [Menyiapkan penandatanganan kode untuk topik AWS SAM aplikasi Anda](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/authoring-codesigning.html) di *Panduan AWS Serverless Application Model Pengembang*.

1. **Setelah layer ditandatangani dan dipublikasikan ke akun Anda, kembali ke bagian **konfigurasi tambahan debug jarak jauh** Lambda dari debugging jarak jauh Lambda, lalu masukkan ARN layer baru ke bidang penggantian Layer.** Ketika proses selesai, debugging jarak jauh Lambda menggunakan lapisan yang ditandatangani Anda alih-alih lapisan default.

### Kasus penggunaan lanjutan: fungsi debugging dengan SnapStart atau konkurensi yang disediakan
<a name="troubleshooting-snapstart-provisioned-concurrency"></a>

Untuk fungsi Lambda yang dikonfigurasi dengan SnapStart atau disediakan konkurensi, penerbitan versi baru membutuhkan waktu yang jauh lebih lama. Untuk mempercepat alur kerja debugging, Anda dapat mengonfigurasi debugging jarak jauh Lambda untuk memperbarui hanya `$LATEST` versi fungsi Anda alih-alih menerbitkan versi baru.

1. Dari layar **konfigurasi pemanggilan jarak jauh**, perluas pengaturan **konfigurasi tambahan Remote debug**.

1. Hapus pilihan **versi Publikasikan**.

1.  AWS Toolkit sekarang hanya akan memperbarui `$LATEST` versi fungsi Anda dan men-debug menggunakannya.

**catatan**  
Sebagai efek samping dari debugging dengan `$LATEST` versi, Anda harus menghindari lalu lintas lain yang mungkin memanggil `$LATEST` versi Anda untuk memastikan lingkungan debugging yang tidak terganggu.

### Wilayah yang didukung
<a name="troubleshooting-regions"></a>

Kesalahan berikut terjadi ketika suatu wilayah tidak mendukung debugging jarak jauh.

```
Region ${region} doesn't support remote debugging yet
```

Berikut ini adalah daftar wilayah yang didukung.
+ ap-east-1
+ ap-northeast-1
+ ap-northeast-2
+ ap-south-1
+ ap-southeast-1
+ ap-southeast-2
+ ca-sentral-1
+ eu-central-1
+ eu-north-1
+ eu-west-1
+ eu-west-2
+ eu-west-3
+ me-central-1
+ me-south-1
+ sa-east-1
+ us-east-1
+ us-east-2
+ us-west-1
+ us-west-2

### Lambda RequestEntityTooLargeException
<a name="troubleshooting-storage-limit"></a>

Fungsi Lambda memiliki batas 5 lapisan dan batas gabungan 250MB untuk kode fungsi dan semua lapisan terlampir. Lapisan debugging jarak jauh sekitar 40MB, yang dapat menyebabkan fungsi Anda melebihi batas ini jika Anda memiliki paket fungsi besar atau beberapa lapisan. Untuk detail tambahan, lihat bagian [Lambda: InvalidParameterValueException atau RequestEntityTooLargeException](https://docs.aws.amazon.com//lambda/latest/dg/troubleshooting-deployment.html#troubleshooting-deployment-InvalidParameterValueException1) topik di Panduan *AWS Lambda Pengembang*.

Daftar berikut menjelaskan cara untuk memecahkan masalah dan memperbaiki kesalahan ini.
+ **Kurangi ukuran fungsi**: Optimalkan kode fungsi Anda dan hapus dependensi yang tidak perlu.
+ **Hapus lapisan yang tidak digunakan**: Hapus sementara lapisan yang tidak penting selama debugging.
+ **Gunakan dependensi eksternal**: Pindahkan dependensi besar ke penyimpanan eksternal, seperti Amazon S3, dan muat saat runtime.

### Memecahkan masalah debugging Java
<a name="troubleshooting-java-debugging"></a>

Untuk men-debug fungsi Java Lambda, Anda harus menginstal versi Java yang sama secara lokal yang cocok dengan versi runtime fungsi Lambda Anda.

Misalnya, saat men-debug fungsi Java 25, Anda harus menginstal Java 25 di lingkungan lokal tempat AWS Toolkit berjalan. Jika Anda mencoba men-debug fungsi Java 25 dengan Java 21 atau versi sebelumnya yang diinstal secara lokal, debugging jarak jauh tidak akan dapat berhenti di breakpoint yang Anda tetapkan.

Pastikan versi Java lokal Anda cocok dengan versi runtime fungsi Lambda Anda sebelum memulai sesi debugging.

### Kuota tunneling aman IoT terlampaui
<a name="troubleshooting-tunnel-quota"></a>

Berikut ini adalah contoh *kesalahan terlampaui kuota terowongan* yang terjadi ketika Anda telah mencapai batas harian untuk koneksi tunneling AWS IoT aman di debugging jarak jauh Lambda.

```
Error creating/reusing tunnel: LimitExceededException: Exceeded quota of Lambda debugging tunnels
```

AWS IoT Koneksi Tunneling yang aman memiliki kuota berikut:
+ Tunneling aman IoT tingkat bebas dialokasikan 10 koneksi per hari.
+ Setiap terowongan mendukung satu instance VS Code hingga 12 jam.
+ Kuota berlaku per AWS akun, per hari.

Jika Anda mengalami kesalahan tunneling AWS IoT aman, tunggu pengaturan ulang kuota harian atau hubungi AWS dukungan untuk meminta peningkatan batas kuota. Untuk info kontak AWS dukungan, lihat [portal kontak AWS dukungan](https://aws.amazon.com/contact-us/). *Untuk informasi rinci tentang tunneling AWS IoT aman, lihat topik [tunneling AWS IoT aman](https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html) di Panduan Pengembang.AWS IoT *