

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

# Pelajari cara mengonfigurasi redrive antrian huruf mati di Amazon SQS
<a name="sqs-configure-dead-letter-queue-redrive"></a>

Gunakan redrive antrian huruf mati untuk memindahkan pesan yang tidak dikonsumsi dari antrian huruf mati ke tujuan lain untuk diproses. Secara default, redrive antrian huruf mati memindahkan pesan dari antrian huruf mati ke antrian sumber. Namun, Anda juga dapat mengonfigurasi antrian lain sebagai tujuan redrive jika kedua antrian adalah tipe yang sama. Misalnya, jika antrian huruf mati adalah antrian FIFO, antrian tujuan redrive harus berupa antrian FIFO juga. Selain itu, Anda dapat mengonfigurasi kecepatan redrive untuk mengatur kecepatan di mana Amazon SQS memindahkan pesan.

**catatan**  
 Ketika pesan dipindahkan dari antrian FIFO ke DLQ FIFO, ID deduplikasi pesan asli akan diganti dengan ID pesan asli. Ini untuk memastikan bahwa deduplikasi DLQ tidak akan mencegah penyimpanan dua pesan independen yang kebetulan berbagi ID deduplikasi. 

 Antrian surat mati menggerakkan ulang pesan sesuai urutan penerimaannya, dimulai dengan pesan tertua. Namun, antrian tujuan menyerap pesan yang digerakkan ulang, serta pesan baru dari produsen lain, sesuai dengan urutan penerimaannya. Misalnya, jika produser mengirim pesan ke antrian FIFO sumber saat secara bersamaan menerima pesan yang digerakkan ulang dari antrian surat mati, pesan yang digerakkan ulang akan terjalin dengan pesan baru dari produser. 

**catatan**  
Tugas redrive mengatur ulang periode retensi. Semua pesan yang digerakkan ulang dianggap pesan baru dengan pesan baru `messageID` dan ditetapkan ke pesan `enqueueTime` yang digerakkan ulang. 

## Mengonfigurasi redrive antrian huruf mati untuk antrean standar yang ada menggunakan Amazon SQS API
<a name="sqs-configure-dead-letter-queue-redrive-API"></a>

 Anda dapat mengonfigurasi redrive antrian huruf mati menggunakan tindakan`StartMessageMoveTask`,`ListMessageMoveTasks`, dan API: `CancelMessageMoveTask` 


| Tindakan API | Deskripsi | 
| --- | --- | 
| [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_StartMessageMoveTask.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_StartMessageMoveTask.html) | Memulai tugas asinkron untuk memindahkan pesan dari antrian sumber tertentu ke antrian tujuan tertentu. | 
| [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListMessageMoveTasks.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListMessageMoveTasks.html) | Mendapat tugas pergerakan pesan terbaru (hingga 10) di bawah antrian sumber tertentu. | 
| [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CancelMessageMoveTask.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CancelMessageMoveTask.html) | Membatalkan tugas pergerakan pesan tertentu. Pergerakan pesan hanya dapat dibatalkan ketika status saat ini sedang BERJALAN. | 

## Mengonfigurasi redrive antrian huruf mati untuk antrean standar yang ada menggunakan konsol Amazon SQS
<a name="sqs-configure-dead-letter-queue-redrive-console"></a>

1. Buka konsol Amazon SQS di. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Di panel navigasi, pilih **Antrian**.

1. Pilih nama antrian yang telah Anda konfigurasikan sebagai antrian huruf [mati](sqs-configure-dead-letter-queue.md).

1. Pilih **Mulai DLQ redrive**.

1. Di bawah **konfigurasi Recrive**, untuk **tujuan Pesan**, lakukan salah satu hal berikut:
   + Untuk mengarahkan ulang pesan ke antrean sumbernya, pilih **Recrive to source queue** (s).
   + Untuk mengarahkan ulang pesan ke antrian lain, pilih **Recrive ke tujuan kustom**. Kemudian, masukkan Nama Sumber Daya Amazon (ARN) dari antrian tujuan yang ada.

