

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

# Menggunakan Amazon SNS untuk pengiriman pesan application-to-application
<a name="sns-system-to-system-messaging"></a>

Amazon SNS menyederhanakan pengiriman pesan application-to-application (A2A) dengan memisahkan penerbit dari pelanggan, yang mendukung layanan mikro, sistem terdistribusi, dan aplikasi tanpa server. Pesan dikirim ke topik Amazon SNS, di mana mereka dapat difilter dan dikirim ke pelanggan seperti Lambda, Amazon SQS, atau titik akhir HTTP. Jika pengiriman gagal, pesan disimpan dalam antrian huruf mati untuk analisis atau pemrosesan ulang lebih lanjut.

![\[Amazon SNS memfasilitasi application-to-application pengiriman pesan dengan memisahkan penerbit dari pelanggan menggunakan topik. Pesan dari sistem atau layanan dirutekan melalui topik Amazon SNS, di mana pesan tersebut dapat difilter dan didistribusikan ke pelanggan seperti Lambda, Amazon SQS, atau sistem email. Jika pengiriman gagal, pesan disimpan dalam antrian huruf mati untuk analisis atau pemrosesan ulang nanti.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/sns-a2a-overview.png)


# Aliran pengiriman Fanout ke Firehose
<a name="sns-firehose-as-subscriber"></a>

Anda dapat berlangganan [aliran pengiriman](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) ke topik Amazon SNS, memungkinkan Anda mengirim pemberitahuan ke titik akhir penyimpanan dan analitik tambahan. Pesan yang dipublikasikan ke topik Amazon SNS dikirim ke aliran pengiriman Firehose berlangganan, dan dikirim ke tujuan seperti yang dikonfigurasi di Firehose. Pemilik langganan dapat berlangganan hingga lima aliran pengiriman Firehose ke topik Amazon SNS. Setiap aliran pengiriman Firehose memiliki [kuota default](https://docs.aws.amazon.com/firehose/latest/dev/limits.html) untuk permintaan dan throughput per detik. Batas ini dapat menghasilkan lebih banyak pesan yang diterbitkan (lalu lintas masuk) daripada yang dikirim (lalu lintas keluar). Ketika ada lebih banyak lalu lintas masuk daripada keluar, langganan Anda dapat mengumpulkan backlog pesan yang besar, menyebabkan latensi pengiriman pesan tinggi. Anda dapat meminta [kenaikan kuota](https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase) berdasarkan tarif publikasi untuk menghindari dampak buruk pada beban kerja Anda. 

Melalui aliran pengiriman Firehose, Anda dapat mengirimkan notifikasi Amazon SNS ke Amazon Simple Storage Service (Amazon S3), Amazon Redshift, OpenSearch Amazon Service (Layanan), dan ke penyedia layanan pihak OpenSearch ketiga seperti Datadog, New Relic, MongoDB, dan Splunk.

Sebagai contoh, Anda dapat menggunakan fungsionalitas ini untuk menyimpan pesan secara permanen yang dikirim ke topik dalam bucket Amazon S3 untuk kepatuhan, arsip, atau tujuan lainnya. Untuk melakukannya, buat aliran pengiriman Firehose dengan tujuan bucket Amazon S3, dan berlangganan aliran pengiriman tersebut ke topik Amazon SNS. Sebagai contoh lain, untuk melakukan analisis pada pesan yang dikirim ke topik Amazon SNS, buat aliran pengiriman dengan tujuan indeks OpenSearch Layanan. Anda kemudian dapat berlangganan aliran pengiriman Firehose ke topik Amazon SNS.

Amazon SNS juga mendukung pencatatan status pengiriman pesan untuk pemberitahuan yang dikirim ke titik akhir Firehose. Lihat informasi yang lebih lengkap di [Status pengiriman pesan Amazon SNS](sns-topic-attributes.md).

# Prasyarat untuk berlangganan aliran pengiriman Firehose ke topik Amazon SNS
<a name="prereqs-kinesis-data-firehose"></a>

Untuk berlangganan aliran pengiriman ke topik SNS, Anda Akun AWS harus memiliki:
+ Topik SNS standar. Untuk informasi selengkapnya, lihat [Membuat topik Amazon SNS](sns-create-topic.md).
+ Aliran pengiriman Firehose. Untuk informasi selengkapnya, lihat [Membuat Stream Pengiriman](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) dan [Memberikan Akses Aplikasi Anda ke Sumber Daya Firehose Anda di Panduan](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#access-to-firehose) Pengembang *Amazon Data Firehose*.
+ Peran AWS Identity and Access Management (IAM) yang mempercayai prinsipal layanan Amazon SNS dan memiliki izin untuk menulis ke aliran pengiriman. Anda akan memasukkan Amazon Resource Name (ARN) peran ini sebagai `SubscriptionRoleARN` saat Anda membuat langganan. Amazon SNS mengasumsikan peran ini, yang memungkinkan Amazon SNS untuk menempatkan catatan dalam aliran pengiriman Firehose.

  Kebijakan contoh berikut ini menunjukkan izin yang direkomendasikan:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "firehose:DescribeDeliveryStream",
          "firehose:ListDeliveryStreams",
          "firehose:ListTagsForDeliveryStream",
          "firehose:PutRecord",
          "firehose:PutRecordBatch"
        ],
        "Resource": [
          "arn:aws:firehose:us-east-1:111111111111:deliverystream/firehose-sns-delivery-stream"
        ],
        "Effect": "Allow"
      }
    ]
  }
  ```

------

  Untuk memberikan izin penuh untuk menggunakan Firehose, Anda juga dapat menggunakan kebijakan AWS terkelola. `AmazonKinesisFirehoseFullAccess` Atau, untuk memberikan izin yang lebih ketat untuk menggunakan Firehose, Anda dapat membuat kebijakan sendiri. Minimal, kebijakan harus memberikan izin untuk menjalankan operasi `PutRecord` pada aliran pengiriman spesifik.

  Dalam semua kasus, Anda juga harus mengedit hubungan kepercayaan untuk menyertakan prinsip layanan Amazon SNS. Contoh:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "sns.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  }
  ```

------

  Untuk informasi selengkapnya tentang membuat peran, lihat [Membuat peran untuk mendelegasikan izin ke AWS layanan di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) Pengguna *IAM*.

Setelah menyelesaikan persyaratan tersebut, Anda dapat [berlangganan aliran pengiriman untuk topik SNS](firehose-endpoints-subscribe.md).

# Berlangganan aliran pengiriman Firehose ke topik Amazon SNS
<a name="firehose-endpoints-subscribe"></a>

[Untuk mengirimkan notifikasi Amazon SNS ke [aliran pengiriman](sns-firehose-as-subscriber.md), pertama-tama pastikan bahwa Anda telah menangani semua prasyarat.](prereqs-kinesis-data-firehose.md) Untuk daftar titik akhir yang didukung, lihat [titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/fh.html) di. *Referensi Umum Amazon Web Services*

**Untuk berlangganan aliran pengiriman Firehose ke suatu topik**

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

1. Di panel navigasi, pilih **Subscriptions** (Langganan).

1. Pada halaman **Berlangganan**, pilih **Buat berlangganan**.

1. Pada halaman **Buat berlangganan**, di bagian **Detail**, lakukan hal berikut ini:

   1. Untuk **ARN topik**, pilih Amazon Resource Name (ARN) dari topik standar.

   1. Untuk **Protokol**, pilih **Firehose**.

   1. Untuk **Endpoint**, pilih ARN aliran pengiriman Firehose yang dapat menerima notifikasi dari Amazon SNS.

   1. Untuk **peran Langganan ARN**, tentukan ARN dari peran AWS Identity and Access Management (IAM) yang Anda buat untuk menulis ke aliran pengiriman Firehose. Untuk informasi selengkapnya, lihat [Prasyarat untuk berlangganan aliran pengiriman Firehose ke topik Amazon SNS](prereqs-kinesis-data-firehose.md).

   1. (Opsional) Untuk menghapus metadata Amazon SNS dari pesan yang diterbitkan, pilih **Aktifkan pengiriman pesan mentah**. Untuk informasi selengkapnya, lihat [Pengiriman pesan mentah Amazon SNS](sns-large-payload-raw-message-delivery.md).

1. (Opsional) Untuk mengkonfigurasi kebijakan filter, perluas bagian **Subscription filter policy (Kebijakan filter langganan)**. Untuk informasi selengkapnya, lihat [Kebijakan filter langganan Amazon SNS](sns-subscription-filter-policies.md).

1. (Opsional) Untuk mengonfigurasi antrean surat mati untuk berlanggana, perluas bagian **Redrive policy (dead-letter queue) (Kebijakan redrive (antrean surat mati))**. Untuk informasi selengkapnya, lihat [Antrian surat mati Amazon SNS](sns-dead-letter-queues.md).

1. Pilih **Create subscription (Buat langganan)**.

Konsol tersebut membuat langganan dan membuka halaman **Details (Detail)** langganan.

# Mengelola pesan Amazon SNS di beberapa tujuan aliran pengiriman
<a name="firehose-working-with-destinations"></a>

[aliran pengiriman](sns-firehose-as-subscriber.md) memungkinkan Anda mengelola pesan Amazon SNS di beberapa tujuan, memungkinkan integrasi dengan Amazon S3, Layanan Amazon, Amazon Redshift, dan titik akhir HTTP untuk penyimpanan OpenSearch , pengindeksan, dan analisis. Dengan mengonfigurasi pemformatan dan pengiriman pesan dengan benar, Anda dapat menyimpan notifikasi Amazon SNS di Amazon S3 untuk diproses nanti, menganalisis data pesan terstruktur menggunakan Amazon Athena, mengindeks pesan untuk pencarian dan visualisasi waktu nyata, dan menyusun arsip OpenSearch di Amazon Redshift untuk kueri lanjutan.

# Menyimpan dan menganalisis pesan Amazon SNS di tujuan Amazon S3
<a name="firehose-s3-destinations"></a>

Topik ini menjelaskan cara streaming pengiriman mempublikasikan data ke Amazon Simple Storage Service (Amazon S3).

