

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

# Memanggil fungsi Lambda secara asinkron
<a name="invocation-async"></a>

Beberapa Layanan AWS, seperti Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) dan Amazon Simple Notification Service (Amazon SNS), menjalankan fungsi secara asinkron untuk memproses peristiwa. Anda juga dapat menjalankan fungsi Lambda secara asinkron menggunakan AWS CLI() atau salah AWS Command Line Interface satu fungsi. AWS SDKs Saat Anda memanggil fungsi secara asinkron, Anda tidak perlu menunggu respons dari kode fungsi tersebut. Anda menyerahkan peristiwa ke Lambda dan Lambda menangani sisanya. Anda dapat mengonfigurasi cara Lambda menangani kesalahan, dan dapat mengirim catatan pemanggilan ke sumber daya hilir seperti Amazon Simple Queue Service (Amazon SQS) atau Amazon EventBridge () untuk menyatukan komponen aplikasi Anda. EventBridge

Diagram berikut menunjukkan klien yang mengaktifkan fungsi Lambda secara asinkron. Lambda membuat antrean peristiwa sebelum mengirimkannya ke fungsi.

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/features-async.png)


Untuk invokasi asinkron, Lambda menempatkan peristiwa dalam antrean dan mengembalikan respons sukses informasi tambahan. Proses terpisah membaca peristiwa dari antrean dan mengirimnya ke fungsi Anda.

 Untuk menjalankan fungsi Lambda secara asinkron menggunakan AWS Command Line Interface AWS CLI() atau salah satu fungsi, setel parameter AWS SDKs ke. [InvocationType](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html#lambda-Invoke-request-InvocationType)`Event` Contoh berikut menunjukkan AWS CLI perintah untuk memanggil fungsi.

```
aws lambda invoke \
  --function-name my-function  \
  --invocation-type Event \
  --cli-binary-format raw-in-base64-out \
  --payload '{ "key": "value" }' response.json
```

Anda akan melihat output berikut:

```
{
    "StatusCode": 202
}
```

**cli-binary-format**Opsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankan`aws configure set cli-binary-format raw-in-base64-out`. Untuk informasi selengkapnya, lihat [opsi baris perintah global yang AWS CLI didukung](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) di *Panduan AWS Command Line Interface Pengguna untuk Versi 2*.

File output (`response.json`) tidak berisi informasi apa pun, tetapi masih dibuat saat Anda menjalankan perintah ini. Jika Lambda tidak dapat menambahkan peristiwa ke antrean, pesan kesalahan akan muncul di output perintah.

# Bagaimana Lambda menangani kesalahan dan mencoba ulang dengan pemanggilan asinkron
<a name="invocation-async-error-handling"></a>

Lambda mengelola antrian peristiwa asinkron fungsi Anda dan mencoba lagi kesalahan. Jika fungsi mengembalikan kesalahan, secara default Lambda mencoba menjalankannya dua kali lagi, dengan menunggu satu menit antara dua upaya pertama, dan dua menit antara upaya kedua dan ketiga. Kesalahan fungsi meliputi kesalahan yang dikembalikan oleh kode fungsi dan kesalahan yang dikembalikan oleh runtime fungsi, seperti waktu habis.

Apabila fungsi tidak memiliki ketersediaan konkurensi yang cukup untuk memproses semua peristiwa, permintaan tambahan akan diperlambat. Untuk kesalahan pelambatan (429) dan kesalahan sistem (seri 500), Lambda mengembalikan acara ke antrian dan mencoba menjalankan fungsi lagi hingga 6 jam secara default. Interval percobaan lagi meningkat secara eksponensial dari 1 detik setelah percobaan pertama hingga maksimum 5 menit. Jika antrian berisi banyak entri, Lambda meningkatkan interval coba lagi dan mengurangi tingkat di mana ia membaca peristiwa dari antrian.

Meskipun fungsi Anda tidak memunculkan kesalahan, fungsi dapat menerima peristiwa yang sama dari Lambda beberapa kali karena antrean itu sendiri pada akhirnya konsisten. Jika fungsi tidak dapat mengikuti peristiwa masuk, peristiwa juga dapat dihapus dari antrean tanpa dikirim ke fungsi. Pastikan bahwa kode fungsi Anda secara rapi menangani duplikasi peristiwa, dan bahwa Anda memiliki cukup konkurensi tersedia untuk menangani semua invokasi.

Ketika antrean sangat panjang, acara baru mungkin menua sebelum Lambda memiliki kesempatan untuk mengirimnya ke fungsi Anda. Saat peristiwa kedaluwarsa atau gagal dalam semua upaya pemrosesan, Lambda menghapusnya. Anda dapat [mengonfigurasi penanganan kesalahan](invocation-async-configuring.md) untuk fungsi mengurangi jumlah percobaan ulang yang dilakukan Lambda, atau membuang kejadian yang tidak diproses dengan lebih cepat. Untuk menangkap peristiwa yang dibuang, [konfigurasikan antrian huruf mati untuk fungsi](invocation-async-retain-records.md#invocation-dlq) tersebut. Untuk menangkap catatan pemanggilan yang gagal (seperti batas waktu atau kesalahan runtime), [buat](invocation-async-retain-records.md#invocation-async-destinations) tujuan saat gagal. 

# Mengonfigurasi pengaturan penanganan kesalahan untuk pemanggilan asinkron Lambda
<a name="invocation-async-configuring"></a>

Gunakan pengaturan berikut untuk mengonfigurasi cara Lambda menangani kesalahan dan mencoba ulang untuk pemanggilan fungsi asinkron:
+ [MaximumEventAgeInSeconds](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumEventAgeInSeconds): Jumlah waktu maksimum, dalam hitungan detik, Lambda menyimpan peristiwa dalam antrian acara asinkron sebelum membuangnya.
+ [MaximumRetryAttempts](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumRetryAttempts): Jumlah maksimum kali Lambda mencoba ulang peristiwa ketika fungsi mengembalikan kesalahan.

Gunakan konsol Lambda atau AWS CLI untuk mengonfigurasi pengaturan penanganan kesalahan pada fungsi, versi, atau alias.

------
#### [ Console ]

**Untuk mengonfigurasi penanganan kesalahan**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi.

1. Pilih **Konfigurasi**, lalu pilih**Invokasi asinkron**.

1. Di bagian **Invokasi asinkron**, pilih **Edit**.

1. Konfigurasikan pengaturan berikut.
   + **Usia maksimum peristiwa** – Jumlah waktu maksimum yang dimiliki Lambda untuk menyimpan acara dalam antrean peristiwa asinkron, hingga 6 jam.
   + **Usaha percobaan ulang** – Jumlah pengulangan Lambda saat fungsi mengembalikan kesalahan, antara 0 dan 2.

1. Pilih **Simpan**.

------
#### [ AWS CLI ]

[Untuk mengonfigurasi pemanggilan asinkron dengan AWS CLI, gunakan perintah -config. put-function-event-invoke](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/put-function-event-invoke-config.html) Contoh berikut mengonfigurasi fungsi dengan batas waktu peristiwa maksimum selama 1 jam dan tidak perlu percobaan ulang.

```
aws lambda put-function-event-invoke-config \ 
  --function-name error \
  --maximum-event-age-in-seconds 3600 \
  --maximum-retry-attempts 0
```

Perintah `put-function-event-invoke-config` menimpa konfigurasi fungsi, versi, atau alias yang ada. Untuk mengonfigurasi opsi tanpa mengatur ulang yang lain, gunakan [update-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html). Contoh berikut mengonfigurasi Lambda untuk mengirim catatan ke antrian SQS standar `destination` bernama saat peristiwa tidak dapat diproses.

```
aws lambda update-function-event-invoke-config \
  --function-name my-function \
  --destination-config '{"OnFailure":{"Destination": "arn:aws:sqs:us-east-1:123456789012:destination"}}'
```

------

Anda akan melihat output berikut:

```
{
    "LastModified": 1573686021.479,
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
    "MaximumRetryAttempts": 0,
    "MaximumEventAgeInSeconds": 3600,
    "DestinationConfig": {
        "OnSuccess": {},
        "OnFailure": {}
    }
}
```

Ketika peristiwa invokasi melebihi waktu maksimum atau gagal dalam semua upaya percobaan ulang, Lambda menghapusnya. [Untuk menyimpan salinan peristiwa yang dibuang, konfigurasikan tujuan acara yang gagal.](invocation-async-retain-records.md#invocation-async-destinations)

# Menangkap catatan pemanggilan asinkron Lambda
<a name="invocation-async-retain-records"></a>

Lambda dapat mengirim catatan pemanggilan asinkron ke salah satu dari berikut ini. Layanan AWS
+ **Amazon SQS - Antrian SQS** standar
+ **Amazon SNS - Topik SNS** standar
+ **Amazon S3** - Bucket Amazon S3 (hanya gagal)
+ **AWS Lambda**- Fungsi Lambda
+ **Amazon EventBridge** - Bus EventBridge acara

Catatan invokasi berisi detail tentang permintaan dan respons dalam format JSON. Anda dapat mengonfigurasi tujuan terpisah untuk acara yang berhasil diproses, dan acara yang gagal dalam semua upaya pemrosesan. Atau, Anda dapat mengonfigurasi antrian Amazon SQS standar atau topik Amazon SNS standar sebagai antrian huruf mati untuk peristiwa yang dibuang. Untuk antrean dead-letter, Lambda hanya mengirimkan konten acara, tanpa perincian tentang responsnya.

Jika Lambda tidak dapat mengirim catatan ke tujuan yang telah Anda konfigurasikan, Lambda akan mengirimkan `DestinationDeliveryFailures` metrik ke Amazon. CloudWatch Hal ini dapat terjadi jika konfigurasi Anda menyertakan jenis tujuan yang tidak didukung, seperti antrean Amazon SQS FIFO atau topik Amazon SNS FIFO. Kesalahan pengiriman juga dapat terjadi karena kesalahan izin dan batas ukuran. Untuk informasi selengkapnya tentang metrik pemanggilan Lambda, lihat. [Metrik invokasi](monitoring-metrics-types.md#invocation-metrics)

**catatan**  
Untuk mencegah fungsi memicu, Anda dapat mengatur konkurensi cadangan fungsi ke nol. [Saat Anda menyetel konkurensi cadangan ke nol untuk fungsi yang dipanggil secara asinkron, Lambda mulai mengirim peristiwa baru ke antrian [huruf mati yang dikonfigurasi atau tujuan peristiwa yang](#invocation-dlq) gagal, tanpa mencoba lagi.](#invocation-async-destinations) Untuk memproses peristiwa yang dikirim saat konkurensi cadangan disetel ke nol, Anda harus menggunakan peristiwa dari antrian surat mati atau tujuan acara yang gagal.

## Menambahkan tujuan
<a name="invocation-async-destinations"></a>

Untuk menyimpan catatan pemanggilan asinkron, tambahkan tujuan ke fungsi Anda. Anda dapat memilih untuk mengirim pemanggilan yang berhasil atau gagal ke tujuan. Setiap fungsi dapat memiliki beberapa tujuan, sehingga Anda dapat mengonfigurasi tujuan terpisah untuk acara yang berhasil dan gagal. Setiap catatan yang dikirim ke tujuan adalah dokumen JSON dengan rincian tentang pemanggilan. Seperti pengaturan penanganan kesalahan, Anda dapat mengonfigurasi tujuan pada fungsi, versi fungsi, atau alias.

**Tip**  
Anda juga dapat menyimpan catatan pemanggilan yang gagal untuk jenis pemetaan sumber peristiwa berikut: [Amazon Kinesis, Amazon DynamoDB,](kinesis-on-failure-destination.md#kinesis-on-failure-destination-console) [dan Apache Kafka (Amazon MSK](services-dynamodb-errors.md) [dan Apache Kafka](kafka-on-failure.md#kafka-onfailure-destination) yang dikelola sendiri).<a name="destinations-permissions"></a>

Tabel berikut mencantumkan tujuan yang didukung untuk catatan pemanggilan asinkron. Agar Lambda berhasil mengirim catatan ke tujuan yang Anda pilih, pastikan [peran eksekusi](lambda-intro-execution-role.md) fungsi Anda juga berisi izin yang relevan. Tabel ini juga menjelaskan bagaimana setiap tipe tujuan menerima catatan pemanggilan JSON.


| Jenis tujuan | Izin yang diperlukan | Format JSON khusus tujuan | 
| --- | --- | --- | 
|  Antrean Amazon SQS  |  [persegi: SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)  |  Lambda melewati catatan doa sebagai ke tujuan. `Message`  | 
|  Topik Amazon SNS  |  [SNS: Publikasikan](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)  |  Lambda melewati catatan doa sebagai ke tujuan. `Message`  | 
|  Bucket Amazon S3 (hanya pada kegagalan)  |  [s3: PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) [s3: ListBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/invocation-async-retain-records.html)  | 
|  Fungsi Lambda  |  [lambda: InvokeFunction](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)  |  Lambda meneruskan catatan pemanggilan sebagai muatan ke fungsi.  | 
|  EventBridge  |  [peristiwa: PutEvents](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/invocation-async-retain-records.html)  | 

**catatan**  
Untuk tujuan Amazon S3, jika Anda telah mengaktifkan enkripsi pada bucket menggunakan kunci KMS, fungsi Anda juga memerlukan izin [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html):. GenerateDataKey

**penting**  
Saat menggunakan Amazon SNS sebagai tujuan, ketahuilah bahwa Amazon SNS memiliki batas ukuran pesan maksimum 256 KB. Jika payload pemanggilan asinkron Anda mendekati 1 MB, catatan pemanggilan (yang menyertakan muatan asli ditambah metadata tambahan) dapat melebihi batas Amazon SNS dan menyebabkan kegagalan pengiriman. Pertimbangkan untuk menggunakan tujuan Amazon SQS atau Amazon S3 untuk muatan yang lebih besar.

Langkah-langkah berikut menjelaskan cara mengonfigurasi tujuan untuk suatu fungsi menggunakan konsol Lambda dan. AWS CLI

------
#### [ Console ]

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi.

1. Di bagian **Gambaran umum fungsi**, pilih **Tambahkan tujuan**.

1. Untuk **Sumber**, pilih **Invokasi asinkron**.

1. Untuk **Kondisi**, pilih dari opsi berikut:
   + **Kegagalan** – Kirimkan catatan saat peristiwa gagal dalam semua upaya pemrosesan atau melebihi waktu maksimum.
   + **Sukses** – Kirimkan catatan saat fungsi berhasil memproses invokasi asinkron.

1. Untuk **Jenis tujuan**, pilih jenis sumber daya yang menerima catatan invokasi.

1. Untuk **Tujuan**, pilih sumber daya.

1. Pilih **Simpan**.

------
#### [ AWS CLI ]

Untuk mengkonfigurasi tujuan menggunakan AWS CLI, jalankan perintah [update-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html). Contoh berikut mengonfigurasi Lambda untuk mengirim catatan ke antrian SQS standar `destination` bernama saat peristiwa tidak dapat diproses.

```
aws lambda update-function-event-invoke-config \
  --function-name my-function \
  --destination-config '{"OnFailure":{"Destination": "arn:aws:sqs:us-east-1:123456789012:destination"}}'
```

------

### Praktik terbaik keamanan untuk tujuan Amazon S3
<a name="s3-destination-security"></a>

Menghapus bucket S3 yang dikonfigurasi sebagai tujuan tanpa menghapus tujuan dari konfigurasi fungsi Anda dapat menimbulkan risiko keamanan. Jika pengguna lain mengetahui nama bucket tujuan Anda, mereka dapat membuat ulang bucket di bucket tersebut. Akun AWS Catatan pemanggilan yang gagal akan dikirim ke bucket mereka, yang berpotensi mengekspos data dari fungsi Anda.

**Awas**  
Untuk memastikan bahwa catatan pemanggilan dari fungsi Anda tidak dapat dikirim ke bucket S3 di bucket lain Akun AWS, tambahkan kondisi ke peran eksekusi fungsi Anda yang membatasi `s3:PutObject` izin ke bucket di akun Anda. 

Contoh berikut menunjukkan kebijakan IAM yang membatasi `s3:PutObject` izin fungsi Anda ke bucket di akun Anda. Kebijakan ini juga memberi Lambda `s3:ListBucket` izin yang dibutuhkan untuk menggunakan bucket S3 sebagai tujuan.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3BucketResourceAccountWrite",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::*/*",
                "arn:aws:s3:::*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:ResourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

Untuk menambahkan kebijakan izin ke peran eksekusi fungsi Anda menggunakan Konsol Manajemen AWS atau AWS CLI, lihat instruksi dalam prosedur berikut:

------
#### [ Console ]

**Untuk menambahkan kebijakan izin ke peran eksekusi fungsi (konsol)**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi Lambda yang peran eksekusinya ingin Anda modifikasi.

1. Di tab **Konfigurasi**, pilih **Izin**.

1. Di tab **Peran eksekusi**, pilih **nama Peran** fungsi Anda untuk membuka halaman konsol IAM peran.

1. Tambahkan kebijakan izin ke peran dengan melakukan hal berikut:

   1. Di panel **Kebijakan izin**, pilih **Tambahkan izin**, lalu pilih **Buat** kebijakan sebaris.

   1. Di **Editor kebijakan**, pilih **JSON**.

   1. Rekatkan kebijakan yang ingin Anda tambahkan ke editor (ganti JSON yang ada), lalu pilih **Berikutnya**.

   1. Di bawah **Detail kebijakan**, masukkan **nama Kebijakan**.

   1. Pilih **Buat kebijakan**.

------
#### [ AWS CLI ]

**Untuk menambahkan kebijakan izin ke peran eksekusi fungsi (CLI)**

1. Buat dokumen kebijakan JSON dengan izin yang diperlukan dan simpan di direktori lokal.

1. Gunakan perintah IAM `put-role-policy` CLI untuk menambahkan izin ke peran eksekusi fungsi Anda. Jalankan perintah berikut dari direktori tempat Anda menyimpan dokumen kebijakan JSON dan ganti nama peran, nama kebijakan, dan dokumen kebijakan dengan nilai Anda sendiri.

   ```
   aws iam put-role-policy \
   --role-name my_lambda_role \
   --policy-name LambdaS3DestinationPolicy \
   --policy-document file://my_policy.json
   ```

------

### Contoh catatan pemanggilan
<a name="destination-example-record"></a>

Ketika pemanggilan cocok dengan kondisi, Lambda mengirimkan [dokumen JSON](#destinations-permissions) dengan rincian tentang pemanggilan ke tujuan. Contoh berikut menunjukkan catatan invokasi untuk peristiwa yang gagal dalam tiga upaya pemrosesan karena kesalahan fungsi.

**Example**  

```
{
    "version": "1.0",
    "timestamp": "2019-11-14T18:16:05.568Z",
    "requestContext": {
        "requestId": "e4b46cbf-b738-xmpl-8880-a18cdf61200e",
        "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
        "condition": "RetriesExhausted",
        "approximateInvokeCount": 3
    },
    "requestPayload": {
        "ORDER_IDS": [
            "9e07af03-ce31-4ff3-xmpl-36dce652cb4f",
            "637de236-e7b2-464e-xmpl-baf57f86bb53",
            "a81ddca6-2c35-45c7-xmpl-c3a03a31ed15"
        ]
    },
    "responseContext": {
        "statusCode": 200,
        "executedVersion": "$LATEST",
        "functionError": "Unhandled"
    },
    "responsePayload": {
        "errorMessage": "RequestId: e4b46cbf-b738-xmpl-8880-a18cdf61200e Process exited before completing request"
    }
}
```

Catatan invokasi berisi perincian tentang peristiwa, respons, dan alasan mengapa catatan dikirim.

### Menelusuri permintaan ke tujuan
<a name="destinations-tracing"></a>

Anda dapat menggunakan AWS X-Ray untuk melihat tampilan terhubung dari setiap permintaan saat antrian, diproses oleh fungsi Lambda, dan diteruskan ke layanan tujuan. Saat Anda mengaktifkan penelusuran X-Ray untuk fungsi atau layanan yang memanggil fungsi, Lambda menambahkan header X-Ray ke permintaan dan meneruskan header ke layanan tujuan. Jejak dari layanan hulu secara otomatis ditautkan ke jejak dari fungsi Lambda hilir dan layanan tujuan, menciptakan end-to-end tampilan seluruh aplikasi. Untuk informasi lebih lanjut tentang penelusuran, lihat[Visualisasikan pemanggilan fungsi Lambda menggunakan AWS X-Ray](services-xray.md).

## Menambahkan antrian huruf mati
<a name="invocation-dlq"></a>

Sebagai alternatif untuk [tujuan kegagalan](#invocation-async-destinations), Anda dapat mengonfigurasi fungsi Anda dengan antrean dead-letter untuk menyimpan kejadian yang telah dihapus untuk pemrosesan lebih lanjut. Antrean dead-letter juga berfungsi sama seperti tujuan kegagalan dalam kondisi di mana ini digunakan saat suatu kejadian gagal dalam semua upaya pemrosesan atau kedaluwarsa tanpa diproses. Namun, Anda hanya dapat menambah atau menghapus antrian huruf mati di tingkat fungsi. Versi fungsi menggunakan pengaturan antrian huruf mati yang sama dengan versi yang tidak dipublikasikan (\$1LATEST). Tujuan kegagalan juga mendukung target tambahan dan mencakup perincian tentang respons fungsi dalam catatan invokasi.

Untuk memproses ulang peristiwa dalam antrian huruf mati, Anda dapat mengaturnya sebagai sumber [peristiwa untuk](invocation-eventsourcemapping.md) fungsi Lambda Anda. Atau, Anda dapat mengambil acara secara manual.

Anda dapat memilih antrian standar Amazon SQS atau topik standar Amazon SNS untuk antrian surat mati Anda. Antrian FIFO dan topik FIFO Amazon SNS tidak didukung.
+ [Antrean Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html) – Antrean yang menahan kejadian yang gagal hingga terjadi. Pilih antrian standar Amazon SQS jika Anda mengharapkan satu entitas, seperti fungsi Lambda atau CloudWatch alarm, untuk memproses peristiwa yang gagal. Untuk informasi selengkapnya, lihat [Menggunakan Lambda dengan Amazon SQS](with-sqs.md).
+ [Topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/gsg/CreateTopic.html) – Topik menyampaikan peristiwa yang gagal ke satu tujuan atau lebih. Pilih topik standar Amazon SNS jika Anda mengharapkan beberapa entitas bertindak atas peristiwa yang gagal. Misalnya, Anda dapat mengonfigurasi topik untuk mengirim peristiwa ke alamat email, fungsi Lambda, titik akhir and/or HTTP. Untuk informasi selengkapnya, lihat [Memanggil fungsi Lambda dengan notifikasi Amazon SNS](with-sns.md).

Untuk mengirim acara ke antrean atau topik, fungsi Anda memerlukan izin tambahan. Tambahkan kebijakan dengan [izin yang diperlukan](#destinations-permissions) ke [peran eksekusi](lambda-intro-execution-role.md) fungsi Anda. Jika antrian target atau topik dienkripsi dengan AWS KMS kunci yang dikelola pelanggan, pastikan peran eksekusi fungsi dan kebijakan [berbasis sumber daya kunci berisi izin](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) yang relevan.

Setelah membuat target dan memperbarui peran eksekusi fungsi Anda, tambahkan antrean dead-letter ke fungsi Anda. Anda dapat mengonfigurasi beberapa fungsi untuk mengirimkan peristiwa ke target yang sama.

------
#### [ Console ]

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi.

1. Pilih **Konfigurasi**, lalu pilih**Invokasi asinkron**.

1. Di bagian **Invokasi asinkron**, pilih **Edit**.

1. **Setel **layanan antrian Dead-letter** ke Amazon SQS **atau Amazon SNS**.**

1. Pilih antrean atau topik target.

1. Pilih **Simpan**.

------
#### [ AWS CLI ]

Untuk mengkonfigurasi antrian huruf mati dengan AWS CLI, gunakan perintah. [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)

```
aws lambda update-function-configuration \
  --function-name my-function \
  --dead-letter-config TargetArn=arn:aws:sns:us-east-1:123456789012:my-topic
```

------

Lambda mengirimkan peristiwa ke antrean surat mati sebagaimana adanya, dengan informasi tambahan dalam atribut. Anda dapat menggunakan informasi ini untuk mengidentifikasi kesalahan yang dikembalikan fungsi, atau untuk menghubungkan peristiwa dengan log atau jejak AWS X-Ray .

**Atribut pesan antrean surat mati**
+ **RequestID** (String) – ID permintaan invokasi. Permintaan IDs muncul dalam log fungsi. Anda juga dapat menggunakan X-Ray SDK untuk mencatat ID permintaan pada atribut di jejak. Kemudian, Anda dapat mencari jejak berdasarkan ID permintaan di konsol X-Ray.
+ **ErrorCode** (Nomor) – Kode status HTTP.
+ **ErrorMessage** (String) – 1 KB pertama dari pesan kesalahan.

Jika Lambda tidak dapat mengirim pesan ke antrean dead-letter, Lambda akan menghapus acara dan mengeluarkan metrik [DeadLetterErrors](monitoring-metrics-types.md). Ini dapat terjadi karena kurangnya izin, atau jika ukuran total pesan melebihi batasan untuk antrean atau topik target. Misalnya, katakan bahwa notifikasi Amazon SNS dengan ukuran tubuh mendekati 1 MB memicu fungsi yang menghasilkan kesalahan. Dalam hal ini, data peristiwa yang ditambahkan Amazon SNS, dikombinasikan dengan atribut yang ditambahkan Lambda, dapat menyebabkan pesan melebihi ukuran maksimum yang diizinkan dalam antrian huruf mati.

Jika Anda menggunakan Amazon SQS sebagai sumber acara, konfigurasikan antrean dead-letter di Amazon SQS akan mengantre dengan sendirinya dan tidak pada fungsi Lambda. Lihat informasi yang lebih lengkap di [Menggunakan Lambda dengan Amazon SQS](with-sqs.md).