1. Di bawah **Pengaturan kontrol kecepatan**, pilih salah satu dari berikut ini:
   + **Sistem dioptimalkan** - Dorong ulang pesan antrian huruf mati dengan jumlah maksimum pesan per detik.
   + **Kecepatan maks khusus** - Dorong ulang pesan antrian huruf mati dengan kecepatan maksimum pesan per detik khusus. Tarif maksimum yang diizinkan adalah 500 pesan per detik. 
     + Disarankan untuk memulai dengan nilai kecil untuk kecepatan maks Kustom dan memverifikasi bahwa antrian sumber tidak kewalahan dengan pesan. Dari sana, secara bertahap tingkatkan nilai kecepatan maks Kustom, terus memantau status antrian sumber.

1. **Setelah Anda selesai mengonfigurasi redrive antrian huruf mati, pilih Recrive messages.**
**penting**  
Amazon SQS tidak mendukung pemfilteran dan modifikasi pesan saat mengarahkan ulang pesan dari antrian huruf mati.  
Tugas redrive antrian huruf mati dapat berjalan maksimal 36 jam. Amazon SQS mendukung maksimal 100 tugas redrive aktif per akun.

1. Jika Anda ingin membatalkan tugas redrive pesan, pada halaman **Detail** untuk antrian Anda, pilih **Batalkan drive ulang DLQ**. Saat membatalkan redrive pesan yang sedang berlangsung, pesan apa pun yang telah berhasil dipindahkan ke antrian tujuan pindahnya akan tetap berada dalam antrean tujuan.

## Mengkonfigurasi izin antrian untuk redrive antrian huruf mati
<a name="sqs-configure-dead-letter-queue-redrive-permissions"></a>

Anda dapat memberi pengguna akses ke tindakan antrean huruf mati tertentu dengan menambahkan izin ke kebijakan Anda. Izin minimum yang diperlukan untuk redrive antrian huruf mati adalah sebagai berikut:


| Izin Minimum | Metode API yang diperlukan | 
| --- | --- | 
| Untuk memulai redrive pesan | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-dead-letter-queue-redrive.html) | 
| Untuk membatalkan redrive pesan yang sedang berlangsung | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-dead-letter-queue-redrive.html) | 
| Untuk menampilkan status pemindahan pesan | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-dead-letter-queue-redrive.html) | 

**Untuk mengonfigurasi izin untuk pasangan antrian terenkripsi (antrian sumber dengan antrian huruf mati)**

Gunakan langkah-langkah berikut untuk mengonfigurasi izin minimum untuk redrive antrian huruf mati (DLQ):

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Kebijakan**.