![\[Integrasi dan alur kerja layanan Amazon untuk penanganan pesan. Ini menunjukkan bagaimana penerbit mengirim pesan ke topik Amazon SNS, yang kemudian mengirimkan pesan ke beberapa antrian Amazon SQS dan aliran pengiriman Data Firehose. Dari sana, pesan dapat diproses oleh fungsi Lambda atau disimpan secara persisten di bucket Amazon S3.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/firehose-architecture-s3.png)


**Topics**
+ [Memformat pemberitahuan untuk penyimpanan di tujuan Amazon S3](firehose-archived-message-format-S3.md)
+ [Menganalisis pesan yang disimpan di Amazon S3 menggunakan Athena](firehose-message-analysis-s3.md)

# Memformat notifikasi Amazon SNS untuk penyimpanan di tujuan Amazon S3
<a name="firehose-archived-message-format-S3"></a>

Contoh berikut menunjukkan notifikasi Amazon SNS yang dikirim ke bucket Amazon Simple Storage Service (Amazon S3), dengan lekukan agar mudah dibaca.

**catatan**  
Dalam contoh ini, pengiriman pesan mentah dinonaktifkan untuk pesan yang diterbitkan. Ketika pengiriman pesan mentah dinonaktifkan, Amazon SNS menambahkan metadata JSON ke pesan, termasuk properti tersebut:  
`Type`
`MessageId`
`TopicArn`
`Subject`
`Timestamp`
`UnsubscribeURL`
`MessageAttributes`
Untuk informasi selengkapnya tentang pengiriman mentah, lihat [Pengiriman pesan mentah Amazon SNS](sns-large-payload-raw-message-delivery.md).

```
{
    "Type": "Notification",
    "MessageId": "719a6bbf-f51b-5320-920f-3385b5e9aa56",
    "TopicArn": "arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic",     
    "Subject": "My 1st subject",
    "Message": "My 1st body",
    "Timestamp": "2020-11-26T23:48:02.032Z",
    "UnsubscribeURL": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5",
    "MessageAttributes": {
        "myKey1": {
            "Type": "String",
            "Value": "myValue1"
        },
        "myKey2": {
            "Type": "String",
            "Value": "myValue2"
        }
    }
 }
```

Contoh berikut menunjukkan tiga pesan SNS yang dikirim melalui aliran pengiriman ke bucket Amazon S3 yang sama. Buffering diterapkan, dan jeda baris memisahkan setiap pesan.

```
{"Type":"Notification","MessageId":"d7d2513e-6126-5d77-bbe2-09042bd0a03a","TopicArn":"arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic","Subject":"My 1st subject","Message":"My 1st body","Timestamp":"2020-11-27T00:30:46.100Z","UnsubscribeURL":"https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:313276652360:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5","MessageAttributes":{"myKey1":{"Type":"String","Value":"myValue1"},"myKey2":{"Type":"String","Value":"myValue2"}}}
{"Type":"Notification","MessageId":"0c0696ab-7733-5bfb-b6db-ce913c294d56","TopicArn":"arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic","Subject":"My 2nd subject","Message":"My 2nd body","Timestamp":"2020-11-27T00:31:22.151Z","UnsubscribeURL":"https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:313276652360:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5","MessageAttributes":{"myKey1":{"Type":"String","Value":"myValue1"}}}
{"Type":"Notification","MessageId":"816cd54d-8cfa-58ad-91c9-8d77c7d173aa","TopicArn":"arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic","Subject":"My 3rd subject","Message":"My 3rd body","Timestamp":"2020-11-27T00:31:39.755Z","UnsubscribeURL":"https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:313276652360:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5"}
```

# Menganalisis pesan Amazon SNS yang disimpan di Amazon S3 menggunakan Athena
<a name="firehose-message-analysis-s3"></a>

Halaman ini menjelaskan cara menganalisis pesan Amazon SNS yang dikirim melalui aliran pengiriman ke tujuan Amazon Simple Storage Service (Amazon S3).

**Untuk menganalisis pesan SNS yang dikirim melalui aliran pengiriman Firehose ke tujuan Amazon S3**

1. Konfigurasi sumber daya Amazon S3 Anda. Untuk petunjuknya, lihat [Membuat bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon* dan [Bekerja dengan Bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) di Panduan Pengguna *Layanan Penyimpanan Sederhana Amazon*.

1. Konfigurasi aliran pengiriman Anda. Untuk petunjuknya, lihat [Memilih Amazon S3 untuk Tujuan Anda di Panduan](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3) Pengembang *Amazon Data Firehose*.

1. Gunakan [Amazon Athena](https://console.aws.amazon.com/athena) untuk kueri objek Amazon S3 menggunakan SQL standar. Untuk informasi selanjutnya, lihat [Memulai](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) dalam *Panduan Pengguna Amazon Athena*.

## Kueri contoh
<a name="example-s3-query"></a>

Untuk kueri contoh ini, asumsikan berikut ini:
+ Pesan disimpan dalam tabel `notifications` di skema `default`.
+ Tabel `notifications` mencakup kolom `timestamp` dengan jenis `string`.

Kueri berikut ini mengembalikan semua pesan SNS yang diterima dalam rentang tanggal yang ditentukan:

```
SELECT * 
FROM default.notifications
WHERE from_iso8601_timestamp(timestamp) BETWEEN TIMESTAMP '2020-12-01 00:00:00' AND TIMESTAMP '2020-12-02 00:00:00';
```

# Mengintegrasikan pesan Amazon SNS dengan tujuan Layanan Amazon OpenSearch
<a name="firehose-elasticsearch-destinations"></a>

Bagian ini menjelaskan bagaimana aliran pengiriman mempublikasikan data ke OpenSearch Layanan Amazon (OpenSearch Layanan).

![\[Penerbit mengirim pesan ke topik Amazon SNS, yang kemudian mendistribusikan pesan-pesan ini ke beberapa antrian Amazon SQS. Pesan dari antrian ini dapat diproses oleh fungsi Lambda atau dikirim melalui aliran pengiriman Firehose Data ke OpenSearch Layanan Amazon, membuat indeks pesan yang dapat dicari. Pengaturan ini menunjukkan perutean pesan lanjutan dan skenario pemrosesan menggunakan. Layanan AWS\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/firehose-architecture-es.png)


**Topics**
+ [Format pesan yang diarsipkan](firehose-archived-message-format-elasticsearch.md)
+ [Menganalisis pesan](firehose-message-analysis-elasticsearch.md)

# Menyimpan dan memformat Pemberitahuan OpenSearch Amazon SNS dalam indeks Layanan
<a name="firehose-archived-message-format-elasticsearch"></a>

Contoh berikut menunjukkan notifikasi Amazon SNS yang dikirim ke indeks Layanan OpenSearch Amazon OpenSearch (Layanan) yang disebut. `my-index` Indeks ini memiliki bidang filter waktu pada bidang `Timestamp`. Notifikasi SNS ditempatkan di properti `_source` dari muatan.

**catatan**  
Dalam contoh ini, pengiriman pesan mentah dinonaktifkan untuk pesan yang diterbitkan. Ketika pengiriman pesan mentah dinonaktifkan, Amazon SNS menambahkan metadata JSON ke pesan, termasuk properti tersebut:  
`Type`
`MessageId`
`TopicArn`
`Subject`
`Timestamp`
`UnsubscribeURL`
`MessageAttributes`
Untuk informasi selengkapnya tentang pengiriman mentah, lihat [Pengiriman pesan mentah Amazon SNS](sns-large-payload-raw-message-delivery.md).

```
{
  "_index": "my-index",
  "_type": "_doc",
  "_id": "49613100963111323203250405402193283794773886550985932802.0",
  "_version": 1,
  "_score": null,
  "_source": {
    "Type": "Notification",
    "MessageId": "bf32e294-46e3-5dd5-a6b3-bad65162e136",
    "TopicArn": "arn:aws:sns:us-east-1:111111111111:my-topic",
    "Subject": "Sample subject",
    "Message": "Sample message",
    "Timestamp": "2020-12-02T22:29:21.189Z",
    "UnsubscribeURL": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:111111111111:my-topic:b5aa9bc1-9c3d-452b-b402-aca2cefc63c9",
    "MessageAttributes": {
      "my_attribute": {
        "Type": "String",
        "Value": "my_value"
      }
    }
  },
  "fields": {
    "Timestamp": [
      "2020-12-02T22:29:21.189Z"
    ]
  },
  "sort": [
    1606948161189
  ]
}
```

# Menganalisis pesan Amazon SNS untuk tujuan Layanan OpenSearch
<a name="firehose-message-analysis-elasticsearch"></a>

Topik ini menjelaskan cara menganalisis pesan Amazon SNS yang dikirim melalui aliran pengiriman ke tujuan OpenSearch Layanan Amazon (OpenSearch Layanan).

**Untuk menganalisis pesan SNS yang dikirim melalui aliran OpenSearch pengiriman Firehose ke tujuan Layanan**

1. Konfigurasikan sumber daya OpenSearch Layanan Anda. Untuk petunjuk, lihat [Memulai OpenSearch Layanan Amazon](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/es-gsg.html) di *Panduan Pengembang OpenSearch Layanan Amazon*.

1. Konfigurasi aliran pengiriman Anda. Untuk petunjuknya, lihat [Memilih OpenSearch Layanan untuk Tujuan Anda](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-elasticsearch) di Panduan *Pengembang Amazon Data Firehose*.

1. Jalankan kueri menggunakan kueri OpenSearch Layanan dan Kibana. Untuk informasi selengkapnya, lihat [Langkah 3: Cari Dokumen di Domain OpenSearch Layanan](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/es-gsg-search.html) dan [Kibana](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/es-kibana.html) di Panduan *Pengembang OpenSearch Layanan Amazon*.

## Kueri contoh
<a name="example-es-query"></a>

Contoh berikut ini membuat kueri untuk indeks `my-index` untuk semua pesan SNS yang diterima dalam rentang tanggal yang ditentukan:

```
POST https://search-my-domain.us-east-1.es.amazonaws.com/my-index/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "Timestamp": {
              "gte": "2020-12-08T00:00:00.000Z",
              "lte": "2020-12-09T00:00:00.000Z",
              "format": "strict_date_optional_time"
            }
          }
        }
      ]
    }
  }
}
```

# Mengonfigurasi pengiriman dan analisis pesan Amazon SNS di tujuan Amazon Redshift
<a name="firehose-redshift-destinations"></a>

Topik ini menjelaskan cara menyebarkan notifikasi Amazon SNS ke aliran pengiriman, yang kemudian menerbitkan data ke Amazon Redshift. Dengan pengaturan ini, Anda dapat terhubung ke database Amazon Redshift dan menggunakan alat kueri SQL untuk mengambil pesan Amazon SNS yang sesuai dengan kriteria tertentu.

![\[Pesan yang diterbitkan oleh pengirim ke topik Amazon SNS didistribusikan ke beberapa antrian Amazon SQS untuk diproses oleh fungsi Lambda, dan juga dikirim melalui aliran pengiriman Firehose Data ke cluster Amazon Redshift untuk penyimpanan dan analisis di gudang data pesan. Pengaturan ini menunjukkan penanganan pesan yang kuat dan arsitektur pergudangan data menggunakan. Layanan AWS\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/firehose-architecture-rs.png)


**Topics**
+ [Menyusun arsip pesan di tabel Amazon Redshift](firehose-archive-table-structure-redshift.md)
+ [Menganalisis pesan yang disimpan di tujuan Amazon Redshift](firehose-message-analysis-redshift.md)

# Menata arsip pesan Amazon SNS di tabel Amazon Redshift
<a name="firehose-archive-table-structure-redshift"></a>

Untuk titik akhir Amazon Redshift, pesan Amazon SNS diarsipkan sebagai baris dalam tabel. Berikut adalah contoh bagaimana data disimpan:

**catatan**  
Dalam contoh ini, pengiriman pesan mentah dinonaktifkan untuk pesan yang diterbitkan. Ketika pengiriman pesan mentah dinonaktifkan, Amazon SNS menambahkan metadata JSON ke pesan, termasuk properti tersebut:  
`Type`
`MessageId`
`TopicArn`
`Subject`
`Message`
`Timestamp`
`UnsubscribeURL`
`MessageAttributes`
Untuk informasi selengkapnya tentang pengiriman mentah, lihat [Pengiriman pesan mentah Amazon SNS](sns-large-payload-raw-message-delivery.md).  
Meskipun Amazon SNS menambahkan properti ke pesan menggunakan kapitalisasi yang ditampilkan dalam daftar ini, nama kolom di tabel Amazon Redshift muncul dalam semua karakter huruf kecil. Untuk mengubah metadata JSON untuk titik akhir Amazon Redshift, Anda dapat menggunakan perintah `COPY` SQL. Untuk informasi selengkapnya, lihat [Salin dari contoh JSON](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples-copy-from-json) dan [Muat dari data JSON menggunakan opsi 'auto ignorecase'](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#copy-from-json-examples-using-auto-ignorecase) di *Panduan Developer Basis Data Amazon Redshift*.


|  jenis  |  messageid  |  topicarn  |  subjek  |  pesan  |  timestamp  |  unsubscribeurl  |  messageattributes  | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
|  Notifikasi  |  ea544832-a0d8-581d-9275-108243c46103  |  arn:aws:sns:us-east-1:111111111111:my-topic  |  Subjek sampel  |  Pesan sampel  |  2020-12-02T00:33:32.272Z  |  https://sns.us-east-1.amazonaws.com/? Action=Berhenti berlangganan & =arn:aws:sns:us-east- 1:1111111111: SubscriptionArn my-topik:326deeeb-cbf4-45da-b92b-ca77a247813b  |  \$1\$1"my\$1attribute\$1":\$1\$1"Type\$1":\$1"String\$1",\$1"Value\$1":\$1"my\$1value\$1"\$1\$1  | 
|  Notifikasi  |  ab124832-a0d8-581d-9275-108243c46114  |  arn:aws:sns:us-east-1:111111111111:my-topic  |  Subjek sampel 2  |  Pesan sampel 2  |  2020-12-03T00:18:11.129Z  |  https://sns.us-east-1.amazonaws.com/? Action=Berhenti berlangganan & =arn:aws:sns:us-east- 1:1111111111: SubscriptionArn my-topik:326deeeb-cbf4-45da-b92b-ca77a247813b  |  \$1\$1"my\$1attribute2\$1":\$1\$1"Type\$1":\$1"String\$1",\$1"Value\$1":\$1"my\$1value\$1"\$1\$1  | 
|  Notifikasi  |  ce644832-a0d8-581d-9275-108243c46125  |  arn:aws:sns:us-east-1:111111111111:my-topic  |  Subjek sampel 3  |  Pesan sampel 3  |  2020-12-09T00:08:44.405Z  |  https://sns.us-east-1.amazonaws.com/? Action=Berhenti berlangganan & =arn:aws:sns:us-east- 1:1111111111: SubscriptionArn my-topik:326deeeb-cbf4-45da-b92b-ca77a247813b  |  \$1\$1"my\$1attribute3\$1":\$1\$1"Type\$1":\$1"String\$1",\$1"Value\$1":\$1"my\$1value\$1"\$1\$1  | 

Untuk informasi selengkapnya tentang fan out notifikasi ke titik akhir Amazon Redshift, lihat [Mengonfigurasi pengiriman dan analisis pesan Amazon SNS di tujuan Amazon Redshift](firehose-redshift-destinations.md).

# Menganalisis pesan Amazon SNS yang disimpan di tujuan Amazon Redshift
<a name="firehose-message-analysis-redshift"></a>

Topik ini menjelaskan cara menganalisis pesan Amazon SNS yang dikirim melalui aliran pengiriman ke tujuan Amazon Redshift.

**Untuk menganalisis pesan SNS yang dikirim melalui aliran pengiriman Firehose ke tujuan Amazon Redshift**

1. Konfigurasi sumber daya Amazon Redshift. Untuk instruksi, lihat [Memulai dengan Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) di *Panduan Memulai Amazon Redshift*.

1. Konfigurasi aliran pengiriman Anda. Untuk petunjuknya, lihat [Memilih Amazon Redshift untuk Tujuan Anda di Panduan](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-redshift) Pengembang *Amazon Data Firehose*.

1. Jalankan kueri. Untuk informasi selengkapnya, lihat [Menanyakan database menggunakan editor kueri](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor.html) di Panduan Manajemen *Amazon Redshift*.

## Kueri contoh
<a name="example-rs-query"></a>

Untuk kueri contoh ini, asumsikan berikut ini:
+ Pesan disimpan dalam tabel `notifications` di skema `public` default.
+ Properti `Timestamp` dari pesan SNS disimpan dalam kolom `timestamp` tabel dengan jenis data kolom `timestamptz`.
**catatan**  
Untuk mengubah metadata JSON untuk titik akhir Amazon Redshift, Anda dapat menggunakan perintah `COPY` SQL. Untuk informasi selengkapnya, lihat [Salin dari contoh JSON](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples-copy-from-json) dan [Muat dari data JSON menggunakan opsi 'auto ignorecase'](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#copy-from-json-examples-using-auto-ignorecase) di *Panduan Developer Basis Data Amazon Redshift*.

Kueri berikut ini mengembalikan semua pesan SNS yang diterima dalam rentang tanggal yang ditentukan:

```
SELECT *
FROM public.notifications
WHERE timestamp > '2020-12-01T09:00:00.000Z' AND timestamp < '2020-12-02T09:00:00.000Z';
```

# Mengonfigurasi pengiriman pesan Amazon SNS ke tujuan HTTP menggunakan
<a name="firehose-http-destinations"></a>

Topik ini menjelaskan bagaimana aliran pengiriman mempublikasikan data ke titik akhir HTTP.

![\[Penerbit untuk topik Amazon SNS, yang kemudian mendistribusikan pesan ke beberapa antrian Amazon SQS. Pesan-pesan ini diproses oleh fungsi Lambda dan juga dikirim melalui aliran pengiriman Firehose Data ke titik akhir HTTP. Pengaturan ini menampilkan bagaimana Layanan AWS bekerja sama untuk memfasilitasi penanganan pesan dan integrasi dengan layanan HTTP eksternal.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/firehose-architecture-http.png)


**Topics**
+ [Format pemberitahuan untuk pengiriman ke tujuan HTTP](firehose-delivered-message-format-http.md)

# Format notifikasi Amazon SNS untuk pengiriman ke tujuan HTTP
<a name="firehose-delivered-message-format-http"></a>

Berikut adalah contoh badan permintaan HTTP POST dari Amazon SNS, dikirim melalui aliran pengiriman ke titik akhir HTTP. Notifikasi Amazon SNS dikodekan sebagai payload base64 dalam properti records.

**catatan**  
Dalam contoh ini, pengiriman pesan mentah dinonaktifkan untuk pesan yang diterbitkan. Untuk informasi selengkapnya tentang pengiriman mentah, lihat [Pengiriman pesan mentah Amazon SNS](sns-large-payload-raw-message-delivery.md).

```
"body": {
    "requestId": "ebc9e8b2-fce3-4aef-a8f1-71698bf8175f",
    "timestamp": 1606255960435,
    "records": [
      {
        "data": "eyJUeXBlIjoiTm90aWZpY2F0aW9uIiwiTWVzc2FnZUlkIjoiMjFkMmUzOGQtMmNhYi01ZjYxLTliYTItYmJiYWFhYzg0MGY2IiwiVG9waWNBcm4iOiJhcm46YXdzOnNuczp1cy1lYXN0LTE6MTExMTExMTExMTExOm15LXRvcGljIiwiTWVzc2FnZSI6IlNhbXBsZSBtZXNzYWdlIGZvciBBbWF6b24gS2luZXNpcyBEYXRhIEZpcmVob3NlIGVuZHBvaW50cyIsIlRpbWVzdGFtcCI6IjIwMjAtMTEtMjRUMjI6MDc6MzEuNjY3WiIsIlVuc3Vic2NyaWJlVVJMIjoiaHR0cHM6Ly9zbnMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6MTExMTExMTExMTExOm15LXRvcGljOjAxYjY5MTJjLTAwNzAtNGQ4Yi04YjEzLTU1NWJmYjc2ZTdkNCJ9"
      }
    ]
  }
```

# Pengarsipan dan analitik pesan Amazon SNS: Contoh kasus penggunaan untuk platform tiket pesawat
<a name="firehose-example-use-case"></a>

Topik ini menyediakan tutorial untuk kasus penggunaan umum pengarsipan dan analisis pesan Amazon SNS. 

Pengaturan kasus penggunaan ini adalah platform tiket maskapai penerbangan yang beroperasi di lingkungan yang diatur.

1. Platform ini tunduk pada kerangka kerja kepatuhan yang mengharuskan perusahaan untuk mengarsipkan semua penjualan tiket setidaknya selama lima tahun.

1. Untuk memenuhi tujuan kepatuhan pada retensi data, perusahaan berlangganan aliran pengiriman ke topik Amazon SNS yang ada.

1. Tujuan untuk aliran pengiriman adalah bucket Amazon Simple Storage Service (Amazon S3). Dengan konfigurasi ini, semua peristiwa yang diterbitkan untuk topik SNS diarsipkan dalam bucket Amazon S3.

Diagram berikut ini menunjukkan arsitektur konfigurasi ini:

![\[AWS Arsitektur untuk platform tiket penerbangan, yang menggambarkan bagaimana data penjualan tiket diproses dan diarsipkan. Ini menunjukkan aliran data dari fungsi Lambda melalui topik Amazon SNS, yang kemudian mendistribusikan pesan ke antrian Amazon SQS untuk pemrosesan pembayaran dan deteksi penipuan, ditangani oleh masing-masing fungsi Lambda. Data juga dialirkan melalui Data Firehose ke bucket Amazon S3 untuk arsip jangka panjang, mendukung kepatuhan terhadap persyaratan penyimpanan data. Pengaturan ini memungkinkan platform untuk menjalankan analisis terperinci tentang data penjualan tiket menggunakan alat seperti Amazon Athena.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/sns-archiving-use-case.png)


Untuk menjalankan analitik dan mendapatkan wawasan tentang penjualan tiket, perusahaan menjalankan kueri SQL menggunakan Amazon Athena. Sebagai contoh, perusahaan dapat membuat kueri untuk mempelajari tentang tujuan yang paling populer dan selebaran yang paling sering muncul.

Untuk membuat AWS sumber daya untuk kasus penggunaan ini, Anda dapat menggunakan Konsol Manajemen AWS atau CloudFormation templat.

**Topics**
+ [Menyiapkan AWS sumber daya awal untuk pengarsipan pesan dan analitik](firehose-example-initial-resources.md)
+ [Mengatur aliran pengiriman Firehose untuk pengarsipan pesan](firehose-example-create-delivery-stream.md)
+ [Berlangganan aliran pengiriman untuk topik](firehose-example-subscribe-delivery-stream-to-topic.md)
+ [Menguji dan menanyakan konfigurasi untuk manajemen data yang efektif](firehose-example-test-and-query.md)
+ [Mengotomatiskan pengarsipan pesan dengan templat CloudFormation](firehose-example-cfn.md)

# Menyiapkan AWS sumber daya awal untuk pengarsipan dan analitik pesan Amazon SNS
<a name="firehose-example-initial-resources"></a>

Topik ini menjelaskan cara membuat sumber daya yang diperlukan untuk [kasus penggunaan contoh pengarsipan pesan dan analisis](firehose-example-use-case.md):
+ Bucket Amazon Simple Storage Service (Amazon S3)
+ Dua antrean Amazon Simple Queue Service (Amazon SQS)
+ Topik Amazon SNS
+ Dua langganan Amazon SQS untuk topik Amazon SNS

**Untuk membuat sumber daya awal**

1. Buat bucket Amazon S3:<a name="firehose-use-case-create-bucket"></a>

   1. Buka [konsol Amazon S3](https://console.aws.amazon.com/s3/home).

   1. Pilih **Buat bucket**. 

   1. Untuk **Nama bucket**, masukkan nama yang unik secara global. Simpan bidang lainnya sebagai default.

   1. Pilih **Buat bucket**.

   Untuk informasi selengkapnya tentang bucket Amazon S3, lihat [Membuat bucket di](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon dan [Bekerja dengan Bucket Amazon S3 di](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) Panduan Pengguna Layanan Penyimpanan Sederhana* *Amazon*.

1. Buat dua antrean Amazon SQS:

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

   1. Pilih **Buat antrean**.

   1. Untuk **Jenis**, pilih **Standar**.

   1. Untuk **Nama**, masukkan **ticketPaymentQueue**.

   1. Di bawah **Kebijakan akses**, untuk **Pilih metode**, pilih **Lanjutan**.

   1. Dalam kotak kebijakan JSON, tempel kebijakan berikut ini:

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "sns.amazonaws.com"
            },
            "Action": "sqs:SendMessage",
            "Resource": "*",
            "Condition": {
              "ArnEquals": {
                "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:ticketTopic"
              }
            }
          }
        ]
      }
      ```

------

      Dalam kebijakan akses ini, ganti Akun AWS nomor (*123456789012*) dengan nomor Anda sendiri, dan ubah AWS Region (*us-east-1*) sesuai dengan itu.

   1. Pilih **Buat antrean**.

   1. Ulangi langkah tersebut untuk membuat antrean SQS kedua bernama **ticketFraudQueue**.

   Untuk informasi selengkapnya tentang cara membuat antrean SQS, lihat [Membuat antrean Amazon SQS (konsol)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-create-queue.html) di *Panduan Developer Amazon Simple Queue Service*.

1. Buat topik SNS:

   1. Buka [Halaman topik](https://console.aws.amazon.com/sns/home#/topics) dari konsol Amazon SNS.

   1. Pilih **Buat topik**.

   1. Di bawah **Detail**, untuk **Jenis**, pilih **Standar**.

   1. Untuk **Nama**, masukkan **ticketTopic**.

   1. Pilih **Buat topik**.

   Untuk informasi selengkapnya mengenai cara membuat topik SNS, lihat [Membuat topik Amazon SNS](sns-create-topic.md).

1. Berlangganan kedua antrean SQS untuk topik SNS:

   1. Di [konsol Amazon SNS](https://console.aws.amazon.com/sns/home#/topics), pada halaman detail topik **ticketTopic**, pilih **Buat berlangganan**.

   1. Di bawah **Detail**, untuk **Protokol**, pilih **Amazon SQS**.

   1. Untuk **Endpoint**, pilih Amazon Resource Name (ARN) dari **ticketPaymentQueue**antrian.

   1. Pilih **Buat langganan**.

   1. Ulangi langkah-langkah ini untuk membuat langganan kedua menggunakan ARN antrian. **ticketFraudQueue**

      Untuk informasi selengkapnya tentang berlangganan topik SNS, lihat [Membuat langganan ke topik Amazon SNS](sns-create-subscribe-endpoint-to-topic.md). Anda juga dapat berlangganan antrean SQS untuk topik SNS dari konsol Amazon SQS. Untuk informasi selengkapnya, lihat [Berlangganan antrean Amazon SQS untuk topik Amazon SNS (konsol)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-subscribe-queue-sns-topic.html) di *Panduan Developer Amazon Simple Queue Service*.

Anda telah membuat sumber daya awal untuk kasus penggunaan contoh ini. Untuk melanjutkan, lihat [Mengatur aliran pengiriman Amazon Data Firehose untuk pengarsipan pesan Amazon SNS](firehose-example-create-delivery-stream.md).

# Mengatur aliran pengiriman Amazon Data Firehose untuk pengarsipan pesan Amazon SNS
<a name="firehose-example-create-delivery-stream"></a>

Topik ini menjelaskan cara membuat aliran pengiriman Amazon Data Firehose untuk kasus penggunaan [contoh pengarsipan pesan dan analisis](firehose-example-use-case.md).

**Untuk membuat aliran pengiriman Amazon Data Firehose**

1. Buka konsol [layanan Amazon Data Firehose](https://console.aws.amazon.com/kinesis/home).

1. Pilih **Firehose** lalu pilih **Buat aliran pengiriman**.

1. Pada halaman **Aliran pengiriman baru**, untuk **Nama alitran pengiriman**, masukkan **ticketUploadStream**, dan kemudian pilih **Selanjutnya**.

1. Pada halaman **Proses rekaman**, pilih **Selanjutnya**.

1. Pada halaman **Pilih tujuan**, lakukan hal berikut ini:

   1. Untuk **Tujuan**, pilih **Amazon S3**.

   1. Di bawah **Tujuan S3**, untuk **Bucket S3**, pilih bucket S3 yang Anda [buat awalnya](firehose-example-initial-resources.md).

   1. Pilih **Selanjutnya**.

1. Pada halaman **Konfigurasi pengaturan**, untuk **syarat buffer S3**, lakukan hal berikut ini:
   + Untuk **Ukuran buffer**, masukkan **1**.
   + Untuk **Interval buffer**, masukkan **60**.

   Dengan menggunakan nilai tersebut untuk buffer Amazon S3 memungkinkan Anda dengan cepat menguji konfigurasi. Syarat pertama yang dipenuhi memicu pengiriman data ke bucket S3.

1. Pada halaman **Konfigurasi pengaturan**, untuk **Izin**, pilih untuk membuat peran AWS Identity and Access Management (IAM) dengan izin yang diperlukan ditetapkan secara otomatis. Lalu, pilih **Selanjutnya**.

1. Pada halaman **Tinjau**, pilih **Buat aliran pengiriman**.

1. Dari **halaman aliran pengiriman Amazon Data Firehose, pilih aliran pengiriman** yang baru saja Anda buat (). **ticketUploadStream** Pada tab **Detail**, catat Amazon Resource Name (ARN) pengaliran untuk nanti.

Untuk informasi selengkapnya tentang cara membuat aliran pengiriman, lihat [Membuat Aliran Pengiriman Firehose Data Amazon di Panduan](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) Pengembang *Amazon Data Firehose*. Untuk informasi selengkapnya tentang membuat peran IAM, lihat [Membuat peran untuk mendelegasikan izin ke AWS layanan di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) Pengguna *IAM*.

Anda telah membuat aliran pengiriman Firehose dengan izin yang diperlukan. Untuk melanjutkan, lihat [Berlangganan aliran pengiriman Firehose ke topik Amazon SNS](firehose-example-subscribe-delivery-stream-to-topic.md).

# Berlangganan aliran pengiriman Firehose ke topik Amazon SNS
<a name="firehose-example-subscribe-delivery-stream-to-topic"></a>

Topik ini menjelaskan cara membuat sumber daya berikut untuk [kasus penggunaan contoh pengarsipan pesan dan analisis](firehose-example-use-case.md):
+ Peran AWS Identity and Access Management (IAM) yang memungkinkan langganan Amazon SNS untuk menempatkan catatan pada aliran pengiriman.
+ Berlangganan aliran pengiriman Firehose ke topik Amazon SNS.

**Untuk membuat IAM role untuk berlangganan Amazon SNS**

1. Buka [halaman Peran](https://console.aws.amazon.com/iam/home?#/roles) dari konsol IAM.

1. Pilih **Buat peran**.

1. Untuk **Pilih jenis entitas tepercaya**, pilih **layanan AWS **.

1. Untuk **Pilih kasus penggunaan**, pilih **SNS**. Kemudian pilih **Selanjutnya: Izin**.

1. Pilih **Selanjutnya: Tag**.

1. Pilih **Selanjutnya: Tinjau**.

1. Pada halaman **Tinjau**, untuk **Nama peran**, masukkan **ticketUploadStreamSubscriptionRole**. Kemudian pilih **Buat peran**.

1. Saat peran dibuat, pilih namanya (**ticketUploadStreamSubscriptionRole**).

1. Pada halaman **Ringkasan** peran, pilih **Tambahkan kebijakan inline**.

1. Pada halaman **Buat kebijakan**, pilih tab **JSON**, dan kemudian tempel kebijakan berikut ini ke dalam kotak:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "firehose:DescribeDeliveryStream",
                   "firehose:ListDeliveryStreams",
                   "firehose:ListTagsForDeliveryStream",
                   "firehose:PutRecord",
                   "firehose:PutRecordBatch"
               ],
               "Resource": [
                   "arn:aws:firehose:us-east-1:123456789012:deliverystream/ticketUploadStream"
               ],
               "Effect": "Allow"
           }
       ]
   }
   ```

------

   Dalam kebijakan ini, ganti Akun AWS nomor (*123456789012*) dengan nomor Anda sendiri, dan ubah AWS Region (*us-east-1*) sesuai dengan kebijakan tersebut.

1. Pilih **Tinjau kebijakan**.

1. Pada halaman **Tinjau kebijakan**, untuk **Nama**, masukkan **FirehoseSnsPolicy**. Kemudian pilih **Buat kebijakan**.

1. Pada halaman **Ringkasan** peran, catat **ARN Peran** untuk nanti.

Untuk informasi selengkapnya tentang membuat peran IAM, lihat [Membuat peran untuk mendelegasikan izin ke AWS layanan di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) Pengguna *IAM*.

**Untuk berlangganan aliran pengiriman Firehose ke topik SNS**

1. Buka [Halaman topik](https://console.aws.amazon.com/sns/home#/topics) dari konsol Amazon SNS.

1. Pada tab **Berlangganan**, pilih **Buat berlangganan**.

1. Di bawah **Detail**, untuk **Protokol**, pilih****.

1. Untuk **Endpoint**, masukkan Amazon Resource Name (ARN) dari aliran pengiriman **ticketUploadStream**yang Anda buat sebelumnya. Misalnya, masukkan **arn:aws:firehose:us-east-1:123456789012:deliverystream/ticketUploadStream**.

1. Untuk **peran Langganan ARN**, masukkan ARN dari peran **ticketUploadStreamSubscriptionRole**IAM yang Anda buat sebelumnya. Sebagai contoh, masukkan **arn:aws:iam::123456789012:role/ticketUploadStreamSubscriptionRole**.

1. Pilih kotak centang **Aktifkan pengiriman pesan mentah**.

1. Pilih **Buat berlangganan**.

Anda telah membuat IAM role dan berlangganan topik SNS. Untuk melanjutkan, lihat [Menguji dan menanyakan konfigurasi Amazon SNS untuk pengelolaan data yang efektif](firehose-example-test-and-query.md).

# Menguji dan menanyakan konfigurasi Amazon SNS untuk pengelolaan data yang efektif
<a name="firehose-example-test-and-query"></a>

Topik ini menjelaskan cara menguji [kasus penggunaan contoh pengarsipan pesan dan analisis](firehose-example-use-case.md) dengan menerbitkan pesan ke topik Amazon SNS. Instruksi termasuk kueri contoh yang dapat Anda jalankan dan menyesuaikan dengan kebutuhan Anda sendiri.

**Untuk menguji konfigurasi Anda**

1. Buka [Halaman topik](https://console.aws.amazon.com/sns/home#/topics) dari konsol Amazon SNS.

1. Pilih topik **ticketTopic**.

1. Pilih **Terbitkan pesan**.

1. Pada halaman **Terbitkan pesan untuk topik**, masukkan berikut ini untuk isi pesan. Tambahkan karakter baris baru di akhir pesan.

   ```
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 04:15:05","Destination":"Miami","FlyingFrom":"Vancouver","TicketNumber":"abcd1234"}
   ```

   Simpan semua pilihan lain sebagai default mereka.

1. Pilih **Terbitkan pesan**.

   Untuk informasi selengkapnya tentang menerbitkan pesan, lihat [Menerbitkan pesan Amazon SNS](sns-publishing.md).

1. Setelah interval aliran pengiriman 60 detik, buka [konsol Amazon Simple Storage Service (Amazon S3)](https://console.aws.amazon.com/s3/home) dan pilih bucket Amazon S3 yang Anda [buat awalnya](firehose-example-initial-resources.md).

   Pesan yang diterbitkan muncul dalam bucket.

**Untuk kueri data**

1. Buka [konsol Amazon Athena](https://console.aws.amazon.com/athena/home).

1. Jalankan kueri.

   Sebagai contoh, asumsikan bahwa tabel `notifications` di skema `default` berisi data berikut ini:

   ```
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 04:15:05","Destination":"Miami","FlyingFrom":"Vancouver","TicketNumber":"abcd1234"}
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 11:30:15","Destination":"Miami","FlyingFrom":"Omaha","TicketNumber":"efgh5678"}
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 3:30:10","Destination":"Miami","FlyingFrom":"NewYork","TicketNumber":"ijkl9012"}
   {"BookingDate":"2020-12-15","BookingTime":"2020-12-15 12:30:05","Destination":"Delhi","FlyingFrom":"Omaha","TicketNumber":"mnop3456"}
   ```

   Untuk menemukan tujuan teratas, jalankan kueri berikut ini:

   ```
   SELECT destination
   FROM default.notifications
   GROUP BY destination
   ORDER BY count(*) desc
   LIMIT 1;
   ```

   Untuk kueri tiket yang terjual selama tanggal dan rentang waktu tertentu, jalankan kueri seperti berikut ini:

   ```
   SELECT * 
   FROM default.notifications 
   WHERE bookingtime 
     BETWEEN TIMESTAMP '2020-12-15 10:00:00' 
     AND TIMESTAMP '2020-12-15 12:00:00';
   ```

   Anda dapat menyesuaikan kedua kueri sampel untuk kebutuhan Anda sendiri. Untuk informasi selengkapnya tentang menggunakan Athena untuk menjalankan kueri, lihat [Memulai](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) di *Panduan Pengguna Amazon Athena*.

## Membersihkan
<a name="firehose-example-cleanup"></a>

Untuk menghindari menimbulkan biaya penggunaan setelah Anda selesai melakukan pengujian, hapus sumber daya berikut ini yang Anda buat selama tutorial:
+ Berlangganan Amazon SNS
+ Topik Amazon SNS
+ Antrean Amazon Simple Queue Service (Amazon SQS)
+ Buket Amazon S3
+  aliran pengiriman
+ AWS Identity and Access Management (IAM) peran dan kebijakan

# Mengotomatiskan pengarsipan pesan Amazon SNS dengan templat CloudFormation
<a name="firehose-example-cfn"></a>

Untuk mengotomatisasi deployment [pengarsipan pesan dan kasus penggunaan contoh analitik](firehose-example-use-case.md) Amazon SNS, Anda dapat menggunakan templat YAML berikut ini:

```
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Template for creating an SNS archiving use case
Resources:
  ticketUploadStream:
    DependsOn:
    - ticketUploadStreamRolePolicy
    Type: AWS::KinesisFirehose::DeliveryStream
    Properties:
      S3DestinationConfiguration:
        BucketARN: !Sub 'arn:${AWS::Partition}:s3:::${ticketArchiveBucket}'
        BufferingHints:
          IntervalInSeconds: 60
          SizeInMBs: 1
        CompressionFormat: UNCOMPRESSED
        RoleARN: !GetAtt ticketUploadStreamRole.Arn
  ticketArchiveBucket:
    Type: AWS::S3::Bucket
  ticketTopic:
    Type: AWS::SNS::Topic
  ticketPaymentQueue:
    Type: AWS::SQS::Queue
  ticketFraudQueue:
    Type: AWS::SQS::Queue
  ticketQueuePolicy:
    Type: AWS::SQS::QueuePolicy
    Properties:
      PolicyDocument:
        Statement:
          Effect: Allow
          Principal:
            Service: sns.amazonaws.com
          Action:
            - sqs:SendMessage
          Resource: '*'
          Condition:
            ArnEquals:
              aws:SourceArn: !Ref ticketTopic
      Queues:
        - !Ref ticketPaymentQueue
        - !Ref ticketFraudQueue
  ticketUploadStreamSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      TopicArn: !Ref ticketTopic
      Endpoint: !GetAtt ticketUploadStream.Arn
      Protocol: firehose
      SubscriptionRoleArn: !GetAtt ticketUploadStreamSubscriptionRole.Arn
  ticketPaymentQueueSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      TopicArn: !Ref ticketTopic
      Endpoint: !GetAtt ticketPaymentQueue.Arn
      Protocol: sqs
  ticketFraudQueueSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      TopicArn: !Ref ticketTopic
      Endpoint: !GetAtt ticketFraudQueue.Arn
      Protocol: sqs
  ticketUploadStreamRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
        - Sid: ''
          Effect: Allow
          Principal:
            Service: firehose.amazonaws.com
          Action: sts:AssumeRole
  ticketUploadStreamRolePolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: FirehoseticketUploadStreamRolePolicy
      PolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
        - Effect: Allow
          Action:
          - s3:AbortMultipartUpload
          - s3:GetBucketLocation
          - s3:GetObject
          - s3:ListBucket
          - s3:ListBucketMultipartUploads
          - s3:PutObject
          Resource:
          - !Sub 'arn:aws:s3:::${ticketArchiveBucket}'
          - !Sub 'arn:aws:s3:::${ticketArchiveBucket}/*'
      Roles:
      - !Ref ticketUploadStreamRole
  ticketUploadStreamSubscriptionRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - sns.amazonaws.com
          Action:
          - sts:AssumeRole
      Policies:
      - PolicyName: SNSKinesisFirehoseAccessPolicy
        PolicyDocument:
          Version: '2012-10-17		 	 	 '
          Statement:
          - Action:
            - firehose:DescribeDeliveryStream
            - firehose:ListDeliveryStreams
            - firehose:ListTagsForDeliveryStream
            - firehose:PutRecord
            - firehose:PutRecordBatch
            Effect: Allow
            Resource:
            - !GetAtt ticketUploadStream.Arn
```

# Pemberitahuan Fanout Amazon SNS ke fungsi Lambda untuk pemrosesan otomatis
<a name="sns-lambda-as-subscriber"></a>

Amazon SNS terintegrasi dengan AWS Lambda, memungkinkan Anda memicu fungsi Lambda sebagai respons terhadap notifikasi Amazon SNS. Ketika pesan diterbitkan untuk topik SNS yang memiliki fungsi Lambda berlangganan, fungsi Lambda dipanggil dengan muatan pesan yang dipublikasikan. Fungsi Lambda menerima payload pesan sebagai parameter input dan dapat memanipulasi informasi dalam pesan, mempublikasikan pesan ke topik SNS lainnya, atau mengirim pesan ke layanan lain. AWS 

Amazon SNS juga mendukung atribut status pengiriman pesan untuk pemberitahuan pesan yang dikirim ke titik akhir Lambda. Untuk informasi selengkapnya, lihat [Status pengiriman pesan Amazon SNS](sns-topic-attributes.md). 

**Topics**
+ [Prasyarat](lambda-prereq.md)
+ [Berlangganan fungsi ke topik](lambda-console.md)

# Prasyarat untuk mengintegrasikan Amazon SNS dengan fungsi Lambda di seluruh wilayah
<a name="lambda-prereq"></a>

Untuk mengaktifkan fungsi Lambda menggunakan pemberitahuan Amazon SNS, anda memerlukan berikut ini:
+ Fungsi Lambda
+ Topik Amazon SNS

Untuk informasi tentang cara membuat fungsi Lambda untuk digunakan dengan Amazon SNS, lihat [Menggunakan Lambda dengan Amazon SNS](https://docs.aws.amazon.com/lambda/latest/dg/with-sns-example.html). Untuk informasi tentang cara membuat topik Amazon SNS, lihat [Membuat topik](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html).

 Ketika Anda menggunakan Amazon SNS untuk menyampaikan pesan dari opt-in daerah ke daerah yang diaktifkan secara default, Anda harus mengubah kebijakan yang dibuat dalam fungsi AWS Lambda dengan mengganti prinsipal `sns.amazonaws.com` dengan `sns.<opt-in-region>.amazonaws.com`. 

 Misalnya, jika Anda ingin berlangganan fungsi Lambda di US East (N. Virginia) untuk topik SNS di Asia Pacific (Hong Kong), mengubah prinsipal dalam kebijakan fungsi AWS Lambda ke `sns.ap-east-1.amazonaws.com`. Wilayah keikutsertaan mencakup semua wilayah yang diluncurkan setelah 20 Maret 2019, yang meliputi Asia Pacific (Hong Kong), Middle East (Bahrain), UE (Milano), dan Africa (Cape Town). Wilayah yang diluncurkan sebelum 20 Maret 2019 diaktifkan secara default. 

**catatan**  
AWS tidak mendukung pengiriman lintas wilayah ke Lambda dari wilayah yang diaktifkan secara default ke wilayah keikutsertaan. Selain itu, penerusan pesan SNS lintas wilayah dari wilayah penyertaan ke wilayah penyertaan lainnya tidak didukung. 

# Berlangganan fungsi Lambda ke topik Amazon SNS
<a name="lambda-console"></a>

Topik ini menjelaskan cara berlangganan fungsi Lambda ke topik Amazon SNS, memungkinkan fungsi dipicu oleh pesan yang dipublikasikan.

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

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

1. Pada **Topics (Topik)**, pilih sebuah topik.

1. Di bagian **Subscriptions (Berlangganan)**, pilih **Create subscription (Buat langganan)**.

1. Pada halaman **Create subscription (Buat langganan)**, di bagian **Details (Rincian)**, lakukan hal berikut:

   1. Verifikasi **Topik ARN** yang dipilih.

   1. Untuk **Protokol** pilih AWS Lambda.

   1. Untuk **Endpoint (Titik akhir)** masukkan ARN suatu fungsi.

   1. Pilih **Create Subsription (Buat langganan)**.

Ketika pesan diterbitkan untuk topik SNS yang memiliki fungsi Lambda berlangganan, fungsi Lambda dipanggil dengan muatan pesan yang dipublikasikan. Untuk informasi tentang cara menggunakan AWS Lambda Amazon SNS, termasuk tutorial, lihat [Menggunakan AWS Lambda dengan Amazon SNS](https://docs.aws.amazon.com/lambda/latest/dg/with-sns.html).

# Pemberitahuan Fanout Amazon SNS ke antrian Amazon SQS untuk pemrosesan asinkron
<a name="sns-sqs-as-subscriber"></a>

[Amazon SNS](https://aws.amazon.com/sns/) Bekerja sama dengan Amazon Simple Queue Service (Amazon SQS). Layanan ini memberikan manfaat yang berbeda bagi developer. Amazon SNS memungkinkan aplikasi untuk mengirim pesan waktu-kritis ke beberapa pelanggan melalui mekanisme “push”, menghilangkan kebutuhan untuk secara berkala memeriksa atau “poll” pembaruan. Amazon SQS adalah layanan antrean pesan yang digunakan oleh aplikasi terdistribusi untuk bertukar pesan melalui model polling, dan dapat digunakan untuk memisahkan pengiriman dan menerima komponen—tanpa memerlukan setiap komponen yang akan tersedia secara bersamaan. Menggunakan Amazon SNS dan Amazon SQS bersama-sama, pesan dapat dikirim ke aplikasi yang memerlukan pemberitahuan segera dari suatu peristiwa, dan juga bertahan dalam antrean Amazon SQS untuk aplikasi lain untuk memproses di lain waktu. 

Ketika Anda berlangganan antrean Amazon SQS untuk topik Amazon SNS, Anda dapat mempublikasikan pesan ke topik dan Amazon SNS mengirimkan pesan Amazon SQS ke antrian berlangganan. Pesan Amazon SQS berisi subjek dan pesan yang dipublikasikan ke topik bersama dengan metadata tentang pesan dalam dokumen JSON. Pesan Amazon SQS akan terlihat serupa dengan dokumen JSON berikut.

```
{
   "Type" : "Notification",
   "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
   "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
   "Subject" : "Testing publish to subscribed queues",
   "Message" : "Hello world!",
   "Timestamp" : "2012-03-29T05:12:16.901Z",
   "SignatureVersion" : "1",
   "Signature" : "EXAMPLEnTrFPa3...",
   "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
   "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"
}
```

# Berlangganan antrean Amazon SQS ke topik Amazon SNS
<a name="subscribe-sqs-queue-to-sns-topic"></a>

Untuk mengaktifkan topik Amazon SNS untuk mengirim pesan ke antrean Amazon SQS, pilih salah satu dari berikut ini:
+ Gunakan [Konsol Amazon SQS](https://console.aws.amazon.com/sqs/), yang menyederhanakan prosesnya. Untuk informasi selengkapnya, lihat [Berlangganan antrean Amazon SQS ke topik Amazon SNS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-subscribe-queue-sns-topic.html) dalam *Panduan Developer Amazon Simple Queue Service*.
+ Gunakan langkah-langkah berikut: 

  1. [Dapatkan Nama Sumber Daya Amazon (ARN) dari antrian yang ingin Anda kirimi pesan dan topik tempat Anda ingin berlangganan antrean.](#SendMessageToSQS.arn)

  1. [Berikan `sqs:SendMessage` izin ke topik Amazon SNS sehingga dapat mengirim pesan ke antrian.](#SendMessageToSQS.sqs.permissions)

  1. [Berlangganan antrian ke topik Amazon SNS.](#SendMessageToSQS.subscribe)

  1. [Berikan pengguna IAM atau izin Akun AWS yang sesuai untuk mempublikasikan ke topik Amazon SNS dan membaca pesan dari antrian Amazon SQS.](#SendMessageToSQS.iam.permissions)

  1. [Uji dengan menerbitkan pesan ke topik dan membaca pesan dari antrian.](#SendMessageToSQS.test)

Untuk mempelajari cara mengatur topik untuk mengirim pesan ke antrean yang ada di AWS akun lain, lihat. [Mengirim olahpesan Amazon SNS ke antrean Amazon SQS di akun yang berbeda](sns-send-message-to-sqs-cross-account.md)

Untuk melihat CloudFormation template yang membuat topik yang mengirim pesan ke dua antrian, lihat. [Otomatiskan pesan Amazon SNS ke Amazon SQS dengan AWS CloudFormation](SendMessageToSQS.cloudformation.md)

## Langkah 1: Dapatkan ARN dari antrean dan topik
<a name="SendMessageToSQS.arn"></a>

Saat berlangganan antrean ke topik Anda, Anda memerlukan salinan ARN untuk antrean. Demikian pula, ketika memberikan izin untuk topik untuk mengirim pesan ke antrean, Anda akan memerlukan salinan ARN untuk topik tersebut.

Untuk mendapatkan ARN antrian, Anda dapat menggunakan konsol Amazon SQS atau tindakan API. [GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html)

**Untuk mendapatkan ARN antrean dari konsol Amazon SQS**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon SQS di. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Pilih kotak untuk antrean yang ARN ingin Anda dapatkan.

1. Dari bagian **Rincian**, salin nilai ARN sehingga Anda dapat menggunakannya untuk berlangganan ke topik Amazon SNS.

Untuk mendapatkan topik ARN, Anda dapat menggunakan konsol Amazon SNS, perintah `[sns-get-topic-attributes](https://docs.aws.amazon.com/cli/latest/reference/sns/get-topic-attributes.html)`, atau Tindakan API `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html)`.

**Untuk mendapatkan topik ARN dari konsol Amazon SNS**

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

1. Pada panel navigasi, pilih topik yang ARN-nya ingin anda dapatkan.

1. Dari bagian **Rincian**, salin nilai **ARN** sehingga Anda dapat menggunakannya untuk memberikan izin untuk topik Amazon SNS untuk mengirim pesan ke antrean.

## Langkah 2: Berikan izin untuk topik Amazon SNS untuk mengirim pesan ke antrean Amazon SQS
<a name="SendMessageToSQS.sqs.permissions"></a>

Untuk topik Amazon SNS untuk dapat mengirim pesan ke antrean, Anda harus menetapkan kebijakan antrian yang memungkinkan topik Amazon SNS untuk melakukan Tindakan `sqs:SendMessage`.

Sebelum Anda berlangganan antrean ke topik, Anda memerlukan topik dan antrean. Jika Anda belum membuat topik atau antrean, buat sekarang. Untuk informasi selengkapnya, lihat [Membuat topik](sns-create-topic.md), dan lihat [Membuat antrian](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-create-queue.html) di Panduan *Pengembang Layanan Antrian Sederhana Amazon*. 

Untuk menetapkan kebijakan pada antrean, Anda dapat menggunakan konsol Amazon SQS atau tindakan API [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QuerySetQueueAttributes.html). Sebelum memulai, pastikan Anda memiliki ARN untuk topik yang ingin Anda izinkan untuk mengirim pesan ke antrean. Jika Anda berlangganan antrian ke beberapa topik, kebijakan Anda harus berisi satu `Statement` elemen untuk setiap topik.

**Untuk menetapkan SendMessage kebijakan pada antrean menggunakan konsol Amazon SQS**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon SQS di. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Pilih kotak untuk antrean kebijakan yang ingin Anda tetapkan, pilih tab **Kebijakan akses**, lalu pilih **Edit**.

1. Di **Kebijakan akses**, tentukan siapa yang dapat mengakses antrean Anda.
   + Tambahkan kondisi yang memungkinkan tindakan untuk topik.
   + Atur `Principal` untuk menjadi layanan Amazon SNS, seperti yang ditunjukkan pada contoh di bawah ini. 
   + Gunakan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)atau kunci kondisi [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)global untuk melindungi dari skenario [wakil yang membingungkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Untuk menggunakan kunci kondisi ini, tetapkan nilainya ke ARN topik Anda. Jika antrian Anda berlangganan beberapa topik, Anda dapat menggunakannya `aws:SourceAccount` sebagai gantinya. 

   Misalnya, kebijakan berikut memungkinkan MyTopic untuk mengirim pesan ke MyQueue. 

   ```
   {
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "sns.amazonaws.com"
         },
         "Action": "sqs:SendMessage",
         "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue",
         "Condition": {
           "ArnEquals": {
             "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic"
           }
         }
       }
     ]
   }
   ```

## Langkah 3: Berlangganan antrean topik Amazon SNS
<a name="SendMessageToSQS.subscribe"></a>

Untuk mengirim pesan ke antrean melalui topik, Anda harus berlangganan antrean ke topik Amazon SNS. Anda menentukan antrean dengan ARN nya. Untuk berlangganan topik, Anda dapat menggunakan konsol Amazon SNS, perintah CLI `[sns-subscribe](https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html)`, atau Tindakan API `[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)`. Sebelum Anda mulai, pastikan Anda memiliki ARN untuk antrean yang Anda ingin berlangganan.

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

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

1. Pada**Topik**, pilih topik.

1. Pada ***MyTopic*** halaman, di halaman **Langganan**, pilih **Buat langganan**.

1. Pada **Create subscription (Buat langganan)**, di halaman **Details (Rincian)**, lakukan hal berikut:

   1. Verifikasi **ARN topik**.

   1. Untuk **Protocol (Protokol)**, pilih **Amazon SQS**.

   1. Untuk **Endpoint (Titik akhir)**, masukkan ARN antrean Amazon SQS.

   1. Pilih **Create subscription (Buat langganan)**.

   Saat langganan dikonfirmasi, **ID Langganan** baru Anda akan menampilkan ID langganannya. Jika pemilik antrean membuat langganan, langganan secara otomatis dikonfirmasi dan langganan harus segera aktif.

   Biasanya, Anda akan berlangganan antrean Anda sendiri ke topik Anda sendiri di akun Anda sendiri. Namun, Anda juga dapat berlangganan antrean dari akun yang berbeda ke topik Anda. Jika pengguna yang membuat langganan bukan pemilik antrean (misalnya, jika pengguna dari akun A berlangganan antrean dari akun B ke topik di akun A), langganan harus dikonfirmasi. Untuk informasi selengkapnya tentang berlangganan antrean dari akun lain dan mengonfirmasi langganan, lihat [Mengirim olahpesan Amazon SNS ke antrean Amazon SQS di akun yang berbeda](sns-send-message-to-sqs-cross-account.md).

## Langkah 4: Memberikan pengguna izin untuk topik yang sesuai dan tindakan antrian
<a name="SendMessageToSQS.iam.permissions"></a>

Anda harus menggunakan AWS Identity and Access Management (IAM) untuk mengizinkan hanya pengguna yang sesuai untuk mempublikasikan ke topik Amazon SNS dan pesan dari read/delete antrian Amazon SQS. Untuk informasi selengkapnya tentang cara mengendalikan tindakan pada topik dan antrean untuk pengguna IAM, lihat [Menggunakan kebijakan berbasis identitas dengan Amazon SNS](sns-using-identity-based-policies.md), dan [Identity and Access Management di Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) Dalam Panduan Developer Amazon Simple Queue Service.

Ada dua cara untuk mengontrol akses ke topik atau antrean:
+ [Menambahkan kebijakan ke pengguna atau grup IAM](#SendMessageToSQS.iam.permissions.user). Cara termudah untuk memberikan pengguna izin untuk topik atau antrean adalah untuk membuat grup dan menambahkan kebijakan yang sesuai untuk grup dan kemudian menambahkan pengguna ke grup tersebut. Lebih mudah menambahkan dan menghapus pengguna dari grup daripada melacak kebijakan yang Anda tetapkan pada pengguna individual.
+ [Menambahkan kebijakan ke topik atau antrean](#SendMessageToSQS.iam.permissions.resource). Jika Anda ingin memberikan izin ke topik atau antrian ke AWS akun lain, satu-satunya cara yang dapat Anda lakukan adalah dengan menambahkan kebijakan yang memiliki prinsipal yang ingin Akun AWS Anda berikan izin.

Anda harus menggunakan metode pertama untuk sebagian besar kasus (menerapkan kebijakan untuk grup dan mengelola izin untuk pengguna dengan menambahkan atau menghapus pengguna yang sesuai ke grup). Jika Anda perlu memberikan izin kepada pengguna di akun lain, Anda harus menggunakan metode kedua.

### Menambahkan kebijakan ke pengguna atau grup IAM
<a name="SendMessageToSQS.iam.permissions.user"></a>

Jika Anda menambahkan kebijakan berikut ke pengguna atau grup IAM, Anda akan memberikan izin kepada pengguna atau anggota grup tersebut untuk melakukan `sns:Publish` tindakan pada topik MyTopic tersebut.

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic"
    }
  ]
}
```

Jika Anda menambahkan kebijakan berikut ke pengguna atau grup IAM, Anda akan memberikan izin kepada pengguna atau anggota grup tersebut untuk melakukan `sqs:ReceiveMessage` dan `sqs:DeleteMessage` tindakan pada antrian MyQueue 1 dan 2. MyQueue

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sqs:ReceiveMessage",
        "sqs:DeleteMessage"
      ],
      "Resource": [
        "arn:aws:sqs:us-east-2:123456789012:MyQueue1",
        "arn:aws:sqs:us-east-2:123456789012:MyQueue2"
      ]
    }
  ]
}
```

### Menambahkan kebijakan ke topik atau antrean
<a name="SendMessageToSQS.iam.permissions.resource"></a>

Contoh kebijakan berikut menunjukkan bagaimana memberikan izin akun lain untuk topik dan antrean.

**catatan**  
Saat Anda memberikan Akun AWS akses lain ke sumber daya di akun Anda, Anda juga memberi pengguna IAM yang memiliki izin akses tingkat admin (akses wildcard) ke sumber daya tersebut. Semua pengguna IAM lain di akun lain secara otomatis ditolak akses ke sumber daya Anda. Jika Anda ingin memberikan pengguna IAM tertentu dalam Akun AWS akses ke sumber daya Anda, akun atau pengguna IAM dengan akses tingkat admin harus mendelegasikan izin untuk sumber daya untuk pengguna IAM tersebut. Untuk informasi selengkapnya tentang pendelegasian lintas akun, lihat [Mengaktifkan akses Lintas Akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/Delegation.html) dalam *Menggunakan Panduan IAM*.

Jika Anda menambahkan kebijakan berikut ke topik MyTopic di akun 123456789012, Anda akan memberi akun 111122223333 izin untuk melakukan tindakan pada topik tersebut. `sns:Publish`

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic"
    }
  ]
}
```

Jika Anda menambahkan kebijakan berikut ke antrian MyQueue di akun 123456789012, Anda akan memberi akun 111122223333 izin untuk melakukan dan tindakan pada antrian tersebut. `sqs:ReceiveMessage` `sqs:DeleteMessage`

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": [
        "sqs:DeleteMessage",
        "sqs:ReceiveMessage"
      ],
      "Resource": [
        "arn:aws:sqs:us-east-2:123456789012:MyQueue"
      ]
    }
  ]
}
```

## Langkah 5: Uji langganan antrean topik
<a name="SendMessageToSQS.test"></a>

Anda dapat menguji langganan antrean topik dengan menerbitkan topik dan melihat pesan yang dikirim topik ke antrean.

**Untuk mempublikasikan topik menggunakan konsol Amazon SNS**

1. Menggunakan kredensi pengguna Akun AWS atau IAM dengan izin untuk mempublikasikan ke topik, masuk ke Konsol Manajemen AWS dan buka konsol Amazon SNS di. [https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/home)

1. Pada panel navigasi, pilih topik dan pilih **Publish to Topic (Publikasikan ke topik)**.

1. Di kotak **Subject (Subjek)**, masukkan subjek (misalnya, **Testing publish to queue**) di kotak **Pesan**, masukkan beberapa teks (misalnya, **Hello world\$1**), dan pilih **Publish Message (Publikasikan Pesan)**. Pesan berikut muncul: Pesan Anda telah berhasil dipublikasikan.

**Untuk melihat pesan dari topik menggunakan konsol Amazon SQS**

1. Menggunakan kredensional pengguna Akun AWS atau IAM dengan izin untuk melihat pesan dalam antrian, masuk ke Konsol Manajemen AWS dan buka konsol Amazon SQS di. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Pilih **antrian** yang berlangganan topik.

1. Pilih **Kirim dan terima pesan**, lalu pilih **Poll untuk pesan**. Sebuah pesan dengan jenis **Pemberitahuan** akan muncul. 

1. Di kolom **Body (Isi)**, pilih **More Details (Detail lebih lanjut)**. Parameter kotak **Message Details (Detail Pesan)** berisi dokumen JSON yang berisi subjek dan pesan yang Anda diterbitkan untuk topik. Pesan terlihat serupa dengan dokumen JSON berikut.

   ```
   {
     "Type" : "Notification",
     "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
     "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
     "Subject" : "Testing publish to subscribed queues",
     "Message" : "Hello world!",
     "Timestamp" : "2012-03-29T05:12:16.901Z",
     "SignatureVersion" : "1",
     "Signature" : "EXAMPLEnTrFPa3...",
     "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
     "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"
   }
   ```

1. Pilih **Close (Tutup)**. Anda telah berhasil menerbitkan topik yang mengirimkan pesan pemberitahuan ke antrean.

# Otomatiskan pesan Amazon SNS ke Amazon SQS dengan AWS CloudFormation
<a name="SendMessageToSQS.cloudformation"></a>

CloudFormation memungkinkan Anda untuk menggunakan file template untuk membuat dan mengkonfigurasi kumpulan AWS sumber daya bersama-sama sebagai satu unit. Bagian ini memiliki contoh templat yang membuatnya mudah untuk menyebarkan topik yang mempublikasikan ke antrean. Templat mengurus langkah-langkah pengaturan untuk Anda dengan membuat dua antrean, membuat topik dengan langganan antrean, menambahkan kebijakan ke antrean sehingga topik dapat mengirim pesan ke antrean, dan membuat pengguna dan grup IAM untuk mengontrol akses ke sumber daya tersebut.

Untuk informasi selengkapnya tentang penerapan AWS sumber daya menggunakan CloudFormation templat, lihat [Memulai](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.Walkthrough.html) di *Panduan CloudFormation Pengguna*.

## Menggunakan CloudFormation template untuk mengatur topik dan antrian dalam Akun AWS
<a name="SendMessageToSQS.cloudformation.iam"></a>

Templat contoh membuat topik Amazon SNS yang dapat mengirim pesan ke dua antrean Amazon SQS dengan izin yang sesuai bagi anggota satu grup IAM untuk memublikasikan ke topik dan yang lain untuk membaca pesan dari antrean. Templat juga menciptakan pengguna IAM yang ditambahkan ke setiap kelompok.

Anda menyalin isi templat ke dalam file. Anda juga dapat mengunduh template dari [halaman AWS CloudFormation Template](https://aws.amazon.com/cloudformation/aws-cloudformation-templates/). Pada halaman template, pilih **Browse sample templates by AWS service** lalu pilih **Amazon Simple Queue Service**. 

Saya SNSTopic diatur untuk mempublikasikan ke dua titik akhir berlangganan, yang merupakan dua antrian Amazon SQS (1 dan MyQueue 2). MyQueue MyPublishTopicGroup adalah grup IAM yang anggotanya memiliki izin untuk mempublikasikan ke My SNSTopic menggunakan tindakan [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) API atau perintah [sns-publish](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html). Template menciptakan pengguna IAM MyPublishUser dan MyQueueUser dan memberi mereka profil login dan kunci akses. Pengguna yang membuat tumpukan dengan templat ini menentukan password untuk profil login sebagai parameter input. Template membuat kunci akses untuk dua pengguna IAM dengan MyPublishUserKey dan MyQueueUserKey. AddUserToMyPublishTopicGroup MyPublishUser menambah MyPublishTopicGroup sehingga pengguna akan memiliki izin yang ditetapkan ke grup.

Saya RDMessage QueueGroup adalah grup IAM yang anggotanya memiliki izin untuk membaca dan menghapus pesan dari dua antrian Amazon SQS menggunakan [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html)tindakan dan API. [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryDeleteMessage.html) AddUserToMyQueueGroup menambahkan MyQueueUser ke My RDMessage QueueGroup sehingga pengguna akan memiliki izin yang ditetapkan ke grup. MyQueuePolicy memberikan izin SNSTopic kepada My untuk mempublikasikan pemberitahuannya ke dua antrian.

Daftar berikut menunjukkan isi CloudFormation template.

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  
  "Description" : "AWS CloudFormation Sample Template SNSToSQS: This Template creates an SNS topic that can send messages to 
  two SQS queues with appropriate permissions for one IAM user to publish to the topic and another to read messages from the queues. 
  MySNSTopic is set up to publish to two subscribed endpoints, which are two SQS queues (MyQueue1 and MyQueue2). MyPublishUser is an IAM user 
  that can publish to MySNSTopic using the Publish API. MyTopicPolicy assigns that permission to MyPublishUser. MyQueueUser is an IAM user 
  that can read messages from the two SQS queues. MyQueuePolicy assigns those permissions to MyQueueUser. It also assigns permission for 
  MySNSTopic to publish its notifications to the two queues. The template creates access keys for the two IAM users with MyPublishUserKey 
  and MyQueueUserKey. ***Warning*** you will be billed for the AWS resources used if you create a stack from this template.",

  "Parameters": {
    "MyPublishUserPassword": {
      "NoEcho": "true",
      "Type": "String",
      "Description": "Password for the IAM user MyPublishUser",
      "MinLength": "1",
      "MaxLength": "41",
      "AllowedPattern": "[a-zA-Z0-9]*",
      "ConstraintDescription": "must contain only alphanumeric characters."
    },
    "MyQueueUserPassword": {
      "NoEcho": "true",
      "Type": "String",
      "Description": "Password for the IAM user MyQueueUser",
      "MinLength": "1",
      "MaxLength": "41",
      "AllowedPattern": "[a-zA-Z0-9]*",
      "ConstraintDescription": "must contain only alphanumeric characters."
    }
  },


  "Resources": {
    "MySNSTopic": {
      "Type": "AWS::SNS::Topic",
      "Properties": {
        "Subscription": [{
            "Endpoint": {
              "Fn::GetAtt": ["MyQueue1", "Arn"]
            },
            "Protocol": "sqs"
          },
          {
            "Endpoint": {
              "Fn::GetAtt": ["MyQueue2", "Arn"]
            },
            "Protocol": "sqs"
          }
        ]
      }
    },
    "MyQueue1": {
      "Type": "AWS::SQS::Queue"
    },
    "MyQueue2": {
      "Type": "AWS::SQS::Queue"
    },
    "MyPublishUser": {
      "Type": "AWS::IAM::User",
      "Properties": {
        "LoginProfile": {
          "Password": {
            "Ref": "MyPublishUserPassword"
          }
        }
      }
    },
    "MyPublishUserKey": {
      "Type": "AWS::IAM::AccessKey",
      "Properties": {
        "UserName": {
          "Ref": "MyPublishUser"
        }
      }
    },
    "MyPublishTopicGroup": {
      "Type": "AWS::IAM::Group",
      "Properties": {
        "Policies": [{
          "PolicyName": "MyTopicGroupPolicy",
          "PolicyDocument": {
            "Statement": [{
              "Effect": "Allow",
              "Action": [
                "sns:Publish"
              ],
              "Resource": {
                "Ref": "MySNSTopic"
              }
            }]
          }
        }]
      }
    },
    "AddUserToMyPublishTopicGroup": {
      "Type": "AWS::IAM::UserToGroupAddition",
      "Properties": {
        "GroupName": {
          "Ref": "MyPublishTopicGroup"
        },
        "Users": [{
          "Ref": "MyPublishUser"
        }]
      }
    },
    "MyQueueUser": {
      "Type": "AWS::IAM::User",
      "Properties": {
        "LoginProfile": {
          "Password": {
            "Ref": "MyQueueUserPassword"
          }
        }
      }
    },
    "MyQueueUserKey": {
      "Type": "AWS::IAM::AccessKey",
      "Properties": {
        "UserName": {
          "Ref": "MyQueueUser"
        }
      }
    },
    "MyRDMessageQueueGroup": {
      "Type": "AWS::IAM::Group",
      "Properties": {
        "Policies": [{
          "PolicyName": "MyQueueGroupPolicy",
          "PolicyDocument": {
            "Statement": [{
              "Effect": "Allow",
              "Action": [
                "sqs:DeleteMessage",
                "sqs:ReceiveMessage"
              ],
              "Resource": [{
                  "Fn::GetAtt": ["MyQueue1", "Arn"]
                },
                {
                  "Fn::GetAtt": ["MyQueue2", "Arn"]
                }
              ]
            }]
          }
        }]
      }
    },
    "AddUserToMyQueueGroup": {
      "Type": "AWS::IAM::UserToGroupAddition",
      "Properties": {
        "GroupName": {
          "Ref": "MyRDMessageQueueGroup"
        },
        "Users": [{
          "Ref": "MyQueueUser"
        }]
      }
    },
    "MyQueuePolicy": {
      "Type": "AWS::SQS::QueuePolicy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [{
            "Effect": "Allow",
            "Principal": {
              "Service": "sns.amazonaws.com"
            },
            "Action": ["sqs:SendMessage"],
            "Resource": "*",
            "Condition": {
              "ArnEquals": {
                "aws:SourceArn": {
                  "Ref": "MySNSTopic"
                }
              }
            }
          }]
        },
        "Queues": [{
          "Ref": "MyQueue1"
        }, {
          "Ref": "MyQueue2"
        }]
      }
    }
  },
  "Outputs": {
    "MySNSTopicTopicARN": {
      "Value": {
        "Ref": "MySNSTopic"
      }
    },
    "MyQueue1Info": {
      "Value": {
        "Fn::Join": [
          " ",
          [
            "ARN:",
            {
              "Fn::GetAtt": ["MyQueue1", "Arn"]
            },
            "URL:",
            {
              "Ref": "MyQueue1"
            }
          ]
        ]
      }
    },
    "MyQueue2Info": {
      "Value": {
        "Fn::Join": [
          " ",
          [
            "ARN:",
            {
              "Fn::GetAtt": ["MyQueue2", "Arn"]
            },
            "URL:",
            {
              "Ref": "MyQueue2"
            }
          ]
        ]
      }
    },
    "MyPublishUserInfo": {
      "Value": {
        "Fn::Join": [
          " ",
          [
            "ARN:",
            {
              "Fn::GetAtt": ["MyPublishUser", "Arn"]
            },
            "Access Key:",
            {
              "Ref": "MyPublishUserKey"
            },
            "Secret Key:",
            {
              "Fn::GetAtt": ["MyPublishUserKey", "SecretAccessKey"]
            }
          ]
        ]
      }
    },
    "MyQueueUserInfo": {
      "Value": {
        "Fn::Join": [
          " ",
          [
            "ARN:",
            {
              "Fn::GetAtt": ["MyQueueUser", "Arn"]
            },
            "Access Key:",
            {
              "Ref": "MyQueueUserKey"
            },
            "Secret Key:",
            {
              "Fn::GetAtt": ["MyQueueUserKey", "SecretAccessKey"]
            }
          ]
        ]
      }
    }
  }
}
```

# Pemberitahuan Fanout Amazon SNS ke titik akhir HTTPS
<a name="sns-http-https-endpoint-as-subscriber"></a>

Anda dapat menggunakan Amazon SNS untuk mengirimkan pesan notifikasi ke satu atau lebih titik akhir HTTP atau HTTPS. Saat Anda melanggankan titik akhir ke topik, Anda dapat memublikasikan notifikasi ke topik dan Amazon SNS mengirimkan permintaan HTTP POST yang mengirimkan isi notifikasi ke titik akhir yang dilanggankan. Saat Anda melanggankan titik akhir, Anda memilih apakah Amazon SNS menggunakan HTTP atau HTTPS untuk mengirimkan permintaan POST ke titik akhir. Jika Anda menggunakan HTTPS, maka Anda dapat mengambil keuntungan dari dukungan di Amazon SNS untuk hal berikut ini: 
+ **Indikasi Nama Server (SNI)**—Hal ini mengizinkan Amazon SNS untuk mendukung titik akhir HTTPS yang memerlukan SNI, seperti server yang memerlukan beberapa sertifikat untuk meng-host beberapa domain. Untuk informasi lebih lanjut tentang SNI, lihat [Indikasi Nama Server](http://en.wikipedia.org/wiki/Server_Name_Indication).
+ **Autentikasi Akses Dasar dan Digest**—Hal ini mengizinkan Anda untuk menentukan nama pengguna dan kata sandi di URL HTTPS untuk permintaan HTTP POST, seperti `https://user:password@domain.com` atau `https://user@domain.com`. Nama pengguna dan kata sandi dienkripsi melalui koneksi SSL yang dibuat saat menggunakan HTTPS. Hanya nama domain yang dikirim dalam plaintext. Untuk informasi selengkapnya tentang Autentikasi Akses Dasar dan Digest, lihat [RFC-2617](http://www.rfc-editor.org/info/rfc2617).
**penting**  
Amazon SNS saat ini tidak mendukung titik akhir HTTP (S) pribadi.  
HTTPS URLs hanya dapat diambil dari tindakan Amazon `GetSubscriptionAttributes` SNS API, untuk prinsipal yang telah Anda berikan akses API.
**catatan**  
 Layanan klien harus dapat mendukung respons header `HTTP/1.1 401 Unauthorized`

Permintaan berisi subjek dan pesan yang dipublikasikan untuk topik bersama dengan metadata tentang notifikasi dalam dokumen JSON. Permintaan akan terlihat serupa dengan permintaan HTTP POST berikut. Untuk detail tentang header HTTP dan format JSON dari isi permintaan, lihat [Header HTTP/HTTPS](http-header.md) dan [Format JSON notifikasi HTTP/HTTPS](http-notification-json.md).

**catatan**  
Amazon SNS menganggap semua kesalahan 5XX dan kesalahan 429 (terlalu banyak permintaan yang dikirim) sebagai dapat dicoba ulang. Kesalahan ini tunduk pada kebijakan pengiriman. Semua kesalahan lain dianggap sebagai kegagalan permanen dan percobaan ulang tidak akan dicoba.

```
POST / HTTP/1.1
    x-amz-sns-message-type: Notification
    x-amz-sns-message-id: da41e39f-ea4d-435a-b922-c6aae3915ebe
    x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
    x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
    Content-Length: 761
    Content-Type: text/plain; charset=UTF-8
    Host: ec2-50-17-44-49.compute-1.amazonaws.com
    Connection: Keep-Alive
    User-Agent: Amazon Simple Notification Service Agent
    
{
  "Type" : "Notification",
  "MessageId" : "da41e39f-ea4d-435a-b922-c6aae3915ebe",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Subject" : "test",
  "Message" : "test message",
  "Timestamp" : "2012-04-25T21:49:25.719Z",
  "SignatureVersion" : "1",
  "Signature" : "EXAMPLElDMXvB8r9R83tGoNn0ecwd5UjllzsvSvbItzfaMpN2nk5HVSw7XnOn/49IkxDKz8YrlH2qJXj2iZB0Zo2O71c4qQk1fMUDi3LGpij7RCW7AW9vYYsSqIKRnFS94ilu7NFhUzLiieYr4BKHpdTmdD6c0esKEYBpabxDSc=",
  "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
   "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55"
}
```

# Berlangganan titik akhir HTTPS ke topik Amazon SNS
<a name="sns-subscribe-https-s-endpoints-to-topic"></a>

Topik ini menjelaskan cara berlangganan HTTP/S titik akhir ke topik Amazon SNS.

**Topics**
+ [Langkah 1: Pastikan titik akhir Anda siap untuk memproses pesan Amazon SNS](SendMessageToHttp.prepare.md)
+ [Langkah 2: Berlangganan HTTP/HTTPS titik akhir ke topik Amazon SNS](SendMessageToHttp.subscribe.md)
+ [Langkah 3: Konfirmasikan langganan Amazon SNS Anda](SendMessageToHttp.confirm.md)
+ [Langkah 4: Opsional - Tetapkan kebijakan pengiriman untuk langganan Amazon SNS](SendMessageToHttp.retry.md)
+ [Langkah 5: Opsional - Berikan izin pengguna untuk mempublikasikan ke topik Amazon SNS](SendMessageToHttp.iam.permissions.md)
+ [Langkah 6: Kirim pesan Amazon SNS ke titik akhir HTTP/HTTPS](SendMessageToHttp.publish.md)

# Langkah 1: Pastikan titik akhir Anda siap untuk memproses pesan Amazon SNS
<a name="SendMessageToHttp.prepare"></a>

Sebelum Anda melanggankan titik akhir HTTP atau HTTPS ke topik, Anda harus memastikan bahwa titik akhir HTTP atau HTTPS memiliki kemampuan untuk menangani permintaan HTTP POST yang digunakan Amazon SNS untuk mengirimkan konfirmasi berlangganan dan pesan notifikasi. Biasanya, hal ini berarti membuat dan men-deploy aplikasi web (misalnya, servlet Java jika host titik akhir Anda menjalankan Linux dengan Apache dan Tomcat) yang memproses permintaan HTTP dari Amazon SNS. Saat Anda melanggankan titik akhir HTTP, Amazon SNS mengirimkan permintaan konfirmasi berlangganan. Titik akhir Anda harus siap untuk menerima dan memproses permintaan ini saat Anda membuat langganan karena Amazon SNS mengirimkan permintaan ini pada waktu itu. Amazon SNS tidak akan mengirimkan notifikasi ke titik akhir sampai Anda mengonfirmasi langganan. Setelah Anda mengonfirmasi langganan, Amazon SNS akan mengirimkan notifikasi ke titik akhir saat tindakan memublikasikan dilakukan pada topik yang dilanggan.

**Menyiapkan titik akhir Anda untuk memproses konfirmasi berlangganan dan pesan notifikasi**

1. Kode Anda harus membaca header HTTP dari permintaan HTTP POST yang Amazon SNS kirim ke titik akhir Anda. Kode Anda harus mencari kolom header `x-amz-sns-message-type`, yang memberi tahu Anda jenis pesan yang telah dikirim Amazon SNS kepada Anda. Dengan melihat header, Anda dapat menentukan jenis pesan tanpa harus mengurai isi permintaan HTTP. Ada dua jenis yang perlu Anda tangani: `SubscriptionConfirmation` dan `Notification`. Pesan `UnsubscribeConfirmation` hanya digunakan saat langganan dihapus dari topik.

   Untuk detail tentang header HTTP, lihat [Header HTTP/HTTPS](http-header.md). Permintaan HTTP POST berikut adalah contoh pesan konfirmasi berlangganan.

   ```
   POST / HTTP/1.1
       x-amz-sns-message-type: SubscriptionConfirmation
       x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
       x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
       Content-Length: 1336
       Content-Type: text/plain; charset=UTF-8
       Host: example.com
       Connection: Keep-Alive
       User-Agent: Amazon Simple Notification Service Agent
       
   {
     "Type" : "SubscriptionConfirmation",
     "MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b",
     "Token" : "2336412f37f...",
     "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
     "Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.",
     "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37...",
     "Timestamp" : "2012-04-26T20:45:04.751Z",
     "SignatureVersion" : "1",
     "Signature" : "EXAMPLEpH+...",
     "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem"
   }
   ```

1. Kode Anda harus mengurai dokumen JSON di badan permintaan HTTP POST dan tipe konten text/plain untuk membaca pasangan nama-nilai yang membentuk pesan Amazon SNS. Gunakan parser JSON yang menangani konversi representasi yang di-escape dari karakter kontrol kembali ke nilai-nilai karakter ASCII-nya (misalnya, mengonversi \$1n ke karakter baris baru). Anda dapat menggunakan parser JSON yang ada seperti [Jackson JSON Processor](https://github.com/FasterXML/jackson) atau menulisnya sendiri. Untuk mengirimkan teks di bidang subjek dan pesan sebagai JSON yang valid, Amazon SNS harus mengonversi beberapa karakter kontrol untuk representasi yang di-escape yang dapat dimasukkan dalam dokumen JSON. Saat Anda menerima dokumen JSON di isi permintaan POST yang dikirim ke titik akhir Anda, Anda harus mengonversi karakter yang di-escape kembali ke nilai karakter aslinya jika Anda menginginkan representasi yang tepat dari subjek asli dan pesan yang dipublikasikan ke topik. Hal ini penting jika Anda ingin memverifikasi tanda tangan notifikasi karena tanda tangan menggunakan pesan dan subjek dalam bentuk aslinya sebagai bagian dari string untuk ditandatangani.

1. Kode Anda harus memverifikasi keaslian notifikasi, konfirmasi berlangganan, atau pesan konfirmasi berhenti berlangganan yang dikirim oleh Amazon SNS. Dengan menggunakan informasi yang terdapat dalam pesan Amazon SNS, titik akhir Anda dapat menciptakan kembali tanda tangan sehingga Anda dapat memverifikasi isi pesan dengan mencocokkan tanda tangan Anda dengan tanda tangan yang dikirim Amazon SNS bersama dengan pesan. Untuk informasi selengkapnya tentang memverifikasi tanda tangan pesan, lihat [Memverifikasi tanda tangan pesan Amazon SNS](sns-verify-signature-of-message.md).

1. Berdasarkan jenis yang ditentukan oleh kolom header `x-amz-sns-message-type`, kode Anda harus membaca dokumen JSON yang terkandung dalam isi permintaan HTTP dan memproses pesan. Berikut adalah panduan untuk menangani dua jenis utama pesan:  
**SubscriptionConfirmation**  
Baca nilai `SubscribeURL` dan kunjungi URL tersebut. Untuk mengonfirmasi langganan dan mulai menerima notifikasi di titik akhir, Anda harus mengunjungi URL `SubscribeURL` (misalnya, dengan mengirimkan permintaan HTTP GET ke URL). Lihat contoh permintaan HTTP pada langkah sebelumnya untuk melihat seperti apa `SubscribeURL` itu. Untuk informasi lebih lanjut tentang format `SubscriptionConfirmation`, lihat [Format JSON konfirmasi berlangganan HTTP/HTTPS](http-subscription-confirmation-json.md). Saat Anda mengunjungi URL, Anda akan mendapatkan kembali respon yang terlihat seperti dokumen XML berikut. Dokumen mengembalikan ARN langganan untuk titik akhir dalam elemen `ConfirmSubscriptionResult`.  

   ```
   <ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
      <ConfirmSubscriptionResult>
         <SubscriptionArn>arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55</SubscriptionArn>
      </ConfirmSubscriptionResult>
      <ResponseMetadata>
         <RequestId>075ecce8-8dac-11e1-bf80-f781d96e9307</RequestId>
      </ResponseMetadata>
   </ConfirmSubscriptionResponse>
   ```
Sebagai alternatif untuk mengunjungi`SubscribeURL`, Anda dapat mengonfirmasi langganan menggunakan [ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)tindakan dengan `Token` set ke nilai yang sesuai dalam `SubscriptionConfirmation` pesan. Jika Anda ingin mengizinkan hanya pemilik topik dan pemilik langganan untuk dapat berhenti berlangganan titik akhir, Anda memanggil tindakan `ConfirmSubscription` dengan tanda tangan AWS .  
**Pemberitahuan**  
Baca nilai `Subject` dan `Message` untuk mendapatkan informasi notifikasi yang dipublikasikan ke topik.  
Untuk detail tentang format pesan `Notification`, lihat [Header HTTP/HTTPS](http-header.md). Permintaan HTTP POST berikut adalah contoh pesan notifikasi yang dikirim ke titik akhir example.com.  

   ```
   POST / HTTP/1.1
       x-amz-sns-message-type: Notification
       x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324
       x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
       x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96
       Content-Length: 773
       Content-Type: text/plain; charset=UTF-8
       Host: example.com
       Connection: Keep-Alive
       User-Agent: Amazon Simple Notification Service Agent
       
   {
     "Type" : "Notification",
     "MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324",
     "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
     "Subject" : "My First Message",
     "Message" : "Hello world!",
     "Timestamp" : "2012-05-02T00:54:06.655Z",
     "SignatureVersion" : "1",
     "Signature" : "EXAMPLEw6JRN...",
     "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
     "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"
   }
   ```

1. Pastikan bahwa titik akhir Anda menanggapi pesan HTTP POST dari Amazon SNS dengan kode status yang sesuai. Koneksi akan habis dalam waktu sekitar 15 detik. Jika titik akhir Anda tidak merespons sebelum waktu koneksi habis, atau jika titik akhir Anda mengembalikan kode status di luar kisaran 200—4 xx, *Amazon* SNS akan menganggap pengiriman pesan sebagai upaya yang gagal.

1. Pastikan bahwa kode Anda dapat menangani percobaan kembali pengiriman pesan dari Amazon SNS. Jika tidak menerima respons yang berhasil dari titik akhir Anda, Amazon SNS mencoba untuk mengirimkan pesan lagi. Hal ini berlaku untuk semua pesan, termasuk pesan konfirmasi berlangganan. Secara default, jika pengiriman awal pesan gagal, Amazon SNS mencoba hingga tiga percobaan kembali dengan penundaan antara upaya yang gagal ditetapkan pada 20 detik.
**catatan**  
Waktu permintaan pesan habis setelah sekitar 15 detik. Hal ini berarti, jika kegagalan pengiriman pesan disebabkan oleh waktu habis, Amazon SNS mencoba lagi selama sekitar 35 detik setelah upaya pengiriman sebelumnya. Anda dapat menetapkan kebijakan pengiriman yang berbeda untuk titik akhir.

   Amazon SNS menggunakan bidang `x-amz-sns-message-id` header untuk mengidentifikasi secara unik setiap pesan yang dipublikasikan ke topik Amazon SNS. Dengan membandingkan pesan IDs yang telah diproses dengan pesan masuk, Anda dapat menentukan apakah pesan tersebut merupakan upaya coba lagi.

1. Jika Anda melanggankan titik akhir HTTPS, pastikan bahwa titik akhir Anda memiliki sertifikat server dari Otoritas Sertifikasi (CA) terpercaya. Amazon SNS hanya akan mengirimkan pesan ke titik akhir HTTPS yang memiliki sertifikat server yang ditandatangani oleh CA yang dipercaya oleh Amazon SNS.

1. Deploy kode yang telah Anda buat untuk menerima pesan Amazon SNS. Saat Anda melanggankan titik akhir, titik akhir harus siap untuk menerima setidaknya pesan konfirmasi berlangganan.

# Langkah 2: Berlangganan HTTP/HTTPS titik akhir ke topik Amazon SNS
<a name="SendMessageToHttp.subscribe"></a>

Untuk mengirimkan pesan ke titik akhir HTTP atau HTTPS melalui topik, Anda harus melanggankan titik akhir ke topik Amazon SNS. Anda menentukan titik akhir menggunakan URL-nya. Untuk berlangganan ke topik, Anda dapat menggunakan konsol Amazon SNS, perintah [sns-command](https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html), atau tindakan API [Langganan](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html). Sebelum memulai, pastikan Anda memiliki URL untuk titik akhir yang ingin Anda langgan dan titik akhir Anda siap menerima konfirmasi dan notifikasi pesan seperti yang dijelaskan pada Langkah 1.

**Untuk melanggankan titik akhir HTTP atau HTTPS ke topik menggunakan konsol Amazon SNS**

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

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

1. Pilih **langganan Buat**.

1. Di daftar menurun **Protokol**, pilih **HTTP** atau **HTTPS**.

1. Di kotak **Titik akhir**, tempelkan URL titik akhir yang Anda inginkan untuk dikirimkan pesan oleh topik dan kemudian pilih **Buat langganan**.

1. Pesan konfirmasi ditampilkan. Pilih **Tutup**.

   **ID** Langganan baru Anda ditampilkan PendingConfirmation. Saat Anda mengonfirmasi langganan, **ID langganan** akan menampilkan ID langganan.

# Langkah 3: Konfirmasikan langganan Amazon SNS Anda
<a name="SendMessageToHttp.confirm"></a>

Untuk mengonfirmasi langganan Amazon SNS Anda, ikuti langkah-langkah berikut untuk memastikan titik akhir Anda berhasil menerima pesan. Proses ini melibatkan pengaturan titik akhir Anda untuk menangani pesan konfirmasi yang masuk, mengambil URL konfirmasi, dan mengonfirmasi langganan. Anda dapat mengonfirmasi langganan secara otomatis atau manual, tergantung pada pengaturan Anda.

1. Setelah berlangganan topik Amazon SNS, Amazon SNS mengirimkan pesan konfirmasi ke titik akhir Anda. Pesan ini berisi `SubscribeURL` yang harus Anda gunakan untuk mengonfirmasi langganan.

1. Titik akhir Anda harus diatur untuk mendengarkan pesan masuk dari Amazon SNS. Ketika pesan konfirmasi tiba, ekstrak **`SubscribeURL`**dari pesan.

1. Setelah Anda memilikinya`SubscribeURL`, Anda dapat mengonfirmasi langganan dengan salah satu dari dua cara:
   + **Konfirmasi otomatis** — Titik akhir Anda dapat secara otomatis mengonfirmasi langganan dengan mengirimkan **permintaan HTTP GET** ke`SubscribeURL`.

     Metode ini tidak memerlukan intervensi manual.
   + **Konfirmasi manual** — Jika konfirmasi otomatis tidak diatur, **salin **`SubscribeURL`****dari pesan konfirmasi dan **tempelkan** ke bilah alamat browser Anda.

     Ini akan mengkonfirmasi langganan secara manual.

1. Anda juga dapat memverifikasi **status langganan** menggunakan konsol Amazon SNS:

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

   1. Di panel navigasi, pilih **Subscriptions** (Langganan).

   1. Temukan **langganan** Anda dalam daftar.
      + Jika dikonfirmasi, `SubscriptionArn` akan ditampilkan.
      + Jika masih belum dikonfirmasi, itu akan ditampilkan sebagai`PendingConfirmation`.

# Langkah 4: Opsional - Tetapkan kebijakan pengiriman untuk langganan Amazon SNS
<a name="SendMessageToHttp.retry"></a>

Secara default, jika pengiriman awal pesan gagal, Amazon SNS mencoba hingga tiga percobaan kembali dengan penundaan antara upaya yang gagal ditetapkan pada 20 detik. Sebagaimana dibahas dalam [Langkah 1](SendMessageToHttp.prepare.md), titik akhir Anda harus memiliki kode yang dapat menangani pesan yang dicoba kembali. Dengan menetapkan kebijakan pengiriman pada topik atau langganan, Anda dapat mengontrol frekuensi dan interval percobaan kembali Amazon SNS untuk pesan gagal. Anda juga dapat menentukan jenis konten untuk HTTP/S notifikasi Anda di`DeliveryPolicy`. Untuk informasi selengkapnya, lihat [Membuat kebijakan HTTP/S pengiriman](sns-message-delivery-retries.md#creating-delivery-policy).

# Langkah 5: Opsional - Berikan izin pengguna untuk mempublikasikan ke topik Amazon SNS
<a name="SendMessageToHttp.iam.permissions"></a>

Secara default, pemilik topik memiliki izin untuk memublikasikan ke topik. Untuk memungkinkan pengguna atau aplikasi lain mempublikasikan ke topik, Anda harus menggunakan AWS Identity and Access Management (IAM) untuk memberikan izin publikasi ke topik tersebut. Untuk informasi lebih lanjut tentang memberikan izin untuk tindakan Amazon SNS kepada pengguna IAM, lihat [Menggunakan kebijakan berbasis identitas dengan Amazon SNS](sns-using-identity-based-policies.md).

Ada dua cara untuk mengontrol akses ke topik:
+ Menambahkan kebijakan ke pengguna atau grup IAM. Cara termudah untuk memberikan pengguna izin untuk mengakses topik adalah membuat grup dan menambahkan kebijakan yang sesuai ke grup dan kemudian menambahkan pengguna ke grup tersebut. Menambahkan dan menghapus pengguna dari grup jauh lebih mudah daripada melacak kebijakan yang Anda tetapkan pada pengguna individual.
+ Menambahkan kebijakan ke topik. Jika Anda ingin memberikan izin untuk mengakses topik kepada akun AWS lain, satu-satunya cara yang dapat Anda lakukan adalah dengan menambahkan kebijakan yang sebagai prinsipnya memiliki Akun AWS yang ingin Anda berikan izin.

Anda harus menggunakan metode pertama untuk sebagian besar kasus (menerapkan kebijakan pada grup dan mengelola izin untuk pengguna dengan menambahkan atau menghapus pengguna yang sesuai ke grup). Jika Anda perlu memberikan izin kepada pengguna di akun lain, gunakan metode kedua.

Jika Anda menambahkan kebijakan berikut ke pengguna atau grup IAM, Anda akan memberikan izin kepada pengguna atau anggota grup tersebut untuk melakukan `sns:Publish` tindakan pada topik MyTopic tersebut.

```
{
  "Statement":[{
    "Sid":"AllowPublishToMyTopic",
    "Effect":"Allow",
    "Action":"sns:Publish",
    "Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic"
  }]
}
```

Kebijakan contoh berikut menunjukkan cara memberikan izin untuk mengakses topik kepada akun lain.

**catatan**  
Saat Anda memberikan Akun AWS akses lain ke sumber daya di akun Anda, Anda juga memberi pengguna IAM yang memiliki izin akses tingkat admin (akses wildcard) ke sumber daya tersebut. Semua pengguna IAM lain di akun lain secara otomatis ditolak akses ke sumber daya Anda. Jika Anda ingin memberikan pengguna IAM tertentu dalam Akun AWS akses ke sumber daya Anda, akun atau pengguna IAM dengan akses tingkat admin harus mendelegasikan izin untuk sumber daya tersebut kepada pengguna IAM tersebut. Untuk informasi selengkapnya tentang pendelegasian lintas akun, lihat [Mengaktifkan akses Lintas Akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/Delegation.html) dalam *Menggunakan Panduan IAM*.

Jika Anda menambahkan kebijakan berikut ke topik MyTopic di akun 123456789012, Anda akan memberi akun 111122223333 izin untuk melakukan tindakan pada topik tersebut. `sns:Publish`

```
{
  "Statement":[{
    "Sid":"Allow-publish-to-topic",
    "Effect":"Allow",
      "Principal":{
        "AWS":"111122223333"
      },
    "Action":"sns:Publish",
    "Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic"
  }]
}
```

# Langkah 6: Kirim pesan Amazon SNS ke titik akhir HTTP/HTTPS
<a name="SendMessageToHttp.publish"></a>

Anda dapat mengirimkan pesan ke langganan topik dengan memublikasikan ke topik. Untuk memublikasikan ke topik, Anda dapat menggunakan konsol Amazon SNS, perintah CLI `[sns-publish](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html)`, atau API `[Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)`.

Jika Anda mengikuti [Langkah 1](SendMessageToHttp.prepare.md), kode yang Anda deploy di titik akhir Anda harus memproses notifikasi.

**Untuk memublikasikan ke topik menggunakan konsol Amazon SNS**

1. Menggunakan kredensi pengguna Akun AWS atau IAM dengan izin untuk mempublikasikan ke topik, masuk ke Konsol Manajemen AWS dan buka konsol Amazon SNS di. [https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/home)

1. Pada panel navigasi, pilih **Topik** dan kemudian pilih topik.

1. Pilih tombol **Publikasikan pesan**.

1. Di kotak **Subjek**, masukkan subjek (misalnya, **Testing publish to my endpoint**).

1. Di kotak **Pesan**, masukkan beberapa teks (misalnya, **Hello world\$1**), dan pilih **Publikasikan pesan**.

    Pesan berikut muncul: Pesan Anda telah berhasil dipublikasikan.

# Memverifikasi tanda tangan pesan Amazon SNS
<a name="sns-verify-signature-of-message"></a>

Amazon SNS menggunakan tanda tangan pesan untuk mengonfirmasi keaslian pesan yang dikirim ke titik akhir HTTP Anda. Untuk memastikan integritas pesan dan mencegah spoofing, Anda **harus** memverifikasi tanda tangan sebelum memproses pesan Amazon SNS apa pun.

**Kapan Anda harus memverifikasi tanda tangan Amazon SNS?**

Anda harus memverifikasi tanda tangan pesan Amazon SNS dalam skenario berikut:
+ Saat Amazon SNS mengirim pesan notifikasi ke titik akhir HTTP (S) Anda.
+ Saat Amazon SNS mengirim pesan konfirmasi ke titik akhir Anda setelah panggilan [https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)atau [https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html)API.

**Amazon SNS mendukung dua versi tanda tangan:**
+ SignatureVersion1 — Menggunakan SHA1 hash dari pesan.
+ SignatureVersion2 — Menggunakan SHA256 hash dari pesan. Ini memberikan keamanan yang lebih kuat dan merupakan opsi yang disarankan.

**Untuk memverifikasi tanda tangan pesan SNS dengan benar, ikuti praktik terbaik berikut:**
+ Selalu ambil sertifikat penandatanganan menggunakan HTTPS untuk mencegah serangan intersepsi yang tidak sah.
+ Periksa apakah sertifikat dikeluarkan oleh Amazon SNS.
+ Konfirmasikan bahwa rantai kepercayaan sertifikat valid.
+ Sertifikat harus berasal dari URL yang ditandatangani SNS.
+ Jangan percaya sertifikat apa pun yang diberikan dalam pesan tanpa validasi.
+ Tolak pesan apa pun dengan yang tidak terduga `TopicArn` untuk mencegah spoofing.
+  AWS SDKs Untuk Amazon SNS menyediakan logika validasi bawaan, mengurangi risiko kesalahan penyederhanaan.

# Mengonfigurasi versi tanda tangan pesan pada topik Amazon SNS
<a name="sns-verify-signature-of-message-configure-message-signature"></a>

Mengonfigurasi versi tanda tangan pesan pada topik Amazon SNS memungkinkan Anda meningkatkan keamanan dan kompatibilitas proses verifikasi pesan Anda.

Pilih antara `SignatureVersion` **1** (SHA1) dan `SignatureVersion` **2** (SHA256) untuk mengontrol algoritma hashing yang digunakan untuk menandatangani pesan. **Topik Amazon SNS default ke `SignatureVersion` 1.** Anda dapat mengonfigurasi pengaturan ini menggunakan tindakan [https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)API.

Gunakan contoh berikut untuk mengatur atribut topik `SignatureVersion` menggunakan AWS CLI:

```
aws sns set-topic-attributes \
    --topic-arn arn:aws:sns:us-east-2:123456789012:MyTopic \
    --attribute-name SignatureVersion \
    --attribute-value 2
```

# Memverifikasi tanda tangan pesan Amazon SNS saat menggunakan permintaan berbasis kueri HTTP
<a name="sns-verify-signature-of-message-verify-message-signature"></a>

Memverifikasi tanda tangan pesan Amazon SNS saat menggunakan permintaan berbasis kueri HTTP memastikan keaslian dan integritas pesan. Proses ini menegaskan bahwa pesan tersebut berasal dari Amazon SNS dan belum dirusak selama transit. Dengan mengurai pesan, membuat string yang benar untuk ditandatangani, dan memvalidasi tanda tangan terhadap kunci publik tepercaya, Anda melindungi sistem Anda dari spoofing dan perubahan pesan yang tidak sah.

1. Ekstrak **pasangan kunci-nilai** dari dokumen JSON di badan permintaan HTTP POST yang dikirim oleh Amazon SNS. Bidang ini diperlukan untuk membangun **string untuk ditandatangani**.
   + `Message`
   + `Subject`(jika ada)
   + `MessageId`
   + `Timestamp`
   + `TopicArn`
   + `Type`

   Contoh:

   ```
   MESSAGE_FILE="message.json"
   FIELDS=("Message" "MessageId" "Subject" "Timestamp" "TopicArn" "Type")
   ```
**catatan**  
Jika ada bidang yang berisi karakter yang diloloskan (misalnya,`\n`), konversikan ke **bentuk aslinya** untuk memastikan kecocokan yang tepat.

1. Temukan `SigningCertURL` bidang di pesan Amazon SNS. Sertifikat ini berisi kunci publik yang diperlukan untuk memverifikasi tanda tangan pesan. Contoh:

   ```
   SIGNING_CERT_URL=$(jq -r '.SigningCertURL' "$MESSAGE_FILE")
   ```

1. Pastikan berasal dari AWS domain tepercaya (misalnya,https://sns.us-east-1.amazonaws.com). `SigningCertURL` Tolak ** AWS domain URLs luar** apa pun untuk alasan keamanan.

1. Unduh **sertifikat X.509 dari URL** yang disediakan. Contoh:

   ```
   curl -s "$SIGNING_CERT_URL" -o signing_cert.pem
   ```

1. Ekstrak **kunci publik** dari sertifikat X.509 yang diunduh. Kunci publik memungkinkan Anda untuk mendekripsi tanda tangan pesan dan memverifikasi integritasnya. Contoh:

   ```
   openssl x509 -pubkey -noout -in signing_cert.pem > public_key.pem
   ```

1. Jenis pesan yang berbeda memerlukan pasangan kunci-nilai yang berbeda dalam string untuk ditandatangani. Identifikasi **jenis pesan** (`Type`bidang dalam pesan Amazon SNS) untuk menentukan pasangan **nilai kunci** mana yang akan disertakan:
   + **Pesan pemberitahuan** — Termasuk`Message`,`MessageId`, `Subject` (jika ada),`Timestamp`,`TopicArn`, dan`Type`.
   + **SubscriptionConfirmation**atau **UnsubscribeConfirmation pesan** — Termasuk`Message`,`MessageId`,`SubscribeURL`,`Timestamp`,`Token`,`TopicArn`, dan`Type`.

1. Amazon SNS memerlukan string untuk menandatangani untuk mengikuti urutan bidang yang ketat dan tetap untuk verifikasi. **Hanya bidang yang diperlukan secara eksplisit yang harus disertakan** —tidak ada bidang tambahan yang dapat ditambahkan. Bidang opsional`Subject`, seperti, harus disertakan hanya jika ada dalam pesan dan harus muncul di posisi yang tepat yang ditentukan oleh urutan bidang yang diperlukan. Contoh:

   ```
   KeyNameOne\nValueOne\nKeyNameTwo\nValueTwo
   ```
**penting**  
Jangan menambahkan karakter baris baru di akhir string.

1. Atur **pasangan kunci-nilai** dalam urutan byte-sort (menurut abjad dengan nama kunci).

1. Membangun **string untuk menandatangani** menggunakan contoh format berikut:

   ```
   STRING_TO_SIGN=""
   for FIELD in "${FIELDS[@]}"; do
       VALUE=$(jq -r --arg field "$FIELD" '.[$field]' "$MESSAGE_FILE")
       STRING_TO_SIGN+="$FIELD\n$VALUE"
       # Append a newline after each field except the last one
       if [[ "$FIELD" != "Type" ]]; then
           STRING_TO_SIGN+="\n"
       fi
   done
   ```

   **Contoh pesan pemberitahuan:**

   ```
   Message
   My Test Message
   MessageId
   4d4dc071-ddbf-465d-bba8-08f81c89da64
   Subject
   My subject
   Timestamp
   2019-01-31T04:37:04.321Z
   TopicArn
   arn:aws:sns:us-east-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P
   Type
   Notification
   ```

   **SubscriptionConfirmation contoh:**

   ```
   Message
   Please confirm your subscription
   MessageId
   3d891288-136d-417f-bc05-901c108273ee
   SubscribeURL
   https://sns.us-east-2.amazonaws.com/...
   Timestamp
   2024-01-01T00:00:00.000Z
   Token
   abc123...
   TopicArn
   arn:aws:sns:us-east-2:123456789012:MyTopic
   Type
   SubscriptionConfirmation
   ```

1. `Signature`Bidang dalam pesan adalah Base64-dikodekan. Anda perlu **mendekodekannya** untuk membandingkan **bentuk biner mentahnya** dengan **hash turunan**. Contoh:

   ```
   SIGNATURE=$(jq -r '.Signature' "$MESSAGE_FILE")
   echo "$SIGNATURE" | base64 -d > signature.bin
   ```

1. Gunakan `SignatureVersion` bidang untuk memilih algoritma hash:
   + Untuk `SignatureVersion` **1**, gunakan **SHA1**(misalnya,`-sha1`).
   + Untuk `SignatureVersion` **2**, gunakan **SHA256**(misalnya,`-sha256`).

1. **Untuk mengonfirmasi keaslian pesan Amazon SNS, buat hash dari string **yang** dibangun dan verifikasi tanda tangan menggunakan kunci publik.**

   ```
   openssl dgst -sha256 -verify public_key.pem -signature signature.bin <<< "$STRING_TO_SIGN"
   ```

   Jika tanda tangan valid, outputnya adalah`Verified OK`. Jika tidak, outputnya adalah`Verification Failure`.

## Contoh skrip dengan penanganan kesalahan
<a name="sns-verify-signature-of-message-example"></a>

Contoh skrip berikut mengotomatiskan proses verifikasi:

```
#!/bin/bash

# Path to the local message file
MESSAGE_FILE="message.json"

# Extract the SigningCertURL and Signature from the message
SIGNING_CERT_URL=$(jq -r '.SigningCertURL' "$MESSAGE_FILE")
SIGNATURE=$(jq -r '.Signature' "$MESSAGE_FILE")

# Fetch the X.509 certificate
curl -s "$SIGNING_CERT_URL" -o signing_cert.pem

# Extract the public key from the certificate
openssl x509 -pubkey -noout -in signing_cert.pem > public_key.pem

# Define the fields to include in the string to sign
FIELDS=("Message" "MessageId" "Subject" "Timestamp" "TopicArn" "Type")

# Initialize the string to sign
STRING_TO_SIGN=""

# Iterate over the fields to construct the string to sign
for FIELD in "${FIELDS[@]}"; do
    VALUE=$(jq -r --arg field "$FIELD" '.[$field]' "$MESSAGE_FILE")
    STRING_TO_SIGN+="$FIELD\n$VALUE"
    # Append a newline after each field except the last one
    if [[ "$FIELD" != "Type" ]]; then
        STRING_TO_SIGN+="\n"
    fi
done

# Verify the signature
echo -e "$STRING_TO_SIGN" | openssl dgst -sha256 -verify public_key.pem -signature <(echo "$SIGNATURE" | base64 -d)
```

# Mengurai format pesan Amazon SNS
<a name="sns-message-and-json-formats"></a>

Saat Amazon SNS mengirim pesan ke HTTP/HTTPS titik akhir, pesan tersebut berisi header HTTP dan badan pesan JSON. Pesan ini mengikuti format terstruktur yang mencakup metadata seperti jenis pesan, topik ARN, stempel waktu, dan tanda tangan digital. Dengan mengurai pesan Amazon SNS dengan benar, Anda dapat menentukan apakah pesan tersebut merupakan konfirmasi langganan, pemberitahuan, atau konfirmasi berhenti berlangganan, mengekstrak data yang relevan, dan memverifikasi keaslian menggunakan validasi tanda tangan.

# Header HTTP/HTTPS
<a name="http-header"></a>

Saat Amazon SNS mengirimkan konfirmasi langganan, pemberitahuan, atau pesan konfirmasi berhenti berlangganan ke HTTP/HTTPS titik akhir, Amazon SNS akan mengirimkan pesan POST dengan sejumlah nilai header khusus Amazon SNS. Anda dapat menggunakan nilai header untuk tugas seperti mengidentifikasi jenis pesan tanpa harus mengurai badan pesan JSON untuk membaca nilainya. `Type` Secara default, Amazon SNS mengirimkan semua notifikasi ke titik akhir HTTP/S dengan disetel ke. `Content-Type` `text/plain; charset=UTF-8` Untuk memilih `Content-Type` selain text/plain (default), lihat `headerContentType` di[Membuat kebijakan HTTP/S pengiriman](sns-message-delivery-retries.md#creating-delivery-policy).

**`x-amz-sns-message-type`**  
Jenis pesan. Nilai yang mungkin adalah `SubscriptionConfirmation`, `Notification`, dan `UnsubscribeConfirmation`.

**`x-amz-sns-message-id`**  
Universally Unique Identifier (UUID), unik untuk setiap pesan yang diterbitkan. Untuk notifikasi bahwa Amazon SNS mengirimkan ulang selama percobaan kembali, ID pesan dari pesan asli digunakan.

**`x-amz-sns-topic-arn`**  
Amazon Resource Name (ARN) untuk topik tempat pesan ini diterbitkan.

**`x-amz-sns-subscription-arn`**  
ARN untuk langganan ke titik akhir ini.

Berikut HTTP POST header adalah contoh dari header untuk `Notification` pesan ke endpoint HTTP.

```
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
```

# Format JSON konfirmasi berlangganan HTTP/HTTPS
<a name="http-subscription-confirmation-json"></a>

Setelah Anda berlangganan HTTP/HTTPS titik akhir, Amazon SNS mengirimkan pesan konfirmasi langganan ke HTTP/HTTPS titik akhir. Pesan ini berisi `SubscribeURL` nilai yang harus Anda kunjungi untuk mengonfirmasi langganan (sebagai alternatif, Anda dapat menggunakan `Token` nilainya dengan [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)). 

**catatan**  
Amazon SNS tidak mengirim pemberitahuan ke titik akhir ini hingga langganan dikonfirmasi

Pesan konfirmasi berlangganan adalah pesan POST dengan isi pesan yang berisi dokumen JSON dengan pasangan nama-nilai berikut.

**`Type`**  
Jenis pesan. Untuk konfirmasi berlangganan, tipenya adalah `SubscriptionConfirmation`.

**`MessageId`**  
Universally Unique Identifier (UUID), unik untuk setiap pesan yang diterbitkan. Untuk pesan yang dikirim ulang Amazon SNS selama mencoba lagi, ID pesan dari pesan asli digunakan.

**`Token`**  
Nilai yang dapat Anda gunakan dengan [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)tindakan untuk mengonfirmasi langganan. Atau, Anda dapat mengunjungi `SubscribeURL`.

**`TopicArn`**  
Amazon Resource Name (ARN) untuk topik yang dilanggan titik akhir ini.

**`Message`**  
String yang menggambarkan pesan. Untuk konfirmasi berlangganan, string ini terlihat seperti ini:  

```
You have chosen to subscribe to the topic arn:aws:sns:us-east-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.
```

**`SubscribeURL`**  
URL yang harus Anda kunjungi untuk mengonfirmasi langganan. Sebagai alternatif, Anda dapat menggunakan [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)tindakan `Token` dengan untuk mengonfirmasi langganan.

**`Timestamp`**  
Waktu (GMT) saat konfirmasi berlangganan dikirim.

**`SignatureVersion`**  
Versi tanda tangan Amazon SNS yang digunakan.  
+ Jika `SignatureVersion` adalah **1**, `Signature` adalah `SHA1withRSA` tanda tangan yang dikodekan Base64 dari`Message`,,, `MessageId``Type`, `Timestamp` dan nilai. `TopicArn` 
+ Jika `SignatureVersion` adalah **2**, `Signature` adalah `SHA256withRSA` tanda tangan yang dikodekan Base64 dari`Message`,,, `MessageId``Type`, `Timestamp` dan nilai. `TopicArn`

**`Signature`**  
Base64 dikodekan `SHA1withRSA` atau `SHA256withRSA` tanda tangan dari`Message`,,, `MessageId``Type`, `Timestamp` dan nilai. `TopicArn`

**`SigningCertURL`**  
URL untuk sertifikat yang digunakan untuk menandatangani pesan.

Pesan HTTP POST berikut adalah contoh `SubscriptionConfirmation` pesan ke titik akhir HTTP.

```
POST / HTTP/1.1
x-amz-sns-message-type: SubscriptionConfirmation
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent

{
  "Type" : "SubscriptionConfirmation",
  "MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b",
  "Token" : "2336412f37...",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.",
  "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37...",
  "Timestamp" : "2012-04-26T20:45:04.751Z",
  "SignatureVersion" : "1",
  "Signature" : "EXAMPLEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=",
  "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem"
}
```

# Format JSON notifikasi HTTP/HTTPS
<a name="http-notification-json"></a>

Saat Amazon SNS mengirimkan notifikasi ke titik akhir HTTP atau HTTPS langganan, pesan POST yang dikirim ke titik akhir memiliki isi pesan yang berisi dokumen JSON dengan pasangan nama-nilai berikut.

**`Type`**  
Jenis pesan. Untuk notifikasi, jenisnya adalah `Notification`.

**`MessageId`**  
Universally Unique Identifier (UUID), unik untuk setiap pesan yang diterbitkan. Untuk notifikasi bahwa Amazon SNS mengirimkan ulang selama percobaan kembali, ID pesan dari pesan asli digunakan.

**`TopicArn`**  
Amazon Resource Name (ARN) untuk topik tempat pesan ini diterbitkan.

**`Subject`**  
`Subject`Parameter yang ditentukan saat pemberitahuan dipublikasikan ke topik.  
Ini adalah parameter opsional. Jika tidak `Subject` ditentukan, maka pasangan nama-nilai ini tidak muncul dalam dokumen JSON ini.

**`Message`**  
`Message`Nilai yang ditentukan saat pemberitahuan dipublikasikan ke topik.

**`Timestamp`**  
Waktu (GMT) saat notifikasi dipublikasikan.

**`SignatureVersion`**  
Versi tanda tangan Amazon SNS yang digunakan.  
+ Jika `SignatureVersion` adalah **1**, `Signature` adalah `SHA1withRSA` tanda tangan yang dikodekan Base64 dari`Message`,, `Subject` (jika ada)`MessageId`,,`Type`, `Timestamp` dan nilai. `TopicArn`
+ Jika `SignatureVersion` adalah **2**, `Signature` adalah `SHA256withRSA` tanda tangan yang dikodekan Base64 dari`Message`,`MessageId`, `Subject` (jika ada),`Type`, `Timestamp` dan nilai. `TopicArn`

**`Signature`**  
Base64 dikodekan `SHA1withRSA` atau `SHA256withRSA` tanda tangan dari`Message`,`MessageId`, `Subject` (jika ada),,`Type`, `Timestamp` dan nilai. `TopicArn`

**`SigningCertURL`**  
URL untuk sertifikat yang digunakan untuk menandatangani pesan.

**`UnsubscribeURL`**  
URL yang dapat Anda gunakan untuk berhenti melanggankan titik akhir dari topik ini. Jika Anda mengunjungi URL ini, Amazon SNS berhenti melanggankan titik akhir dan berhenti mengirimkan notifikasi ke titik akhir ini.

Pesan HTTP POST berikut adalah contoh `Notification` pesan ke titik akhir HTTP.

```
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96
Content-Length: 773
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent

{
  "Type" : "Notification",
  "MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Subject" : "My First Message",
  "Message" : "Hello world!",
  "Timestamp" : "2012-05-02T00:54:06.655Z",
  "SignatureVersion" : "1",
  "Signature" : "EXAMPLEw6JRN...",
  "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
  "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"
  }
```

# Format JSON konfirmasi berhenti berlangganan HTTP/HTTPS
<a name="http-unsubscribe-confirmation-json"></a>

Setelah HTTP/HTTPS titik akhir berhenti berlangganan dari suatu topik, Amazon SNS mengirimkan pesan konfirmasi berhenti berlangganan ke titik akhir.

Pesan konfirmasi berhenti berlangganan adalah pesan POST dengan isi pesan yang berisi dokumen JSON dengan pasangan nama-nilai berikut.

**`Type`**  
Jenis pesan. Untuk konfirmasi berhenti berlangganan, jenisnya adalah `UnsubscribeConfirmation`.

**`MessageId`**  
Universally Unique Identifier (UUID), unik untuk setiap pesan yang diterbitkan. Untuk pesan yang dikirim ulang Amazon SNS selama mencoba lagi, ID pesan dari pesan asli digunakan.

**`Token`**  
Nilai yang dapat Anda gunakan dengan [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)tindakan untuk mengonfirmasi ulang langganan. Atau, Anda dapat mengunjungi `SubscribeURL`.

**`TopicArn`**  
Amazon Resource Name (ARN) untuk topik yang telah berhenti dilanggan titik akhir.

**`Message`**  
String yang menggambarkan pesan. Untuk konfirmasi berhenti berlangganan, string ini terlihat seperti ini:  

```
You have chosen to deactivate subscription arn:aws:sns:us-east-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.
```

**`SubscribeURL`**  
URL yang harus Anda kunjungi untuk mengonfirmasi ulang langganan. Sebagai alternatif, Anda dapat menggunakan [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)tindakan `Token` dengan untuk mengonfirmasi ulang langganan.

**`Timestamp`**  
Waktu (GMT) saat konfirmasi berhenti berlangganan dikirim.

**`SignatureVersion`**  
Versi tanda tangan Amazon SNS yang digunakan.  
+ Jika `SignatureVersion` adalah **1**, `Signature` adalah `SHA1withRSA` tanda tangan yang dikodekan Base64 dari`Message`,,, `MessageId``Type`, `Timestamp` dan nilai. `TopicArn`
+ Jika `SignatureVersion` adalah **2**, `Signature` adalah `SHA256withRSA` tanda tangan yang dikodekan Base64 dari`Message`,,, `MessageId``Type`, `Timestamp` dan nilai. `TopicArn`

**`Signature`**  
Base64 dikodekan `SHA1withRSA` atau `SHA256withRSA` tanda tangan dari`Message`,,, `MessageId``Type`, `Timestamp` dan nilai. `TopicArn`

**`SigningCertURL`**  
URL untuk sertifikat yang digunakan untuk menandatangani pesan.

Pesan HTTP POST berikut adalah contoh `UnsubscribeConfirmation` pesan ke titik akhir HTTP.

```
POST / HTTP/1.1
x-amz-sns-message-type: UnsubscribeConfirmation
x-amz-sns-message-id: 47138184-6831-46b8-8f7c-afc488602d7d
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
Content-Length: 1399
Content-Type: text/plain; charset=UTF-8
Host: myhost.example.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent

{
  "Type" : "UnsubscribeConfirmation",
  "MessageId" : "47138184-6831-46b8-8f7c-afc488602d7d",
  "Token" : "2336412f37...",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Message" : "You have chosen to deactivate subscription arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation and restore the subscription, visit the SubscribeURL included in this message.",
  "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb6...",
  "Timestamp" : "2012-04-26T20:06:41.581Z",
  "SignatureVersion" : "1",
  "Signature" : "EXAMPLEHXgJm...",
  "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem"
}
```

# SetSubscriptionAttributes kebijakan pengiriman format JSON
<a name="set-sub-attributes-delivery-policy-json"></a>

Jika Anda mengirim permintaan ke `SetSubscriptionAttributes` tindakan dan mengatur `AttributeName` parameter ke nilai`DeliveryPolicy`, nilai `AttributeValue` parameter harus menjadi objek JSON yang valid. Sebagai contoh, contoh berikut menetapkan kebijakan pengiriman untuk 5 jumlah pengulangan.

```
http://sns.us-east-2.amazonaws.com/
?Action=SetSubscriptionAttributes
&SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-2%3A123456789012%3AMy-Topic%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca
&AttributeName=DeliveryPolicy
&AttributeValue={"healthyRetryPolicy":{"numRetries":5}}
...
```

Gunakan format JSON berikut untuk nilai `AttributeValue` parameter.

```
{
    "healthyRetryPolicy" : {
        "minDelayTarget" :  int,
        "maxDelayTarget" : int,
        "numRetries" : int,
        "numMaxDelayRetries" : int,
        "backoffFunction" : "linear|arithmetic|geometric|exponential"
    },
    "throttlePolicy" : {
        "maxReceivesPerSecond" : int
    },
    "requestPolicy" : {
        "headerContentType" : "text/plain | application/json | application/xml"
    }
}
```

Untuk informasi selengkapnya tentang `SetSubscriptionAttribute` tindakan tersebut, buka *Referensi API Layanan Pemberitahuan Sederhana Amazon*. [SetSubscriptionAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html) Untuk informasi selengkapnya tentang header tipe konten HTTP yang didukung, lihat. [Membuat kebijakan HTTP/S pengiriman](sns-message-delivery-retries.md#creating-delivery-policy)

# SetTopicAttributes kebijakan pengiriman format JSON
<a name="set-topic-attributes-delivery-policy-json"></a>

Jika Anda mengirim permintaan ke `SetTopicAttributes` tindakan dan mengatur `AttributeName` parameter ke nilai`DeliveryPolicy`, nilai `AttributeValue` parameter harus menjadi objek JSON yang valid. Sebagai contoh, contoh berikut menetapkan kebijakan pengiriman untuk 5 jumlah pengulangan.

```
http://sns.us-east-2.amazonaws.com/
?Action=SetTopicAttributes
&TopicArn=arn%3Aaws%3Asns%3Aus-east-2%3A123456789012%3AMy-Topic
&AttributeName=DeliveryPolicy
&AttributeValue={"http":{"defaultHealthyRetryPolicy":{"numRetries":5}}}
...
```

Gunakan format JSON berikut untuk nilai `AttributeValue` parameter.

```
{
    "http" : {
        "defaultHealthyRetryPolicy" : {
            "minDelayTarget":  int,
            "maxDelayTarget": int,
            "numRetries": int,
            "numMaxDelayRetries": int,
            "backoffFunction": "linear|arithmetic|geometric|exponential"
        },
        "disableSubscriptionOverrides" : Boolean,
        "defaultThrottlePolicy" : {
            "maxReceivesPerSecond" : int
        },
        "defaultRequestPolicy" : {
            "headerContentType" : "text/plain | application/json | application/xml"
        }
    }
}
```

Untuk informasi selengkapnya tentang `SetTopicAttribute` tindakan tersebut, buka *Referensi API Layanan Pemberitahuan Sederhana Amazon*. [SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html) Untuk informasi selengkapnya tentang header tipe konten HTTP yang didukung, lihat. [Membuat kebijakan HTTP/S pengiriman](sns-message-delivery-retries.md#creating-delivery-policy)

# Acara Fanout Amazon SNS AWS ke Event Fork Pipelines
<a name="sns-fork-pipeline-as-subscriber"></a>


|  | 
| --- |
| Untuk pengarsipan dan analitik acara, Amazon SNS sekarang merekomendasikan penggunaan integrasi aslinya dengan Amazon Data Firehose. Anda dapat berlangganan aliran pengiriman Firehose ke topik SNS, yang memungkinkan Anda mengirim pemberitahuan ke titik akhir pengarsipan dan analitik seperti bucket Amazon Simple Storage Service (Amazon S3), tabel Amazon Redshift, Amazon Service (Service), dan banyak lagi. OpenSearch OpenSearch Menggunakan Amazon SNS dengan aliran pengiriman Firehose adalah solusi yang dikelola sepenuhnya dan tanpa kode yang tidak mengharuskan Anda menggunakan fungsi. AWS Lambda Untuk informasi selengkapnya, lihat [Aliran pengiriman Fanout ke Firehose](sns-firehose-as-subscriber.md). | 

Anda dapat menggunakan Amazon SNS untuk membangun aplikasi yang digerakkan peristiwa yang menggunakan layanan pelanggan untuk melakukan pekerjaan secara otomatis sebagai respons terhadap peristiwa dipicu oleh layanan penerbit. Pola arsitektur ini dapat membuat layanan lebih dapat digunakan kembali, dapat dioperasikan, dan dapat diskalakan. Namun demikian, pola tersebut dapat menjadi padat karya untuk fork pemrosesan peristiwa ke dalam alur yang mengatasi persyaratan penanganan peristiwa umum, seperti penyimpanan peristiwa, cadangan, pencarian, analitik, dan ulangan.

Untuk mempercepat pengembangan aplikasi berbasis peristiwa, Anda dapat berlangganan pipeline penanganan acara—yang didukung oleh pipa Event AWS Fork— ke topik Amazon SNS. AWS Event Fork Pipelines adalah rangkaian [aplikasi bersarang sumber terbuka, berdasarkan Model Aplikasi AWS](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) [Tanpa Server](https://aws.amazon.com/serverless/sam/) (AWS SAM), yang dapat Anda gunakan langsung dari [rangkaian AWS Event Fork Pipelines](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines) (pilih **Tampilkan aplikasi yang membuat peran IAM kustom** atau kebijakan sumber daya) ke akun Anda. AWS 

Untuk kasus penggunaan AWS Event Fork Pipelines, lihat[Menyebarkan dan menguji aplikasi sampel pipeline fork event Amazon SNS](sns-deploy-test-fork-pipelines-sample-application.md).

**Topics**
+ [Bagaimana AWS Event Fork Pipelines bekerja](#how-sns-fork-works)
+ [Menyebarkan Pipa Garpu AWS Acara](#deploying-sns-fork-pipelines)
+ [Menyebarkan dan menguji aplikasi sampel pipeline fork event Amazon SNS](sns-deploy-test-fork-pipelines-sample-application.md)
+ [Berlangganan AWS Event Fork Pipelines ke topik Amazon SNS](sns-subscribe-event-fork-pipelines.md)

## Bagaimana AWS Event Fork Pipelines bekerja
<a name="how-sns-fork-works"></a>

AWS Event Fork Pipelines adalah pola desain tanpa server. Namun, ini juga merupakan rangkaian aplikasi tanpa server bersarang berdasarkan AWS SAM (yang dapat Anda terapkan langsung dari AWS Serverless Application Repository (AWS SAR) ke Anda untuk memperkaya platform berbasis peristiwa Anda Akun AWS ). Anda dapat men-deploy aplikasi bersarang tersebut secara individual, sesuai kebutuhan arsitektur Anda.

**Topics**
+ [Penyimpanan peristiwa dan alur cadangan](#sns-fork-event-storage-and-backup-pipeline)
+ [Pencarian peristiwa dan alur analitik](#sns-fork-event-search-and-analytics-pipeline)
+ [Alur ulangan peristiwa](#sns-fork-event-replay-pipeline)

Diagram berikut menunjukkan aplikasi AWS Event Fork Pipelines yang dilengkapi dengan tiga aplikasi bersarang. Anda dapat menyebarkan saluran pipa apa pun dari rangkaian AWS Event Fork Pipelines di AWS SAR secara independen, sesuai kebutuhan arsitektur Anda.

![\[Arsitektur AWS Event Fork Pipelines, menunjukkan bagaimana peristiwa dari topik Amazon SNS difilter dan diproses melalui tiga pipeline yang berbeda: Penyimpanan dan Pencadangan Acara, Pencarian Acara dan Analisis, dan Pemutaran Ulang Acara. Saluran pipa ini digambarkan sebagai kotak yang ditumpuk secara vertikal, masing-masing secara independen memproses peristiwa secara paralel dari topik Amazon SNS yang sama.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/sns-fork-pipeline-as-subscriber-how-it-works.png)


Setiap alur berlangganan pada topik Amazon SNS yang sama, yang mengizinkan dirinya sendiri untuk memproses peristiwa secara paralel saat peristiwa tersebut diterbitkan untuk topik. Setiap alur bersifat independen dan dapat mengatur [Kebijakan Filter Berlangganan](sns-subscription-filter-policies.md) miliknya sendiri. Hal ini mengizinkan alur untuk memproses hanya subset dari peristiwa yang menjadi perhatian (bukan semua peristiwa yang diterbitkan untuk topik).

**catatan**  
Karena Anda menempatkan tiga AWS Event Fork Pipelines di samping pipeline pemrosesan acara reguler Anda (mungkin sudah berlangganan topik Amazon SNS Anda), Anda tidak perlu mengubah bagian mana pun dari penerbit pesan Anda saat ini untuk memanfaatkan AWS Event Fork Pipelines di beban kerja yang ada.

### Penyimpanan peristiwa dan alur cadangan
<a name="sns-fork-event-storage-and-backup-pipeline"></a>

Diagram berikut menunjukkan [Penyimpanan Peristiwa dan Alur Cadangan](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-event-storage-backup-pipeline). Anda dapat berlangganan alur ini untuk topik Amazon SNS Anda untuk secara otomatis membuat cadangan peristiwa yang mengalir melalui sistem Anda.

Pipeline ini terdiri dari antrian Amazon SQS yang menyangga peristiwa yang dikirimkan oleh topik Amazon SNS, fungsi yang secara otomatis AWS Lambda melakukan polling untuk peristiwa ini dalam antrian dan mendorongnya ke aliran, dan bucket Amazon S3 yang secara tahan lama mencadangkan peristiwa yang dimuat oleh aliran. 

![\[Fork-Event-Storage-Backup-Pipeline, yang dirancang untuk memproses dan mencadangkan acara dari topik Amazon SNS. Alur dimulai dengan topik Amazon SNS dari mana acara disebarkan ke antrian Amazon SQS. Peristiwa yang difilter ini kemudian diproses oleh fungsi Lambda, yang meneruskannya ke Firehose Data. Aliran Firehose bertanggung jawab untuk menyangga, mengubah, dan mengompresi peristiwa sebelum memuatnya ke dalam bucket cadangan Amazon S3. Terakhir, Amazon Athena dapat digunakan untuk menanyakan data yang disimpan. Diagram menggunakan serangkaian ikon dan panah untuk menggambarkan aliran dari satu layanan ke layanan berikutnya, dengan jelas memberi label pada setiap komponen pipa.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/sns-fork-event-storage-and-backup-pipeline.png)


Untuk penyetelan halus perilaku pengaliran Firehose Anda, Anda dapat mengonfigurasinya untuk membuffer, mengubah, dan mengompres peristiwa Anda sebelum memuatnya ke dalam bucket. Saat peristiwa dimuat, Anda dapat menggunakan Amazon Athena untuk kueri bucket menggunakan kueri SQL standar. Anda juga dapat mengonfigurasi alur untuk menggunakan kembali bucket Amazon S3 yang ada atau membuat yang baru.

### Pencarian peristiwa dan alur analitik
<a name="sns-fork-event-search-and-analytics-pipeline"></a>

Diagram berikut ini menunjukkan [Pencarian Peristiwa dan Alur Analitik](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-event-search-analytics-pipeline). Anda dapat berlangganan alur ini untuk topik Amazon SNS Anda untuk indeks peristiwa yang mengalir melalui sistem Anda dalam domain pencarian dan kemudian menjalankan analitik padanya.

Pipeline ini terdiri dari antrian Amazon SQS yang menyangga peristiwa yang dikirimkan oleh topik Amazon SNS, fungsi yang AWS Lambda melakukan polling peristiwa dari antrian dan mendorongnya ke aliran, domain OpenSearch Layanan Amazon yang mengindeks peristiwa yang dimuat oleh aliran Firehose, dan bucket Amazon S3 yang menyimpan peristiwa surat mati yang tidak dapat diindeks di domain pencarian.

![\[Event Search dan Analytics Pipeline dalam sebuah AWS arsitektur. Ini dimulai di sebelah kiri dengan topik Amazon SNS menerima semua acara. Peristiwa ini kemudian disalurkan melalui garis putus-putus yang mewakili “peristiwa yang difilter” ke dalam antrian Amazon SQS. Dari antrian, peristiwa diproses oleh fungsi Lambda yang kemudian meneruskannya ke aliran Data Firehose. Data Firehose mengarahkan peristiwa ke dua tujuan: satu rute mengarah ke Amazon Elasticsearch Service untuk pengindeksan, dan rute lainnya mengirimkan peristiwa yang tidak dapat diproses atau “surat mati” ke ember surat mati Amazon S3. Di paling kanan, output dari Layanan Elasticsearch dimasukkan ke dasbor Kibana untuk analitik dan visualisasi. Seluruh aliran ditata secara horizontal dan setiap komponen dihubungkan oleh garis yang menunjukkan arah aliran data.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/sns-fork-event-search-and-analytics-pipeline.png)


Untuk penyetelan halus pengaliran Firehose Anda dalam syarat buffering peristiwa, transformasi, dan kompresi, Anda dapat mengonfigurasi alur ini.

Anda juga dapat mengonfigurasi apakah pipeline harus menggunakan kembali domain yang ada di OpenSearch domain Anda Akun AWS atau membuat yang baru untuk Anda. Saat peristiwa diindeks dalam domain pencarian, Anda dapat menggunakan Kibana untuk menjalankan analitik pada peristiwa Anda dan memperbarui dasbor visual secara waktu nyata. 

### Alur ulangan peristiwa
<a name="sns-fork-event-replay-pipeline"></a>

Diagram berikut ini menunjukkan [Alur Ulangan Peristiwa](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-event-replay-pipeline). Untuk merekam peristiwa yang telah diproses oleh sistem Anda selama 14 hari terakhir (sebagai contoh ketika platform Anda harus pulih dari kegagalan), Anda dapat berlangganan alur ini untuk topik Amazon SNS Anda dan kemudian memproses ulang peristiwa.

Pipeline ini terdiri dari antrean Amazon SQS yang menyangga peristiwa yang dikirimkan oleh topik Amazon SNS, dan fungsi yang melakukan polling peristiwa dari AWS Lambda antrian dan memindahkannya kembali ke pipeline pemrosesan acara reguler Anda, yang juga berlangganan topik Anda.

![\[Event Replay Pipeline dalam format flowchart. Dari kiri ke kanan, dimulai dengan topik Amazon SNS yang mendistribusikan peristiwa yang difilter ke dua proses paralel. Alur atas mewakili pipeline pemrosesan peristiwa reguler Anda, yang mencakup antrean Amazon SQS yang memproses peristiwa. Aliran yang lebih rendah, diberi label sebagai "fork-event-replay-pipeline,” termasuk antrean pemutaran ulang Amazon SQS di mana peristiwa disimpan sementara sebelum diproses oleh fungsi replay Lambda. Fungsi Lambda ini memiliki kemampuan untuk mengarahkan ulang peristiwa ke dalam pipeline pemrosesan acara reguler Anda atau menahannya untuk diputar ulang, berdasarkan apakah fitur pemutaran ulang diaktifkan atau dinonaktifkan. Diagram juga menunjukkan bahwa operator memiliki kontrol atas mengaktifkan atau menonaktifkan fungsi pemutaran ulang acara.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/sns-fork-event-replay-pipeline.png)


**catatan**  
Secara default, fungsi ulangan dinonaktifkan, tidak memindahkan kembali peristiwa Anda. Jika Anda perlu untuk memproses ulang peristiwa, Anda harus mengaktifkan antrean ulangan Amazon SQS sebagai sumber peristiwa untuk fungsi ulangan AWS Lambda .

## Menyebarkan Pipa Garpu AWS Acara
<a name="deploying-sns-fork-pipelines"></a>

[Suite AWS Event Fork Pipelines](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines) [(pilih **Tampilkan aplikasi yang membuat peran IAM kustom atau kebijakan sumber daya**) tersedia sebagai grup aplikasi publik di AWS Serverless Application Repository, tempat Anda dapat menerapkan dan mengujinya secara manual menggunakan konsol.AWS Lambda](https://console.aws.amazon.com/lambda/) Untuk informasi tentang penerapan pipeline menggunakan AWS Lambda konsol, lihat. [Berlangganan AWS Event Fork Pipelines ke topik Amazon SNS](sns-subscribe-event-fork-pipelines.md)

Dalam skenario produksi, kami merekomendasikan untuk menyematkan AWS Event Fork Pipelines dalam template AWS SAM aplikasi Anda secara keseluruhan. Fitur aplikasi bersarang memungkinkan Anda melakukan ini dengan menambahkan sumber daya `[AWS::Serverless::Application](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-application)` ke template AWS SAM Anda, mereferensikan AWS SAR `ApplicationId` dan aplikasi bersarang. `SemanticVersion`

Misalnya, Anda dapat menggunakan Event Storage dan Backup Pipeline sebagai aplikasi bersarang dengan menambahkan cuplikan YAMG berikut ke `Resources` bagian template SAM Anda. AWS 

```
Backup:   
    Type: AWS::Serverless::Application
  Properties:
    Location:
      ApplicationId: arn:aws:serverlessrepo:us-east-2:123456789012:applications/fork-event-storage-backup-pipeline
      SemanticVersion: 1.0.0
    Parameters: 
      #The ARN of the Amazon SNS topic whose messages should be backed up to the Amazon S3 bucket.
      TopicArn: !Ref MySNSTopic
```

Saat Anda menentukan nilai parameter, Anda dapat menggunakan fungsi AWS CloudFormation intrinsik untuk mereferensikan sumber daya lain di template Anda. Misalnya, dalam cuplikan YAMAL di atas, `TopicArn` parameter mereferensikan `[AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)` sumber daya`MySNSTopic`, yang ditentukan di tempat lain dalam template. AWS SAM Untuk informasi selengkapnya, lihat [Referensi Fungsi Intrinsik](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html) di *Panduan Pengguna AWS CloudFormation *.

**catatan**  
Halaman AWS Lambda konsol untuk aplikasi AWS SAR Anda menyertakan tombol **Salin sebagai Sumber Daya SAM**, yang menyalin YAMAL yang diperlukan untuk menyarangkan aplikasi AWS SAR ke clipboard.

# Menyebarkan dan menguji aplikasi sampel pipeline fork event Amazon SNS
<a name="sns-deploy-test-fork-pipelines-sample-application"></a>

Untuk mempercepat pengembangan aplikasi berbasis peristiwa, Anda dapat berlangganan pipeline penanganan acara—yang didukung oleh pipa Event AWS Fork— ke topik Amazon SNS. AWS Event Fork Pipelines adalah rangkaian [aplikasi bersarang sumber terbuka, berdasarkan Model Aplikasi AWS](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) [Tanpa Server](https://aws.amazon.com/serverless/sam/) (AWS SAM), yang dapat Anda gunakan langsung dari [rangkaian AWS Event Fork Pipelines](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines) (pilih **Tampilkan aplikasi yang membuat peran IAM kustom** atau kebijakan sumber daya) ke akun Anda. AWS Untuk informasi selengkapnya, lihat [Bagaimana AWS Event Fork Pipelines bekerja](sns-fork-pipeline-as-subscriber.md#how-sns-fork-works).

Halaman ini menunjukkan bagaimana Anda dapat menggunakan Konsol Manajemen AWS untuk menyebarkan dan menguji aplikasi sampel AWS Event Fork Pipelines.

**penting**  
Untuk menghindari biaya yang tidak diinginkan setelah Anda selesai menerapkan aplikasi sampel AWS Event Fork Pipelines, hapus tumpukannya. CloudFormation Untuk informasi selengkapnya, lihat [Menghapus Tumpukan pada Konsol CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) di *Panduan Pengguna AWS CloudFormation *.

# AWS Contoh kasus penggunaan Event Fork Pipelines
<a name="example-sns-fork-use-case"></a>

Skenario berikut menjelaskan aplikasi e-commerce tanpa server berbasis peristiwa yang menggunakan AWS Event Fork Pipelines. Anda dapat menggunakan [contoh aplikasi e-commerce](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-example-ecommerce-checkout-api) ini di AWS Serverless Application Repository dan kemudian menyebarkannya di AWS Lambda konsol Anda Akun AWS , di mana Anda dapat mengujinya dan memeriksa kode sumbernya. GitHub

![\[Arsitektur aplikasi e-commerce tanpa server yang terintegrasi. Layanan AWS Ini menggambarkan aliran dari pengguna e-niaga yang menempatkan pesanan melalui API Gateway ke saluran pemrosesan yang berbeda termasuk penyimpanan pesanan, analisis pencarian, dan pemutaran ulang, menampilkan bagaimana peristiwa dikelola dan dianalisis melalui Amazon SNS, Lambda, Amazon SQS, DynamoDB, dan Kibana.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/sns-fork-example-use-case.png)


Aplikasi e-commerce ini menerima pesanan dari pembeli melalui RESTful API yang dihosting oleh API Gateway dan didukung oleh AWS Lambda fungsi tersebut`CheckoutApiBackendFunction`. Fungsi ini menerbitkan semua pesanan yang diterima untuk topik Amazon SNS yang bernama `CheckoutEventsTopic` yang, pada gilirannya, dikeluarkan dalam pesanan menjadi empat alur yang berbeda.

Alur pertama adalah alur pemrosesan checkout reguler yang dirancang dan diimplementasikan oleh pemilik aplikasi perdagangan elektronik. Pipeline ini memiliki antrean Amazon SQS `CheckoutQueue` yang menyangga semua pesanan yang diterima, AWS Lambda fungsi bernama `CheckoutFunction` yang melakukan polling antrian untuk memproses pesanan ini, dan tabel DynamoDB yang menyimpan semua pesanan yang ditempatkan dengan aman. `CheckoutTable`

## Menerapkan Pipa Garpu AWS Acara
<a name="applying-sns-fork-pipelines"></a>

Komponen dari aplikasi perdagangan elektronik menangani logika bisnis inti. Namun demikian, pemilik aplikasi perdagangan elektronik juga perlu mengatasi hal berikut:
+ **Kepatuhan**—cadangan yang aman dan terkompresi yang dienkripsi saat tidak bergerak dan sanitasi informasi sensitif
+ **Ketahanan**—ulangan pesanan terbaru dalam kasus terganggunya proses pemenuhan
+ **Ketertelusuran**—menjalankan analitik dan membuat metrik pada pesanan yang dibuat

Alih-alih menerapkan logika pemrosesan acara ini, pemilik aplikasi dapat berlangganan AWS Event Fork Pipelines ke topik `CheckoutEventsTopic` Amazon SNS
+ [Penyimpanan peristiwa dan alur cadangan](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline)dikonfigurasi untuk mengubah data untuk menghapus detail kartu kredit, menyangga data selama 60 detik, mengompresnya menggunakan GZIP, dan mengenkripsi menggunakan kunci yang dikelola pelanggan default untuk Amazon S3. Kunci ini dikelola oleh AWS dan didukung oleh AWS Key Management Service (AWS KMS).

  Untuk informasi selengkapnya, lihat [Memilih Amazon S3 Untuk Tujuan Anda](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3), [Transformasi Data Firehose Data Amazon](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html), dan [Mengonfigurasi Pengaturan di Panduan Pengembang](https://docs.aws.amazon.com/firehose/latest/dev/create-configure.html) Amazon *Data Firehose*.
+ [Pencarian peristiwa dan alur analitik](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline) dikonfigurasi dengan mengindeks durasi coba lagi 30 detik, bucket untuk menyimpan pesanan yang gagal untuk diindekskan di domain pencarian, dan kebijakan filter untuk membatasi set pesanan yang diindeks.

  Untuk informasi selengkapnya, lihat [Memilih OpenSearch Layanan untuk Tujuan Anda](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-elasticsearch) di Panduan *Pengembang Amazon Data Firehose*.
+ [Alur ulangan peristiwa](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline) dikonfigurasi dengan bagian antrean Amazon SQS dari alur pemrosesan pesanan reguler yang dirancang dan diimplementasikan oleh pemilik aplikasi perdagangan elektronik.

  Untuk informasi lebih lanjut, lihat [Antrean Nama dan URL](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-general-identifiers.html#queue-name-url) di *Panduan Developer Layanan ANtrean Sederhana Amazon*.

Kebijakan filter JSON berikut ini diatur dalam konfigurasi untuk Pencarian Peristiwa dan Alur Analitik. Ini hanya akan mencocokkan pesanan yang masuk di mana jumlah total adalah \$1100 atau lebih tinggi. Untuk informasi selengkapnya, lihat [Pemfilteran pesan Amazon SNS](sns-message-filtering.md).

```
{				
   "amount": [{ "numeric": [ ">=", 100 ] }]
}
```

Dengan menggunakan pola AWS Event Fork Pipelines, pemilik aplikasi e-commerce dapat menghindari overhead pengembangan yang sering mengikuti pengkodean logika undifferentiating untuk penanganan event. Sebagai gantinya, dia bisa menyebarkan AWS Event Fork Pipelines langsung dari AWS Serverless Application Repository ke dalam dirinya. Akun AWS

# Langkah 1: Menyebarkan contoh aplikasi Amazon SNS
<a name="deploy-sample-application"></a>

1. Masuk ke [konsol AWS Lambda](https://console.aws.amazon.com/lambda/).

1. Pada panel navigasi, pilih **Fungsi** dan kemudian pilih **Buat fungsi**.

1. Pada halaman **Buat fungsi**, lakukan hal berikut ini:

   1. Pilih **Jelajahi repositori aplikasi nirserver**, **Aplikasi publik**, **Tampilkan aplikasi yang membuat IAM role khusus atau kebijakan sumber daya**.

   1. Cari untuk `fork-example-ecommerce-checkout-api` dan kemudian pilih aplikasi.

1. Pada halaman **fork-example-ecommerce-checkout-api**, lakukan hal berikut:

   1. Di bagian **Pengaturan aplikasi**, masukkan **Nama aplikasi**(sebagai contoh, `fork-example-ecommerce-my-app`).
**catatan**  
Untuk menemukan sumber daya Anda dengan mudah nanti, simpan prefiks `fork-example-ecommerce`.
Untuk setiap deployment, nama aplikasi harus unik. Jika Anda menggunakan kembali nama aplikasi, penerapan hanya akan memperbarui CloudFormation tumpukan yang digunakan sebelumnya (bukan membuat yang baru).

   1. (Opsional) Masukkan salah satu **LogLevel**pengaturan berikut untuk eksekusi fungsi Lambda aplikasi Anda:
      + `DEBUG`
      + `ERROR`
      + `INFO` (default)
      + `WARNING`

1. Pilih **Saya mengakui bahwa aplikasi ini menciptakan IAM role kustom, kebijakan sumber daya dan men-deploy aplikasi bersarang.** dan kemudian, di bagian bawah halaman, pilih **Deploy**.

Pada **status Deployment for fork-example-ecommerce - *my-app*** page, Lambda menampilkan status **Aplikasi Anda sedang** di-deploy.

Di bagian **Sumber Daya**, CloudFormation mulai membuat tumpukan dan menampilkan status **CREATE\$1IN\$1PROGRESS** untuk setiap sumber daya. Ketika proses selesai, CloudFormation menampilkan status **CREATE\$1COMPLETE**.

**catatan**  
Mungkin perlu waktu 20-30 menit bagi semua sumber daya untuk di-deploy.

Setelah deployment selesai, Lambda menampilkan status **Aplikasi Anda telah di-deploy**.

# Langkah 2: Menjalankan aplikasi sampel terkait SNS
<a name="execute-sample-application"></a>

1. Di AWS Lambda konsol, pada panel navigasi, pilih **Aplikasi**.

1. Pada halaman **Aplikasi**, di bidang pencarian, cari untuk `serverlessrepo-fork-example-ecommerce-my-app` dan kemudian pilih aplikasi.

1. Di bagian **Sumber Daya**, lakukan hal berikut ini:

   1. Untuk menemukan sumber daya yang jenisnya **ApiGatewayRestApi**, urutkan sumber daya berdasarkan **Jenis**, misalnya`ServerlessRestApi`, lalu perluas sumber daya.

   1. **Dua sumber daya bersarang ditampilkan, dari jenis **ApiGatewayDeployment** dan ApiGateway Stage.**

   1. Salin tautan **Titik akhir Prod API** dan tambahkan `/checkout` padanya, sebagai contoh: 

      ```
      https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
      ```

1. Salin JSON berikut ini ke file bernama `test_event.json`.

   ```
   {
      "id": 15311,
      "date": "2019-03-25T23:41:11-08:00",
      "status": "confirmed",
      "customer": {
         "id": 65144,		
   	 "quantity": 2,
         "price": 25.00,
         "subtotal": 50.00
      }]
   }
   ```

1. Untuk mengirim permintaan HTTPS ke titik akhir API Anda, lewatkan muatan peristiwa sebagai masukan dengan menjalankan perintah `curl`, sebagai contoh:

   ```
   curl -d "$(cat test_event.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   API mengembalikan respons kosong berikut ini, menunjukkan berhasilnya eksekusi:

   ```
   { }
   ```

# Langkah 3: Memverifikasi aplikasi Amazon SNS dan kinerja pipeline
<a name="verify-sample-application-pipelines"></a>

## Langkah 1: Memverifikasi eksekusi pipeline checkout sampel
<a name="verify-execution-checkout-pipeline"></a>

1. Masuk ke [konsol Amazon DynamoDB](https://console.aws.amazon.com/dynamodb/).

1. Pada panel navigasi, pilih **Tabel**.

1. Cari untuk `serverlessrepo-fork-example` dan pilih `CheckoutTable`.

1. Pada halaman detail tabel, pilih **Item** dan kemudian pilih item yang dibuat.

   Atribut yang tersimpan akan ditampilkan.

## Langkah 2: Memverifikasi eksekusi penyimpanan acara dan pipa cadangan
<a name="verify-execution-event-storage-backup-pipeline"></a>

1. Masuk ke [konsol Amazon S3](https://console.aws.amazon.com/s3/).

1. Pada panel navigasi, pilih **Bucket**.

1. Cari untuk `serverlessrepo-fork-example` dan kemudian pilih `CheckoutBucket`.

1. Navigasikan hierarki direktori hingga Anda menemukan file dengan ekstensi `.gz`.

1. Untuk mengunduh file, pilih **Tindakan**, **Buka**.

1. Alur dikonfigurasi dengan fungsi Lambda yang membersihkan informasi kartu kredit untuk alasan kepatuhan.

   Untuk memverifikasi bahwa muatan JSON yang disimpan tidak berisi informasi kartu kredit apa pun, dekompresi file.

## Langkah 3: Memverifikasi eksekusi pencarian acara dan pipeline analitik
<a name="verify-execution-event-search-analytics-pipeline"></a>

1. Masuk ke [konsol OpenSearch Layanan](https://console.aws.amazon.com/aos/).

1. Pada panel navigasi, di bawah **Domain saya**, pilih domain dengan prefiks `serverl-analyt`.

1. Alur dikonfigurasi dengan kebijakan filter langganan Amazon SNS yang mengatur syarat pencocokan numerik.

   ****Untuk memverifikasi bahwa acara diindeks karena mengacu pada pesanan yang nilainya lebih tinggi dari USD \$1100, pada *abcdefgh1ijk* halaman **analitik server, pilih Indeks, checkout\$1events**.****

## Langkah 4: Memverifikasi eksekusi pipeline replay acara
<a name="verify-execution-event-replay-pipeline"></a>

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

1. Dalam daftar antrean, cari untuk `serverlessrepo-fork-example` dan pilih `ReplayQueue`.

1. Pilih **Kirim dan terima pesan**.

1. Di kotak *123ABCD4E5F6* dialog **Kirim dan terima pesan di fork-example-ecommerce -*my-app*... ReplayP- ReplayQueue -**, pilih **Poll untuk** pesan. 

1. Untuk memverifikasi bahwa peristiwa diantrekan, pilih **Detail Selengkapnya ** di samping pesan yang muncul di antrean.

# Langkah 4: Mensimulasikan masalah dan memutar ulang acara untuk pemulihan
<a name="simulate-issue-replay-events-for-recovery"></a>

## Langkah 1: Aktifkan masalah simulasi dan kirim permintaan API kedua
<a name="enable-simulated-issue-send-second-api-request"></a>

1. Masuk ke [konsol AWS Lambda](https://console.aws.amazon.com/lambda/) tersebut.

1. Pada panel navigasi, pilih **Fungsi**.

1. Cari untuk `serverlessrepo-fork-example` dan pilih `CheckoutFunction`.

1. Pada **fork-example-ecommerce- *my-app* - CheckoutFunction -*ABCDEF*...** **page, di bagian **Environment variables**, atur variabel **BUG\$1ENABLED** ke **true** dan kemudian pilih Save.**

1. Salin JSON berikut ini ke file bernama `test_event_2.json`.

   ```
   {
   	   "id": 9917,
   	   "date": "2019-03-26T21:11:10-08:00",
   	   "status": "confirmed",
   	   "customer": {
   	      "id": 56999,
   "quantity": 1,
   	      "price": 75.00,
   	      "subtotal": 75.00
   	   }]
   	}
   ```

1. Untuk mengirim permintaan HTTPS ke titik akhir API Anda, lewatkan muatan peristiwa sebagai masukan dengan menjalankan perintah `curl`, sebagai contoh:

   ```
   curl -d "$(cat test_event_2.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   API mengembalikan respons kosong berikut ini, menunjukkan berhasilnya eksekusi:

   ```
   { }
   ```

## Langkah 2: Verifikasi korupsi data yang disimulasikan
<a name="verify-simulated-data-corruption"></a>

1. Masuk ke [konsol Amazon DynamoDB](https://console.aws.amazon.com/dynamodb/).

1. Pada panel navigasi, pilih **Tabel**.

1. Cari untuk `serverlessrepo-fork-example` dan pilih `CheckoutTable`.

1. Pada halaman detail tabel, pilih **Item** dan kemudian pilih item yang dibuat.

   Atribut yang tersimpan ditampilkan, beberapa ditandai sebagai **RUSAK\$1**

## Langkah 3: Nonaktifkan masalah simulasi
<a name="disable-simulated-issue"></a>

1. Masuk ke [konsol AWS Lambda](https://console.aws.amazon.com/lambda/) tersebut.

1. Pada panel navigasi, pilih **Fungsi**.

1. Cari untuk `serverlessrepo-fork-example` dan pilih `CheckoutFunction`.

1. Pada **fork-example-ecommerce- *my-app* - CheckoutFunction -*ABCDEF*...** **page, di bagian **Environment variables**, atur variabel **BUG\$1ENABLED** ke **false** lalu pilih Save.**

## Langkah 4: Aktifkan replay untuk memulihkan dari masalah
<a name="enable-replay-recover-from-simulated-issue"></a>

1. Di AWS Lambda konsol, pada panel navigasi, pilih **Fungsi**.

1. Cari untuk `serverlessrepo-fork-example` dan pilih `ReplayFunction`.

1. Perluas bagian **Desainer**, pilih tile **SQS** dan kemudian, dalam bagian **SQS**, pilih **Diaktifkan**.
**catatan**  
Dibutuhkan sekitar 1 menit agar sumber peristiwa Amazon SQS memicu untuk menjadi diaktifkan.

1. Pilih **Simpan**.

1. Untuk melihat atribut yang dipulihkan, kembali ke konsol Amazon DynamoDB.

1. Untuk menonaktifkan pemutaran ulang, kembali ke AWS Lambda konsol dan nonaktifkan pemicu sumber peristiwa Amazon SQS untuk. `ReplayFunction`

# Berlangganan AWS Event Fork Pipelines ke topik Amazon SNS
<a name="sns-subscribe-event-fork-pipelines"></a>

Untuk mempercepat pengembangan aplikasi berbasis peristiwa, Anda dapat berlangganan pipeline penanganan acara—yang didukung oleh pipa Event AWS Fork— ke topik Amazon SNS. AWS Event Fork Pipelines adalah rangkaian [aplikasi bersarang sumber terbuka, berdasarkan Model Aplikasi AWS](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) [Tanpa Server](https://aws.amazon.com/serverless/sam/) (AWS SAM), yang dapat Anda gunakan langsung dari [rangkaian AWS Event Fork Pipelines](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines) (pilih **Tampilkan aplikasi yang membuat peran IAM kustom** atau kebijakan sumber daya) ke akun Anda. AWS Untuk informasi selengkapnya, lihat [Bagaimana AWS Event Fork Pipelines bekerja](sns-fork-pipeline-as-subscriber.md#how-sns-fork-works).

Bagian ini menunjukkan bagaimana Anda dapat menggunakan Konsol Manajemen AWS untuk menyebarkan pipeline dan kemudian berlangganan AWS Event Fork Pipelines ke topik Amazon SNS. Sebelum Anda memulai, [buat topik Amazon SNS](sns-create-topic.md).

Untuk menghapus sumber daya yang terdiri dari pipeline, cari pipeline di halaman **Applications** di AWS Lambda konsol, perluas **bagian template SAM**, pilih **CloudFormationstack, lalu pilih Other** **Actions**, **Delete Stack**.

# Menyebarkan dan berlangganan Event Storage dan Backup Pipeline ke Amazon SNS
<a name="deploy-event-storage-backup-pipeline"></a>


|  | 
| --- |
| Untuk pengarsipan dan analitik acara, Amazon SNS sekarang merekomendasikan penggunaan integrasi aslinya dengan Amazon Data Firehose. Anda dapat berlangganan aliran pengiriman Firehose ke topik SNS, yang memungkinkan Anda mengirim pemberitahuan ke titik akhir pengarsipan dan analitik seperti bucket Amazon Simple Storage Service (Amazon S3), tabel Amazon Redshift, Amazon Service (Service), dan banyak lagi. OpenSearch OpenSearch Menggunakan Amazon SNS dengan aliran pengiriman Firehose adalah solusi yang dikelola sepenuhnya dan tanpa kode yang tidak mengharuskan Anda menggunakan fungsi. AWS Lambda Untuk informasi selengkapnya, lihat [Aliran pengiriman Fanout ke Firehose](sns-firehose-as-subscriber.md). | 

Halaman ini menunjukkan cara untuk men-deploy [Penyimpanan Peristiwa dan Alur Cadangan](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline) dan berlanggananlah ke topik Amazon SNS. Proses ini secara otomatis mengubah AWS SAM template yang terkait dengan pipeline menjadi CloudFormation tumpukan, dan kemudian menyebarkan tumpukan ke dalam file Anda Akun AWS. Proses ini juga menciptakan dan mengonfigurasi rangkaian sumber daya yang terdiri atas Penyimpanan Peristiwa dan Alur Cadangan, termasuk yang berikut ini:
+ Antrean Amazon SQS
+ Fungsi Lambda
+ Aliran pengiriman Firehose
+ Bucket cadangan Amazon S3

Untuk informasi selengkapnya tentang mengonfigurasi streaming dengan bucket Amazon S3 sebagai tujuan, `[S3DestinationConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_S3DestinationConfiguration.html)` lihat di Referensi API *Amazon Data Firehose*.

Untuk informasi selengkapnya tentang mengubah peristiwa dan tentang mengonfigurasi buffering peristiwa, kompresi peristiwa, dan enkripsi peristiwa, lihat [Membuat Aliran Pengiriman](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) di Panduan Pengembang Amazon *Data Firehose*.

Untuk informasi selengkapnya tentang filter peristiwa, lihat [Kebijakan filter langganan Amazon SNS](sns-subscription-filter-policies.md) dalam panduan ini.

1. Masuk ke [konsol AWS Lambda](https://console.aws.amazon.com/lambda/).

1. Pada panel navigasi, pilih **Fungsi** dan kemudian pilih **Buat fungsi**.

1. Pada halaman **Buat fungsi**, lakukan hal berikut ini:

   1. Pilih **Jelajahi repositori aplikasi nirserver**, **Aplikasi publik**, **Tampilkan aplikasi yang membuat IAM role khusus atau kebijakan sumber daya**.

   1. Cari untuk `fork-event-storage-backup-pipeline` dan kemudian pilih aplikasi.

1. Pada halaman **fork-event-storage-backup-pipeline**, lakukan hal berikut:

   1. Di bagian **Pengaturan aplikasi**, masukkan **Nama aplikasi**(sebagai contoh, `my-app-backup`).
**catatan**  
Untuk setiap deployment, nama aplikasi harus unik. Jika Anda menggunakan kembali nama aplikasi, penerapan hanya akan memperbarui CloudFormation tumpukan yang digunakan sebelumnya (bukan membuat yang baru).

   1. (Opsional) Untuk **BucketArn**, masukkan ARN bucket Amazon S3 tempat acara masuk dimuat. Jika Anda tidak memasukkan nilai, bucket Amazon S3 baru dibuat di akun Anda AWS .

   1. (Opsional) Untuk **DataTransformationFunctionArn**, masukkan ARN dari fungsi Lambda di mana peristiwa yang masuk diubah. Jika Anda tidak memasukkan nilai, pengubahan data dinonaktifkan.

   1. (Opsional) Masukkan salah satu **LogLevel**pengaturan berikut untuk eksekusi fungsi Lambda aplikasi Anda:
      + `DEBUG`
      + `ERROR`
      + `INFO` (default)
      + `WARNING`

   1. Untuk **TopicArn**, masukkan ARN dari topik Amazon SNS tempat instance pipa garpu ini akan berlangganan.

   1. (Opsional) Untuk **StreamBufferingIntervalInSeconds**dan **StreamBufferingSizeInMBs**, masukkan nilai untuk mengonfigurasi buffering peristiwa yang masuk. Jika Anda tidak memasukkan nilai berapa pun, 300 detik dan 5 MB digunakan.

   1. (Opsional) Masukkan salah satu **StreamCompressionFormat**pengaturan berikut untuk mengompresi peristiwa yang masuk:
      + `GZIP`
      + `SNAPPY`
      + `UNCOMPRESSED` (default)
      + `ZIP`

   1. (Opsional) Untuk **StreamPrefix**, masukkan awalan string untuk memberi nama file yang disimpan di bucket cadangan Amazon S3. Jika Anda tidak memasukkan nilai, prefiks tidak digunakan.

   1. (Opsional) Untuk **SubscriptionFilterPolicy**, masukkan kebijakan filter langganan Amazon SNS, dalam format JSON, yang akan digunakan untuk memfilter peristiwa yang masuk. Kebijakan filter menentukan peristiwa mana yang diindeks dalam indeks OpenSearch Layanan. Jika Anda tidak memasukkan nilai, tidak ada pemfilteran yang digunakan (semua peristiwa diindeks).

   1. (Opsional) Untuk **SubscriptionFilterPolicyScope**, masukkan string `MessageBody` atau `MessageAttributes` untuk mengaktifkan pemfilteran pesan berbasis muatan atau atribut. 

   1. Pilih **Saya mengakui bahwa aplikasi ini menciptakan IAM role kustom, kebijakan sumber daya dan men-deploy aplikasi bersarang.** dan kemudian pilih **Deploy**.

Pada **status Deployment for *my-app*** page, Lambda menampilkan status **Aplikasi Anda sedang** di-deploy.

Di bagian **Sumber Daya**, CloudFormation mulai membuat tumpukan dan menampilkan status **CREATE\$1IN\$1PROGRESS** untuk setiap sumber daya. Ketika proses selesai, CloudFormation menampilkan status **CREATE\$1COMPLETE**.

Setelah deployment selesai, Lambda menampilkan status **Aplikasi Anda telah di-deploy**.

Pesan yang dipublikasikan ke topik Amazon SNS Anda disimpan di bucket cadangan Amazon S3 yang disediakan oleh pipeline Penyimpanan Acara dan Pencadangan secara otomatis.

# Menyebarkan dan berlangganan Event Search dan Analytics Pipeline ke Amazon SNS
<a name="deploy-event-search-analytics-pipeline"></a>


|  | 
| --- |
| Untuk pengarsipan dan analitik acara, Amazon SNS sekarang merekomendasikan penggunaan integrasi aslinya dengan Amazon Data Firehose. Anda dapat berlangganan aliran pengiriman Firehose ke topik SNS, yang memungkinkan Anda mengirim pemberitahuan ke titik akhir pengarsipan dan analitik seperti bucket Amazon Simple Storage Service (Amazon S3), tabel Amazon Redshift, Amazon Service (Service), dan banyak lagi. OpenSearch OpenSearch Menggunakan Amazon SNS dengan aliran pengiriman Firehose adalah solusi yang dikelola sepenuhnya dan tanpa kode yang tidak mengharuskan Anda menggunakan fungsi. AWS Lambda Untuk informasi selengkapnya, lihat [Aliran pengiriman Fanout ke Firehose](sns-firehose-as-subscriber.md). | 

Halaman ini menunjukkan cara untuk men-deploy [Pencarian Peristiwa dan Alur Analitik](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline) dan berlanggananlah ke topik Amazon SNS. Proses ini secara otomatis mengubah AWS SAM template yang terkait dengan pipeline menjadi CloudFormation tumpukan, dan kemudian menyebarkan tumpukan ke dalam file Anda Akun AWS. Proses ini juga membuat dan mengonfigurasi rangkaian sumber daya yang terdiri atas Pencarian Peristiwa dan Alur Analitik, termasuk yang berikut ini:
+ Antrean Amazon SQS
+ Fungsi Lambda
+ Aliran pengiriman Firehose
+ Domain OpenSearch Layanan Amazon
+ Bucket suta mati Amazon S3

Untuk informasi selengkapnya tentang mengonfigurasi aliran dengan indeks sebagai tujuan, lihat `[ElasticsearchDestinationConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ElasticsearchDestinationConfiguration.html)` di Referensi *Amazon Data Firehose API*.

Untuk informasi selengkapnya tentang mengubah peristiwa dan tentang mengonfigurasi buffering peristiwa, kompresi peristiwa, dan enkripsi peristiwa, lihat [Membuat Aliran Pengiriman](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) di Panduan Pengembang Amazon *Data Firehose*.

Untuk informasi selengkapnya tentang filter peristiwa, lihat [Kebijakan filter langganan Amazon SNS](sns-subscription-filter-policies.md) dalam panduan ini.

1. Masuk ke [konsol AWS Lambda](https://console.aws.amazon.com/lambda/).

1. Pada panel navigasi, pilih **Fungsi** dan kemudian pilih **Buat fungsi**.

1. Pada halaman **Buat fungsi**, lakukan hal berikut ini:

   1. Pilih **Jelajahi repositori aplikasi nirserver**, **Aplikasi publik**, **Tampilkan aplikasi yang membuat IAM role khusus atau kebijakan sumber daya**.

   1. Cari untuk `fork-event-search-analytics-pipeline` dan kemudian pilih aplikasi.

1. Pada halaman **fork-event-search-analytics-pipeline**, lakukan hal berikut:

   1. Di bagian **Pengaturan aplikasi**, masukkan **Nama aplikasi**(sebagai contoh, `my-app-search`).
**catatan**  
Untuk setiap deployment, nama aplikasi harus unik. Jika Anda menggunakan kembali nama aplikasi, penerapan hanya akan memperbarui CloudFormation tumpukan yang digunakan sebelumnya (bukan membuat yang baru).

   1. (Opsional) Untuk **DataTransformationFunctionArn**, masukkan ARN dari fungsi Lambda yang digunakan untuk mengubah peristiwa yang masuk. Jika Anda tidak memasukkan nilai, pengubahan data dinonaktifkan.

   1. (Opsional) Masukkan salah satu **LogLevel**pengaturan berikut untuk eksekusi fungsi Lambda aplikasi Anda:
      + `DEBUG`
      + `ERROR`
      + `INFO` (default)
      + `WARNING`

   1. (Opsional) Untuk **SearchDomainArn**, masukkan ARN domain OpenSearch Layanan, klaster yang mengonfigurasi fungsionalitas komputasi dan penyimpanan yang diperlukan. Jika Anda tidak memasukkan nilai, domain baru dibuat dengan konfigurasi default.

   1. Untuk **TopicArn**, masukkan ARN dari topik Amazon SNS tempat instance pipa garpu ini akan berlangganan.

   1. Untuk **SearchIndexName**, masukkan nama indeks OpenSearch Layanan untuk pencarian acara dan analitik.
**catatan**  
Kuota berikut ini berlaku untuk nama indeks:  
Tidak dapat menyertakan huruf besar
Tidak dapat menyertakan karakter berikut ini: `\ / * ? " < > | ` , #`
Tidak dapat dimulai dengan karakter berikut ini: `- + _`
Tidak boleh sebagai berikut: `. ..`
Tidak boleh lebih dari 80 karakter
Tidak boleh lebih dari 255 byte
Tidak dapat berisi titik dua (dari OpenSearch Layanan 7.0)

   1. (Opsional) Masukkan salah satu **SearchIndexRotationPeriod**pengaturan berikut untuk periode rotasi indeks OpenSearch Layanan:
      + `NoRotation` (default)
      + `OneDay`
      + `OneHour`
      + `OneMonth`
      + `OneWeek`

      Rotasi indeks menambahkan timestamp untuk nama indeks, yang memfasilitasi kedaluwarsanya data lama. 

   1. Untuk **SearchTypeName**, masukkan nama jenis OpenSearch Layanan untuk mengatur acara dalam indeks.
**catatan**  
OpenSearch Nama tipe layanan dapat berisi karakter apa pun (kecuali byte nol) tetapi tidak dapat dimulai dengan. `_`
Untuk OpenSearch Layanan 6.x, hanya ada satu jenis per indeks. Jika Anda menentukan tipe baru untuk indeks yang sudah ada yang sudah memiliki tipe lain, Firehose akan menampilkan error runtime.

   1. (Opsional) Untuk **StreamBufferingIntervalInSeconds**dan **StreamBufferingSizeInMBs**, masukkan nilai untuk mengonfigurasi buffering peristiwa yang masuk. Jika Anda tidak memasukkan nilai berapa pun, 300 detik dan 5 MB digunakan.

   1. (Opsional) Masukkan salah satu **StreamCompressionFormat**pengaturan berikut untuk mengompresi peristiwa yang masuk:
      + `GZIP`
      + `SNAPPY`
      + `UNCOMPRESSED` (default)
      + `ZIP`

   1. (Opsional) Untuk **StreamPrefix**, masukkan awalan string untuk memberi nama file yang disimpan di bucket surat mati Amazon S3. Jika Anda tidak memasukkan nilai, prefiks tidak digunakan.

   1. (Opsional) Untuk **StreamRetryDurationInSecons**, masukkan durasi coba lagi untuk kasus ketika Firehose tidak dapat mengindeks peristiwa dalam OpenSearch indeks Layanan. Jika Anda tidak memasukkan nilai, maka 300 detik akan digunakan.

   1. (Opsional) Untuk **SubscriptionFilterPolicy**, masukkan kebijakan filter langganan Amazon SNS, dalam format JSON, yang akan digunakan untuk memfilter peristiwa yang masuk. Kebijakan filter menentukan peristiwa mana yang diindeks dalam indeks OpenSearch Layanan. Jika Anda tidak memasukkan nilai, tidak ada pemfilteran yang digunakan (semua peristiwa diindeks).

   1. Pilih **Saya mengakui bahwa aplikasi ini menciptakan IAM role kustom, kebijakan sumber daya dan men-deploy aplikasi bersarang.** dan kemudian pilih **Deploy**.

Pada **status Deployment for *my-app-search*** page, Lambda menampilkan status **Aplikasi Anda sedang** di-deploy.

Di bagian **Sumber Daya**, CloudFormation mulai membuat tumpukan dan menampilkan status **CREATE\$1IN\$1PROGRESS** untuk setiap sumber daya. Ketika proses selesai, CloudFormation menampilkan status **CREATE\$1COMPLETE**.

Setelah deployment selesai, Lambda menampilkan status **Aplikasi Anda telah di-deploy**.

Pesan yang dipublikasikan ke topik Amazon SNS Anda diindeks dalam indeks OpenSearch Layanan yang disediakan oleh pipeline Event Search dan Analytics secara otomatis. Jika pipeline tidak dapat mengindeks suatu peristiwa, ia menyimpannya di ember surat mati Amazon S3.

# Menerapkan Pipeline Putar Ulang Acara dengan integrasi Amazon SNS
<a name="deploy-event-replay-pipeline"></a>

Halaman ini menunjukkan cara untuk men-deploy [Alur Ulangan Peirstiwa](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline) dan berlanggananlah ke topik Amazon SNS. Proses ini secara otomatis mengubah AWS SAM template yang terkait dengan pipeline menjadi CloudFormation tumpukan, dan kemudian menyebarkan tumpukan ke dalam file Anda Akun AWS. Proses ini juga menciptakan dan mengonfigurasi rangkaian sumber daya yang terdiri atas Alur Ulangan Peristiwa, termasuk antrean Amazon SQS dan fungsi Lambda.

Untuk informasi selengkapnya tentang filter peristiwa, lihat [Kebijakan filter langganan Amazon SNS](sns-subscription-filter-policies.md) dalam panduan ini.

1. Masuk ke [konsol AWS Lambda](https://console.aws.amazon.com/lambda/).

1. Pada panel navigasi, pilih **Fungsi** dan kemudian pilih **Buat fungsi**.

1. Pada halaman **Buat fungsi**, lakukan hal berikut ini:

   1. Pilih **Jelajahi repositori aplikasi nirserver**, **Aplikasi publik**, **Tampilkan aplikasi yang membuat IAM role khusus atau kebijakan sumber daya**.

   1. Cari untuk `fork-event-replay-pipeline` dan kemudian pilih aplikasi.

1. Pada **fork-event-replay-pipeline**halaman, lakukan hal berikut:

   1. Di bagian **Pengaturan aplikasi**, masukkan **Nama aplikasi**(sebagai contoh, `my-app-replay`).
**catatan**  
Untuk setiap deployment, nama aplikasi harus unik. Jika Anda menggunakan kembali nama aplikasi, penerapan hanya akan memperbarui CloudFormation tumpukan yang digunakan sebelumnya (bukan membuat yang baru).

   1. (Opsional) Masukkan salah satu **LogLevel**pengaturan berikut untuk eksekusi fungsi Lambda aplikasi Anda:
      + `DEBUG`
      + `ERROR`
      + `INFO` (default)
      + `WARNING`

   1. (Opsional) Untuk **ReplayQueueRetentionPeriodInSeconds**, masukkan jumlah waktu, dalam detik, di mana antrean pemutaran ulang Amazon SQS menyimpan pesan. Jika Anda tidak memasukkan nilai, 1.209.600 detik (14 hari) akan digunakan.

   1. Untuk **TopicArn**, masukkan ARN dari topik Amazon SNS tempat instance pipa garpu ini akan berlangganan.

   1. Untuk **DestinationQueueName**, masukkan nama antrean Amazon SQS tempat fungsi replay Lambda meneruskan pesan.

   1. (Opsional) Untuk **SubscriptionFilterPolicy**, masukkan kebijakan filter langganan Amazon SNS, dalam format JSON, yang akan digunakan untuk memfilter peristiwa yang masuk. Kebijakan filter memutuskan peristiwa mana yang akan dibuffer untuk ulangan. Jika Anda tidak memasukkan nilai, tidak ada pemfilteran digunakan (semua peristiwa dibuffer untuk ulangan).

   1. Pilih **Saya mengakui bahwa aplikasi ini menciptakan IAM role kustom, kebijakan sumber daya dan men-deploy aplikasi bersarang.** dan kemudian pilih **Deploy**.

Pada **status Deployment for *my-app-replay*** page, Lambda menampilkan status **Aplikasi Anda sedang** di-deploy.

Di bagian **Sumber Daya**, CloudFormation mulai membuat tumpukan dan menampilkan status **CREATE\$1IN\$1PROGRESS** untuk setiap sumber daya. Ketika proses selesai, CloudFormation menampilkan status **CREATE\$1COMPLETE**.

Setelah deployment selesai, Lambda menampilkan status **Aplikasi Anda telah di-deploy**.

Pesan yang diterbitkan ke topik Amazon SNS Anda dibuffer untuk ulangan di antrean Amazon SQS yang ditetapkan oleh Alur Ulangan Peristiwa secara otomatis.

**catatan**  
Secara default, ulangan dinonaktifkan. Untuk mengaktifkan ulangan, navigasikan ke halaman fungsi pada konsol Lambda, perluas bagian **Desainer**, pilih tile **SQS** dan kemudian, dalam bagian **SQS**, pilih **Diaktifkan**.

# Menggunakan Amazon EventBridge Scheduler dengan Amazon SNS
<a name="using-eventbridge-scheduler"></a>

[Amazon EventBridge Scheduler adalah penjadwal](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html) tanpa server yang memungkinkan Anda membuat, menjalankan, dan mengelola tugas dari satu layanan terpusat dan terkelola. Dengan EventBridge Scheduler, Anda dapat membuat jadwal menggunakan Cron dan ekspresi tingkat untuk pola berulang, atau mengonfigurasi pemanggilan satu kali. Anda dapat mengatur jendela waktu fleksibel untuk pengiriman, menentukan batas coba lagi, dan mengatur waktu retensi maksimum untuk pemanggilan API yang gagal.

Halaman ini menjelaskan cara menggunakan EventBridge Scheduler untuk mempublikasikan pesan dari topik Amazon SNS sesuai jadwal.



## Mengatur peran eksekusi
<a name="using-eventbridge-scheduler-execution-role"></a>

 Saat Anda membuat jadwal baru, EventBridge Scheduler harus memiliki izin untuk menjalankan operasi API targetnya atas nama Anda. Anda memberikan izin ini ke EventBridge Scheduler menggunakan peran *eksekusi*. Kebijakan izin yang Anda lampirkan ke peran eksekusi jadwal menentukan izin yang diperlukan. Izin ini bergantung pada API target yang ingin Anda panggil EventBridge Scheduler.

 Bila Anda menggunakan konsol EventBridge Scheduler untuk membuat jadwal, seperti dalam prosedur berikut, EventBridge Scheduler secara otomatis mengatur peran eksekusi berdasarkan target yang Anda pilih. Jika Anda ingin membuat jadwal menggunakan salah satu EventBridge Scheduler SDKs, atau AWS CLI CloudFormation, Anda harus memiliki peran eksekusi yang ada yang memberikan izin EventBridge Scheduler memerlukan untuk memanggil target. *Untuk informasi selengkapnya tentang mengatur peran eksekusi secara manual untuk jadwal Anda, lihat [Mengatur peran eksekusi](https://docs.aws.amazon.com/scheduler/latest/UserGuide/setting-up.html#setting-up-execution-role) di Panduan Pengguna EventBridge Penjadwal.* 

## Buat jadwal
<a name="using-eventbridge-scheduler-create"></a>

**Untuk membuat jadwal dengan menggunakan konsol**

1. Buka konsol Amazon EventBridge Scheduler di [https://console.aws.amazon.com/scheduler/rumah](https://console.aws.amazon.com/scheduler/home/).

1.  Pada halaman **Jadwal**, pilih **Buat jadwal**. 

1.  Pada halaman **Tentukan detail jadwal**, di bagian **Nama jadwal dan deskripsi**, lakukan hal berikut: 

   1. Untuk **nama Jadwal**, masukkan nama untuk jadwal Anda. Misalnya, **MyTestSchedule**. 

   1. (Opsional) Untuk **Deskripsi**, masukkan deskripsi untuk jadwal Anda. Misalnya, **My first schedule**.

   1. Untuk **grup Jadwal**, pilih grup jadwal dari daftar dropdown. Jika Anda tidak memiliki grup, pilih **default**. Untuk membuat grup jadwal, pilih **buat jadwal Anda sendiri**. 

      Anda menggunakan grup jadwal untuk menambahkan tag ke grup jadwal. 

1. 

   1. Pilih opsi jadwal Anda.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/using-eventbridge-scheduler.html)

1. (Opsional) Jika Anda memilih **Jadwal berulang** pada langkah sebelumnya, di bagian **Jangka Waktu**, lakukan hal berikut: 

   1. Untuk **Timezone**, pilih zona waktu. 

   1. Untuk **Tanggal dan waktu mulai**, masukkan tanggal yang valid dalam `YYYY/MM/DD` format, lalu tentukan stempel waktu dalam format 24 jam`hh:mm`. 

   1. Untuk **Tanggal dan waktu berakhir**, masukkan tanggal yang valid dalam `YYYY/MM/DD` format, lalu tentukan stempel waktu dalam format 24 jam`hh:mm`. 

1. Pilih **Berikutnya**. 

1. Pada halaman **Select target**, pilih operasi AWS API yang dipanggil EventBridge Scheduler: 

   1. Pilih **Amazon SNS Publish**.

   1. Di bagian **Publikasikan**, pilih SNS topik atau pilih **Buat SNS topik baru**.

   1. (Opsional) Masukkan JSON muatan. Jika Anda tidak memasukkan payload, EventBridge Scheduler menggunakan peristiwa kosong untuk menjalankan fungsi.

1. Pilih **Berikutnya**. 

1. Pada halaman **Pengaturan**, lakukan hal berikut: 

   1. Untuk mengaktifkan jadwal, di bawah **Status jadwal**, alihkan **Aktifkan** jadwal. 

   1. Untuk mengonfigurasi kebijakan coba lagi untuk jadwal Anda, di bawah **Kebijakan Coba ulang dan antrian surat mati (DLQ**), lakukan hal berikut:
      + **Beralih Coba Lagi.**
      + Untuk **usia maksimum acara**, masukkan **jam** maksimum dan **min** yang harus disimpan oleh EventBridge Scheduler untuk menyimpan acara yang belum diproses.
      + Waktu maksimum adalah 24 jam.
      + Untuk **percobaan ulang Maksimum**, masukkan jumlah maksimum kali EventBridge Scheduler mencoba ulang jadwal jika target mengembalikan kesalahan. 

         Nilai maksimumnya adalah 185 percobaan ulang. 

      Dengan kebijakan coba lagi, jika jadwal gagal memanggil targetnya, EventBridge Scheduler menjalankan kembali jadwal. Jika dikonfigurasi, Anda harus mengatur waktu retensi maksimum dan mencoba ulang untuk jadwal.

   1. Pilih tempat EventBridge Scheduler menyimpan acara yang tidak terkirim.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/using-eventbridge-scheduler.html)

   1. Untuk menggunakan kunci yang dikelola pelanggan untuk mengenkripsi input target Anda, di bawah **Enkripsi**, pilih **Sesuaikan pengaturan enkripsi (lanjutan)**. 

      Jika Anda memilih opsi ini, masukkan ARN kunci KMS yang ada atau **pilih AWS KMS key Buat** untuk menavigasi ke AWS KMS konsol. Untuk informasi selengkapnya tentang cara EventBridge Scheduler mengenkripsi data Anda saat istirahat, lihat [Enkripsi saat istirahat di Panduan](https://docs.aws.amazon.com/scheduler/latest/UserGuide/encryption-rest.html) Pengguna * EventBridge Penjadwal Amazon*. 

   1. Agar EventBridge Scheduler membuat peran eksekusi baru untuk Anda, pilih **Buat peran baru untuk jadwal ini**. Kemudian, masukkan nama untuk **nama Peran**. Jika Anda memilih opsi ini, EventBridge Scheduler melampirkan izin yang diperlukan untuk target template Anda ke peran.

1. Pilih **Berikutnya**. 

1.  Di halaman **Tinjau dan buat jadwal**, tinjau detail jadwal Anda. Di setiap bagian, pilih **Edit** untuk kembali ke langkah itu dan mengedit detailnya. 

1. Pilih **Buat jadwal**. 

   Anda dapat melihat daftar jadwal baru dan yang sudah ada di halaman **Jadwal**. Di bawah kolom **Status**, verifikasi bahwa jadwal baru Anda **Diaktifkan**. 

## Sumber daya terkait
<a name="using-eventbridge-scheduler-related-resources"></a>

 Untuk informasi selengkapnya tentang EventBridge Scheduler, lihat berikut ini: 
+ [EventBridge Panduan Pengguna Penjadwal](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html)
+ [EventBridge Referensi API Scheduler](https://docs.aws.amazon.com/scheduler/latest/APIReference/Welcome.html)
+ [EventBridge Penetapan Harga Scheduler](https://aws.amazon.com/eventbridge/pricing/#Scheduler)