

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

# 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`