1. Buat [https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) baru dan tambahkan izin berikut. Lampirkan kebijakan ke [pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) IAM atau [peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang akan melakukan operasi redrive.
   + Izin untuk DLQ (antrian sumber):
     + `sqs:StartMessageMoveTask`
     + `sqs:CancelMessageMoveTask`
     + `sqs:ListMessageMoveTasks`
     + `sqs:ReceiveMessage`
     + `sqs:DeleteMessage`
     + `sqs:GetQueueAttributes`
     + `sqs:ListDeadLetterSourceQueues`
     + Tentukan **ARN Sumber Daya** dari DLQ (antrian sumber) (misalnya, “arn:aws:sqs::: “). {{<DLQ\_region>}} {{<DLQ\_accountId>}} {{<DLQ\_name>}} 
   + Izin untuk antrian tujuan:
     + `sqs:SendMessage`
     + Tentukan `Resource ARN` antrian tujuan (misalnya, “arn:aws:sqs: “). {{<DestQueue\_region>:<DestQueue\_accountId>:<DestQueue\_name>}}
   + Izin untuk kunci KMS:
     + `kms:Decrypt`(Diperlukan untuk mendekripsi pesan di DLQ.)
     + `kms:GenerateDataKey`(Diperlukan untuk mengenkripsi pesan dalam antrian tujuan.)
       + `Resource` ARNs:
         + ARN dari kunci KMS digunakan untuk mengenkripsi pesan di **DLQ** (antrian sumber) (misalnya, “arn:aws:kms: ::key/ “). {{<region>}} {{<accountId>}} {{<SourceQueueKeyId>}}
         + ARN dari kunci KMS digunakan untuk mengenkripsi pesan dalam **antrian tujuan** (misalnya, “arn:aws:kms: ::key/ “). {{<region>}} {{<accountId>}} {{<DestinationQueueKeyId>}}

   Kebijakan akses Anda harus menyerupai yang berikut:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sqs:StartMessageMoveTask",
                   "sqs:CancelMessageMoveTask",
                   "sqs:ListMessageMoveTasks",
                   "sqs:ReceiveMessage",
                   "sqs:DeleteMessage",
                   "sqs:GetQueueAttributes",
                   "sqs:ListDeadLetterSourceQueues"
               ],
               "Resource": "arn:aws:sqs:us-west-1:123456789012:{{<DLQ_name>}}",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/QueueRole": "source"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": "sqs:SendMessage",
               "Resource": "arn:aws:sqs:us-west-1:123456789012:{{<DestQueue_name>}}",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/QueueRole": "destination"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": [
                   "arn:aws:kms:us-west-1:123456789012:key/{{<SourceQueueKeyId>}}",
                   "arn:aws:kms:us-west-1:123456789012:key/{{<DestQueueKeyId>}}"
               ]
           }
       ]
   }
   ```

------

**Untuk mengonfigurasi izin menggunakan pasangan antrian yang tidak terenkripsi (antrian sumber dengan antrian huruf mati)**

Ikuti langkah-langkah ini untuk mengonfigurasi izin minimum yang diperlukan untuk menangani antrian huruf mati (DLQ) standar **yang tidak terenkripsi**. Izin minimum yang diperlukan adalah *menerima*, *menghapus*, dan *mendapatkan* atribut dari antrian huruf mati, dan *mengirim* atribut ke antrian sumber. 

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Kebijakan**.

1. Buat [https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) baru dan tambahkan izin berikut. Lampirkan kebijakan ke [pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) IAM atau [peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang akan melakukan operasi redrive.
   + Izin untuk DLQ (antrian sumber):
     + `sqs:StartMessageMoveTask`
     + `sqs:CancelMessageMoveTask`
     + `sqs:ListMessageMoveTasks`
     + `sqs:ReceiveMessage`
     + `sqs:DeleteMessage`
     + `sqs:ListDeadLetterSourceQueues`
     + Tentukan **ARN Sumber Daya** dari DLQ (antrian sumber) (misalnya, “arn:aws:sqs::: “). {{<DLQ\_region>}} {{<DLQ\_accountId>}} {{<DLQ\_name>}} 
   + Izin untuk antrian tujuan:
     + `sqs:SendMessage`
     + Tentukan `Resource ARN` antrian tujuan (misalnya, “arn:aws:sqs: “). {{<DestQueue\_region>:<DestQueue\_accountId>:<DestQueue\_name>}}

   Kebijakan akses Anda harus menyerupai yang berikut:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sqs:StartMessageMoveTask",
                   "sqs:CancelMessageMoveTask",
                   "sqs:ListMessageMoveTasks",
                   "sqs:ReceiveMessage",
                   "sqs:DeleteMessage",
                   "sqs:GetQueueAttributes",
                   "sqs:ListDeadLetterSourceQueues"
               ],
               "Resource": "arn:aws:sqs:us-west-1:111122223333:{{<DLQ_name>}}",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/QueueRole": "source"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": "sqs:SendMessage",
               "Resource": "arn:aws:sqs:us-west-1:111122223333:{{<DestQueue_name>}}",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/QueueRole": "destination"
                   }
               }
           }
       ]
   }
   ```

------

