

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

# Pengarsipan dan pemutaran ulang pesan Amazon SNS untuk topik FIFO
<a name="fifo-message-archiving-replay"></a>

## Apa itu pengarsipan dan pemutaran ulang pesan?
<a name="what-is-message-archiving-and-replay"></a>

Amazon SNS menyediakan fitur pengarsipan dan pemutaran ulang pesan tanpa kode, yang dirancang khusus untuk topik FIFO (First-In-First-Out). Fitur ini memungkinkan pemilik topik untuk menyimpan pesan langsung dalam arsip topik hingga 365 hari dan memutarnya kembali ke pelanggan bila diperlukan. Pengarsipan dan pemutaran ulang pesan sangat penting untuk memulihkan pesan yang hilang dan menyinkronkan aplikasi di seluruh wilayah atau sistem dengan mereplikasi status.

Fungsionalitas ini dapat diakses melalui AWS API, SDK CloudFormation, dan Konsol Manajemen AWS.

**Kasus penggunaan kunci**
+ **Pemulihan pesan** - Memulihkan pesan yang hilang karena kegagalan aplikasi hilir dengan memutar ulang ke titik akhir pelanggan.
+ **Replikasi status** - Mereplikasi status sistem yang ada di lingkungan baru dengan memutar ulang pesan yang dimulai dari stempel waktu tertentu.
+ **Koreksi kesalahan** - Kirim ulang pesan yang tidak terjawab selama pemadaman untuk memastikan semua peristiwa diproses dengan benar.

### Komponen pengarsipan dan pemutaran ulang pesan
<a name="message-archiving-and-replay-components"></a>

Kelola pengarsipan dan pemutaran ulang pesan untuk topik Amazon SNS FIFO, termasuk menyetel periode penyimpanan, memantau pesan yang diarsipkan CloudWatch menggunakan, memulai pemutaran ulang melalui atribut langganan, dan memahami izin yang diperlukan untuk memodifikasi dan memulai pemutaran ulang.

**Pengarsipan pesan**
+ Pemilik topik mengaktifkan fitur pengarsipan dan menetapkan periode penyimpanan pesan, yang bisa sampai 365 hari. Untuk lebih lanjut, lihat [Pengarsipan pesan Amazon SNS untuk pemilik topik FIFO](message-archiving-and-replay-topic-owner.md)
+ CloudWatch metrik membantu memantau pesan yang diarsipkan.

**Putar ulang pesan**
+ Pelanggan memulai pemutaran ulang, memilih jendela waktu untuk pesan yang akan diproses ulang ke titik akhir berlangganan. Untuk lebih lanjut lihat,[Ulangan pesan Amazon SNS untuk pelanggan topik FIFO](message-archiving-and-replay-subscriber.md). 
+ Anda mengelola pemutaran ulang melalui atribut berlangganan menggunakan `ReplayPolicy` fitur tersebut.

**Izin yang relevan**
+ **`SetSubscriptionAttributes`**— Diperlukan untuk mengkonfigurasi atau memodifikasi pengaturan replay menggunakan `ReplayPolicy` atribut pada langganan.
+ **`Subscribe`**— Diperlukan untuk melampirkan langganan baru dan memulai replay.
+ **`GetTopicAttributes`**— Memungkinkan melihat properti topik, tetapi inisiasi replay terutama berkisar pada manajemen berlangganan.

# Pengarsipan pesan Amazon SNS untuk pemilik topik FIFO
<a name="message-archiving-and-replay-topic-owner"></a>

Pengarsipan pesan menyediakan kemampuan untuk mengarsipkan satu salinan dari semua pesan yang dipublikasikan ke topik Anda. Anda dapat menyimpan pesan yang dipublikasikan dalam topik Anda dengan mengaktifkan kebijakan arsip pesan pada topik, yang memungkinkan pengarsipan pesan untuk semua langganan yang ditautkan ke topik tersebut. Pesan dapat diarsipkan minimal satu hari hingga maksimal 365 hari.