## Menggunakan redrive antrian huruf mati dengan kontrol akses titik akhir VPC
<a name="using-dlq-redrive-with-vpc-endpoint-access-control"></a>

 Ketika Anda membatasi akses antrian ke spesifik VPCs menggunakan `aws:sourceVpc` kondisi, Anda perlu membuat pengecualian untuk AWS layanan untuk mengaktifkan fungsionalitas redrive antrian huruf mati (DLQ). Ini karena layanan Amazon SQS beroperasi di luar VPC Anda saat memindahkan pesan. 

 Untuk mengizinkan operasi redrive DLQ, tambahkan `aws:CalledViaLast` kondisi ke kebijakan antrian Anda. Hal ini memungkinkan Amazon SQS untuk melakukan panggilan API atas nama Anda sambil mempertahankan pembatasan VPC untuk akses langsung. 

 Untuk mengizinkan akses terbatas VPC dan redrive DLQ: 

1. Gunakan `aws:CalledViaLast` kondisi dalam kebijakan antrian Anda.

1. Menerapkan kebijakan ke antrian sumber dan DLQ

1. Pertahankan pembatasan VPC untuk akses langsung dari sumber lain

 Berikut adalah contoh kebijakan yang menerapkan persyaratan ini: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "SQSRedriveWithVpcRestriction",
  "Statement": [
    {
      "Sid": "DenyOutsideVPCUnlessAWSService_DestQueue",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "sqs:*",
      "Resource": "arn:aws:sqs:*:111122223333:DestQueue",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpc": "vpc-1234567890abcdef0"
        },
        "StringNotEqualsIfExists": { 
          "aws:CalledViaLast": "sqs.amazonaws.com"
        }
      }
    },
    {
      "Sid": "DenyOutsideVPCUnlessAWSService_DLQ",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "sqs:*",
      "Resource": "arn:aws:sqs:*:111122223333:Dlq",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpc": "vpc-1234567890abcdef0"
        },
        "StringNotEqualsIfExists": { 
          "aws:CalledViaLast": "sqs.amazonaws.com"
        }
      }
    }
  ]
}
```

------
+ Ganti nilai placeholder dengan nilai aktual Anda
+ Kebijakan ini menggunakan pernyataan “tolak” dengan kondisi, yang lebih aman daripada menggunakan pernyataan “izinkan”
+ `StringNotEqualsIfExists`Operator menangani kasus di mana kunci kondisi mungkin tidak ada dalam konteks permintaan. 

 Atau, Anda dapat menggunakan tombol `aws:ViaAWSService` kondisi untuk mengizinkan akses berbasis layanan sambil mempertahankan batasan VPC. Kunci kondisi ini menunjukkan apakah permintaan berasal dari AWS layanan. Berikut adalah contoh kebijakan yang menggunakan `aws:ViaAWSService` alih-alih`aws:CalledViaLast`: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "SQSRedriveWithVpcRestriction",
  "Statement": [
    {
      "Sid": "DenyOutsideVPCUnlessAWSService_DestQueue",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "sqs:*",
      "Resource": "arn:aws:sqs:*:111122223333:DestQueue",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpc": "vpc-1234567890abcdef0"
        },
        "BoolIfExists": {
          "aws:ViaAWSService": "false"
        }
      }
    },
    {
      "Sid": "DenyOutsideVPCUnlessAWSService_DLQ",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "sqs:*",
      "Resource": "arn:aws:sqs:*:111122223333:Dlq",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpc": "vpc-1234567890abcdef0"
        },
        "BoolIfExists": {
          "aws:ViaAWSService": "false"
        }
      }
    }
  ]
}
```

------

 BoolIfExists Operator dengan `aws:ViaAWSService` kondisi memastikan bahwa permintaan diizinkan ketika mereka datang dari layanan sambil mempertahankan pembatasan VPC untuk akses langsung. Ini bisa lebih mudah dipahami dan dipelihara, karena secara langsung memeriksa apakah permintaan dibuat oleh AWS layanan daripada memeriksa layanan mana yang melakukan panggilan terakhir. 

 Untuk informasi selengkapnya tentang kunci kondisi yang digunakan dalam IAM dan kebijakan sumber daya, lihat elemen kebijakan IAM JSON: Kondisi. 