Biaya tambahan berlaku saat menetapkan kebijakan arsip. Untuk informasi harga, lihat harga [Amazon SNS](https://aws.amazon.com/sns/pricing/).

## Membuat kebijakan arsip pesan menggunakan Konsol Manajemen AWS
<a name="message-archiving-and-replay-topic-console"></a>

Gunakan opsi ini untuk membuat kebijakan arsip pesan baru menggunakan Konsol Manajemen AWS.

1. Masuk ke [Konsol Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Pilih topik atau buat yang baru. Untuk mempelajari lebih lanjut tentang membuat topik, lihat [Membuat topik Amazon SNS](sns-create-topic.md).
**catatan**  
Pengarsipan dan pemutaran ulang pesan Amazon SNS hanya tersedia untuk topik FIFO application-to-application (A2A).

1. Pada halaman **Edit topik**, perluas bagian **Kebijakan arsip**.

1. Aktifkan fitur **Kebijakan arsip**, dan masukkan **jumlah hari** yang ingin Anda arsipkan pesan dalam topik.

1. Pilih **Simpan perubahan**.

**Untuk melihat, mengedit, dan menonaktifkan kebijakan topik pengarsipan pesan**
+ Pada halaman **Detail topik**, **kebijakan Retensi** menampilkan status kebijakan arsip, termasuk jumlah hari yang disetel. Pilih tab **Kebijakan arsip** untuk melihat detail arsip pesan berikut:
  + **Status — Status** arsip dan pemutaran ulang muncul sebagai **aktif** saat kebijakan arsip diterapkan. Status arsip dan pemutaran ulang muncul sebagai **tidak aktif** saat kebijakan arsip disetel ke objek JSON kosong.
  + **Periode penyimpanan pesan** — Jumlah hari yang ditentukan untuk penyimpanan pesan.
  + **Tanggal mulai arsip** — Tanggal dari mana pelanggan dapat memutar ulang pesan.
  + **Pratinjau JSON - Pratinjau** JSON dari kebijakan arsip.
+ (Opsional) Untuk **mengedit** kebijakan arsip, buka halaman ringkasan topik dan pilih **Edit**.
+ (Opsional) Untuk **menonaktifkan** kebijakan arsip, buka halaman ringkasan topik dan pilih **Edit**. Nonaktifkan **Kebijakan Arsip** dan pilih **Simpan perubahan**.
+ (Opsional) Untuk **menghapus** topik dengan kebijakan arsip, Anda harus terlebih dahulu menonaktifkan kebijakan arsip seperti yang dijelaskan sebelumnya.
**penting**  
Untuk menghindari penghapusan pesan yang tidak disengaja, Anda tidak dapat menghapus topik dengan kebijakan arsip pesan aktif. Kebijakan arsip pesan topik harus dinonaktifkan sebelum topik dapat dihapus. Saat Anda menonaktifkan kebijakan arsip pesan, Amazon SNS akan menghapus semua pesan yang diarsipkan. Saat menghapus topik, langganan dihapus, dan pesan apa pun yang sedang transit mungkin tidak terkirim.

## Membuat kebijakan arsip pesan menggunakan API
<a name="message-archiving-and-replay-topic-api"></a>

Untuk membuat kebijakan arsip pesan menggunakan API, Anda perlu menambahkan atribut `ArchivePolicy` ke topik Anda. Anda dapat mengatur `ArchivePolicy` menggunakan tindakan API `CreateTopic` dan`SetTopicAttributes`. `ArchivePolicy`memiliki nilai tunggal,`MessageRetentionPeriod`, yang mewakili jumlah hari Amazon SNS menyimpan pesan. Untuk mengaktifkan pengarsipan pesan untuk topik Anda, setel `MessageRetentionPeriod` ke nilai integer lebih besar dari nol. Misalnya, untuk menyimpan pesan dalam arsip Anda selama 30 hari, setel `ArchivePolicy` ke:

```
{
    "ArchivePolicy": {
        "MessageRetentionPeriod": "30"
    }
}
```

Untuk menonaktifkan pengarsipan pesan untuk topik Anda, dan menghapus arsip, batalkan pengaturan`ArchivePolicy`, sebagai berikut:

```
{}
```

## Membuat kebijakan arsip pesan menggunakan SDK
<a name="message-archiving-and-replay-topic-sdk"></a>

Untuk menggunakan AWS SDK, Anda harus mengonfigurasinya dengan kredensil Anda. Untuk informasi selengkapnya, lihat [Berbagi `config` dan `credentials` file](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) di *Panduan Referensi Alat AWS SDKs dan Alat*.

Contoh kode berikut menunjukkan cara mengatur topik Amazon SNS `ArchivePolicy` untuk menyimpan semua pesan yang dipublikasikan ke topik selama 30 hari.

```
// Specify the ARN of the Amazon SNS topic to set the ArchivePolicy for.
String topicArn =
    "arn:aws:sns:us-east-2:123456789012:MyArchiveTopic.fifo";

// Set the MessageRetentionPeriod to 30 days for the ArchivePolicy.
String archivePolicy =
    "{\"MessageRetentionPeriod\":\"30\"}";

// Set the ArchivePolicy for the Amazon SNS topic
SetTopicAttributesRequest request = new SetTopicAttributesRequest()
    .withTopicArn(topicArn)
    .withAttributeName("ArchivePolicy")
    .withAttributeValue(archivePolicy);
sns.setTopicAttributes(request);
```

## Membuat kebijakan arsip pesan menggunakan CloudFormation
<a name="message-archiving-and-replay-topic-cfn"></a>

Untuk membuat kebijakan arsip menggunakan CloudFormation lihat [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html)di *Panduan AWS CloudFormation Pengguna*.

## Berikan akses ke arsip terenkripsi
<a name="message-archiving-and-replay-topic-kms"></a>

Sebelum pelanggan dapat mulai memutar ulang pesan dari topik terenkripsi, Anda harus menyelesaikan langkah-langkah berikut. Karena pesan sebelumnya diputar ulang, Amazon SNS perlu `Decrypt` disediakan akses ke kunci KMS yang digunakan untuk mengenkripsi pesan dalam arsip.

1. Saat Anda mengenkripsi pesan dengan kunci KMS dan menyimpannya dalam topik, Anda harus memberi Amazon SNS kemampuan untuk mendekripsi pesan ini melalui Kebijakan Utama. Untuk lebih lanjut, lihat[Berikan izin dekripsi ke Amazon SNS](#message-archiving-and-replay-topic-decrypt-permissions).

1. Aktifkan AWS KMS untuk Amazon SNS. Untuk lebih lanjut, lihat[Mengkonfigurasi izin AWS KMS](sns-key-management.md#sns-what-permissions-for-sse).

**penting**  
Saat Anda menambahkan bagian baru ke kebijakan kunci KMS Anda, jangan ubah bagian yang ada dalam kebijakan. Jika enkripsi diaktifkan pada suatu topik, dan kunci KMS dinonaktifkan atau dihapus, atau kebijakan kunci KMS tidak dikonfigurasi dengan benar untuk Amazon SNS, Amazon SNS tidak dapat memutar ulang pesan ke pelanggan Anda. 

### Berikan izin dekripsi ke Amazon SNS
<a name="message-archiving-and-replay-topic-decrypt-permissions"></a>

Agar Amazon SNS dapat mengakses pesan terenkripsi dari dalam arsip topik Anda dan memutarnya kembali ke titik akhir berlangganan, Anda harus mengaktifkan prinsip layanan Amazon SNS untuk mendekripsi pesan ini.

Berikut ini adalah contoh kebijakan yang diperlukan untuk mengizinkan prinsipal layanan Amazon SNS mendekripsi pesan yang disimpan selama pemutaran ulang pesan historis dari dalam topik Anda.

```
{
    "Sid": "Allow SNS to decrypt archived messages",
    "Effect": "Allow",
    "Principal": {
        "Service": "sns.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
    ],
    "Resource": "*"
}
```

## Pantau metrik arsip pesan menggunakan Amazon CloudWatch
<a name="message-archiving-and-replay-topic-cloudwatch"></a>

Anda dapat memantau pesan yang diarsipkan menggunakan Amazon CloudWatch menggunakan metrik berikut. Agar diberi tahu tentang anomali pada beban kerja Anda dan membantu menghindari dampak, Anda dapat mengonfigurasi CloudWatch alarm Amazon pada metrik ini. Untuk detail selengkapnya, lihat [Pencatatan dan Pemantauan di Amazon SNS](sns-logging-monitoring.md).


| Metrik | Deskripsi | 
| --- | --- | 
|  **ApproximateNumberOfMessagesArchived**  |  Menyediakan pemilik topik dengan jumlah agregat pesan yang diarsipkan dalam arsip topik, pada resolusi 60 menit.  | 
|  **ApproximateNumberOfBytesArchived**   |  Menyediakan pemilik topik dengan jumlah agregat byte yang diarsipkan, di semua pesan dalam arsip topik, pada resolusi 60 menit.  | 
|  **NumberOfMessagesArchiveProcessing**   |  Memberikan pemilik topik dengan jumlah pesan yang disimpan ke arsip topik selama interval dalam resolusi 1 menit.  | 
|  **NumberOfBytesArchiveProcessing**  |  Menyediakan pemilik topik dengan jumlah agregat byte yang disimpan ke arsip topik selama interval dalam resolusi 1 menit.  | 

`GetTopicAttributes`API memiliki `BeginningArchiveTime` properti, yang mewakili stempel waktu tertua di mana pelanggan dapat memulai pemutaran ulang. Berikut ini merupakan contoh respons untuk tindakan API ini:

```
{
 "ArchivePolicy": {
    "MessageRetentionPeriod": "<integer>"
  },
  "BeginningArchiveTime": "<timestamp>",
  ...
}
```

# Ulangan pesan Amazon SNS untuk pelanggan topik FIFO
<a name="message-archiving-and-replay-subscriber"></a>

Pemutaran ulang Amazon SNS memungkinkan pelanggan topik untuk mengambil dan mengirimkan ulang pesan yang diarsipkan dari penyimpanan data topik ke titik akhir berlangganan.
+ Pesan dapat diputar ulang segera setelah langganan dibuat.
+ Pesan yang diputar ulang mempertahankan konten yang sama,`MessageId`, dan `Timestamp` seperti aslinya.
+ Pesan menyertakan `Replayed` atribut untuk menunjukkan bahwa itu adalah pesan yang diputar ulang.
+ Untuk memutar ulang hanya pesan tertentu, terapkan kebijakan filter ke langganan Anda.

Untuk informasi lebih lanjut tentang memfilter pesan, lihat[Filter pesan yang diputar ulang](#message-archiving-and-replay-subscription-filtering).

## Membuat kebijakan pemutaran ulang pesan menggunakan Konsol Manajemen AWS
<a name="message-archiving-and-replay-replaying-console"></a>

Gunakan opsi ini untuk membuat kebijakan replay baru menggunakan. Konsol Manajemen AWS

1. Masuk ke [Konsol Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Pilih langganan topik atau buat yang baru. Untuk mempelajari lebih lanjut tentang membuat langganan, lihat[Membuat langganan ke topik Amazon SNS](sns-create-subscribe-endpoint-to-topic.md).

1. **Untuk memulai pemutaran ulang pesan, buka drop-down Putar ulang dan pilih **Mulai replay**.**

1. Dari modal **Replay timeframe**, buat pilihan berikut:

   1. **Pilih tanggal dan waktu mulai putar ulang - Pilih **tanggal**** (YYYY/MM/DDformat) dan **waktu** (format 24 jam jam: mm: ss) dari mana Anda ingin mulai memutar ulang pesan yang diarsipkan. Waktu mulai harus lebih lambat dari awal perkiraan waktu arsip.

   1. **(Opsional) Pilih tanggal dan waktu akhir pemutaran ulang** - Pilih **tanggal** (YYYY/MM/DDformat) dan **waktu** (format 24 jam jam: mm: ss) saat Anda ingin berhenti memutar ulang pesan yang diarsipkan.

   1. Pilih **Mulai putar ulang**.

1. (Opsional) Untuk **menghentikan pemutaran** ulang pesan, buka halaman **Detail langganan** dan pilih **Hentikan pemutaran ulang dari tarik-turun Putar** **Ulang**.

1. (Opsional) Untuk **memantau** metrik pemutaran ulang pesan dari dalam alur kerja ini menggunakan CloudWatch, lihat. [Pantau metrik pemutaran ulang pesan menggunakan Amazon CloudWatch](#message-archiving-and-replay-subscription-cloudwatch)

**Untuk melihat dan mengedit kebijakan pemutaran ulang pesan**

Anda dapat melakukan tindakan berikut dari halaman **Detail langganan**:
+ Untuk **melihat** status pemutaran ulang pesan, bidang **status Putar ulang** menampilkan nilai berikut:
  + **Selesai** — Putar ulang telah berhasil mengirim ulang semua pesan, dan sekarang mengirimkan pesan yang baru diterbitkan.
  + **Sedang berlangsung** - Putar ulang saat ini memutar ulang pesan yang dipilih.
  + **Gagal** - Pemutaran ulang tidak dapat diselesaikan.
  + **Tertunda** - Status default saat pemutaran ulang dimulai.
+ (Opsional) Untuk **mengubah** kebijakan pemutaran ulang pesan, buka halaman **Detail langganan** dan pilih **Mulai memutar ulang dari tarik-turun Putar** **Ulang**. Memulai replay akan menggantikan replay yang ada.

## Menambahkan kebijakan pemutaran ulang ke langganan menggunakan API
<a name="message-archiving-and-replay-subscription-api"></a>

Untuk memutar ulang pesan yang diarsipkan, gunakan atribut. `ReplayPolicy` `ReplayPolicy`dapat digunakan dengan tindakan `SetSubscriptionAttributes` API `Subscribe` dan. Kebijakan ini memiliki nilai-nilai berikut:
+ **`StartingPoint`**(Wajib) — Sinyal dari mana harus mulai memutar ulang pesan.
+ **`EndingPoint`**(Opsional) — Sinyal kapan harus berhenti memutar ulang pesan. Jika `EndingPoint` dihilangkan, maka pemutaran ulang akan berlanjut hingga terjebak hingga waktu saat ini.
+ **`PointType`**(Wajib) - Mengatur jenis titik awal dan akhir. Saat ini, nilai yang didukung untuk `PointType` adalah`Timestamp`.

Misalnya, untuk memulihkan dari kegagalan hilir dan mengirim ulang semua pesan selama dua jam pada 1 Oktober 2023, gunakan tindakan `SetSubscriptionAttributes` API untuk menetapkan sebagai `ReplayPolicy` berikut:

```
{
  "PointType":"Timestamp", 
  "StartingPoint":"2023-10-01T10:00:00.000Z", 
  "EndingPoint":"2023-10-01T12:00:00.000Z"
}
```

Untuk memutar ulang semua pesan yang dikirim ke topik per 1 Oktober 2023, dan terus menerima semua pesan yang baru diterbitkan ke topik Anda, gunakan tindakan `SetSubscriptionAttributes` API untuk menyetel langganan Anda sebagai berikut: `ReplayPolicy`

```
{
  "PointType":"Timestamp",
  "StartingPoint":"2023-10-01T00:00:00.000Z"
}
```

Untuk memverifikasi bahwa pesan telah diputar ulang, atribut boolean ditambahkan ke setiap pesan yang `Replayed` diputar ulang.

## Menambahkan kebijakan pemutaran ulang ke langganan menggunakan SDK
<a name="message-replay-sdk"></a>

Untuk menggunakan AWS SDK, Anda harus mengonfigurasinya dengan kredensil Anda. Untuk informasi selengkapnya, lihat [Berbagi `config` dan `credentials` file](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) di *Panduan Referensi Alat AWS SDKs dan Alat*.

Contoh kode berikut menunjukkan cara mengatur langganan untuk mengirim ulang pesan dari arsip topik Amazon SNS FIFO untuk jangka waktu 2 jam pada 1 Oktober 2023. `ReplayPolicy`

```
// Specify the ARN of the Amazon SNS subscription to initiate the ReplayPolicy on.
String subscriptionArn =
    "arn:aws:sns:us-east-2:123456789012:MyArchiveTopic.fifo:1d2a3e9d-7f2f-447c-88ae-03f1c68294da";

// Set the ReplayPolicy to replay messages from the topic's archive 
// for a 2 hour time period on October 1st 2023 between 10am and 12pm UTC.
String replayPolicy =
    "{\"PointType\":\"Timestamp\",\"StartingPoint\":\"2023-10-01T10:00:00.000Z\",\"EndingPoint\":\"2023-10-01T12:00:00.000Z\"}";

// Set the ArchivePolicy for the Amazon SNS topic
SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest()
    .withSubscriptionArn(subscriptionArn)
    .withAttributeName("ReplayPolicy")
    .withAttributeValue(replayPolicy);
sns.setSubscriptionAttributes(request);
```

## Memahami EndingPoint
<a name="message-archiving-and-replay-understanding-endpoint"></a>

Saat Anda `ReplayPolicy` menerapkan langganan Amazon SNS, `EndingPoint` nilainya opsional. Jika tidak `EndingPoint` disediakan, pemutaran ulang akan dimulai dari yang ditentukan `StartingPoint` dan berlanjut hingga mengikuti waktu saat ini, termasuk memproses pesan yang baru diterbitkan. Setelah tertangkap, langganan akan berfungsi sebagai langganan reguler, menerima pesan baru saat dipublikasikan.

Jika `EndingPoint` ditentukan, layanan akan memutar ulang pesan dari `StartingPoint` atas ke `EndingPoint` dan kemudian berhenti. **Tindakan ini secara efektif menghentikan langganan.** Saat langganan dijeda, pesan yang baru diterbitkan tidak akan dikirimkan ke titik akhir berlangganan.

Untuk melanjutkan pengiriman pesan, terapkan yang baru `ReplayPolicy` tanpa memberikan`EndingPoint`, dan atur `StartingPoint` ke titik waktu yang diinginkan untuk terus menerima pesan. Misalnya, untuk melanjutkan langganan dari tempat pemutaran ulang sebelumnya selesai, atur yang baru `StartingPoint` ke yang disediakan `EndingPoint` sebelumnya.

## Filter pesan yang diputar ulang
<a name="message-archiving-and-replay-subscription-filtering"></a>

Pemfilteran pesan Amazon SNS memungkinkan Anda mengontrol pesan yang diputar ulang yang diputar ulang Amazon SNS ke titik akhir pelanggan Anda. Saat pemfilteran pesan dan pengarsipan pesan diaktifkan, Amazon SNS pertama-tama mengambil pesan dari penyimpanan data topik, lalu menerapkan pesan terhadap langganan. `FilterPolicy` Pesan dikirim ke titik akhir berlangganan saat ada kecocokan, jika tidak, pesan akan disaring. Untuk informasi selengkapnya, lihat [Kebijakan filter langganan Amazon SNS](sns-subscription-filter-policies.md).

## Pantau metrik pemutaran ulang pesan menggunakan Amazon CloudWatch
<a name="message-archiving-and-replay-subscription-cloudwatch"></a>

Anda dapat memantau pesan replay menggunakan Amazon CloudWatch menggunakan metrik berikut. Agar diberi tahu tentang anomali pada beban kerja Anda dan membantu menghindari dampak, Anda dapat mengonfigurasi CloudWatch alarm Amazon pada metrik ini. Untuk detail selengkapnya, lihat [Pencatatan dan Pemantauan di Amazon SNS](sns-logging-monitoring.md).


| Metrik | Deskripsi | 
| --- | --- | 
|  **NumberOfReplayedNotificationsDelivered**  |  Menyediakan pelanggan dengan jumlah agregat pesan yang diputar ulang dari arsip topik, pada resolusi 1 menit.  | 
|  **NumberOfReplayedNotificationsFailed**   |  Menyediakan pelanggan dengan jumlah agregat pesan yang diputar ulang yang gagal disampaikan dari arsip topik, pada resolusi 1 menit.  | 