

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

# Informasi versi sebelumnya untuk Managed Service untuk Apache Flink
<a name="earlier"></a>

**catatan**  
Apache Flink versi 1.6, 1.8, dan 1.11 belum didukung oleh komunitas Apache Flink selama lebih dari tiga tahun. Kami mengeluarkan pemberitahuan perubahan ini pada Juni 2024 dan Oktober 2024 dan sekarang akan mengakhiri dukungan untuk versi ini di Amazon Managed Service untuk Apache Flink.  
Pada 14 Juli 2025, kami akan menghentikan aplikasi Anda dan menempatkannya dalam status SIAP. Anda akan dapat memulai kembali aplikasi Anda pada waktu itu dan terus menggunakan aplikasi Anda seperti biasa, tunduk pada batas layanan.
Mulai 28 Juli 2025, kami akan menonaktifkan kemampuan untuk MEMULAI aplikasi Anda. Anda tidak akan dapat memulai atau mengoperasikan aplikasi Flink versi 1.6 Anda mulai saat ini.
Kami menyarankan Anda segera meningkatkan aplikasi yang ada menggunakan Apache Flink versi 1.6, 1.8, atau 1.11, ke Apache Flink versi 1.20. Ini adalah versi Flink terbaru yang didukung. Anda dapat memutakhirkan aplikasi menggunakan fitur upgrade versi di tempat di Amazon Managed Service untuk Apache Flink. Untuk informasi selengkapnya, lihat [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md).  
Jika Anda memiliki pertanyaan atau masalah lebih lanjut, Anda dapat menghubungi [AWS Dukungan](https://aws.amazon.com/support).

**catatan**  
Apache Flink versi **1.13** belum didukung oleh komunitas Apache Flink selama lebih dari tiga tahun. Kami sekarang berencana untuk mengakhiri dukungan untuk versi ini di Amazon Managed Service untuk Apache Flink pada **16 Oktober 2025**. Setelah tanggal ini, Anda tidak akan lagi dapat membuat, memulai, atau menjalankan aplikasi menggunakan Apache Flink versi 1.13 di Amazon Managed Service untuk Apache Flink.  
Anda dapat memutakhirkan aplikasi secara statis menggunakan fitur peningkatan versi di tempat di Layanan Terkelola untuk Apache Flink. Untuk informasi selengkapnya, lihat [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md).

Versi **1.15.2** didukung oleh Managed Service untuk Apache Flink, tetapi tidak lagi didukung oleh komunitas Apache Flink.

**Topics**
+ [Menggunakan konektor Apache Flink Kinesis Streams dengan versi Apache Flink sebelumnya](#how-creating-apps-building-kinesis)
+ [Membangun aplikasi dengan Apache Flink 1.8.2](#earlier-buildingapps-1_8)
+ [Membangun aplikasi dengan Apache Flink 1.6.2](#earlier-buildingapps-1_6)
+ [Memutakhirkan aplikasi](#earlier-upgrading)
+ [Konektor yang tersedia di Apache Flink 1.6.2 dan 1.8.2](#earlier-connectors)
+ [Memulai: Flink 1.13.2](#getting-started-1-13)
+ [Memulai: Flink 1.11.1 - mencela](#earlier-gs-1_11)
+ [Memulai: Flink 1.8.2 - mencela](#earlier-gs-1_8)
+ [Memulai: Flink 1.6.2 - mencela](#earlier-gs-1_6)
+ [Contoh versi sebelumnya (warisan) untuk Managed Service untuk Apache Flink](#legacy-examples)

## Menggunakan konektor Apache Flink Kinesis Streams dengan versi Apache Flink sebelumnya
<a name="how-creating-apps-building-kinesis"></a>

Konektor Apache Flink Kinesis Stream tidak disertakan dalam Apache Flink sebelum versi 1.11. Agar aplikasi Anda dapat menggunakan konektor Apache Flink Kinesis dengan versi Apache Flink sebelumnya, Anda harus mengunduh, mengompilasi, dan menginstal versi Apache Flink yang digunakan aplikasi Anda. Konektor ini digunakan untuk mengonsumsi data dari aliran Kinesis yang digunakan sebagai sumber aplikasi, atau untuk menulis data ke aliran Kinesis yang digunakan untuk output aplikasi.

**catatan**  
Pastikan Anda membangun konektor dengan [ versi KPL 0.14.0](https://mvnrepository.com/artifact/com.amazonaws/amazon-kinesis-producer/0.14.0) atau lebih tinggi. 

Untuk mengunduh dan menginstal kode sumber Apache Flink versi 1.8.2, lakukan hal berikut:

1. Pastikan Anda menginstal [Apache Maven](https://maven.apache.org/), dan variabel lingkungan `JAVA_HOME` Anda merujuk ke JDK bukan JRE. Anda dapat menguji penginstalan Apache Maven Anda dengan perintah berikut:

   ```
   mvn -version
   ```

1. Unduh kode sumber Apache Flink versi 1.8.2:

   ```
   wget https://archive.apache.org/dist/flink/flink-1.8.2/flink-1.8.2-src.tgz
   ```

1. Batalkan kompresi kode sumber Apache Flink:

   ```
   tar -xvf flink-1.8.2-src.tgz
   ```

1. Ubah ke direktori kode sumber Apache Flink:

   ```
   cd flink-1.8.2
   ```

1. Komplikasi dan instal Apache Flink:

   ```
   mvn clean install -Pinclude-kinesis -DskipTests
   ```
**catatan**  
Jika Anda mengompilasi Flink di Microsoft Windows, Anda perlu menambahkan parameter `-Drat.skip=true`.

## Membangun aplikasi dengan Apache Flink 1.8.2
<a name="earlier-buildingapps-1_8"></a>

Bagian ini berisi informasi tentang komponen yang Anda gunakan untuk membangun Layanan Terkelola untuk aplikasi Apache Flink yang bekerja dengan Apache Flink 1.8.2.

Gunakan versi komponen berikut untuk Managed Service untuk aplikasi Apache Flink:


****  

| Komponen | Versi | 
| --- | --- | 
| Java | 1.8 (direkomendasikan) | 
| Apache Flink | 1.8.2 | 
| Layanan Terkelola untuk Apache Flink untuk Flink Runtime () aws-kinesisanalytics-runtime | 1.0.1 | 
| Layanan Terkelola untuk Konektor Apache Flink Flink () aws-kinesisanalytics-flink | 1.0.1 | 
| Apache Maven | 3.1 | 

Untuk mengompilasi aplikasi menggunakan Apache Flink 1.8.2, jalankan Maven dengan parameter berikut:

```
mvn package -Dflink.version=1.8.2
```

Untuk contoh `pom.xml` file untuk aplikasi Managed Service for Apache Flink yang menggunakan Apache Flink versi 1.8.2, lihat [Managed Service for Apache](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/blob/master/GettingStarted_1_8/pom.xml) Flink 1.8.2 Memulai Aplikasi.

Untuk informasi tentang cara membuat dan menggunakan kode aplikasi untuk aplikasi Managed Service for Apache Flink, lihat. [Membuat aplikasi](how-creating-apps.md)

## Membangun aplikasi dengan Apache Flink 1.6.2
<a name="earlier-buildingapps-1_6"></a>

Bagian ini berisi informasi tentang komponen yang Anda gunakan untuk membangun Layanan Terkelola untuk aplikasi Apache Flink yang bekerja dengan Apache Flink 1.6.2.

Gunakan versi komponen berikut untuk Managed Service untuk aplikasi Apache Flink:


****  

| Komponen | Versi | 
| --- | --- | 
| Java | 1.8 (direkomendasikan) | 
| AWS SDK Jawa | 1.11.379 | 
| Apache Flink | 1.6.2 | 
| Layanan Terkelola untuk Apache Flink untuk Flink Runtime () aws-kinesisanalytics-runtime | 1.0.1 | 
| Layanan Terkelola untuk Konektor Apache Flink Flink () aws-kinesisanalytics-flink | 1.0.1 | 
| Apache Maven | 3.1 | 
| Apache Beam | Tidak didukung dengan Apache Flink 1.6.2. | 

**catatan**  
Saat menggunakan Managed Service for Apache Flink Runtime versi **1.0.1**, Anda menentukan versi Apache Flink di `pom.xml` file Anda daripada menggunakan `-Dflink.version` parameter saat mengompilasi kode aplikasi Anda.

Untuk contoh `pom.xml` file untuk aplikasi Managed Service for Apache Flink yang menggunakan Apache Flink versi 1.6.2, lihat [Managed Service for Apache](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/blob/master/GettingStarted_1_6/pom.xml) Flink 1.6.2 Memulai Aplikasi.

Untuk informasi tentang cara membuat dan menggunakan kode aplikasi untuk aplikasi Managed Service for Apache Flink, lihat. [Membuat aplikasi](how-creating-apps.md)

## Memutakhirkan aplikasi
<a name="earlier-upgrading"></a>

Untuk memutakhirkan versi Apache Flink dari Amazon Managed Service untuk aplikasi Apache Flink, gunakan fitur upgrade versi Apache Flink di tempat menggunakan, SDK, atau aplikasi. AWS CLI AWS CloudFormation Konsol Manajemen AWS Untuk informasi selengkapnya, lihat [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md). 

Anda dapat menggunakan fitur ini dengan aplikasi apa pun yang ada yang Anda gunakan dengan Amazon Managed Service untuk Apache Flink di `READY` atau `RUNNING` negara bagian.

## Konektor yang tersedia di Apache Flink 1.6.2 dan 1.8.2
<a name="earlier-connectors"></a>

Kerangka kerja Apache Flink berisi konektor untuk mengakses data dari berbagai sumber. 
+ Untuk informasi tentang konektor yang tersedia di kerangka kerja Apache Flink 1.6.2, lihat [Konektor (1.6.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/) di [Dokumentasi Apache Flink (1.6.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.6/).
+ Untuk informasi tentang konektor yang tersedia di kerangka kerja Apache Flink 1.8.2, lihat [Konektor (1.8.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/connectors/) di [Dokumentasi Apache Flink (1.8.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.8/).

## Memulai: Flink 1.13.2
<a name="getting-started-1-13"></a>

Bagian ini memperkenalkan Anda pada konsep dasar Managed Service untuk Apache Flink dan API. DataStream Ini menjelaskan opsi yang tersedia untuk membuat dan menguji aplikasi Anda. Ini juga memberikan petunjuk untuk menginstal alat yang diperlukan untuk menyelesaikan tutorial dalam panduan ini dan untuk membuat aplikasi pertama Anda. 

**Topics**
+ [Komponen Layanan Terkelola untuk aplikasi Apache Flink](#getting-started-components-1-13)
+ [Prasyarat untuk menyelesaikan latihan](#setting-up-prerequisites-1-13)
+ [Langkah 1: Siapkan AWS akun dan buat pengguna administrator](#earlier-gs-1_13-setting-up)
+ [Langkah berikutnya](#earlier-gs-1_13-setup-awscli)
+ [Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)](#setup-awscli-1-13)
+ [Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink](#get-started-exercise-1-13)
+ [Langkah 4: Bersihkan AWS sumber daya](#getting-started-cleanup-1-13)
+ [Langkah 5: Langkah selanjutnya](#getting-started-next-steps-1-13)

### Komponen Layanan Terkelola untuk aplikasi Apache Flink
<a name="getting-started-components-1-13"></a>

Untuk memproses data, Managed Service untuk aplikasi Apache Flink Anda menggunakan aplikasi Java/Apache Maven atau Scala yang memproses input dan menghasilkan output menggunakan runtime Apache Flink. 

Managed Service untuk aplikasi Apache Flink memiliki komponen-komponen berikut:
+ **Properti runtime:** Anda dapat menggunakan *properti runtime* untuk mengonfigurasi aplikasi Anda tanpa mengompilasi ulang kode aplikasi Anda. 
+ **Source** (Sumber): Aplikasi mengonsumsi data menggunakan *sumber*. Konektor sumber membaca data dari Kinesis data stream, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat [Tambahkan sumber data streaming](how-sources.md).
+ **Operators** (Operator): Aplikasi memproses data menggunakan satu atau beberapa *operator*. Operator dapat mengubah, memperkaya, atau menggabungkan data. Untuk informasi selengkapnya, lihat [Operator](how-operators.md).
+ **Sink:** Aplikasi menghasilkan data ke sumber eksternal menggunakan *sink*. Konektor sink menulis data ke aliran data Kinesis, aliran Firehose, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat [Tulis data menggunakan sink](how-sinks.md).

Setelah Anda membuat, mengompilasi, dan mengemas kode aplikasi Anda, Anda mengunggah paket kode ke bucket Amazon Simple Storage Service (Amazon S3). Anda kemudian membuat Layanan Terkelola untuk aplikasi Apache Flink. Anda meneruskan di lokasi paket kode, Kinesis data stream sebagai sumber data streaming, dan biasanya lokasi streaming atau file yang menerima data yang diproses dari aplikasi.

### Prasyarat untuk menyelesaikan latihan
<a name="setting-up-prerequisites-1-13"></a>

Untuk menyelesaikan langkah-langkah di panduan ini, Anda harus memiliki hal-hal berikut:
+ [Java Development Kit (JDK) versi 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). Atur variabel lingkungan `JAVA_HOME` untuk menunjuk ke lokasi penginstalan JDK Anda.
+ Sebaiknya gunakan lingkungan pengembangan (seperti [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) atau [IntelliJ Idea](https://www.jetbrains.com/idea/)) untuk mengembangkan dan mengompilasi aplikasi Anda.
+ [Klien Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Instal klien Git jika Anda belum menginstalnya.
+ [Plugin Compiler Apache Maven](https://maven.apache.org/plugins/maven-compiler-plugin/). Maven harus berada di jalur kerja Anda. Untuk menguji instalasi Apache Maven Anda, masukkan hal berikut:

  ```
  $ mvn -version
  ```

Untuk memulai, buka [Siapkan AWS akun dan buat pengguna administrator](setting-up.md).

### Langkah 1: Siapkan AWS akun dan buat pengguna administrator
<a name="earlier-gs-1_13-setting-up"></a>

#### Mendaftar untuk Akun AWS
<a name="sign-up-for-aws"></a>

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

**Untuk mendaftar untuk Akun AWS**

1. Buka [https://portal.aws.amazon.com/billing/pendaftaran.](https://portal.aws.amazon.com/billing/signup)

1. Ikuti petunjuk online.

   Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.

   Saat Anda mendaftar untuk sebuah Akun AWS, sebuah *Pengguna root akun AWS*dibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan [tugas yang memerlukan akses pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS mengirimkan email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk [https://aws.amazon.com.rproxy.goskope.comke/](https://aws.amazon.com/) dan memilih **Akun Saya**.

#### Buat pengguna dengan akses administratif
<a name="create-an-admin"></a>

Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.

**Amankan Anda Pengguna root akun AWS**

1.  Masuk ke [Konsol Manajemen AWS](https://console.aws.amazon.com/)sebagai pemilik akun dengan memilih **pengguna Root** dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi.

   Untuk bantuan masuk dengan menggunakan pengguna root, lihat [Masuk sebagai pengguna root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) di *AWS Sign-In Panduan Pengguna*.

1. Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.

   Untuk petunjuk, lihat [Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) di Panduan Pengguna *IAM*.

**Buat pengguna dengan akses administratif**

1. Aktifkan Pusat Identitas IAM.

   Untuk mendapatkan petunjuk, silakan lihat [Mengaktifkan AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) di *Panduan Pengguna AWS IAM Identity Center *.

1. Di Pusat Identitas IAM, berikan akses administratif ke pengguna.

   Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat [Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) di *Panduan AWS IAM Identity Center Pengguna*.

**Masuk sebagai pengguna dengan akses administratif**
+ Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.

  Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat [Masuk ke portal AWS akses](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) di *Panduan AWS Sign-In Pengguna*.

**Tetapkan akses ke pengguna tambahan**

1. Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

   Untuk petunjuknya, lihat [Membuat set izin](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) di *Panduan AWS IAM Identity Center Pengguna*.

1. Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.

   Untuk petunjuk, lihat [Menambahkan grup](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) di *Panduan AWS IAM Identity Center Pengguna*.

#### Memberikan akses programatis
<a name="setting-up-access-gs-13"></a>

Pengguna membutuhkan akses terprogram jika mereka ingin berinteraksi dengan AWS luar. Konsol Manajemen AWS Cara untuk memberikan akses terprogram tergantung pada jenis pengguna yang mengakses AWS.

Untuk memberi pengguna akses programatis, pilih salah satu opsi berikut.


****  

| Pengguna mana yang membutuhkan akses programatis? | Untuk | Oleh | 
| --- | --- | --- | 
| IAM | (Disarankan) Gunakan kredenal konsol sebagai kredensil sementara untuk menandatangani permintaan terprogram ke,, atau. AWS CLI AWS SDKs AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 
|  Identitas tenaga kerja (Pengguna yang dikelola di Pusat Identitas IAM)  | Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 
| IAM | Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs | Mengikuti petunjuk dalam [Menggunakan kredensi sementara dengan AWS sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) di Panduan Pengguna IAM. | 
| IAM | (Tidak direkomendasikan)Gunakan kredensyal jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 

#### Langkah berikutnya
<a name="earlier-gs-1_13-setting-up-next-step-2"></a>

[Mengatur AWS Command Line Interface (AWS CLI)](#earlier-gs-1_13-setup-awscli)

### Langkah berikutnya
<a name="earlier-gs-1_13-setup-awscli"></a>

[Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)](#setup-awscli-1-13)

### Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)
<a name="setup-awscli-1-13"></a>

Pada langkah ini, Anda mengunduh dan mengonfigurasi AWS CLI untuk digunakan dengan Managed Service for Apache Flink.

**catatan**  
Latihan memulai dalam panduan ini mengasumsikan Anda menggunakan kredensial administrator (`adminuser`) di akun Anda untuk melakukan operasi.

**catatan**  
Jika Anda sudah AWS CLI menginstal, Anda mungkin perlu meningkatkan untuk mendapatkan fungsionalitas terbaru. Untuk informasi selengkapnya, lihat [ Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dalam *Panduan Pengguna AWS Command Line Interface *. Untuk memeriksa versi AWS CLI, jalankan perintah berikut:  

```
aws --version
```
Latihan dalam tutorial ini memerlukan AWS CLI versi berikut atau yang lebih baru:  

```
aws-cli/1.16.63
```

**Untuk mengatur AWS CLI**

1. Unduh dan konfigurasikan AWS CLI. Untuk instruksi, lihat topik berikut di *AWS Command Line Interface Panduan Pengguna*: 
   + [Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Mengonfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. Tambahkan profil bernama untuk pengguna administrator dalam AWS CLI `config` file. Anda dapat menggunakan profil ini saat menjalankan perintah AWS CLI . Untuk informasi selengkapnya tentang profil yang diberi nama, lihat [Profil yang Diberi Nama](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) dalam *Panduan Pengguna AWS Command Line Interface *.

   ```
   [profile adminuser]
   aws_access_key_id = adminuser access key ID
   aws_secret_access_key = adminuser secret access key
   region = aws-region
   ```

   Untuk daftar AWS Wilayah yang tersedia, lihat [Wilayah dan Titik Akhir](https://docs.aws.amazon.com/general/latest/gr/rande.html) di. *Referensi Umum Amazon Web Services*
**catatan**  
Kode dan perintah contoh dalam tutorial ini menggunakan Wilayah US West (Oregon). Untuk menggunakan Wilayah yang berbeda, ubah Wilayah dalam kode dan perintah untuk tutorial ini ke Wilayah yang ingin Anda gunakan.

1. Verifikasikan penyiapan dengan memasukkan perintah bantuan berikut pada prompt perintah. 

   ```
   aws help
   ```

Setelah Anda mengatur AWS akun dan AWS CLI, Anda dapat mencoba latihan berikutnya, di mana Anda mengkonfigurasi aplikasi sampel dan menguji end-to-end pengaturan.

#### Langkah berikutnya
<a name="setup-awscli-next-step-3-1-13"></a>

[Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink](#get-started-exercise-1-13)

### Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink
<a name="get-started-exercise-1-13"></a>

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink dengan aliran data sebagai sumber dan wastafel.

**Topics**
+ [Buat dua aliran data Amazon Kinesis](#get-started-exercise-1-1-13)
+ [Tulis catatan sampel ke aliran input](#get-started-exercise-2-1-13)
+ [Unduh dan periksa kode Java streaming Apache Flink](#get-started-exercise-5-1-13)
+ [Kompilasi kode aplikasi](#get-started-exercise-5.5-1-13)
+ [Unggah kode Java streaming Apache Flink](#get-started-exercise-6-1-13)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#get-started-exercise-7-1-13)
+ [Langkah berikutnya](#get-started-exercise-next-step-4-1-13)

#### Buat dua aliran data Amazon Kinesis
<a name="get-started-exercise-1-1-13"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, buat dua aliran data Kinesis (dan). `ExampleInputStream` `ExampleOutputStream` Aplikasi Anda menggunakan aliran ini untuk sumber aplikasi dan aliran tujuan.

Anda dapat membuat aliran ini menggunakan konsol Amazon Kinesis atau perintah AWS CLI berikut. Untuk instruksi konsol, lihat [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. 

**Untuk membuat aliran data AWS CLI**

1. Untuk membuat stream (`ExampleInputStream`) pertama, gunakan perintah Amazon Kinesis `create-stream` AWS CLI berikut.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

1. Untuk membuat aliran kedua yang digunakan aplikasi untuk menulis output, jalankan perintah yang sama, yang mengubah nama aliran menjadi `ExampleOutputStream`.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

#### Tulis catatan sampel ke aliran input
<a name="get-started-exercise-2-1-13"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
       import datetime
       import json
       import random
       import boto3
       STREAM_NAME = "ExampleInputStream"
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Selanjutnya dalam tutorial ini, Anda menjalankan skrip `stock.py` untuk mengirim data ke aplikasi. 

   ```
   $ python stock.py
   ```

#### Unduh dan periksa kode Java streaming Apache Flink
<a name="get-started-exercise-5-1-13"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Kloning repositori jarak jauh menggunakan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/GettingStarted` tersebut.

Perhatikan hal tentang kode aplikasi berikut:
+ File [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.
+ File `BasicStreamingJob.java` berisi metode `main` yang menentukan fungsionalitas aplikasi.
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Aplikasi Anda membuat konektor sumber dan sink untuk mengakses sumber daya eksternal menggunakan objek `StreamExecutionEnvironment`. 
+ Aplikasi membuat konektor sumber dan sink menggunakan properti statis. Untuk menggunakan properti aplikasi dinamis, gunakan metode `createSourceFromApplicationProperties` dan `createSinkFromApplicationProperties` untuk membuat konektor. Metode ini membaca properti aplikasi untuk mengonfigurasi konektor.

  Untuk informasi selengkapnya tentang properti runtime, lihat [Gunakan properti runtime](how-properties.md).

#### Kompilasi kode aplikasi
<a name="get-started-exercise-5.5-1-13"></a>

Di bagian ini, Anda menggunakan compiler Apache Maven untuk membuat kode Java untuk aplikasi. Untuk informasi tentang menginstal Apache Maven dan Java Development Kit (JDK), lihat [Memenuhi prasyarat untuk menyelesaikan latihan](getting-started.md#setting-up-prerequisites).

**Untuk mengompikasi kode aplikasi**

1. Untuk menggunakan kode aplikasi Anda, Anda mengompilasi dan mengemasnya ke dalam file JAR. Anda dapat mengompilasi dan mengemas kode Anda dengan salah satu dari dua cara:
   + Gunakan alat Maven baris perintah. Buat file JAR Anda dengan menjalankan perintah berikut di direktori yang berisi file `pom.xml`:

     ```
     mvn package -Dflink.version=1.13.2
     ```
   + Menyiapkan lingkungan pengembangan Anda. Lihat dokumentasi lingkungan pengembangan Anda untuk detail.
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. 

   Anda dapat mengunggah paket Anda sebagai file JAR, atau Anda dapat mengompresi paket Anda dan mengunggahnya sebagai file ZIP. Jika Anda membuat aplikasi menggunakan AWS CLI, Anda menentukan jenis konten kode Anda (JAR atau ZIP).

1. Jika ada kesalahan saat mengompilasi, pastikan variabel lingkungan `JAVA_HOME`Anda diatur dengan benar.

Jika aplikasi berhasil mengompilasi, file berikut dibuat:

`target/aws-kinesis-analytics-java-apps-1.0.jar`

#### Unggah kode Java streaming Apache Flink
<a name="get-started-exercise-6-1-13"></a>

Pada bagian ini, Anda membuat bucket Amazon Simple Storage Service (Amazon S3) dan mengunggah kode aplikasi Anda.

**Untuk mengunggah kode aplikasi**

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

1. Pilih **Buat bucket**.

1. Masukkan **ka-app-code-*<username>*** di bidang **Bucket name** (Nama bucket). Tambahkan sufiks ke nama bucket, seperti nama pengguna Anda, untuk membuatnya unik secara global. Pilih **Next** (Selanjutnya).

1. Di langkah **Konfigurasi opsi**, jangan ubah pengaturan, dan pilih **Next** (Selanjutnya).

1. Di langkah **Atur izin**, jangan ubah pengaturan, dan pilih **Next** (Selanjutnya).

1. Pilih **Create bucket** (Buat bucket).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `aws-kinesis-analytics-java-apps-1.0.jar` yang Anda buat di langkah sebelumnya. Pilih **Berikutnya**.

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

#### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="get-started-exercise-7-1-13"></a>

Anda dapat membuat dan menjalankan Layanan Terkelola untuk aplikasi Apache Flink menggunakan konsol atau aplikasi. AWS CLI

**catatan**  
Saat Anda membuat aplikasi menggunakan konsol, sumber daya AWS Identity and Access Management (IAM) dan Amazon CloudWatch Logs dibuat untuk Anda. Saat Anda membuat aplikasi menggunakan AWS CLI, Anda membuat sumber daya ini secara terpisah.

**Topics**
+ [Buat dan jalankan aplikasi (konsol)](#get-started-exercise-7-console-1-13)
+ [Buat dan jalankan aplikasi (AWS CLI)](#get-started-exercise-7-cli-1-13)

##### Buat dan jalankan aplikasi (konsol)
<a name="get-started-exercise-7-console-1-13"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat Aplikasi
<a name="get-started-exercise-7-console-create-1-13"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My java test app**.
   + Untuk **Runtime**, pilih **Apache Flink**.
   + Biarkan versi pulldown sebagai **Apache Flink** versi 1.13.

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="get-started-exercise-7-console-iam-1-13"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Konfigurasikan aplikasi
<a name="get-started-exercise-7-console-configure-1-13"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch pencatatan Amazon, Layanan Terkelola untuk Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`

##### Jalankan aplikasi
<a name="get-started-exercise-7-console-run-1-13"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

##### Hentikan aplikasi
<a name="get-started-exercise-7-console-stop-1-13"></a>

Pada **MyApplication**halaman, pilih **Berhenti**. Konfirmasikan tindakan.

##### Memperbarui aplikasi
<a name="get-started-exercise-7-console-update-1-13"></a>

Dengan menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file dari JAR aplikasi. Anda juga dapat memuat ulang aplikasi JAR dari bucket Amazon S3 jika Anda perlu memperbarui kode aplikasi.

Pada **MyApplication**halaman, pilih **Konfigurasi**. Perbarui pengaturan aplikasi dan pilih **Update** (Perbarui).

##### Buat dan jalankan aplikasi (AWS CLI)
<a name="get-started-exercise-7-cli-1-13"></a>

Di bagian ini, Anda menggunakan AWS CLI untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink. Managed Service untuk Apache Flink menggunakan `kinesisanalyticsv2` AWS CLI perintah untuk membuat dan berinteraksi dengan Managed Service untuk aplikasi Apache Flink.

##### Membuat kebijakan izin
<a name="get-started-exercise-7-cli-policy-1-13"></a>

**catatan**  
Anda harus membuat kebijakan izin dan peran untuk aplikasi Anda. Jika Anda tidak membuat sumber daya IAM ini, aplikasi Anda tidak dapat mengakses data dan aliran log.

Pertama, Anda membuat kebijakan izin dengan dua pernyataan: satu yang memberikan izin untuk tindakan `read` di aliran sumber, dan lainnya yang memberikan izin untuk tindakan `write` di aliran sink. Anda selanjutnya melampirkan kebijakan ke IAM role (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin `AKReadSourceStreamWriteSinkStream`. Ganti `username` dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (`012345678901`) dengan ID akun Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
        }
    ]
}
```

------

Untuk step-by-step petunjuk membuat kebijakan izin, lihat [Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) di *Panduan Pengguna IAM*.

**catatan**  
Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK untuk Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensil yang diperlukan oleh SDK ke peran IAM eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

##### Membuat peran IAM
<a name="get-started-exercise-7-cli-role-1-13"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh aplikasi Managed Service for Apache Flink untuk membaca aliran sumber dan menulis ke aliran sink.

Layanan Terkelola untuk Apache Flink tidak dapat mengakses aliran Anda tanpa izin. Anda memberikan izin ini melalui IAM role. Setiap IAM role memiliki dua kebijakan yang dilampirkan. Kebijakan kepercayaan memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran, dan kebijakan izin menentukan apa yang dapat dilakukan Layanan Terkelola untuk Apache Flink setelah mengambil peran.

Anda melampirkan kebijakan izin yang Anda buat di bagian sebelumnya ke peran ini.

**Untuk membuat IAM role**

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

1. Dalam panel navigasi, pilih **Roles** (Peran), **Create role** (Buat Peran).

1. Di bawah **Pilih tipe identitas tepercaya**, pilih **Layanan AWS **. Di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **Kinesis**. Di bawah **Pilih kasus penggunaan Anda**, pilih **Analitik Kinesis**.

   Pilih **Berikutnya: Izin**.

1. Di halaman **Lampirkan kebijakan izin**, pilih **Next: Review** (Selanjutnya: Tinjau). Anda melampirkan kebijakan izin setelah Anda membuat peran tersebut.

1. Di halaman **Buat peran**, masukkan **MF-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran).

   Sekarang Anda sudah membuat IAM role baru yang disebut `MF-stream-rw-role`. Berikutnya, Anda memperbarui kebijakan kepercayaan dan izin untuk peran.

1. Lampirkan kebijakan izin ke peran tersebut.
**catatan**  
Untuk latihan ini, Managed Service for Apache Flink mengasumsikan peran ini untuk membaca data dari aliran data Kinesis (sumber) dan menulis output ke aliran data Kinesis lain. Jadi, Anda melampirkan kebijakan yang Anda buat di langkah sebelumnya, [Membuat kebijakan izin](#get-started-exercise-7-cli-policy-1-13).

   1. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

   1. Pilih **Attach Policies** (Lampirkan Kebijakan).

   1. Di kotak pencarian, masukkan **AKReadSourceStreamWriteSinkStream** (kebijakan yang Anda buat bagian sebelumnya).

   1. Pilih **AKReadSourceStreamWriteSinkStream**kebijakan, lalu pilih **Lampirkan kebijakan**.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Buat catatan ARN peran baru.

Untuk step-by-step petunjuk cara membuat peran, lihat [Membuat Peran IAM (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*.

##### Buat Layanan Terkelola untuk aplikasi Apache Flink
<a name="get-started-exercise-7-cli-create-1-13"></a>

1. Simpan kode JSON berikut ke file bernama `create_request.json`. Ganti ARN peran sampel dengan ARN untuk peran yang Anda buat sebelumnya. Ganti sufiks ARN bucket (`username`) dengan sufiks yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (`012345678901`) di peran eksekusi layanan dengan ID akun Anda.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_15",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) dengan permintaan sebelumnya untuk membuat aplikasi: 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

Aplikasi ini sekarang dibuat. Anda memulai aplikasi di langkah berikutnya.

##### Mulai Aplikasi
<a name="get-started-exercise-7-cli-start-1-13"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) untuk memulai aplikasi.

**Untuk memulai aplikasi**

1. Simpan kode JSON berikut ke file bernama `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) dengan permintaan sebelumnya untuk memulai aplikasi:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

Aplikasi sekarang berjalan. Anda dapat memeriksa metrik Layanan Terkelola untuk Apache Flink di CloudWatch konsol Amazon untuk memverifikasi bahwa aplikasi berfungsi.

##### Hentikan Aplikasi
<a name="get-started-exercise-7-cli-stop-1-13"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) untuk menghentikan aplikasi.

**Untuk menghentikan aplikasi**

1. Simpan kode JSON berikut ke file bernama `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) dengan permintaan berikut untuk menghentikan aplikasi:

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

Aplikasi sekarang dihentikan.

##### Tambahkan Opsi CloudWatch Logging
<a name="get-started-exercise-7-cli-cw-1-13"></a>

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihat[Siapkan aplikasi logging di Managed Service untuk Apache Flink](cloudwatch-logs.md).

##### Perbarui Properti Lingkungan
<a name="get-started-exercise-7-cli-update-env-1-13"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) untuk mengubah properti lingkungan untuk aplikasi tanpa mengompilasi ulang kode aplikasi. Dalam contoh ini, Anda mengubah Wilayah aliran sumber dan tujuan.

**Untuk memperbarui properti lingkungan untuk aplikasi**

1. Simpan kode JSON berikut ke file bernama `update_properties_request.json`.

   ```
   {"ApplicationName": "test",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
      }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) dengan permintaan sebelumnya untuk memperbarui properti lingkungan:

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Perbarui Kode Aplikasi
<a name="get-started-exercise-7-cli-update-code-1-13"></a>

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI tindakan.

**catatan**  
Untuk memuat versi baru kode aplikasi dengan nama file yang sama, Anda harus menentukan versi objek baru. Untuk informasi selengkapnya tentang menggunakan versi objek Amazon S3, lihat [Mengaktifkan dan Menonaktifkan Versioning](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggil`UpdateApplication`, tentukan bucket Amazon S3 dan nama objek yang sama, dan versi objek baru. Aplikasi akan memulai ulang dengan paket kode baru.

Permintaan sampel berikut untuk tindakan `UpdateApplication` memuat ulang kode aplikasi dan memulai ulang aplikasi. Perbarui `CurrentApplicationVersionId` ke versi aplikasi saat ini. Anda dapat memeriksa versi aplikasi saat ini menggunakan tindakan `ListApplications` atau `DescribeApplication`. Perbarui akhiran nama bucket (*<username>*) dengan akhiran yang Anda pilih di bagian. [Buat dua aliran data Amazon Kinesis](get-started-exercise.md#get-started-exercise-1)

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

#### Langkah berikutnya
<a name="get-started-exercise-next-step-4-1-13"></a>

[Langkah 4: Bersihkan AWS sumber daya](#getting-started-cleanup-1-13)

### Langkah 4: Bersihkan AWS sumber daya
<a name="getting-started-cleanup-1-13"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Memulai.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#getting-started-cleanup-app-1-13)
+ [Hapus aliran data Kinesis Anda](#getting-started-cleanup-stream-1-13)
+ [Hapus objek dan ember Amazon S3 Anda](#getting-started-cleanup-s3-1-13)
+ [Hapus sumber daya IAM Anda](#getting-started-cleanup-iam-1-13)
+ [Hapus CloudWatch sumber daya Anda](#getting-started-cleanup-cw-1-13)
+ [Langkah berikutnya](#getting-started-cleanup-next-step-5-1-13)

#### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="getting-started-cleanup-app-1-13"></a>

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

1. Di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

#### Hapus aliran data Kinesis Anda
<a name="getting-started-cleanup-stream-1-13"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

#### Hapus objek dan ember Amazon S3 Anda
<a name="getting-started-cleanup-s3-1-13"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

#### Hapus sumber daya IAM Anda
<a name="getting-started-cleanup-iam-1-13"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

#### Hapus CloudWatch sumber daya Anda
<a name="getting-started-cleanup-cw-1-13"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Langkah berikutnya
<a name="getting-started-cleanup-next-step-5-1-13"></a>

[Langkah 5: Langkah selanjutnya](#getting-started-next-steps-1-13)

### Langkah 5: Langkah selanjutnya
<a name="getting-started-next-steps-1-13"></a>

Sekarang setelah Anda membuat dan menjalankan Layanan Terkelola dasar untuk aplikasi Apache Flink, lihat sumber daya berikut untuk solusi Managed Service for Apache Flink yang lebih canggih.
+ **[Solusi Data AWS Streaming untuk Amazon Kinesis](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-kinesis/):** Solusi Data AWS Streaming untuk Amazon Kinesis secara otomatis mengonfigurasi AWS layanan yang diperlukan untuk menangkap, menyimpan, memproses, dan mengirimkan data streaming dengan mudah. Solusi ini menyediakan beberapa opsi untuk memecahkan kasus penggunaan data streaming. Layanan Terkelola untuk opsi Apache Flink menyediakan contoh ETL end-to-end streaming yang menunjukkan aplikasi dunia nyata yang menjalankan operasi analitis pada data taksi New York yang disimulasikan. Solusinya menyiapkan semua AWS sumber daya yang diperlukan seperti peran dan kebijakan IAM, CloudWatch dasbor, dan CloudWatch alarm.
+ **[AWS Solusi Data Streaming untuk Amazon MSK](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-msk/):** Solusi Data AWS Streaming untuk Amazon MSK menyediakan AWS CloudFormation template tempat data mengalir melalui produsen, penyimpanan streaming, konsumen, dan tujuan. 
+ **[Clickstream Lab dengan Apache Flink dan Apache Kafka](https://amazonmsk-labs.workshop.aws/en/mskkdaflinklab.html)**: Lab ujung ke ujung untuk kasus penggunaan clickstream menggunakan Amazon Managed Streaming untuk Apache Kafka Kafka untuk penyimpanan streaming dan Layanan Terkelola untuk Apache Flink untuk aplikasi Apache Flink untuk pemrosesan streaming.
+ **[Amazon Managed Service for Apache Flink Workshop](https://catalog.workshops.aws/managed-flink):** Dalam lokakarya ini, Anda membangun arsitektur end-to-end streaming untuk menyerap, menganalisis, dan memvisualisasikan data streaming dalam waktu dekat. Anda mulai meningkatkan operasi perusahaan taksi di Kota New York. Anda menganalisis data telemetri armada taksi di Kota New York hampir secara langsung untuk mengoptimalkan operasi armada mereka.
+ **[Belajar Flink: Pelatihan Langsung](https://ci.apache.org/projects/flink/flink-docs-master/learn-flink/):** Pelatihan pengenalan resmi Apache Flink yang membuat Anda mulai menulis ETL streaming yang dapat diskalakan, analitik, dan aplikasi yang didorong peristiwa.
**catatan**  
Ketahuilah bahwa Managed Service for Apache Flink tidak mendukung versi Apache Flink (1.12) yang digunakan dalam pelatihan ini. Anda dapat menggunakan Flink 1.15.2 di Flink Managed Service untuk Apache Flink. 

## Memulai: Flink 1.11.1 - mencela
<a name="earlier-gs-1_11"></a>

**catatan**  
Apache Flink versi **1.6, 1.8, dan 1.11** belum didukung oleh komunitas Apache Flink selama lebih dari tiga tahun. **Kami berencana untuk menghentikan versi ini di Amazon Managed Service untuk Apache Flink pada 5 November 2024.** Mulai dari tanggal ini, Anda tidak akan dapat membuat aplikasi baru untuk versi Flink ini. Anda dapat terus menjalankan aplikasi yang ada saat ini. Anda dapat memutakhirkan aplikasi secara statis menggunakan fitur upgrade versi di tempat di Amazon Managed Service for Apache Flink Untuk informasi selengkapnya, lihat. [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md)

Topik ini berisi versi [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) tutorial yang menggunakan Apache Flink 1.11.1.

Bagian ini memperkenalkan Anda pada konsep dasar Managed Service untuk Apache Flink dan API. DataStream Ini menjelaskan opsi yang tersedia untuk membuat dan menguji aplikasi Anda. Ini juga memberikan petunjuk untuk menginstal alat yang diperlukan untuk menyelesaikan tutorial dalam panduan ini dan untuk membuat aplikasi pertama Anda. 

**Topics**
+ [Komponen Layanan Terkelola untuk aplikasi Apache Flink](#earlier-gs-1_11-components)
+ [Prasyarat untuk menyelesaikan latihan](#earlier-gs-1_11-setting-up-prerequisites)
+ [Langkah 1: Siapkan AWS akun dan buat pengguna administrator](#earlier-gs-1_11-setting-up)
+ [Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)](#earlier-gs-1_11-setup-awscli)
+ [Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink](#earlier-gs-1_11-get-started-exercise)
+ [Langkah 4: Bersihkan AWS sumber daya](#earlier-gs-1_11-cleanup)
+ [Langkah 5: Langkah selanjutnya](#earlier-gs-1_11-next-steps)

### Komponen Layanan Terkelola untuk aplikasi Apache Flink
<a name="earlier-gs-1_11-components"></a>

Untuk memproses data, Managed Service untuk aplikasi Apache Flink Anda menggunakan aplikasi Java/Apache Maven atau Scala yang memproses input dan menghasilkan output menggunakan runtime Apache Flink. 

Layanan Terkelola untuk aplikasi Apache Flink memiliki komponen-komponen berikut:
+ **Properti runtime:** Anda dapat menggunakan *properti runtime* untuk mengonfigurasi aplikasi Anda tanpa mengompilasi ulang kode aplikasi Anda. 
+ **Source** (Sumber): Aplikasi mengonsumsi data menggunakan *sumber*. Konektor sumber membaca data dari Kinesis data stream, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat [Tambahkan sumber data streaming](how-sources.md).
+ **Operators** (Operator): Aplikasi memproses data menggunakan satu atau beberapa *operator*. Operator dapat mengubah, memperkaya, atau menggabungkan data. Untuk informasi selengkapnya, lihat [Operator](how-operators.md).
+ **Sink:** Aplikasi menghasilkan data ke sumber eksternal menggunakan *sink*. Konektor sink menulis data ke aliran data Kinesis, aliran Firehose, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat [Tulis data menggunakan sink](how-sinks.md).

Setelah Anda membuat, mengompilasi, dan mengemas kode aplikasi Anda, Anda mengunggah paket kode ke bucket Amazon Simple Storage Service (Amazon S3). Anda kemudian membuat Layanan Terkelola untuk aplikasi Apache Flink. Anda meneruskan di lokasi paket kode, Kinesis data stream sebagai sumber data streaming, dan biasanya lokasi streaming atau file yang menerima data yang diproses dari aplikasi.

### Prasyarat untuk menyelesaikan latihan
<a name="earlier-gs-1_11-setting-up-prerequisites"></a>

Untuk menyelesaikan langkah-langkah di panduan ini, Anda harus memiliki hal-hal berikut:
+ [Java Development Kit (JDK) versi 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). Atur variabel lingkungan `JAVA_HOME` untuk menunjuk ke lokasi penginstalan JDK Anda.
+ Sebaiknya gunakan lingkungan pengembangan (seperti [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) atau [IntelliJ Idea](https://www.jetbrains.com/idea/)) untuk mengembangkan dan mengompilasi aplikasi Anda.
+ [Klien Git](https://git-scm.com/book/en/v2/earlier-gs-1_11-Installing-Git). Instal klien Git jika Anda belum menginstalnya.
+ [Plugin Compiler Apache Maven](https://maven.apache.org/plugins/maven-compiler-plugin/). Maven harus berada di jalur kerja Anda. Untuk menguji instalasi Apache Maven Anda, masukkan hal berikut:

  ```
  $ mvn -version
  ```

Untuk memulai, buka [Siapkan AWS akun dan buat pengguna administrator](setting-up.md).

### Langkah 1: Siapkan AWS akun dan buat pengguna administrator
<a name="earlier-gs-1_11-setting-up"></a>

#### Mendaftar untuk Akun AWS
<a name="sign-up-for-aws"></a>

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

**Untuk mendaftar untuk Akun AWS**

1. Buka [https://portal.aws.amazon.com/billing/pendaftaran.](https://portal.aws.amazon.com/billing/signup)

1. Ikuti petunjuk online.

   Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.

   Saat Anda mendaftar untuk sebuah Akun AWS, sebuah *Pengguna root akun AWS*dibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan [tugas yang memerlukan akses pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS mengirimkan email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk [https://aws.amazon.com.rproxy.goskope.comke/](https://aws.amazon.com/) dan memilih **Akun Saya**.

#### Buat pengguna dengan akses administratif
<a name="create-an-admin"></a>

Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.

**Amankan Anda Pengguna root akun AWS**

1.  Masuk ke [Konsol Manajemen AWS](https://console.aws.amazon.com/)sebagai pemilik akun dengan memilih **pengguna Root** dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi.

   Untuk bantuan masuk dengan menggunakan pengguna root, lihat [Masuk sebagai pengguna root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) di *AWS Sign-In Panduan Pengguna*.

1. Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.

   Untuk petunjuk, lihat [Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) di Panduan Pengguna *IAM*.

**Buat pengguna dengan akses administratif**

1. Aktifkan Pusat Identitas IAM.

   Untuk mendapatkan petunjuk, silakan lihat [Mengaktifkan AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) di *Panduan Pengguna AWS IAM Identity Center *.

1. Di Pusat Identitas IAM, berikan akses administratif ke pengguna.

   Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat [Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) di *Panduan AWS IAM Identity Center Pengguna*.

**Masuk sebagai pengguna dengan akses administratif**
+ Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.

  Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat [Masuk ke portal AWS akses](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) di *Panduan AWS Sign-In Pengguna*.

**Tetapkan akses ke pengguna tambahan**

1. Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

   Untuk petunjuknya, lihat [Membuat set izin](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) di *Panduan AWS IAM Identity Center Pengguna*.

1. Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.

   Untuk petunjuk, lihat [Menambahkan grup](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) di *Panduan AWS IAM Identity Center Pengguna*.

#### Memberikan akses programatis
<a name="setting-up-access-gs-11"></a>

Pengguna membutuhkan akses terprogram jika mereka ingin berinteraksi dengan AWS luar. Konsol Manajemen AWS Cara untuk memberikan akses terprogram tergantung pada jenis pengguna yang mengakses AWS.

Untuk memberi pengguna akses programatis, pilih salah satu opsi berikut.


****  

| Pengguna mana yang membutuhkan akses programatis? | Untuk | Oleh | 
| --- | --- | --- | 
| IAM | (Disarankan) Gunakan kredenal konsol sebagai kredensil sementara untuk menandatangani permintaan terprogram ke,, atau. AWS CLI AWS SDKs AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 
|  Identitas tenaga kerja (Pengguna yang dikelola di Pusat Identitas IAM)  | Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 
| IAM | Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs | Mengikuti petunjuk dalam [Menggunakan kredensi sementara dengan AWS sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) di Panduan Pengguna IAM. | 
| IAM | (Tidak direkomendasikan)Gunakan kredensyal jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 

#### Langkah berikutnya
<a name="earlier-gs-1_11-setting-up-next-step-2"></a>

[Mengatur AWS Command Line Interface (AWS CLI)](#earlier-gs-1_11-setup-awscli)

### Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)
<a name="earlier-gs-1_11-setup-awscli"></a>

Pada langkah ini, Anda mengunduh dan mengonfigurasi AWS CLI untuk digunakan dengan Managed Service for Apache Flink.

**catatan**  
Latihan memulai dalam panduan ini mengasumsikan Anda menggunakan kredensial administrator (`adminuser`) di akun Anda untuk melakukan operasi.

**catatan**  
Jika Anda sudah AWS CLI menginstal, Anda mungkin perlu meningkatkan untuk mendapatkan fungsionalitas terbaru. Untuk informasi selengkapnya, lihat [ Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dalam *Panduan Pengguna AWS Command Line Interface *. Untuk memeriksa versi AWS CLI, jalankan perintah berikut:  

```
aws --version
```
Latihan dalam tutorial ini memerlukan AWS CLI versi berikut atau yang lebih baru:  

```
aws-cli/1.16.63
```

**Untuk mengatur AWS CLI**

1. Unduh dan konfigurasikan AWS CLI. Untuk instruksi, lihat topik berikut di *AWS Command Line Interface Panduan Pengguna*: 
   + [Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Mengonfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-earlier-gs-1_11.html)

1. Tambahkan profil bernama untuk pengguna administrator dalam AWS CLI `config` file. Anda dapat menggunakan profil ini saat menjalankan perintah AWS CLI . Untuk informasi selengkapnya tentang profil yang diberi nama, lihat [Profil yang Diberi Nama](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) dalam *Panduan Pengguna AWS Command Line Interface *.

   ```
   [profile adminuser]
   aws_access_key_id = adminuser access key ID
   aws_secret_access_key = adminuser secret access key
   region = aws-region
   ```

   Untuk daftar AWS Wilayah yang tersedia, lihat [Wilayah dan Titik Akhir](https://docs.aws.amazon.com/general/latest/gr/rande.html) di. *Referensi Umum Amazon Web Services*
**catatan**  
Kode dan perintah contoh dalam tutorial ini menggunakan Wilayah US West (Oregon). Untuk menggunakan Wilayah yang berbeda, ubah Wilayah dalam kode dan perintah untuk tutorial ini ke Wilayah yang ingin Anda gunakan.

1. Verifikasikan penyiapan dengan memasukkan perintah bantuan berikut pada prompt perintah. 

   ```
   aws help
   ```

Setelah Anda mengatur AWS akun dan AWS CLI, Anda dapat mencoba latihan berikutnya, di mana Anda mengkonfigurasi aplikasi sampel dan menguji end-to-end pengaturan.

#### Langkah berikutnya
<a name="earlier-gs-1_11-setup-awscli-next-step-3"></a>

[Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink](#earlier-gs-1_11-get-started-exercise)

### Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink
<a name="earlier-gs-1_11-get-started-exercise"></a>

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink dengan aliran data sebagai sumber dan wastafel.

**Topics**
+ [Buat dua aliran data Amazon Kinesis](#earlier-gs-1_11-get-started-exercise-1)
+ [Tulis catatan sampel ke aliran input](#earlier-gs-1_11-get-started-exercise-2)
+ [Unduh dan periksa kode Java streaming Apache Flink](#earlier-gs-1_11-get-started-exercise-5)
+ [Kompilasi kode aplikasi](#earlier-gs-1_11-get-started-exercise-5.5)
+ [Unggah kode Java streaming Apache Flink](#earlier-gs-1_11-get-started-exercise-6)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#earlier-gs-1_11-get-started-exercise-7)
+ [Langkah berikutnya](#earlier-gs-1_11-get-started-exercise-next-step-4)

#### Buat dua aliran data Amazon Kinesis
<a name="earlier-gs-1_11-get-started-exercise-1"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, buat dua aliran data Kinesis (dan). `ExampleInputStream` `ExampleOutputStream` Aplikasi Anda menggunakan aliran ini untuk sumber aplikasi dan aliran tujuan.

Anda dapat membuat aliran ini menggunakan konsol Amazon Kinesis atau perintah AWS CLI berikut. Untuk instruksi konsol, lihat [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. 

**Untuk membuat aliran data AWS CLI**

1. Untuk membuat stream (`ExampleInputStream`) pertama, gunakan perintah Amazon Kinesis `create-stream` AWS CLI berikut.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

1. Untuk membuat aliran kedua yang digunakan aplikasi untuk menulis output, jalankan perintah yang sama, yang mengubah nama aliran menjadi `ExampleOutputStream`.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

#### Tulis catatan sampel ke aliran input
<a name="earlier-gs-1_11-get-started-exercise-2"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/sdk-for-python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. Selanjutnya dalam tutorial ini, Anda menjalankan skrip `stock.py` untuk mengirim data ke aplikasi. 

   ```
   $ python stock.py
   ```

#### Unduh dan periksa kode Java streaming Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-5"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Kloning repositori jarak jauh menggunakan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/GettingStarted` tersebut.

Perhatikan hal tentang kode aplikasi berikut:
+ File [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.
+ File `BasicStreamingJob.java` berisi metode `main` yang menentukan fungsionalitas aplikasi.
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Aplikasi Anda membuat konektor sumber dan sink untuk mengakses sumber daya eksternal menggunakan objek `StreamExecutionEnvironment`. 
+ Aplikasi membuat konektor sumber dan sink menggunakan properti statis. Untuk menggunakan properti aplikasi dinamis, gunakan metode `createSourceFromApplicationProperties` dan `createSinkFromApplicationProperties` untuk membuat konektor. Metode ini membaca properti aplikasi untuk mengonfigurasi konektor.

  Untuk informasi selengkapnya tentang properti runtime, lihat [Gunakan properti runtime](how-properties.md).

#### Kompilasi kode aplikasi
<a name="earlier-gs-1_11-get-started-exercise-5.5"></a>

Di bagian ini, Anda menggunakan compiler Apache Maven untuk membuat kode Java untuk aplikasi. Untuk informasi tentang menginstal Apache Maven dan Java Development Kit (JDK), lihat [Memenuhi prasyarat untuk menyelesaikan latihan](getting-started.md#setting-up-prerequisites).

**Untuk mengompikasi kode aplikasi**

1. Untuk menggunakan kode aplikasi Anda, Anda mengompilasi dan mengemasnya ke dalam file JAR. Anda dapat mengompilasi dan mengemas kode Anda dengan salah satu dari dua cara:
   + Gunakan alat Maven baris perintah. Buat file JAR Anda dengan menjalankan perintah berikut di direktori yang berisi file `pom.xml`:

     ```
     mvn package -Dflink.version=1.11.3
     ```
   + Menyiapkan lingkungan pengembangan Anda. Lihat dokumentasi lingkungan pengembangan Anda untuk detail.
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. Pastikan bahwa versi Java proyek Anda adalah 11.

   Anda dapat mengunggah paket Anda sebagai file JAR, atau Anda dapat mengompresi paket Anda dan mengunggahnya sebagai file ZIP. Jika Anda membuat aplikasi menggunakan AWS CLI, Anda menentukan jenis konten kode Anda (JAR atau ZIP).

1. Jika ada kesalahan saat mengompilasi, pastikan variabel lingkungan `JAVA_HOME`Anda diatur dengan benar.

Jika aplikasi berhasil mengompilasi, file berikut dibuat:

`target/aws-kinesis-analytics-java-apps-1.0.jar`

#### Unggah kode Java streaming Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-6"></a>

Pada bagian ini, Anda membuat bucket Amazon Simple Storage Service (Amazon S3) dan mengunggah kode aplikasi Anda.

**Untuk mengunggah kode aplikasi**

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

1. Pilih **Buat bucket**.

1. Masukkan **ka-app-code-*<username>*** di bidang **Bucket name** (Nama bucket). Tambahkan sufiks ke nama bucket, seperti nama pengguna Anda, untuk membuatnya unik secara global. Pilih **Next** (Selanjutnya).

1. Di langkah **Konfigurasi opsi**, jangan ubah pengaturan, dan pilih **Next** (Selanjutnya).

1. Di langkah **Atur izin**, jangan ubah pengaturan, dan pilih **Next** (Selanjutnya).

1. Pilih **Create bucket** (Buat bucket).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `aws-kinesis-analytics-java-apps-1.0.jar` yang Anda buat di langkah sebelumnya. Pilih **Berikutnya**.

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

#### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-7"></a>

Anda dapat membuat dan menjalankan Layanan Terkelola untuk aplikasi Apache Flink menggunakan konsol atau aplikasi. AWS CLI

**catatan**  
Saat Anda membuat aplikasi menggunakan konsol, sumber daya AWS Identity and Access Management (IAM) dan Amazon CloudWatch Logs dibuat untuk Anda. Saat Anda membuat aplikasi menggunakan AWS CLI, Anda membuat sumber daya ini secara terpisah.

**Topics**
+ [Buat dan jalankan aplikasi (konsol)](#earlier-gs-1_11-get-started-exercise-7-console)
+ [Buat dan jalankan aplikasi (AWS CLI)](#earlier-gs-1_11-get-started-exercise-7-cli)

##### Buat dan jalankan aplikasi (konsol)
<a name="earlier-gs-1_11-get-started-exercise-7-console"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="earlier-gs-1_11-get-started-exercise-7-console-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My java test app**.
   + Untuk **Runtime**, pilih **Apache Flink**.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.11 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="earlier-gs-1_11-get-started-exercise-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Konfigurasikan aplikasi
<a name="earlier-gs-1_11-get-started-exercise-7-console-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Properties** (Properti), untuk **Group ID** (ID Grup), masukkan **ProducerConfigProperties**.

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch pencatatan Amazon, Layanan Terkelola untuk Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`

##### Jalankan aplikasi
<a name="earlier-gs-1_11-get-started-exercise-7-console-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

##### Hentikan aplikasi
<a name="earlier-gs-1_11-get-started-exercise-7-console-stop"></a>

Pada **MyApplication**halaman, pilih **Berhenti**. Konfirmasikan tindakan.

##### Memperbarui aplikasi
<a name="earlier-gs-1_11-get-started-exercise-7-console-update"></a>

Dengan menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file dari JAR aplikasi. Anda juga dapat memuat ulang aplikasi JAR dari bucket Amazon S3 jika Anda perlu memperbarui kode aplikasi.

Pada **MyApplication**halaman, pilih **Konfigurasi**. Perbarui pengaturan aplikasi dan pilih **Update** (Perbarui).

##### Buat dan jalankan aplikasi (AWS CLI)
<a name="earlier-gs-1_11-get-started-exercise-7-cli"></a>

Di bagian ini, Anda menggunakan AWS CLI untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink. Managed Service for Apache Flink menggunakan `kinesisanalyticsv2` AWS CLI perintah untuk membuat dan berinteraksi dengan Managed Service untuk aplikasi Apache Flink.

##### Membuat Kebijakan Izin
<a name="earlier-gs-1_11-get-started-exercise-7-cli-policy"></a>

**catatan**  
Anda harus membuat kebijakan izin dan peran untuk aplikasi Anda. Jika Anda tidak membuat sumber daya IAM ini, aplikasi Anda tidak dapat mengakses data dan aliran log.

Pertama, Anda membuat kebijakan izin dengan dua pernyataan: satu yang memberikan izin untuk tindakan `read` di aliran sumber, dan lainnya yang memberikan izin untuk tindakan `write` di aliran sink. Anda selanjutnya melampirkan kebijakan ke IAM role (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin `AKReadSourceStreamWriteSinkStream`. Ganti `username` dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (`012345678901`) dengan ID akun Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
        }
    ]
}
```

------

Untuk step-by-step petunjuk membuat kebijakan izin, lihat [Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) di *Panduan Pengguna IAM*.

**catatan**  
Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK untuk Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensil yang diperlukan oleh SDK ke peran IAM eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

##### Buat IAM Role
<a name="earlier-gs-1_11-get-started-exercise-7-cli-role"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh aplikasi Managed Service for Apache Flink untuk membaca aliran sumber dan menulis ke aliran sink.

Layanan Terkelola untuk Apache Flink tidak dapat mengakses aliran Anda tanpa izin. Anda memberikan izin ini melalui IAM role. Setiap IAM role memiliki dua kebijakan yang dilampirkan. Kebijakan kepercayaan memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran, dan kebijakan izin menentukan apa yang dapat dilakukan Layanan Terkelola untuk Apache Flink setelah mengambil peran.

Anda melampirkan kebijakan izin yang Anda buat di bagian sebelumnya ke peran ini.

**Untuk membuat IAM role**

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

1. Dalam panel navigasi, pilih **Roles** (Peran), **Create role** (Buat Peran).

1. Di bawah **Pilih tipe identitas tepercaya**, pilih **Layanan AWS **. Di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **Kinesis**. Di bawah **Pilih kasus penggunaan Anda**, pilih **Analitik Kinesis**.

   Pilih **Berikutnya: Izin**.

1. Di halaman **Lampirkan kebijakan izin**, pilih **Next: Review** (Selanjutnya: Tinjau). Anda melampirkan kebijakan izin setelah Anda membuat peran tersebut.

1. Di halaman **Buat peran**, masukkan **MF-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran).

   Sekarang Anda sudah membuat IAM role baru yang disebut `MF-stream-rw-role`. Berikutnya, Anda memperbarui kebijakan kepercayaan dan izin untuk peran.

1. Lampirkan kebijakan izin ke peran tersebut.
**catatan**  
Untuk latihan ini, Managed Service for Apache Flink mengasumsikan peran ini untuk membaca data dari aliran data Kinesis (sumber) dan menulis output ke aliran data Kinesis lain. Jadi, Anda melampirkan kebijakan yang Anda buat di langkah sebelumnya, [Membuat Kebijakan Izin](#earlier-gs-1_11-get-started-exercise-7-cli-policy).

   1. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

   1. Pilih **Attach Policies** (Lampirkan Kebijakan).

   1. Di kotak pencarian, masukkan **AKReadSourceStreamWriteSinkStream** (kebijakan yang Anda buat bagian sebelumnya).

   1. Pilih **AKReadSourceStreamWriteSinkStream**kebijakan, lalu pilih **Lampirkan kebijakan**.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Buat catatan ARN peran baru.

Untuk step-by-step petunjuk cara membuat peran, lihat [Membuat Peran IAM (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*.

##### Buat Layanan Terkelola untuk aplikasi Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-7-cli-create"></a>

1. Simpan kode JSON berikut ke file bernama `create_request.json`. Ganti ARN peran sampel dengan ARN untuk peran yang Anda buat sebelumnya. Ganti sufiks ARN bucket (`username`) dengan sufiks yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (`012345678901`) di peran eksekusi layanan dengan ID akun Anda.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_11",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) dengan permintaan sebelumnya untuk membuat aplikasi: 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

Aplikasi ini sekarang dibuat. Anda memulai aplikasi di langkah berikutnya.

##### Mulai aplikasi
<a name="earlier-gs-1_11-get-started-exercise-7-cli-start"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) untuk memulai aplikasi.

**Untuk memulai aplikasi**

1. Simpan kode JSON berikut ke file bernama `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) dengan permintaan sebelumnya untuk memulai aplikasi:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

Aplikasi sekarang berjalan. Anda dapat memeriksa metrik Layanan Terkelola untuk Apache Flink di CloudWatch konsol Amazon untuk memverifikasi bahwa aplikasi berfungsi.

##### Hentikan aplikasi
<a name="earlier-gs-1_11-get-started-exercise-7-cli-stop"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) untuk menghentikan aplikasi.

**Untuk menghentikan aplikasi**

1. Simpan kode JSON berikut ke file bernama `stop_request.json`.

   ```
   {
       "ApplicationName": "test"
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) dengan permintaan berikut untuk menghentikan aplikasi:

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

Aplikasi sekarang dihentikan.

##### Tambahkan opsi CloudWatch logging
<a name="earlier-gs-1_11-get-started-exercise-7-cli-cw"></a>

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihat[Siapkan aplikasi logging di Managed Service untuk Apache Flink](cloudwatch-logs.md).

##### Perbarui properti lingkungan
<a name="earlier-gs-1_11-get-started-exercise-7-cli-update-env"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) untuk mengubah properti lingkungan untuk aplikasi tanpa mengompilasi ulang kode aplikasi. Dalam contoh ini, Anda mengubah Wilayah aliran sumber dan tujuan.

**Untuk memperbarui properti lingkungan untuk aplikasi**

1. Simpan kode JSON berikut ke file bernama `update_properties_request.json`.

   ```
   {"ApplicationName": "test",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
      }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) dengan permintaan sebelumnya untuk memperbarui properti lingkungan:

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Perbarui kode aplikasi
<a name="earlier-gs-1_11-get-started-exercise-7-cli-update-code"></a>

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI tindakan.

**catatan**  
Untuk memuat versi baru kode aplikasi dengan nama file yang sama, Anda harus menentukan versi objek baru. Untuk informasi selengkapnya tentang menggunakan versi objek Amazon S3, lihat [Mengaktifkan dan Menonaktifkan Versioning](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggil`UpdateApplication`, tentukan bucket Amazon S3 dan nama objek yang sama, dan versi objek baru. Aplikasi akan memulai ulang dengan paket kode baru.

Permintaan sampel berikut untuk tindakan `UpdateApplication` memuat ulang kode aplikasi dan memulai ulang aplikasi. Perbarui `CurrentApplicationVersionId` ke versi aplikasi saat ini. Anda dapat memeriksa versi aplikasi saat ini menggunakan tindakan `ListApplications` atau `DescribeApplication`. Perbarui akhiran nama bucket (*<username>*) dengan akhiran yang Anda pilih di bagian. [Buat dua aliran data Amazon Kinesis](#earlier-gs-1_11-get-started-exercise-1)

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

#### Langkah berikutnya
<a name="earlier-gs-1_11-get-started-exercise-next-step-4"></a>

[Langkah 4: Bersihkan AWS sumber daya](#earlier-gs-1_11-cleanup)

### Langkah 4: Bersihkan AWS sumber daya
<a name="earlier-gs-1_11-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Memulai.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#earlier-gs-1_11-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#earlier-gs-1_11-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#earlier-gs-1_11-cleanup-s3)
+ [Hapus sumber daya IAM rour](#earlier-gs-1_11-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#earlier-gs-1_11-cleanup-cw)
+ [Langkah berikutnya](#earlier-gs-1_11-cleanup-next-step-5)

#### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="earlier-gs-1_11-cleanup-app"></a>

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

1. Di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

#### Hapus aliran data Kinesis Anda
<a name="earlier-gs-1_11-cleanup-stream"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

#### Hapus objek dan ember Amazon S3 Anda
<a name="earlier-gs-1_11-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

#### Hapus sumber daya IAM rour
<a name="earlier-gs-1_11-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

#### Hapus CloudWatch sumber daya Anda
<a name="earlier-gs-1_11-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Langkah berikutnya
<a name="earlier-gs-1_11-cleanup-next-step-5"></a>

[Langkah 5: Langkah selanjutnya](#earlier-gs-1_11-next-steps)

### Langkah 5: Langkah selanjutnya
<a name="earlier-gs-1_11-next-steps"></a>

Sekarang setelah Anda membuat dan menjalankan Layanan Terkelola dasar untuk aplikasi Apache Flink, lihat sumber daya berikut untuk solusi Managed Service for Apache Flink yang lebih canggih.
+ **[Solusi Data AWS Streaming untuk Amazon Kinesis](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-kinesis/):** Solusi Data AWS Streaming untuk Amazon Kinesis secara otomatis mengonfigurasi AWS layanan yang diperlukan untuk menangkap, menyimpan, memproses, dan mengirimkan data streaming dengan mudah. Solusi ini menyediakan beberapa opsi untuk memecahkan kasus penggunaan data streaming. Layanan Terkelola untuk opsi Apache Flink menyediakan contoh ETL end-to-end streaming yang menunjukkan aplikasi dunia nyata yang menjalankan operasi analitis pada data taksi New York yang disimulasikan. Solusinya menyiapkan semua AWS sumber daya yang diperlukan seperti peran dan kebijakan IAM, CloudWatch dasbor, dan CloudWatch alarm.
+ **[AWS Solusi Data Streaming untuk Amazon MSK](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-msk/):** Solusi Data AWS Streaming untuk Amazon MSK menyediakan AWS CloudFormation template tempat data mengalir melalui produsen, penyimpanan streaming, konsumen, dan tujuan. 
+ **[Clickstream Lab dengan Apache Flink dan Apache Kafka](https://amazonmsk-labs.workshop.aws/en/mskkdaflinklab.html)**: Lab ujung ke ujung untuk kasus penggunaan clickstream menggunakan Amazon Managed Streaming untuk Apache Kafka Kafka untuk penyimpanan streaming dan Layanan Terkelola untuk Apache Flink untuk aplikasi Apache Flink untuk pemrosesan streaming.
+ **[Amazon Managed Service for Apache Flink Workshop](https://catalog.workshops.aws/managed-flink):** Dalam lokakarya ini, Anda membangun arsitektur end-to-end streaming untuk menyerap, menganalisis, dan memvisualisasikan data streaming dalam waktu dekat. Anda mulai meningkatkan operasi perusahaan taksi di Kota New York. Anda menganalisis data telemetri armada taksi di Kota New York hampir secara langsung untuk mengoptimalkan operasi armada mereka.
+ **[Belajar Flink: Pelatihan Langsung](https://ci.apache.org/projects/flink/flink-docs-master/learn-flink/):** Pelatihan pengenalan resmi Apache Flink yang membuat Anda mulai menulis ETL streaming yang dapat diskalakan, analitik, dan aplikasi yang didorong peristiwa.
**catatan**  
Ketahuilah bahwa Managed Service for Apache Flink tidak mendukung versi Apache Flink (1.12) yang digunakan dalam pelatihan ini. Anda dapat menggunakan Flink 1.15.2 di Flink Managed Service untuk Apache Flink.
+ **[Contoh Kode Apache Flink](https://github.com/apache/flink/tree/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples):** Sebuah GitHub repositori dari berbagai macam contoh aplikasi Apache Flink. 

## Memulai: Flink 1.8.2 - mencela
<a name="earlier-gs-1_8"></a>

**catatan**  
Apache Flink versi **1.6, 1.8, dan 1.11** belum didukung oleh komunitas Apache Flink selama lebih dari tiga tahun. **Kami berencana untuk menghentikan versi ini di Amazon Managed Service untuk Apache Flink pada 5 November 2024.** Mulai dari tanggal ini, Anda tidak akan dapat membuat aplikasi baru untuk versi Flink ini. Anda dapat terus menjalankan aplikasi yang ada saat ini. Anda dapat memutakhirkan aplikasi secara statis menggunakan fitur upgrade versi di tempat di Amazon Managed Service for Apache Flink Untuk informasi selengkapnya, lihat. [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md)

Topik ini berisi versi [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) tutorial yang menggunakan Apache Flink 1.8.2.

**Topics**
+ [Komponen Layanan Terkelola untuk aplikasi Apache Flink](#getting-started-components)
+ [Prasyarat untuk menyelesaikan latihan](#su-1_8-prerequisites)
+ [Langkah 1: Siapkan AWS akun dan buat pengguna administrator](#earlier-gs-1_8-setting-up)
+ [Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)](#su-1_8-awscli)
+ [Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink](#earlier-gs-1_8-exercise)
+ [Langkah 4: Bersihkan AWS sumber daya](#earlier-gs-1_8-cleanup)

### Komponen Layanan Terkelola untuk aplikasi Apache Flink
<a name="getting-started-components"></a>

Untuk memproses data, Managed Service untuk aplikasi Apache Flink Anda menggunakan aplikasi Java/Apache Maven atau Scala yang memproses input dan menghasilkan output menggunakan runtime Apache Flink. 

Layanan Terkelola untuk aplikasi Apache Flink memiliki komponen-komponen berikut:
+ **Properti runtime:** Anda dapat menggunakan *properti runtime* untuk mengonfigurasi aplikasi Anda tanpa mengompilasi ulang kode aplikasi Anda. 
+ **Source** (Sumber): Aplikasi mengonsumsi data menggunakan *sumber*. Konektor sumber membaca data dari Kinesis data stream, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat [Tambahkan sumber data streaming](how-sources.md).
+ **Operators** (Operator): Aplikasi memproses data menggunakan satu atau beberapa *operator*. Operator dapat mengubah, memperkaya, atau menggabungkan data. Untuk informasi selengkapnya, lihat [Operator](how-operators.md).
+ **Sink:** Aplikasi menghasilkan data ke sumber eksternal menggunakan *sink*. Konektor sink menulis data ke aliran data Kinesis, aliran Firehose, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat [Tulis data menggunakan sink](how-sinks.md).

Setelah Anda membuat, mengompilasi, dan mengemas kode aplikasi Anda, Anda mengunggah paket kode ke bucket Amazon Simple Storage Service (Amazon S3). Anda kemudian membuat Layanan Terkelola untuk aplikasi Apache Flink. Anda meneruskan di lokasi paket kode, Kinesis data stream sebagai sumber data streaming, dan biasanya lokasi streaming atau file yang menerima data yang diproses dari aplikasi.

### Prasyarat untuk menyelesaikan latihan
<a name="su-1_8-prerequisites"></a>

Untuk menyelesaikan langkah-langkah di panduan ini, Anda harus memiliki hal-hal berikut:
+ [Java Development Kit (JDK) versi 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Atur variabel lingkungan `JAVA_HOME` untuk menunjuk ke lokasi penginstalan JDK Anda.
+ Untuk menggunakan konektor Apache Flink Kinesis dalam tutorial ini, Anda harus mengunduh dan menginstal Apache Flink. Lihat perinciannya di [Menggunakan konektor Apache Flink Kinesis Streams dengan versi Apache Flink sebelumnya](#how-creating-apps-building-kinesis).
+ Sebaiknya gunakan lingkungan pengembangan (seperti [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) atau [IntelliJ Idea](https://www.jetbrains.com/idea/)) untuk mengembangkan dan mengompilasi aplikasi Anda.
+ [Klien Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Instal klien Git jika Anda belum menginstalnya.
+ [Plugin Compiler Apache Maven](https://maven.apache.org/plugins/maven-compiler-plugin/). Maven harus berada di jalur kerja Anda. Untuk menguji instalasi Apache Maven Anda, masukkan hal berikut:

  ```
  $ mvn -version
  ```

Untuk memulai, buka [Langkah 1: Siapkan AWS akun dan buat pengguna administrator](#earlier-gs-1_8-setting-up).

### Langkah 1: Siapkan AWS akun dan buat pengguna administrator
<a name="earlier-gs-1_8-setting-up"></a>

#### Mendaftar untuk Akun AWS
<a name="sign-up-for-aws"></a>

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

**Untuk mendaftar untuk Akun AWS**

1. Buka [https://portal.aws.amazon.com/billing/pendaftaran.](https://portal.aws.amazon.com/billing/signup)

1. Ikuti petunjuk online.

   Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.

   Saat Anda mendaftar untuk sebuah Akun AWS, sebuah *Pengguna root akun AWS*dibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan [tugas yang memerlukan akses pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk [https://aws.amazon.com.rproxy.goskope.comke/](https://aws.amazon.com/) dan memilih **Akun Saya**.

#### Buat pengguna dengan akses administratif
<a name="create-an-admin"></a>

Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.

**Amankan Anda Pengguna root akun AWS**

1.  Masuk ke [Konsol Manajemen AWS](https://console.aws.amazon.com/)sebagai pemilik akun dengan memilih **pengguna Root** dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi.

   Untuk bantuan masuk dengan menggunakan pengguna root, lihat [Masuk sebagai pengguna root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) di *AWS Sign-In Panduan Pengguna*.

1. Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.

   Untuk petunjuk, lihat [Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) di Panduan Pengguna *IAM*.

**Buat pengguna dengan akses administratif**

1. Aktifkan Pusat Identitas IAM.

   Untuk mendapatkan petunjuk, silakan lihat [Mengaktifkan AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) di *Panduan Pengguna AWS IAM Identity Center *.

1. Di Pusat Identitas IAM, berikan akses administratif ke pengguna.

   Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat [Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) di *Panduan AWS IAM Identity Center Pengguna*.

**Masuk sebagai pengguna dengan akses administratif**
+ Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.

  Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat [Masuk ke portal AWS akses](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) di *Panduan AWS Sign-In Pengguna*.

**Tetapkan akses ke pengguna tambahan**

1. Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

   Untuk petunjuknya, lihat [Membuat set izin](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) di *Panduan AWS IAM Identity Center Pengguna*.

1. Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.

   Untuk petunjuk, lihat [Menambahkan grup](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) di *Panduan AWS IAM Identity Center Pengguna*.

#### Memberikan akses programatis
<a name="setting-up-access-gs-8"></a>

Pengguna membutuhkan akses terprogram jika mereka ingin berinteraksi dengan AWS luar. Konsol Manajemen AWS Cara untuk memberikan akses terprogram tergantung pada jenis pengguna yang mengakses AWS.

Untuk memberi pengguna akses programatis, pilih salah satu opsi berikut.


****  

| Pengguna mana yang membutuhkan akses programatis? | Untuk | Oleh | 
| --- | --- | --- | 
| IAM | (Disarankan) Gunakan kredenal konsol sebagai kredensil sementara untuk menandatangani permintaan terprogram ke,, atau. AWS CLI AWS SDKs AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 
|  Identitas tenaga kerja (Pengguna yang dikelola di Pusat Identitas IAM)  | Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 
| IAM | Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs | Mengikuti petunjuk dalam [Menggunakan kredensi sementara dengan AWS sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) di Panduan Pengguna IAM. | 
| IAM | (Tidak direkomendasikan)Gunakan kredensyal jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 

### Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)
<a name="su-1_8-awscli"></a>

Pada langkah ini, Anda mengunduh dan mengonfigurasi AWS CLI untuk digunakan dengan Managed Service for Apache Flink.

**catatan**  
Latihan memulai dalam panduan ini mengasumsikan Anda menggunakan kredensial administrator (`adminuser`) di akun Anda untuk melakukan operasi.

**catatan**  
Jika Anda sudah AWS CLI menginstal, Anda mungkin perlu meningkatkan untuk mendapatkan fungsionalitas terbaru. Untuk informasi selengkapnya, lihat [ Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dalam *Panduan Pengguna AWS Command Line Interface *. Untuk memeriksa versi AWS CLI, jalankan perintah berikut:  

```
aws --version
```
Latihan dalam tutorial ini memerlukan AWS CLI versi berikut atau yang lebih baru:  

```
aws-cli/1.16.63
```

**Untuk mengatur AWS CLI**

1. Unduh dan konfigurasikan AWS CLI. Untuk instruksi, lihat topik berikut di *AWS Command Line Interface Panduan Pengguna*: 
   + [Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Mengonfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. Tambahkan profil bernama untuk pengguna administrator dalam AWS CLI `config` file. Anda dapat menggunakan profil ini saat menjalankan perintah AWS CLI . Untuk informasi selengkapnya tentang profil yang diberi nama, lihat [Profil yang Diberi Nama](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) dalam *Panduan Pengguna AWS Command Line Interface *.

   ```
   [profile adminuser]
   aws_access_key_id = adminuser access key ID
   aws_secret_access_key = adminuser secret access key
   region = aws-region
   ```

   Untuk daftar Wilayah yang tersedia, lihat [Wilayah dan Titik Akhir](https://docs.aws.amazon.com/general/latest/gr/rande.html) di. *Referensi Umum Amazon Web Services*
**catatan**  
Kode dan perintah contoh dalam tutorial ini menggunakan Wilayah US West (Oregon). Untuk menggunakan AWS Region yang berbeda, ubah Region dalam kode dan perintah untuk tutorial ini ke Region yang ingin Anda gunakan.

1. Verifikasikan penyiapan dengan memasukkan perintah bantuan berikut pada prompt perintah. 

   ```
   aws help
   ```

Setelah Anda mengatur AWS akun dan AWS CLI, Anda dapat mencoba latihan berikutnya, di mana Anda mengkonfigurasi aplikasi sampel dan menguji end-to-end pengaturan.

#### Langkah berikutnya
<a name="su-1_8-awscli-next-step-3"></a>

[Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink](#earlier-gs-1_8-exercise)

### Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink
<a name="earlier-gs-1_8-exercise"></a>

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink dengan aliran data sebagai sumber dan wastafel.

**Topics**
+ [Buat dua aliran data Amazon Kinesis](#earlier-gs-1_8-exercise-1)
+ [Tulis catatan sampel ke aliran input](#earlier-gs-1_8-exercise-2)
+ [Unduh dan periksa kode Java streaming Apache Flink](#earlier-gs-1_8-exercise-5)
+ [Kompilasi kode aplikasi](#earlier-gs-1_8-exercise-5.5)
+ [Unggah kode Java streaming Apache Flink](#earlier-gs-1_8-exercise-6)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#earlier-gs-1_8-exercise-7)
+ [Langkah berikutnya](#earlier-gs-1_8-exercise-next-step-4)

#### Buat dua aliran data Amazon Kinesis
<a name="earlier-gs-1_8-exercise-1"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, buat dua aliran data Kinesis (dan). `ExampleInputStream` `ExampleOutputStream` Aplikasi Anda menggunakan aliran ini untuk sumber aplikasi dan aliran tujuan.

Anda dapat membuat aliran ini menggunakan konsol Amazon Kinesis atau perintah AWS CLI berikut. Untuk instruksi konsol, lihat [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. 

**Untuk membuat aliran data AWS CLI**

1. Untuk membuat stream (`ExampleInputStream`) pertama, gunakan perintah Amazon Kinesis `create-stream` AWS CLI berikut.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

1. Untuk membuat aliran kedua yang digunakan aplikasi untuk menulis output, jalankan perintah yang sama, yang mengubah nama aliran menjadi `ExampleOutputStream`.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

#### Tulis catatan sampel ke aliran input
<a name="earlier-gs-1_8-exercise-2"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. Selanjutnya dalam tutorial ini, Anda menjalankan skrip `stock.py` untuk mengirim data ke aplikasi. 

   ```
   $ python stock.py
   ```

#### Unduh dan periksa kode Java streaming Apache Flink
<a name="earlier-gs-1_8-exercise-5"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Kloning repositori jarak jauh menggunakan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/GettingStarted_1_8` tersebut.

Perhatikan hal tentang kode aplikasi berikut:
+ File [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.
+ File `BasicStreamingJob.java` berisi metode `main` yang menentukan fungsionalitas aplikasi.
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Aplikasi Anda membuat konektor sumber dan sink untuk mengakses sumber daya eksternal menggunakan objek `StreamExecutionEnvironment`. 
+ Aplikasi membuat konektor sumber dan sink menggunakan properti statis. Untuk menggunakan properti aplikasi dinamis, gunakan metode `createSourceFromApplicationProperties` dan `createSinkFromApplicationProperties` untuk membuat konektor. Metode ini membaca properti aplikasi untuk mengonfigurasi konektor.

  Untuk informasi selengkapnya tentang properti runtime, lihat [Gunakan properti runtime](how-properties.md).

#### Kompilasi kode aplikasi
<a name="earlier-gs-1_8-exercise-5.5"></a>

Di bagian ini, Anda menggunakan compiler Apache Maven untuk membuat kode Java untuk aplikasi. Untuk informasi tentang menginstal Apache Maven dan Java Development Kit (JDK), lihat [Prasyarat untuk menyelesaikan latihan](#su-1_8-prerequisites).

**catatan**  
**Untuk menggunakan konektor Kinesis dengan versi Apache Flink sebelum 1.11, Anda perlu mengunduh, membangun, dan menginstal Apache Maven. Untuk informasi selengkapnya, lihat [Menggunakan konektor Apache Flink Kinesis Streams dengan versi Apache Flink sebelumnya](#how-creating-apps-building-kinesis).**

**Untuk mengompikasi kode aplikasi**

1. Untuk menggunakan kode aplikasi Anda, Anda mengompilasi dan mengemasnya ke dalam file JAR. Anda dapat mengompilasi dan mengemas kode Anda dengan salah satu dari dua cara:
   + Gunakan alat Maven baris perintah. Buat file JAR Anda dengan menjalankan perintah berikut di direktori yang berisi file `pom.xml`:

     ```
     mvn package -Dflink.version=1.8.2
     ```
   + Menyiapkan lingkungan pengembangan Anda. Lihat dokumentasi lingkungan pengembangan Anda untuk detail.
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 1.8. Pastikan versi Java proyek Anda adalah 1.8.

   Anda dapat mengunggah paket Anda sebagai file JAR, atau Anda dapat mengompresi paket Anda dan mengunggahnya sebagai file ZIP. Jika Anda membuat aplikasi menggunakan AWS CLI, Anda menentukan jenis konten kode Anda (JAR atau ZIP).

1. Jika ada kesalahan saat mengompilasi, pastikan variabel lingkungan `JAVA_HOME`Anda diatur dengan benar.

Jika aplikasi berhasil mengompilasi, file berikut dibuat:

`target/aws-kinesis-analytics-java-apps-1.0.jar`

#### Unggah kode Java streaming Apache Flink
<a name="earlier-gs-1_8-exercise-6"></a>

Pada bagian ini, Anda membuat bucket Amazon Simple Storage Service (Amazon S3) dan mengunggah kode aplikasi Anda.

**Untuk mengunggah kode aplikasi**

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

1. Pilih **Buat bucket**.

1. Masukkan **ka-app-code-*<username>*** di bidang **Bucket name** (Nama bucket). Tambahkan sufiks ke nama bucket, seperti nama pengguna Anda, untuk membuatnya unik secara global. Pilih **Next** (Selanjutnya).

1. Di langkah **Konfigurasi opsi**, jangan ubah pengaturan, dan pilih **Next** (Selanjutnya).

1. Di langkah **Atur izin**, jangan ubah pengaturan, dan pilih **Next** (Selanjutnya).

1. Pilih **Create bucket** (Buat bucket).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `aws-kinesis-analytics-java-apps-1.0.jar` yang Anda buat di langkah sebelumnya. Pilih **Berikutnya**.

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

#### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="earlier-gs-1_8-exercise-7"></a>

Anda dapat membuat dan menjalankan Layanan Terkelola untuk aplikasi Apache Flink menggunakan konsol atau aplikasi. AWS CLI

**catatan**  
Saat Anda membuat aplikasi menggunakan konsol, sumber daya AWS Identity and Access Management (IAM) dan Amazon CloudWatch Logs dibuat untuk Anda. Saat Anda membuat aplikasi menggunakan AWS CLI, Anda membuat sumber daya ini secara terpisah.

**Topics**
+ [Buat dan jalankan aplikasi (konsol)](#earlier-gs-1_8-exercise-7-console)
+ [Buat dan jalankan aplikasi (AWS CLI)](#earlier-gs-1_8-exercise-7-cli)

##### Buat dan jalankan aplikasi (konsol)
<a name="earlier-gs-1_8-exercise-7-console"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="earlier-gs-1_8-exercise-7-console-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My java test app**.
   + Untuk **Runtime**, pilih **Apache Flink**.
   + Biarkan menu tarik turun versi sebagai **Apache Flink 1.8 (Versi yang Direkomendasikan)**.

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="earlier-gs-1_8-exercise-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Konfigurasikan aplikasi
<a name="earlier-gs-1_8-exercise-7-console-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch pencatatan Amazon, Layanan Terkelola untuk Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`

##### Jalankan aplikasi
<a name="earlier-gs-1_8-exercise-7-console-run"></a>

1. Pada **MyApplication**halaman, pilih **Jalankan**. Konfirmasikan tindakan.

1. Ketika aplikasi berjalan, refresh halaman. Konsol menunjukkan **Grafik aplikasi**.

##### Hentikan aplikasi
<a name="earlier-gs-1_8-exercise-7-console-stop"></a>

Pada **MyApplication**halaman, pilih **Berhenti**. Konfirmasikan tindakan.

##### Memperbarui aplikasi
<a name="earlier-gs-1_8-exercise-7-console-update"></a>

Dengan menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file dari JAR aplikasi. Anda juga dapat memuat ulang aplikasi JAR dari bucket Amazon S3 jika Anda perlu memperbarui kode aplikasi.

Pada **MyApplication**halaman, pilih **Konfigurasi**. Perbarui pengaturan aplikasi dan pilih **Update** (Perbarui).

##### Buat dan jalankan aplikasi (AWS CLI)
<a name="earlier-gs-1_8-exercise-7-cli"></a>

Di bagian ini, Anda menggunakan AWS CLI untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink. Managed Service untuk Apache Flink menggunakan `kinesisanalyticsv2` AWS CLI perintah untuk membuat dan berinteraksi dengan Managed Service untuk aplikasi Apache Flink.

##### Membuat Kebijakan Izin
<a name="earlier-gs-1_8-exercise-7-cli-policy"></a>

**catatan**  
Anda harus membuat kebijakan izin dan peran untuk aplikasi Anda. Jika Anda tidak membuat sumber daya IAM ini, aplikasi Anda tidak dapat mengakses data dan aliran log.

Pertama, Anda membuat kebijakan izin dengan dua pernyataan: satu yang memberikan izin untuk tindakan `read` di aliran sumber, dan lainnya yang memberikan izin untuk tindakan `write` di aliran sink. Anda selanjutnya melampirkan kebijakan ke IAM role (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin `AKReadSourceStreamWriteSinkStream`. Ganti `username` dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (`012345678901`) dengan ID akun Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
        }
    ]
}
```

------

Untuk step-by-step petunjuk membuat kebijakan izin, lihat [Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) di *Panduan Pengguna IAM*.

**catatan**  
Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK untuk Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensil yang diperlukan oleh SDK ke peran IAM eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

##### Membuat peran IAM
<a name="earlier-gs-1_8-exercise-7-cli-role"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh aplikasi Managed Service for Apache Flink untuk membaca aliran sumber dan menulis ke aliran sink.

Layanan Terkelola untuk Apache Flink tidak dapat mengakses aliran Anda tanpa izin. Anda memberikan izin ini melalui IAM role. Setiap IAM role memiliki dua kebijakan yang dilampirkan. Kebijakan kepercayaan memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran, dan kebijakan izin menentukan apa yang dapat dilakukan Layanan Terkelola untuk Apache Flink setelah mengambil peran.

Anda melampirkan kebijakan izin yang Anda buat di bagian sebelumnya ke peran ini.

**Untuk membuat IAM role**

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

1. Dalam panel navigasi, pilih **Roles** (Peran), **Create role** (Buat Peran).

1. Di bawah **Pilih tipe identitas tepercaya**, pilih **Layanan AWS **. Di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **Kinesis**. Di bawah **Pilih kasus penggunaan Anda**, pilih **Analitik Kinesis**.

   Pilih **Berikutnya: Izin**.

1. Di halaman **Lampirkan kebijakan izin**, pilih **Next: Review** (Selanjutnya: Tinjau). Anda melampirkan kebijakan izin setelah Anda membuat peran tersebut.

1. Di halaman **Buat peran**, masukkan **MF-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran).

   Sekarang Anda sudah membuat IAM role baru yang disebut `MF-stream-rw-role`. Berikutnya, Anda memperbarui kebijakan kepercayaan dan izin untuk peran.

1. Lampirkan kebijakan izin ke peran tersebut.
**catatan**  
Untuk latihan ini, Managed Service for Apache Flink mengasumsikan peran ini untuk membaca data dari aliran data Kinesis (sumber) dan menulis output ke aliran data Kinesis lain. Jadi, Anda melampirkan kebijakan yang Anda buat di langkah sebelumnya, [Membuat Kebijakan Izin](#earlier-gs-1_8-exercise-7-cli-policy).

   1. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

   1. Pilih **Attach Policies** (Lampirkan Kebijakan).

   1. Di kotak pencarian, masukkan **AKReadSourceStreamWriteSinkStream** (kebijakan yang Anda buat bagian sebelumnya).

   1. Pilih **AKReadSourceStreamWriteSinkStream**kebijakan, lalu pilih **Lampirkan kebijakan**.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Buat catatan ARN peran baru.

Untuk step-by-step petunjuk cara membuat peran, lihat [Membuat Peran IAM (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*.

##### Buat Layanan Terkelola untuk aplikasi Apache Flink
<a name="earlier-gs-1_8-exercise-7-cli-create"></a>

1. Simpan kode JSON berikut ke file bernama `create_request.json`. Ganti ARN peran sampel dengan ARN untuk peran yang Anda buat sebelumnya. Ganti sufiks ARN bucket (`username`) dengan sufiks yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (`012345678901`) di peran eksekusi layanan dengan ID akun Anda.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_8",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) dengan permintaan sebelumnya untuk membuat aplikasi: 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

Aplikasi ini sekarang dibuat. Anda memulai aplikasi di langkah berikutnya.

##### Mulai aplikasi
<a name="earlier-gs-1_8-exercise-7-cli-start"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) untuk memulai aplikasi.

**Untuk memulai aplikasi**

1. Simpan kode JSON berikut ke file bernama `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) dengan permintaan sebelumnya untuk memulai aplikasi:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

Aplikasi sekarang berjalan. Anda dapat memeriksa metrik Layanan Terkelola untuk Apache Flink di CloudWatch konsol Amazon untuk memverifikasi bahwa aplikasi berfungsi.

##### Hentikan aplikasi
<a name="earlier-gs-1_8-exercise-7-cli-stop"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) untuk menghentikan aplikasi.

**Untuk menghentikan aplikasi**

1. Simpan kode JSON berikut ke file bernama `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) dengan permintaan berikut untuk menghentikan aplikasi:

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

Aplikasi sekarang dihentikan.

##### Tambahkan opsi CloudWatch logging
<a name="earlier-gs-1_8-exercise-7-cli-cw"></a>

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihat[Siapkan aplikasi logging di Managed Service untuk Apache Flink](cloudwatch-logs.md).

##### Perbarui properti lingkungan
<a name="earlier-gs-1_8-exercise-7-cli-update-env"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) untuk mengubah properti lingkungan untuk aplikasi tanpa mengompilasi ulang kode aplikasi. Dalam contoh ini, Anda mengubah Wilayah aliran sumber dan tujuan.

**Untuk memperbarui properti lingkungan untuk aplikasi**

1. Simpan kode JSON berikut ke file bernama `update_properties_request.json`.

   ```
   {"ApplicationName": "test",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
      }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) dengan permintaan sebelumnya untuk memperbarui properti lingkungan:

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Perbarui kode aplikasi
<a name="earlier-gs-1_8-exercise-7-cli-update-code"></a>

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI tindakan.

**catatan**  
Untuk memuat versi baru kode aplikasi dengan nama file yang sama, Anda harus menentukan versi objek baru. Untuk informasi selengkapnya tentang menggunakan versi objek Amazon S3, lihat [Mengaktifkan dan Menonaktifkan Versioning](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggil`UpdateApplication`, tentukan bucket Amazon S3 dan nama objek yang sama, dan versi objek baru. Aplikasi akan memulai ulang dengan paket kode baru.

Permintaan sampel berikut untuk tindakan `UpdateApplication` memuat ulang kode aplikasi dan memulai ulang aplikasi. Perbarui `CurrentApplicationVersionId` ke versi aplikasi saat ini. Anda dapat memeriksa versi aplikasi saat ini menggunakan tindakan `ListApplications` atau `DescribeApplication`. Perbarui akhiran nama bucket (*<username>*) dengan akhiran yang Anda pilih di bagian. [Buat dua aliran data Amazon Kinesis](#earlier-gs-1_8-exercise-1)

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

#### Langkah berikutnya
<a name="earlier-gs-1_8-exercise-next-step-4"></a>

[Langkah 4: Bersihkan AWS sumber daya](#earlier-gs-1_8-cleanup)

### Langkah 4: Bersihkan AWS sumber daya
<a name="earlier-gs-1_8-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Memulai.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#earlier-gs-1_8-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#earlier-gs-1_8-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#earlier-gs-1_8-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#earlier-gs-1_8-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#earlier-gs-1_8-cleanup-cw)

#### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="earlier-gs-1_8-cleanup-app"></a>

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

1. Di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Pilih **Configure** (Konfigurasikan).

1. Di bagian **Snapshots**, pilih **Disable** (Nonaktifkan), lalu pilih **Update** (Perbarui).

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

#### Hapus aliran data Kinesis Anda
<a name="earlier-gs-1_8-cleanup-stream"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

#### Hapus objek dan ember Amazon S3 Anda
<a name="earlier-gs-1_8-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

#### Hapus sumber daya IAM Anda
<a name="earlier-gs-1_8-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

#### Hapus CloudWatch sumber daya Anda
<a name="earlier-gs-1_8-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

## Memulai: Flink 1.6.2 - mencela
<a name="earlier-gs-1_6"></a>

**catatan**  
Apache Flink versi **1.6, 1.8, dan 1.11** belum didukung oleh komunitas Apache Flink selama lebih dari tiga tahun. **Kami berencana untuk menghentikan versi ini di Amazon Managed Service untuk Apache Flink pada 5 November 2024.** Mulai dari tanggal ini, Anda tidak akan dapat membuat aplikasi baru untuk versi Flink ini. Anda dapat terus menjalankan aplikasi yang ada saat ini. Anda dapat memutakhirkan aplikasi secara statis menggunakan fitur upgrade versi di tempat di Amazon Managed Service for Apache Flink Untuk informasi selengkapnya, lihat. [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md)

Topik ini berisi versi [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) tutorial yang menggunakan Apache Flink 1.6.2.

**Topics**
+ [Komponen Layanan Terkelola untuk aplikasi Apache Flink](#earlier-gs-1_6-components)
+ [Prasyarat untuk menyelesaikan latihan](#su-1_6-prerequisites)
+ [Langkah 1: Siapkan AWS akun dan buat pengguna administrator](#earlier-gs-1_6-setting-up)
+ [Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)](#su-1_6-awscli)
+ [Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink](#earlier-gs-1_6-exercise)
+ [Langkah 4: Bersihkan AWS sumber daya](#earlier-gs-1_6-cleanup)

### Komponen Layanan Terkelola untuk aplikasi Apache Flink
<a name="earlier-gs-1_6-components"></a>

Untuk memproses data, Managed Service untuk aplikasi Apache Flink Anda menggunakan aplikasi Java/Apache Maven atau Scala yang memproses input dan menghasilkan output menggunakan runtime Apache Flink. 

Managed Service untuk Apache Flink memiliki komponen-komponen berikut:
+ **Properti runtime:** Anda dapat menggunakan *properti runtime* untuk mengonfigurasi aplikasi Anda tanpa mengompilasi ulang kode aplikasi Anda. 
+ **Source** (Sumber): Aplikasi mengonsumsi data menggunakan *sumber*. Konektor sumber membaca data dari Kinesis data stream, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat [Tambahkan sumber data streaming](how-sources.md).
+ **Operators** (Operator): Aplikasi memproses data menggunakan satu atau beberapa *operator*. Operator dapat mengubah, memperkaya, atau menggabungkan data. Untuk informasi selengkapnya, lihat [Operator](how-operators.md).
+ **Sink:** Aplikasi menghasilkan data ke sumber eksternal menggunakan *sink*. Konektor sink menulis data ke aliran data Kinesis, aliran Firehose, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat [Tulis data menggunakan sink](how-sinks.md).

Setelah Anda membuat, mengompilasi, dan mengemas aplikasi Anda, Anda mengunggah paket kode ke bucket Amazon Simple Storage Service (Amazon S3). Anda kemudian membuat Layanan Terkelola untuk aplikasi Apache Flink. Anda meneruskan di lokasi paket kode, Kinesis data stream sebagai sumber data streaming, dan biasanya lokasi streaming atau file yang menerima data yang diproses dari aplikasi.

### Prasyarat untuk menyelesaikan latihan
<a name="su-1_6-prerequisites"></a>

Untuk menyelesaikan langkah-langkah di panduan ini, Anda harus memiliki hal-hal berikut:
+ [Java Development Kit (JDK) versi 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Atur variabel lingkungan `JAVA_HOME` untuk menunjuk ke lokasi penginstalan JDK Anda.
+ Sebaiknya gunakan lingkungan pengembangan (seperti [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) atau [IntelliJ Idea](https://www.jetbrains.com/idea/)) untuk mengembangkan dan mengompilasi aplikasi Anda.
+ [Klien Git.](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) Instal klien Git jika Anda belum menginstalnya.
+ [Plugin Compiler Apache Maven](https://maven.apache.org/plugins/maven-compiler-plugin/). Maven harus berada di jalur kerja Anda. Untuk menguji instalasi Apache Maven Anda, masukkan hal berikut:

  ```
  $ mvn -version
  ```

Untuk memulai, buka [Langkah 1: Siapkan AWS akun dan buat pengguna administrator](#earlier-gs-1_6-setting-up).

### Langkah 1: Siapkan AWS akun dan buat pengguna administrator
<a name="earlier-gs-1_6-setting-up"></a>

#### Mendaftar untuk Akun AWS
<a name="sign-up-for-aws"></a>

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

**Untuk mendaftar untuk Akun AWS**

1. Buka [https://portal.aws.amazon.com/billing/pendaftaran.](https://portal.aws.amazon.com/billing/signup)

1. Ikuti petunjuk online.

   Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.

   Saat Anda mendaftar untuk sebuah Akun AWS, sebuah *Pengguna root akun AWS*dibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan [tugas yang memerlukan akses pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk [https://aws.amazon.com.rproxy.goskope.comke/](https://aws.amazon.com/) dan memilih **Akun Saya**.

#### Buat pengguna dengan akses administratif
<a name="create-an-admin"></a>

Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.

**Amankan Anda Pengguna root akun AWS**

1.  Masuk ke [Konsol Manajemen AWS](https://console.aws.amazon.com/)sebagai pemilik akun dengan memilih **pengguna Root** dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi.

   Untuk bantuan masuk dengan menggunakan pengguna root, lihat [Masuk sebagai pengguna root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) di *AWS Sign-In Panduan Pengguna*.

1. Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.

   Untuk petunjuk, lihat [Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) di Panduan Pengguna *IAM*.

**Buat pengguna dengan akses administratif**

1. Aktifkan Pusat Identitas IAM.

   Untuk mendapatkan petunjuk, silakan lihat [Mengaktifkan AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) di *Panduan Pengguna AWS IAM Identity Center *.

1. Di Pusat Identitas IAM, berikan akses administratif ke pengguna.

   Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat [Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) di *Panduan AWS IAM Identity Center Pengguna*.

**Masuk sebagai pengguna dengan akses administratif**
+ Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.

  Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat [Masuk ke portal AWS akses](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) di *Panduan AWS Sign-In Pengguna*.

**Tetapkan akses ke pengguna tambahan**

1. Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

   Untuk petunjuknya, lihat [Membuat set izin](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) di *Panduan AWS IAM Identity Center Pengguna*.

1. Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.

   Untuk petunjuk, lihat [Menambahkan grup](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) di *Panduan AWS IAM Identity Center Pengguna*.

#### Memberikan akses programatis
<a name="setting-up-access-gs-6"></a>

Pengguna membutuhkan akses terprogram jika mereka ingin berinteraksi dengan AWS luar. Konsol Manajemen AWS Cara untuk memberikan akses terprogram tergantung pada jenis pengguna yang mengakses AWS.

Untuk memberi pengguna akses programatis, pilih salah satu opsi berikut.


****  

| Pengguna mana yang membutuhkan akses programatis? | Untuk | Oleh | 
| --- | --- | --- | 
| IAM | (Disarankan) Gunakan kredenal konsol sebagai kredensil sementara untuk menandatangani permintaan terprogram ke,, atau. AWS CLI AWS SDKs AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 
|  Identitas tenaga kerja (Pengguna yang dikelola di Pusat Identitas IAM)  | Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 
| IAM | Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs | Mengikuti petunjuk dalam [Menggunakan kredensi sementara dengan AWS sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) di Panduan Pengguna IAM. | 
| IAM | (Tidak direkomendasikan)Gunakan kredensyal jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs |  Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)  | 

### Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)
<a name="su-1_6-awscli"></a>

Pada langkah ini, Anda mengunduh dan mengonfigurasi AWS CLI untuk digunakan dengan Managed Service for Apache Flink.

**catatan**  
Latihan memulai dalam panduan ini mengasumsikan Anda menggunakan kredensial administrator (`adminuser`) di akun Anda untuk melakukan operasi.

**catatan**  
Jika Anda sudah AWS CLI menginstal, Anda mungkin perlu meningkatkan untuk mendapatkan fungsionalitas terbaru. Untuk informasi selengkapnya, lihat [ Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) dalam *Panduan Pengguna AWS Command Line Interface *. Untuk memeriksa versi AWS CLI, jalankan perintah berikut:  

```
aws --version
```
Latihan dalam tutorial ini memerlukan AWS CLI versi berikut atau yang lebih baru:  

```
aws-cli/1.16.63
```

**Untuk mengatur AWS CLI**

1. Unduh dan konfigurasikan AWS CLI. Untuk instruksi, lihat topik berikut di *AWS Command Line Interface Panduan Pengguna*: 
   + [Menginstal AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Mengonfigurasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. Tambahkan profil bernama untuk pengguna administrator dalam AWS CLI `config` file. Anda dapat menggunakan profil ini saat menjalankan perintah AWS CLI . Untuk informasi selengkapnya tentang profil yang diberi nama, lihat [Profil yang Diberi Nama](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) dalam *Panduan Pengguna AWS Command Line Interface *.

   ```
   [profile adminuser]
   aws_access_key_id = adminuser access key ID
   aws_secret_access_key = adminuser secret access key
   region = aws-region
   ```

   Untuk daftar AWS Wilayah yang tersedia, lihat [Wilayah dan Titik Akhir](https://docs.aws.amazon.com/general/latest/gr/rande.html) di. *Referensi Umum Amazon Web Services*
**catatan**  
Kode dan perintah contoh dalam tutorial ini menggunakan Wilayah US West (Oregon). Untuk menggunakan Wilayah yang berbeda, ubah Wilayah dalam kode dan perintah untuk tutorial ini ke Wilayah yang ingin Anda gunakan.

1. Verifikasikan penyiapan dengan memasukkan perintah bantuan berikut pada prompt perintah. 

   ```
   aws help
   ```

Setelah Anda mengatur AWS akun dan AWS CLI, Anda dapat mencoba latihan berikutnya, di mana Anda mengkonfigurasi aplikasi sampel dan menguji end-to-end pengaturan.

#### Langkah berikutnya
<a name="su-1_6-next-step-3"></a>

[Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink](#earlier-gs-1_6-exercise)

### Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink
<a name="earlier-gs-1_6-exercise"></a>

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink dengan aliran data sebagai sumber dan wastafel.

**Topics**
+ [Buat dua aliran data Amazon Kinesis](#earlier-gs-1_6-exercise-1)
+ [Tulis catatan sampel ke aliran input](#earlier-gs-1_6-exercise-2)
+ [Unduh dan periksa kode Java streaming Apache Flink](#earlier-gs-1_6-exercise-5)
+ [Kompilasi kode aplikasi](#earlier-gs-1_6-exercise-5.5)
+ [Unggah kode Java streaming Apache Flink](#earlier-gs-1_6-exercise-6)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#earlier-gs-1_6-exercise-7)

#### Buat dua aliran data Amazon Kinesis
<a name="earlier-gs-1_6-exercise-1"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, buat dua aliran data Kinesis (dan). `ExampleInputStream` `ExampleOutputStream` Aplikasi Anda menggunakan aliran ini untuk sumber aplikasi dan aliran tujuan.

Anda dapat membuat aliran ini menggunakan konsol Amazon Kinesis atau perintah AWS CLI berikut. Untuk instruksi konsol, lihat [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. 

**Untuk membuat aliran data AWS CLI**

1. Untuk membuat stream (`ExampleInputStream`) pertama, gunakan perintah Amazon Kinesis `create-stream` AWS CLI berikut.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleInputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

1. Untuk membuat aliran kedua yang digunakan aplikasi untuk menulis output, jalankan perintah yang sama, yang mengubah nama aliran menjadi `ExampleOutputStream`.

   ```
   $ aws kinesis create-stream \
   --stream-name ExampleOutputStream \
   --shard-count 1 \
   --region us-west-2 \
   --profile adminuser
   ```

#### Tulis catatan sampel ke aliran input
<a name="earlier-gs-1_6-exercise-2"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. Selanjutnya dalam tutorial ini, Anda menjalankan skrip `stock.py` untuk mengirim data ke aplikasi. 

   ```
   $ python stock.py
   ```

#### Unduh dan periksa kode Java streaming Apache Flink
<a name="earlier-gs-1_6-exercise-5"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Kloning repositori jarak jauh menggunakan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/GettingStarted_1_6` tersebut.

Perhatikan hal tentang kode aplikasi berikut:
+ File [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.
+ File `BasicStreamingJob.java` berisi metode `main` yang menentukan fungsionalitas aplikasi.
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Aplikasi Anda membuat konektor sumber dan sink untuk mengakses sumber daya eksternal menggunakan objek `StreamExecutionEnvironment`. 
+ Aplikasi membuat konektor sumber dan sink menggunakan properti statis. Untuk menggunakan properti aplikasi dinamis, gunakan metode `createSourceFromApplicationProperties` dan `createSinkFromApplicationProperties` untuk membuat konektor. Metode ini membaca properti aplikasi untuk mengonfigurasi konektor.

  Untuk informasi selengkapnya tentang properti runtime, lihat [Gunakan properti runtime](how-properties.md).

#### Kompilasi kode aplikasi
<a name="earlier-gs-1_6-exercise-5.5"></a>

Di bagian ini, Anda menggunakan compiler Apache Maven untuk membuat kode Java untuk aplikasi. Untuk informasi tentang menginstal Apache Maven dan Java Development Kit (JDK), lihat [Prasyarat untuk menyelesaikan latihan](#su-1_6-prerequisites).

**catatan**  
**Untuk menggunakan konektor Kinesis dengan versi Apache Flink sebelum 1.11, Anda perlu mengunduh kode sumber untuk konektor dan membangunnya seperti yang dijelaskan dalam [Dokumentasi Apache Flink](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/kinesis.html)**.

**Untuk mengompikasi kode aplikasi**

1. Untuk menggunakan kode aplikasi Anda, Anda mengompilasi dan mengemasnya ke dalam file JAR. Anda dapat mengompilasi dan mengemas kode Anda dengan salah satu dari dua cara:
   + Gunakan alat Maven baris perintah. Buat file JAR Anda dengan menjalankan perintah berikut di direktori yang berisi file `pom.xml`:

     ```
     mvn package
     ```
**catatan**  
Parameter -DFLink.version tidak diperlukan untuk Managed Service untuk Apache Flink Runtime versi 1.0.1; hanya diperlukan untuk versi 1.1.0 dan yang lebih baru. Untuk informasi selengkapnya, lihat [Tentukan versi Apache Flink aplikasi Anda](how-creating-apps.md#how-creating-apps-building-flink).
   + Menyiapkan lingkungan pengembangan Anda. Lihat dokumentasi lingkungan pengembangan Anda untuk detail.

   Anda dapat mengunggah paket Anda sebagai file JAR, atau Anda dapat mengompresi paket Anda dan mengunggahnya sebagai file ZIP. Jika Anda membuat aplikasi menggunakan AWS CLI, Anda menentukan jenis konten kode Anda (JAR atau ZIP).

1. Jika ada kesalahan saat mengompilasi, pastikan variabel lingkungan `JAVA_HOME`Anda diatur dengan benar.

Jika aplikasi berhasil mengompilasi, file berikut dibuat:

`target/aws-kinesis-analytics-java-apps-1.0.jar`

#### Unggah kode Java streaming Apache Flink
<a name="earlier-gs-1_6-exercise-6"></a>

Pada bagian ini, Anda membuat bucket Amazon Simple Storage Service (Amazon S3) dan mengunggah kode aplikasi Anda.

**Untuk mengunggah kode aplikasi**

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

1. Pilih **Buat bucket**.

1. Masukkan **ka-app-code-*<username>*** di bidang **Bucket name** (Nama bucket). Tambahkan sufiks ke nama bucket, seperti nama pengguna Anda, untuk membuatnya unik secara global. Pilih **Next** (Selanjutnya).

1. Di langkah **Konfigurasi opsi**, jangan ubah pengaturan, dan pilih **Next** (Selanjutnya).

1. Di langkah **Atur izin**, jangan ubah pengaturan, dan pilih **Next** (Selanjutnya).

1. Pilih **Create bucket** (Buat bucket).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `aws-kinesis-analytics-java-apps-1.0.jar` yang Anda buat di langkah sebelumnya. Pilih **Berikutnya**.

1. Di langkah **Atur izin**, jangan ubah pengaturan. Pilih **Berikutnya**.

1. Di langkah **Atur properti**, jangan ubah pengaturan. Pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

#### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="earlier-gs-1_6-exercise-7"></a>

Anda dapat membuat dan menjalankan Layanan Terkelola untuk aplikasi Apache Flink menggunakan konsol atau aplikasi. AWS CLI

**catatan**  
Saat Anda membuat aplikasi menggunakan konsol, sumber daya AWS Identity and Access Management (IAM) dan Amazon CloudWatch Logs dibuat untuk Anda. Saat Anda membuat aplikasi menggunakan AWS CLI, Anda membuat sumber daya ini secara terpisah.

**Topics**
+ [Buat dan jalankan aplikasi (konsol)](#earlier-gs-1_6-exercise-7-console)
+ [Buat dan jalankan aplikasi (AWS CLI)](#earlier-gs-1_6-exercise-7-cli)

##### Buat dan jalankan aplikasi (konsol)
<a name="earlier-gs-1_6-exercise-7-console"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="earlier-gs-1_6-exercise-7-console-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My java test app**.
   + Untuk **Runtime**, pilih **Apache Flink**.
**catatan**  
Managed Service untuk Apache Flink menggunakan Apache Flink versi 1.8.2 atau 1.6.2.
   + Ubah versi menu tarik turun ke **Apache Flink 1.6**.

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="earlier-gs-1_6-exercise-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/java-getting-started-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Konfigurasikan aplikasi
<a name="earlier-gs-1_6-exercise-7-console-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **java-getting-started-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch pencatatan Amazon, Layanan Terkelola untuk Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`

##### Jalankan aplikasi
<a name="earlier-gs-1_6-exercise-7-console-run"></a>

1. Pada **MyApplication**halaman, pilih **Jalankan**. Konfirmasikan tindakan.

1. Ketika aplikasi berjalan, refresh halaman. Konsol menunjukkan **Grafik aplikasi**.

##### Hentikan aplikasi
<a name="earlier-gs-1_6-exercise-7-console-stop"></a>

Pada **MyApplication**halaman, pilih **Berhenti**. Konfirmasikan tindakan.

##### Memperbarui aplikasi
<a name="earlier-gs-1_6-exercise-7-console-update"></a>

Dengan menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file dari JAR aplikasi. Anda juga dapat memuat ulang aplikasi JAR dari bucket Amazon S3 jika Anda perlu memperbarui kode aplikasi.

Pada **MyApplication**halaman, pilih **Konfigurasi**. Perbarui pengaturan aplikasi dan pilih **Update** (Perbarui).

##### Buat dan jalankan aplikasi (AWS CLI)
<a name="earlier-gs-1_6-exercise-7-cli"></a>

Di bagian ini, Anda menggunakan AWS CLI untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink. Managed Service untuk Apache Flink menggunakan `kinesisanalyticsv2` AWS CLI perintah untuk membuat dan berinteraksi dengan Managed Service untuk aplikasi Apache Flink.

##### Membuat kebijakan izin
<a name="earlier-gs-1_6-exercise-7-cli-policy"></a>

Pertama, Anda membuat kebijakan izin dengan dua pernyataan: satu yang memberikan izin untuk tindakan `read` di aliran sumber, dan lainnya yang memberikan izin untuk tindakan `write` di aliran sink. Anda selanjutnya melampirkan kebijakan ke IAM role (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin `AKReadSourceStreamWriteSinkStream`. Ganti `username` dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (`012345678901`) dengan ID akun Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
        }
    ]
}
```

------

Untuk step-by-step petunjuk membuat kebijakan izin, lihat [Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) di *Panduan Pengguna IAM*.

**catatan**  
Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK untuk Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensil yang diperlukan oleh SDK ke peran IAM eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

##### Membuat peran IAM
<a name="earlier-gs-1_6-exercise-7-cli-role"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh aplikasi Managed Service for Apache Flink untuk membaca aliran sumber dan menulis ke aliran sink.

Layanan Terkelola untuk Apache Flink tidak dapat mengakses aliran Anda tanpa izin. Anda memberikan izin ini melalui IAM role. Setiap IAM role memiliki dua kebijakan yang dilampirkan. Kebijakan kepercayaan memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran, dan kebijakan izin menentukan apa yang dapat dilakukan Layanan Terkelola untuk Apache Flink setelah mengambil peran.

Anda melampirkan kebijakan izin yang Anda buat di bagian sebelumnya ke peran ini.

**Untuk membuat IAM role**

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

1. Dalam panel navigasi, pilih **Roles** (Peran), **Create role** (Buat Peran).

1. Di bawah **Pilih tipe identitas tepercaya**, pilih **Layanan AWS **. Di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **Kinesis**. Di bawah **Pilih kasus penggunaan Anda**, pilih **Analitik Kinesis**.

   Pilih **Berikutnya: Izin**.

1. Di halaman **Lampirkan kebijakan izin**, pilih **Next: Review** (Selanjutnya: Tinjau). Anda melampirkan kebijakan izin setelah Anda membuat peran tersebut.

1. Di halaman **Buat peran**, masukkan **MF-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran).

   Sekarang Anda sudah membuat IAM role baru yang disebut `MF-stream-rw-role`. Berikutnya, Anda memperbarui kebijakan kepercayaan dan izin untuk peran.

1. Lampirkan kebijakan izin ke peran tersebut.
**catatan**  
Untuk latihan ini, Managed Service for Apache Flink mengasumsikan peran ini untuk membaca data dari aliran data Kinesis (sumber) dan menulis output ke aliran data Kinesis lain. Jadi, Anda melampirkan kebijakan yang Anda buat di langkah sebelumnya, [Membuat kebijakan izin](#earlier-gs-1_6-exercise-7-cli-policy).

   1. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

   1. Pilih **Attach Policies** (Lampirkan Kebijakan).

   1. Di kotak pencarian, masukkan **AKReadSourceStreamWriteSinkStream** (kebijakan yang Anda buat bagian sebelumnya).

   1. Pilih **AKReadSourceStreamWriteSinkStream**kebijakan, lalu pilih **Lampirkan kebijakan**.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Buat catatan ARN peran baru.

Untuk step-by-step petunjuk cara membuat peran, lihat [Membuat Peran IAM (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*.

##### Buat Layanan Terkelola untuk aplikasi Apache Flink
<a name="earlier-gs-1_6-exercise-7-cli-create"></a>

1. Simpan kode JSON berikut ke file bernama `create_request.json`. Ganti ARN peran sampel dengan ARN untuk peran yang Anda buat sebelumnya. Ganti sufiks ARN bucket (`username`) dengan sufiks yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (`012345678901`) di peran eksekusi layanan dengan ID akun Anda.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_6",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "java-getting-started-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) dengan permintaan sebelumnya untuk membuat aplikasi: 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

Aplikasi ini sekarang dibuat. Anda memulai aplikasi di langkah berikutnya.

##### Mulai aplikasi
<a name="earlier-gs-1_6-exercise-7-cli-start"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) untuk memulai aplikasi.

**Untuk memulai aplikasi**

1. Simpan kode JSON berikut ke file bernama `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) dengan permintaan sebelumnya untuk memulai aplikasi:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

Aplikasi sekarang berjalan. Anda dapat memeriksa metrik Layanan Terkelola untuk Apache Flink di CloudWatch konsol Amazon untuk memverifikasi bahwa aplikasi berfungsi.

##### Hentikan aplikasi
<a name="earlier-gs-1_6-exercise-7-cli-stop"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) untuk menghentikan aplikasi.

**Untuk menghentikan aplikasi**

1. Simpan kode JSON berikut ke file bernama `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) dengan permintaan berikut untuk menghentikan aplikasi:

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

Aplikasi sekarang dihentikan.

##### Tambahkan opsi CloudWatch logging
<a name="earlier-gs-1_6-exercise-7-cli-cw"></a>

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihat[Siapkan aplikasi logging di Managed Service untuk Apache Flink](cloudwatch-logs.md).

##### Perbarui properti lingkungan
<a name="earlier-gs-1_6-exercise-7-cli-update-env"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) untuk mengubah properti lingkungan untuk aplikasi tanpa mengompilasi ulang kode aplikasi. Dalam contoh ini, Anda mengubah Wilayah aliran sumber dan tujuan.

**Untuk memperbarui properti lingkungan untuk aplikasi**

1. Simpan kode JSON berikut ke file bernama `update_properties_request.json`.

   ```
   {"ApplicationName": "test",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
      }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) dengan permintaan sebelumnya untuk memperbarui properti lingkungan:

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Perbarui kode aplikasi
<a name="earlier-gs-1_6-exercise-7-cli-update-code"></a>

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI tindakan.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggil`UpdateApplication`, tentukan bucket Amazon S3 dan nama objek yang sama. Aplikasi akan memulai ulang dengan paket kode baru.

Permintaan sampel berikut untuk tindakan `UpdateApplication` memuat ulang kode aplikasi dan memulai ulang aplikasi. Perbarui `CurrentApplicationVersionId` ke versi aplikasi saat ini. Anda dapat memeriksa versi aplikasi saat ini menggunakan tindakan `ListApplications` atau `DescribeApplication`. Perbarui akhiran nama bucket (*<username>*) dengan akhiran yang Anda pilih di bagian. [Buat dua aliran data Amazon Kinesis](#earlier-gs-1_6-exercise-1)

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "java-getting-started-1.0.jar"
                }
            }
        }
    }
}
```

### Langkah 4: Bersihkan AWS sumber daya
<a name="earlier-gs-1_6-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Memulai.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#earlier-gs-1_6-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#earlier-gs-1_6-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#earlier-gs-1_6-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#earlier-gs-1_6-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#earlier-gs-1_6-cleanup-cw)

#### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="earlier-gs-1_6-cleanup-app"></a>

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

1. Di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Pilih **Configure** (Konfigurasikan).

1. Di bagian **Snapshots**, pilih **Disable** (Nonaktifkan), lalu pilih **Update** (Perbarui).

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

#### Hapus aliran data Kinesis Anda
<a name="earlier-gs-1_6-cleanup-stream"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

#### Hapus objek dan ember Amazon S3 Anda
<a name="earlier-gs-1_6-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

#### Hapus sumber daya IAM Anda
<a name="earlier-gs-1_6-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

#### Hapus CloudWatch sumber daya Anda
<a name="earlier-gs-1_6-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

## Contoh versi sebelumnya (warisan) untuk Managed Service untuk Apache Flink
<a name="legacy-examples"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

Bagian ini memberikan contoh membuat dan bekerja dengan aplikasi di Managed Service untuk Apache Flink. Mereka menyertakan contoh kode dan step-by-step instruksi untuk membantu Anda membuat Layanan Terkelola untuk aplikasi Apache Flink dan menguji hasil Anda.

Sebelum Anda menjelajahi contoh-contoh ini, sebaiknya tinjau hal berikut terlebih dulu: 
+ [Cara kerjanya](how-it-works.md)
+ [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md)

**catatan**  
Contoh ini menganggap Anda menggunakan Wilayah US West (Oregon) (`us-west-2`). Jika Anda menggunakan Wilayah yang berbeda, perbarui kode aplikasi, perintah, dan IAM role Anda dengan tepat.

**Topics**
+ [DataStream Contoh API](#examples-datastream)
+ [Contoh Python](#examples-python)
+ [Contoh scala](#examples-scala)

### DataStream Contoh API
<a name="examples-datastream"></a>

Contoh berikut menunjukkan cara membuat aplikasi menggunakan Apache Flink API DataStream .

**Topics**
+ [Contoh: Jendela jatuh](#examples-tumbling)
+ [Contoh: Jendela geser](#examples-sliding)
+ [Contoh: Menulis ke ember Amazon S3](#examples-s3)
+ [Tutorial: Menggunakan Layanan Terkelola untuk aplikasi Apache Flink untuk mereplikasi data dari satu topik dalam cluster MSK ke yang lain di VPC](#example-msk)
+ [Contoh: Gunakan konsumen EFO dengan aliran data Kinesis](#examples-efo)
+ [Contoh: Menulis ke Firehose](#get-started-exercise-fh)
+ [Contoh: Baca dari aliran Kinesis di akun yang berbeda](#examples-cross)
+ [Tutorial: Menggunakan truststore kustom dengan Amazon MSK](#example-keystore)

#### Contoh: Jendela jatuh
<a name="examples-tumbling"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink yang mengumpulkan data menggunakan jendela tumbling. Agregrasi diaktifkan secara default di Flink. Untuk menonaktifkannya, gunakan yang berikut ini:

```
sink.producer.aggregation-enabled' = 'false'
```

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) terlebih dulu.

**Topics**
+ [Buat sumber daya yang bergantung](#examples-tumbling-resources)
+ [Tulis catatan sampel ke aliran input](#examples-tumbling-write)
+ [Unduh dan periksa kode aplikasi](#examples-tumbling-download)
+ [Kompilasi kode aplikasi](#examples-tumbling-compile)
+ [Unggah kode Java streaming Apache Flink](#examples-tumbling-upload)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#examples-tumbling-create-run)
+ [Bersihkan AWS sumber daya](#examples-tumbling-cleanup)

##### Buat sumber daya yang bergantung
<a name="examples-tumbling-resources"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, Anda membuat sumber daya dependen berikut: 
+ Dua Kinesis data streams (`ExampleInputStream` dan `ExampleOutputStream`)
+ Bucket Amazon S3 untuk menyimpan kode aplikasi (`ka-app-code-<username>`) 

Anda dapat membuat aliran Kinesis dan bucket Amazon S3 menggunakan konsol. Untuk petunjuk membuat sumber daya ini, lihat topik berikut:
+ [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. Beri nama aliran data **ExampleInputStream** dan **ExampleOutputStream** Anda.
+ [Bagaimana Cara Membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Beri bucket Amazon S3 nama yang unik secara global dengan menambahkan nama login Anda, seperti **ka-app-code-*<username>***.

##### Tulis catatan sampel ke aliran input
<a name="examples-tumbling-write"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Jalankan skrip `stock.py`. 

   ```
   $ python stock.py
   ```

   Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

##### Unduh dan periksa kode aplikasi
<a name="examples-tumbling-download"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/TumblingWindow` tersebut.

Kode aplikasi terletak di file `TumblingWindowStreamingJob.java`. Perhatikan hal tentang kode aplikasi berikut:
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Tambahkan pernyataan impor berikut:

  ```
  import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  ```
+ Aplikasi menggunakan operator `timeWindow` untuk mencari hitungan nilai untuk setiap simbol saham melalui jendela tumbling 5 detik. Kode berikut membuat operator dan mengirimkan data agregat ke sink Kinesis Data Streams baru:

  ```
  input.flatMap(new Tokenizer()) // Tokenizer for generating words
                      .keyBy(0) // Logically partition the stream for each word
                      
                      .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward
                      .sum(1) // Sum the number of words per partition
                      .map(value -> value.f0 + "," + value.f1.toString() + "\n")
                      .addSink(createSinkFromStaticConfig());
  ```

##### Kompilasi kode aplikasi
<a name="examples-tumbling-compile"></a>

Untuk mengompilasi aplikasi, lakukan hal berikut:

1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Lengkapi prasyarat yang diperlukan](getting-started.md#setting-up-prerequisites) di tutorial [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md).

1. Susun aplikasi dengan perintah berikut: 

   ```
   mvn package -Dflink.version=1.15.3
   ```
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. 

Mengkompilasi aplikasi membuat file JAR aplikasi (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Unggah kode Java streaming Apache Flink
<a name="examples-tumbling-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian [Buat sumber daya yang bergantung](#examples-tumbling-resources).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `aws-kinesis-analytics-java-apps-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="examples-tumbling-create-run"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="examples-tumbling-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink**.
**catatan**  
Managed Service untuk Apache Flink menggunakan Apache Flink versi 1.15.2.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="get-started-exercise-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Konfigurasikan aplikasi
<a name="examples-tumbling-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi. Ini bukan aliran log yang sama dengan yang digunakan aplikasi untuk mengirim hasil.

##### Jalankan aplikasi
<a name="examples-tumbling-run"></a>

1. Pada **MyApplication**halaman, pilih **Jalankan**. Biarkan opsi **Run without snapshot** (Jalankan tanpa snapshot) dipilih, dan konfirmasikan tindakan.

1. Ketika aplikasi berjalan, refresh halaman. Konsol menunjukkan **Grafik aplikasi**.

Anda dapat memeriksa metrik Managed Service for Apache Flink di CloudWatch konsol untuk memverifikasi bahwa aplikasi berfungsi. 

##### Bersihkan AWS sumber daya
<a name="examples-tumbling-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Tumbling Window.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-tumbling-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-tumbling-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#examples-tumbling-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-tumbling-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-tumbling-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-tumbling-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-tumbling-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

##### Hapus objek dan ember Amazon S3 Anda
<a name="examples-tumbling-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-tumbling-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-tumbling-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Contoh: Jendela geser
<a name="examples-sliding"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) terlebih dulu.

**Topics**
+ [Buat sumber daya yang bergantung](#examples-sliding-resources)
+ [Tulis catatan sampel ke aliran input](#examples-sliding-write)
+ [Unduh dan periksa kode aplikasi](#examples-sliding-download)
+ [Kompilasi kode aplikasi](#examples-sliding-compile)
+ [Unggah kode Java streaming Apache Flink](#examples-sliding-upload)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#examples-sliding-create-run)
+ [Bersihkan AWS sumber daya](#examples-sliding-cleanup)

##### Buat sumber daya yang bergantung
<a name="examples-sliding-resources"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, Anda membuat sumber daya dependen berikut: 
+ Dua Kinesis data streams (`ExampleInputStream` dan `ExampleOutputStream`)
+ Bucket Amazon S3 untuk menyimpan kode aplikasi (`ka-app-code-<username>`) 

Anda dapat membuat aliran Kinesis dan bucket Amazon S3 menggunakan konsol. Untuk petunjuk membuat sumber daya ini, lihat topik berikut:
+ [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. Beri nama aliran data **ExampleInputStream** dan **ExampleOutputStream** Anda.
+ [Bagaimana Cara Membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Beri bucket Amazon S3 nama yang unik secara global dengan menambahkan nama login Anda, seperti **ka-app-code-*<username>***.

##### Tulis catatan sampel ke aliran input
<a name="examples-sliding-write"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. Jalankan skrip `stock.py`. 

   ```
   $ python stock.py
   ```

   Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

##### Unduh dan periksa kode aplikasi
<a name="examples-sliding-download"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/SlidingWindow` tersebut.

Kode aplikasi terletak di file `SlidingWindowStreamingJobWithParallelism.java`. Perhatikan hal tentang kode aplikasi berikut:
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Aplikasi menggunakan operator `timeWindow` untuk menemukan nilai minimum untuk setiap simbol saham melalui jendela 10 detik yang bergeser 5 detik. Kode berikut membuat operator dan mengirimkan data agregat ke sink Kinesis Data Streams baru:
+ Tambahkan pernyataan impor berikut:

  ```
  import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  ```
+ Aplikasi menggunakan operator `timeWindow` untuk mencari hitungan nilai untuk setiap simbol saham melalui jendela tumbling 5 detik. Kode berikut membuat operator dan mengirimkan data agregat ke sink Kinesis Data Streams baru:

  ```
  input.flatMap(new Tokenizer()) // Tokenizer for generating words
                  .keyBy(0) // Logically partition the stream for each word
                 
  		.window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward
                  .sum(1) // Sum the number of words per partition
                  .map(value -> value.f0 + "," + value.f1.toString() + "\n")
                  .addSink(createSinkFromStaticConfig());
  ```

##### Kompilasi kode aplikasi
<a name="examples-sliding-compile"></a>

Untuk mengompilasi aplikasi, lakukan hal berikut:

1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Lengkapi prasyarat yang diperlukan](getting-started.md#setting-up-prerequisites) di tutorial [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md).

1. Susun aplikasi dengan perintah berikut: 

   ```
   mvn package -Dflink.version=1.15.3
   ```
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. 

Mengkompilasi aplikasi membuat file JAR aplikasi (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Unggah kode Java streaming Apache Flink
<a name="examples-sliding-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian [Buat sumber daya yang bergantung](#examples-sliding-resources).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, lalu pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `aws-kinesis-analytics-java-apps-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="examples-sliding-create-run"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="examples-sliding-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink**.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="get-started-exercise-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Konfigurasikan aplikasi
<a name="examples-sliding-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch pencatatan Amazon, Layanan Terkelola untuk Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi. Ini bukan aliran log yang sama dengan yang digunakan aplikasi untuk mengirim hasil.

##### Konfigurasikan paralelisme aplikasi
<a name="examples-sliding-parallelism"></a>

Contoh aplikasi ini menggunakan eksekusi tugas paralel. Kode aplikasi berikut mengatur paralelisme operator `min`:

```
.setParallelism(3) // Set parallelism for the min operator
```

Aplikasi paralelisme tidak boleh lebih besar dari paralelisme yang disediakan, yang memiliki default sama dengan 1. Untuk meningkatkan paralelisme aplikasi Anda, gunakan tindakan berikut: AWS CLI 

```
aws kinesisanalyticsv2 update-application
      --application-name MyApplication
      --current-application-version-id <VersionId>
      --application-configuration-update "{\"FlinkApplicationConfigurationUpdate\": { \"ParallelismConfigurationUpdate\": {\"ParallelismUpdate\": 5, \"ConfigurationTypeUpdate\": \"CUSTOM\" }}}"
```

Anda dapat mengambil ID versi aplikasi saat ini menggunakan [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)tindakan [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)atau.

##### Jalankan aplikasi
<a name="examples-sliding-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

Anda dapat memeriksa metrik Managed Service for Apache Flink di CloudWatch konsol untuk memverifikasi bahwa aplikasi berfungsi. 

##### Bersihkan AWS sumber daya
<a name="examples-sliding-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Sliding Window.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-sliding-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-sliding-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#examples-sliding-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-sliding-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-sliding-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-sliding-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-sliding-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

##### Hapus objek dan ember Amazon S3 Anda
<a name="examples-sliding-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-sliding-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-sliding-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Contoh: Menulis ke ember Amazon S3
<a name="examples-s3"></a>

Dalam latihan ini, Anda membuat Layanan Terkelola untuk Apache Flink yang memiliki aliran data Kinesis sebagai sumber dan bucket Amazon S3 sebagai wastafel. Dengan menggunakan sink, Anda dapat memverifikasi output aplikasi di konsol Amazon S3. 

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) terlebih dulu.

**Topics**
+ [Buat sumber daya yang bergantung](#examples-s3-resources)
+ [Tulis catatan sampel ke aliran input](#examples-s3-write)
+ [Unduh dan periksa kode aplikasi](#examples-s3-download)
+ [Ubah kode aplikasi](#examples-s3-modify)
+ [Kompilasi kode aplikasi](#examples-s3-compile)
+ [Unggah kode Java streaming Apache Flink](#examples-s3-upload)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#examples-s3-create-run)
+ [Verifikasi output aplikasi](#examples-s3-verify)
+ [Opsional: Sesuaikan sumber dan wastafel](#examples-s3-customize)
+ [Bersihkan AWS sumber daya](#examples-s3-cleanup)

##### Buat sumber daya yang bergantung
<a name="examples-s3-resources"></a>

Sebelum Anda membuat Layanan Terkelola untuk Apache Flink untuk latihan ini, Anda membuat sumber daya dependen berikut: 
+ Kinesis data stream (`ExampleInputStream`).
+ Bucket Amazon S3 untuk menyimpan kode dan output aplikasi (`ka-app-code-<username>`) 

**catatan**  
Layanan Terkelola untuk Apache Flink tidak dapat menulis data ke Amazon S3 dengan enkripsi sisi server diaktifkan pada Layanan Terkelola untuk Apache Flink.

Anda dapat membuat aliran Kinesis dan bucket Amazon S3 menggunakan konsol. Untuk petunjuk membuat sumber daya ini, lihat topik berikut:
+ [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. Beri nama aliran data **ExampleInputStream** Anda.
+ [Bagaimana Cara Membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Beri bucket Amazon S3 nama yang unik secara global dengan menambahkan nama login Anda, seperti **ka-app-code-*<username>***. Buat dua folder (**code** dan **data**) dalam bucket Amazon S3.

Aplikasi membuat CloudWatch sumber daya berikut jika belum ada:
+ Grup log yang disebut `/AWS/KinesisAnalytics-java/MyApplication`.
+ Aliran log yang disebut `kinesis-analytics-log-stream`.

##### Tulis catatan sampel ke aliran input
<a name="examples-s3-write"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Jalankan skrip `stock.py`. 

   ```
   $ python stock.py
   ```

   Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

##### Unduh dan periksa kode aplikasi
<a name="examples-s3-download"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/S3Sink` tersebut.

Kode aplikasi terletak di file `S3StreamingSinkJob.java`. Perhatikan hal tentang kode aplikasi berikut:
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Anda perlu menambahkan pernyataan impor berikut:

  ```
  import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
  ```
+ Aplikasi ini menggunakan sink S3 Apache Flink untuk menulis ke Amazon S3. 

  Sink membaca pesan di jendela tumbling, mengenkodekan pesan ke objek bucket S3, dan mengirimkan objek yang dienkodekan ke sink S3. Kode berikut mengenkodekan objek untuk mengirim ke Amazon S3:

  ```
  input.map(value -> { // Parse the JSON
                  JsonNode jsonNode = jsonParser.readValue(value, JsonNode.class);
                  return new Tuple2<>(jsonNode.get("ticker").toString(), 1);
              }).returns(Types.TUPLE(Types.STRING, Types.INT))
              .keyBy(v -> v.f0) // Logically partition the stream for each word
              .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
              .sum(1) // Count the appearances by ticker per partition
              .map(value -> value.f0 + " count: " + value.f1.toString() + "\n")
              .addSink(createS3SinkFromStaticConfig());
  ```

**catatan**  
Aplikasi ini menggunakan objek `StreamingFileSink` Flink untuk menulis ke Amazon S3. Untuk informasi lebih lanjut tentang`StreamingFileSink`, lihat [StreamingFileSink](https://nightlies.apache.org/flink/flink-docs-release-1.13/dev/connectors/streamfile_sink.html)di dokumentasi [Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.13/).

##### Ubah kode aplikasi
<a name="examples-s3-modify"></a>

Di bagian ini, Anda mengubah kode aplikasi untuk menulis output ke bucket Amazon S3 Anda.

Perbarui baris berikut dengan nama pengguna Anda untuk menentukan lokasi output aplikasi:

```
private static final String s3SinkPath = "s3a://ka-app-code-<username>/data";
```

##### Kompilasi kode aplikasi
<a name="examples-s3-compile"></a>

Untuk mengompilasi aplikasi, lakukan hal berikut:

1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Lengkapi prasyarat yang diperlukan](getting-started.md#setting-up-prerequisites) di tutorial [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md).

1. Susun aplikasi dengan perintah berikut: 

   ```
   mvn package -Dflink.version=1.15.3
   ```

Mengkompilasi aplikasi membuat file JAR aplikasi (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. 

##### Unggah kode Java streaming Apache Flink
<a name="examples-s3-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian [Buat sumber daya yang bergantungTulis catatan sampel ke aliran input](#examples-s3-resources).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, navigasikan ke folder **kode**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `aws-kinesis-analytics-java-apps-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="examples-s3-create-run"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="examples-s3-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink**.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).
**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
Untuk **Runtime**, pilih **Apache Flink**.
Tinggalkan versi sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat Anda membuat Layanan Terkelola untuk Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="get-started-exercise-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data stream.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda. Ganti <username> dengan nama pengguna Anda.

   ```
   {
               "Sid": "S3",
               "Effect": "Allow",
               "Action": [
                   "s3:Abort*",
                   "s3:DeleteObject*",
                   "s3:GetObject*",
                   "s3:GetBucket*",
                   "s3:List*",
                   "s3:ListBucket",
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-<username>",
                   "arn:aws:s3:::ka-app-code-<username>/*"
               ]
             }, 
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:region:account-id:log-group:*"
               ]
           },
           {
               "Sid": "ListCloudwatchLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:*"
               ]
           },
           {
               "Sid": "PutCloudwatchLogs",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:%LOG_STREAM_PLACEHOLDER%"
               ]
           }
           ,
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           
       ]
   }
   ```

##### Konfigurasikan aplikasi
<a name="examples-s3-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **code/aws-kinesis-analytics-java-apps-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi. Ini bukan aliran log yang sama dengan yang digunakan aplikasi untuk mengirim hasil.

##### Jalankan aplikasi
<a name="examples-s3-run"></a>

1. Pada **MyApplication**halaman, pilih **Jalankan**. Biarkan opsi **Run without snapshot** (Jalankan tanpa snapshot) dipilih, dan konfirmasikan tindakan.

1. Ketika aplikasi berjalan, refresh halaman. Konsol menunjukkan **Grafik aplikasi**.

##### Verifikasi output aplikasi
<a name="examples-s3-verify"></a>

Di konsol Amazon S3, buka folder **data** di bucket S3 Anda.

Setelah beberapa menit, objek yang berisi data agregat dari aplikasi akan muncul.

**catatan**  
Agregrasi diaktifkan secara default di Flink. Untuk menonaktifkannya, gunakan yang berikut ini:  

```
sink.producer.aggregation-enabled' = 'false'
```

##### Opsional: Sesuaikan sumber dan wastafel
<a name="examples-s3-customize"></a>

Di bagian ini, Anda menyesuaikan pengaturan pada objek sumber dan sink.

**catatan**  
Setelah mengubah bagian kode yang dijelaskan di bagian berikut, lakukan hal berikut untuk memuat ulang kode aplikasi:  
Ulangi langkah-langkah di bagian [Kompilasi kode aplikasi](#examples-s3-compile) untuk mengompilasi kode aplikasi yang diperbarui.
Ulangi langkah-langkah di bagian [Unggah kode Java streaming Apache Flink](#examples-s3-upload) untuk mengunggah kode aplikasi yang diperbarui.
Di halaman aplikasi di konsol, pilih **Configure** (Konfigurasikan), lalu pilih **Update** (Perbarui) untuk memuat ulang kode aplikasi yang diperbarui ke dalam aplikasi Anda.

**Topics**
+ [Konfigurasikan partisi data](#examples-s3-configure-partition)
+ [Konfigurasikan frekuensi baca](#examples-s3-configure-read)
+ [Konfigurasikan buffering tulis](#examples-s3-configure-write)

##### Konfigurasikan partisi data
<a name="examples-s3-configure-partition"></a>

Di bagian ini, Anda mengkonfigurasi nama folder yang dibuat sink file streaming di bucket S3. Anda melakukan ini dengan menambahkan pemberi tugas bucket ke sink file streaming.

Untuk menyesuaikan nama folder yang dibuat dalam bucket S3, lakukan hal berikut:

1. Tambahkan pernyataan impor berikut ke bagian depan file `S3StreamingSinkJob.java`:

   ```
   import org.apache.flink.streaming.api.functions.sink.filesystem.rollingpolicies.DefaultRollingPolicy;
   import org.apache.flink.streaming.api.functions.sink.filesystem.bucketassigners.DateTimeBucketAssigner;
   ```

1. Perbarui metode `createS3SinkFromStaticConfig()` dalam kode agar terlihat seperti berikut ini:

   ```
   private static StreamingFileSink<String> createS3SinkFromStaticConfig() {
   
       final StreamingFileSink<String> sink = StreamingFileSink
           .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
           .withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH"))
           .withRollingPolicy(DefaultRollingPolicy.create().build())
           .build();
       return sink;
   }
   ```

Contoh kode sebelumnya menggunakan `DateTimeBucketAssigner` dengan format tanggal kustom untuk membuat folder dalam bucket S3. `DateTimeBucketAssigner` menggunakan waktu sistem saat ini untuk membuat nama bucket. Jika Anda ingin membuat pendaftar bucket khusus untuk menyesuaikan nama folder yang dibuat lebih lanjut, Anda dapat membuat kelas yang mengimplementasikannya. [BucketAssigner](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/streaming/api/functions/sink/filesystem/BucketAssigner.html) Anda menerapkan logika kustom Anda menggunakan metode `getBucketId`.

Implementasi kustom dari `BucketAssigner` dapat menggunakan parameter [Context](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/streaming/api/functions/sink/filesystem/BucketAssigner.Context.html) untuk mendapatkan informasi selengkapnya tentang catatan untuk menentukan folder tujuannya.

##### Konfigurasikan frekuensi baca
<a name="examples-s3-configure-read"></a>

Di bagian ini, Anda mengonfigurasi frekuensi membaca pada aliran sumber.

Konsumen Aliran Kinesis membaca dari sumber aliran lima kali per detik secara default. Frekuensi ini akan menyebabkan masalah jika ada lebih dari satu klien yang membaca dari aliran, atau jika aplikasi perlu mencoba lagi pembacaan catatan. Anda dapat menghindari masalah ini dengan mengatur frekuensi baca konsumen.

Untuk mengatur frekuensi baca konsumen Kinesis, Anda menetapkan pengaturan `SHARD_GETRECORDS_INTERVAL_MILLIS`.

Contoh kode berikut menetapkan pengaturan `SHARD_GETRECORDS_INTERVAL_MILLIS` ke satu detik:

```
kinesisConsumerConfig.setProperty(ConsumerConfigConstants.SHARD_GETRECORDS_INTERVAL_MILLIS, "1000");
```

##### Konfigurasikan buffering tulis
<a name="examples-s3-configure-write"></a>

Di bagian ini, Anda mengonfigurasi frekuensi tulis dan pengaturan sink lainnya.

Secara default, aplikasi menulis ke bucket tujuan setiap menit. Anda dapat mengubah interval ini dan pengaturan lainnya dengan mengonfigurasi objek `DefaultRollingPolicy`.

**catatan**  
Sink file streaming Apache Flink menulis ke bucket output setiap kali aplikasi membuat titik pemeriksaan. Aplikasi ini membuat titik pemeriksaan setiap menit secara default. Untuk meningkatkan interval tulis sink S3, Anda juga harus meningkatkan interval titik pemeriksaan.

Untuk mengonfigurasi objek `DefaultRollingPolicy`, lakukan hal berikut:

1. Tingkatkan pengaturan `CheckpointInterval` aplikasi. Input berikut untuk [ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)tindakan menetapkan interval pos pemeriksaan menjadi 10 menit:

   ```
   {
      "ApplicationConfigurationUpdate": {  
         "FlinkApplicationConfigurationUpdate": { 
            "CheckpointConfigurationUpdate": {
               "ConfigurationTypeUpdate" : "CUSTOM", 
               "CheckpointIntervalUpdate": 600000
            }
         }
      },
      "ApplicationName": "MyApplication",
      "CurrentApplicationVersionId": 5
   }
   ```

   Untuk menggunakan kode sebelumnya, tentukan versi aplikasi saat ini. Anda dapat mengambil versi aplikasi dengan menggunakan [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)tindakan.

1. Tambahkan pernyataan impor berikut ke bagian depan file `S3StreamingSinkJob.java`:

   ```
   import java.util.concurrent.TimeUnit; 
   ```

1. Perbarui metode `createS3SinkFromStaticConfig` dalam file `S3StreamingSinkJob.java` agar terlihat seperti berikut ini:

   ```
   private static StreamingFileSink<String> createS3SinkFromStaticConfig() {
   
           final StreamingFileSink<String> sink = StreamingFileSink
                   .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
                   .withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH"))
                   .withRollingPolicy(
                           DefaultRollingPolicy.create()
                               .withRolloverInterval(TimeUnit.MINUTES.toMillis(8))
                               .withInactivityInterval(TimeUnit.MINUTES.toMillis(5))
                               .withMaxPartSize(1024 * 1024 * 1024)
                               .build())
                   .build();
           return sink;
       }
   ```

   Contoh kode sebelumnya menetapkan frekuensi tulis ke bucket Amazon S3 ke 8 menit.

Untuk informasi selengkapnya tentang sink file streaming Apache Flink, lihat [Format yang Dienkode Baris](https://nightlies.apache.org/flink/flink-docs-release-1.13/dev/connectors/streamfile_sink.html#row-encoded-formats) di [Dokumentasi Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.13/).

##### Bersihkan AWS sumber daya
<a name="examples-s3-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang Anda buat di tutorial Amazon S3.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-s3-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-s3-cleanup-stream)
+ [Hapus objek dan bucket Amazon S3 Anda](#examples-s3-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-s3-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-s3-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-s3-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-s3-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Pada **ExampleInputStream**halaman, pilih **Hapus Kinesis Stream** dan kemudian konfirmasikan penghapusan.

##### Hapus objek dan bucket Amazon S3 Anda
<a name="examples-s3-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-s3-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-s3-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Tutorial: Menggunakan Layanan Terkelola untuk aplikasi Apache Flink untuk mereplikasi data dari satu topik dalam cluster MSK ke yang lain di VPC
<a name="example-msk"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

Tutorial berikut menunjukkan cara membuat VPC Amazon dengan cluster MSK Amazon dan dua topik, dan cara membuat Layanan Terkelola untuk aplikasi Apache Flink yang membaca dari satu topik MSK Amazon dan menulis ke yang lain.

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) terlebih dulu. 

**Topics**
+ [Buat Amazon VPC dengan klaster Amazon MSK](#example-msk-createcluster)
+ [Buat kode aplikasi](#example-msk-code)
+ [Unggah kode Java streaming Apache Flink](#example-msk-upload)
+ [Buat aplikasi](#example-msk-create)
+ [Konfigurasikan aplikasi](#example-msk-configure)
+ [Jalankan aplikasi](#example-msk-run)
+ [Uji aplikasi](#example-msk-test)

##### Buat Amazon VPC dengan klaster Amazon MSK
<a name="example-msk-createcluster"></a>

Untuk membuat contoh klaster VPC dan Amazon MSK untuk mengakses dari aplikasi Managed Service for Apache Flink, ikuti tutorial [Memulai Menggunakan](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html) Amazon MSK.

Saat menyelesaikan tutorial, perhatikan hal berikut:
+ Pada [Langkah 3: Buat Topik](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html), ulangi `kafka-topics.sh --create` perintah untuk membuat topik tujuan bernama`AWSKafkaTutorialTopicDestination`:

  ```
  bin/kafka-topics.sh --create --zookeeper ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestination
  ```
+ Catat daftar server bootstrap untuk klaster Anda. Anda bisa mendapatkan daftar server bootstrap dengan perintah berikut (ganti *ClusterArn* dengan ARN cluster MSK Anda):

  ```
  aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn ClusterArn
  {...
      "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094"
  }
  ```
+ Saat mengikuti langkah-langkah dalam tutorial, pastikan untuk menggunakan AWS Wilayah yang dipilih dalam kode, perintah, dan entri konsol Anda.

##### Buat kode aplikasi
<a name="example-msk-code"></a>

Di bagian ini, Anda akan mengunduh dan mengompilasi file JAR aplikasi. Kami merekomendasikan menggunakan Java 11.

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Kode aplikasi terletak di file `amazon-kinesis-data-analytics-java-examples/KafkaConnectors/KafkaGettingStartedJob.java`. Anda dapat memeriksa kode untuk membiasakan diri dengan struktur Layanan Terkelola untuk kode aplikasi Apache Flink.

1. Gunakan salah satu alat Maven baris perintah atau lingkungan pengembangan pilihan Anda untuk membuat file JAR. Untuk mengompilasi file JAR menggunakan alat Maven baris perintah, masukkan berikut ini:

   ```
   mvn package -Dflink.version=1.15.3
   ```

   Jika berhasil membangun, file berikut dibuat:

   ```
   target/KafkaGettingStartedJob-1.0.jar
   ```
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. Jika Anda menggunakan lingkungan pengembangan, 

##### Unggah kode Java streaming Apache Flink
<a name="example-msk-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di tutorial [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md).

**catatan**  
Jika Anda menghapus bucket Amazon S3 dari tutorial Memulai, ikuti lagi langkah [Unggah file JAR kode aplikasi](get-started-exercise.md#get-started-exercise-6).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `KafkaGettingStartedJob-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat aplikasi
<a name="example-msk-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink.. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink** versi 1.15.2.

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurasikan aplikasi
<a name="example-msk-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **KafkaGettingStartedJob-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).
**catatan**  
Saat Anda menentukan sumber daya aplikasi menggunakan konsol (seperti CloudWatch Log atau VPC Amazon), konsol akan mengubah peran eksekusi aplikasi Anda untuk memberikan izin untuk mengakses sumber daya tersebut.

1. Di bawah **Properties** (Properti), pilih **Add Group** (Tambahkan Grup). Masukkan properti berikut:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)
**catatan**  
**ssl.truststore.password** untuk sertifikat default adalah "changeit"; Anda tidak perlu mengubah nilai ini jika Anda menggunakan sertifikat default.

   Pilih **Add Group** (Tambahkan Grup) lagi. Masukkan properti berikut:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

   Kode aplikasi membaca properti aplikasi di atas untuk mengonfigurasi sumber dan sink yang digunakan untuk berinteraksi dengan VPC dan klaster Amazon MSK Anda. Untuk informasi selengkapnya tentang penggunaan runtime, lihat [Gunakan properti runtime](how-properties.md).

1. Di bawah **Snapshots**, pilih **Disable** (Nonaktifkan). Tindakan ini akan memudahkan pembaruan aplikasi tanpa memuat data status aplikasi yang tidak valid.

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Di bagian **Virtual Private Cloud (VPC)**, pilih VPC untuk dikaitkan dengan aplikasi Anda. Pilih subnet dan grup keamanan yang terkait dengan VPC Anda yang ingin digunakan aplikasi untuk mengakses sumber daya VPC.

1. Pilih **Update** (Perbarui).

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi.

##### Jalankan aplikasi
<a name="example-msk-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

##### Uji aplikasi
<a name="example-msk-test"></a>

Di bagian ini, Anda menulis catatan ke topik sumber. Aplikasi membaca catatan dari topik sumber dan menuliskannya ke topik tujuan. Anda memverifikasi aplikasi bekerja dengan menulis catatan ke topik sumber dan membaca catatan dari topik tujuan.

Untuk menulis dan membaca catatan dari topik, ikuti langkah-langkah di [Langkah 6: Buat dan Gunakan Data](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html) di tutorial [Memulai Menggunakan Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

Untuk membaca dari topik tujuan, gunakan nama topik tujuan bukan topik sumber dalam koneksi kedua Anda ke kluster:

```
bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning
```

Jika tidak ada catatan yang muncul dalam topik tujuan, lihat bagian [Tidak dapat mengakses sumber daya dalam VPC](troubleshooting-symptoms.md#troubleshooting-rt-vpc) di topik [Memecahkan Masalah Layanan Terkelola untuk Apache Flink](troubleshooting.md).

#### Contoh: Gunakan konsumen EFO dengan aliran data Kinesis
<a name="examples-efo"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink yang membaca dari aliran data Kinesis menggunakan konsumen [Enhanced Fan-Out (EFO](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html)). Jika konsumen Kinesis menggunakan EFO, layanan Kinesis Data Streams memberikan bandwidth khusus miliknya sendiri, bukan meminta konsumen berbagi bandwidth aliran tetap dengan konsumen lain yang membaca dari aliran.

Untuk informasi selengkapnya tentang penggunaan EFO dengan konsumen Kinesis, lihat [ FLIP-128: Fan Out yang Disempurnakan untuk Konsumen Kinesis](https://cwiki.apache.org/confluence/display/FLINK/FLIP-128%3A+Enhanced+Fan+Out+for+AWS+Kinesis+Consumers).

Aplikasi yang Anda buat dalam contoh ini menggunakan AWS Kinesis connector (flink-connector-kinesis) 1.15.3.

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) terlebih dulu.

**Topics**
+ [Buat sumber daya yang bergantung](#examples-efo-resources)
+ [Tulis catatan sampel ke aliran input](#examples-efo-write)
+ [Unduh dan periksa kode aplikasi](#examples-efo-download)
+ [Kompilasi kode aplikasi](#examples-efo-compile)
+ [Unggah kode Java streaming Apache Flink](#examples-efo-upload)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#examples-efo-create-run)
+ [Bersihkan AWS sumber daya](#examples-efo-cleanup)

##### Buat sumber daya yang bergantung
<a name="examples-efo-resources"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, Anda membuat sumber daya dependen berikut: 
+ Dua Kinesis data streams (`ExampleInputStream` dan `ExampleOutputStream`)
+ Bucket Amazon S3 untuk menyimpan kode aplikasi (`ka-app-code-<username>`) 

Anda dapat membuat aliran Kinesis dan bucket Amazon S3 menggunakan konsol. Untuk petunjuk membuat sumber daya ini, lihat topik berikut:
+ [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. Beri nama aliran data **ExampleInputStream** dan **ExampleOutputStream** Anda.
+ [Bagaimana Cara Membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Beri bucket Amazon S3 nama yang unik secara global dengan menambahkan nama login Anda, seperti **ka-app-code-*<username>***.

##### Tulis catatan sampel ke aliran input
<a name="examples-efo-write"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
    
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Jalankan skrip `stock.py`. 

   ```
   $ python stock.py
   ```

   Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

##### Unduh dan periksa kode aplikasi
<a name="examples-efo-download"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/EfoConsumer` tersebut.

Kode aplikasi terletak di file `EfoApplication.java`. Perhatikan hal tentang kode aplikasi berikut:
+ Anda mengaktifkan konsumen EFO dengan mengatur parameter berikut pada konsumen Kinesis:
  + **RECORD\$1PUBLISHER\$1TYPE:** Atur parameter ini ke **EFO** untuk aplikasi Anda agar dapat menggunakan konsumen EFO untuk mengakses data Kinesis Data Stream. 
  + **EFO\$1CONSUMER\$1NAME:** Atur parameter ini ke nilai string yang unik di antara konsumen aliran ini. Menggunakan kembali nama konsumen di Kinesis Data Stream yang sama akan menyebabkan konsumen sebelumnya yang menggunakan nama tersebut dihentikan. 
+ Contoh kode berikut menunjukkan cara menetapkan nilai ke properti konfigurasi konsumen untuk menggunakan konsumen EFO agar dapat membaca dari aliran sumber:

  ```
  consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO");
  consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
  ```

##### Kompilasi kode aplikasi
<a name="examples-efo-compile"></a>

Untuk mengompilasi aplikasi, lakukan hal berikut:

1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Lengkapi prasyarat yang diperlukan](getting-started.md#setting-up-prerequisites) di tutorial [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md).

1. Susun aplikasi dengan perintah berikut: 

   ```
   mvn package -Dflink.version=1.15.3
   ```
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. 

Mengkompilasi aplikasi membuat file JAR aplikasi (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Unggah kode Java streaming Apache Flink
<a name="examples-efo-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian [Buat sumber daya yang bergantung](#examples-efo-resources).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `aws-kinesis-analytics-java-apps-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="examples-efo-create-run"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="examples-efo-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink**.
**catatan**  
Managed Service untuk Apache Flink menggunakan Apache Flink versi 1.15.2.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="get-started-exercise-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.
**catatan**  
Izin ini memberi aplikasi kemampuan untuk mengakses konsumen EFO.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "AllStreams",
               "Effect": "Allow",
               "Action": [
                   "kinesis:ListShards",
                   "kinesis:ListStreamConsumers",
                   "kinesis:DescribeStreamSummary"
               ],
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/*"
           },
           {
               "Sid": "Stream",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStream",
                   "kinesis:RegisterStreamConsumer",
                   "kinesis:DeregisterStreamConsumer"
               ],
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           },
           {
               "Sid": "Consumer",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStreamConsumer",
                   "kinesis:SubscribeToShard"
               ],
               "Resource": [
                   "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream/consumer/my-efo-flink-app",
                   "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream/consumer/my-efo-flink-app:*"
               ]
           }
       ]
   }
   ```

------

##### Konfigurasikan aplikasi
<a name="examples-efo-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **aws-kinesis-analytics-java-apps-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Properties** (Properti), pilih **Create group** (Buat grup). 

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Properties** (Properti), pilih **Create group** (Buat grup). 

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi. Ini bukan aliran log yang sama dengan yang digunakan aplikasi untuk mengirim hasil.

##### Jalankan aplikasi
<a name="examples-efo-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

Anda dapat memeriksa metrik Managed Service for Apache Flink di CloudWatch konsol untuk memverifikasi bahwa aplikasi berfungsi. 

Anda juga dapat memeriksa konsol Kinesis Data Streams, di tab fan-out yang Ditingkatkan **aliran** data, untuk mengetahui nama konsumen Anda (). *basic-efo-flink-app*

##### Bersihkan AWS sumber daya
<a name="examples-efo-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Jendela efo.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-efo-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-efo-cleanup-stream)
+ [Hapus Objek dan Bucket Amazon S3 Anda](#examples-efo-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-efo-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-efo-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-efo-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-efo-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

##### Hapus Objek dan Bucket Amazon S3 Anda
<a name="examples-efo-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-efo-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-efo-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Contoh: Menulis ke Firehose
<a name="get-started-exercise-fh"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink yang memiliki aliran data Kinesis sebagai sumber dan aliran Firehose sebagai wastafel. Dengan menggunakan sink, Anda dapat memverifikasi output aplikasi di bucket Amazon S3.

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) terlebih dulu.

**Topics**
+ [Buat sumber daya yang bergantung](#get-started-exercise-fh-1)
+ [Tulis catatan sampel ke aliran input](#get-started-exercise-fh-2)
+ [Unduh dan periksa kode Java streaming Apache Flink](#get-started-exercise-fh-5)
+ [Kompilasi kode aplikasi](#get-started-exercise-fh-5.5)
+ [Unggah kode Java streaming Apache Flink](#get-started-exercise-fh-6)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#get-started-exercise-fh-7)
+ [Bersihkan AWS sumber daya](#getting-started-fh-cleanup)

##### Buat sumber daya yang bergantung
<a name="get-started-exercise-fh-1"></a>

Sebelum Anda membuat Layanan Terkelola untuk Apache Flink untuk latihan ini, Anda membuat sumber daya dependen berikut:
+ Kinesis data stream (`ExampleInputStream`) 
+ Aliran Firehose dimana aplikasi menulis output ke ()`ExampleDeliveryStream`. 
+ Bucket Amazon S3 untuk menyimpan kode aplikasi (`ka-app-code-<username>`)

Anda dapat membuat aliran Kinesis, bucket Amazon S3, dan aliran Firehose menggunakan konsol. Untuk petunjuk membuat sumber daya ini, lihat topik berikut:
+ [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. Beri nama aliran data **ExampleInputStream** Anda.
+ [Membuat Aliran Pengiriman Amazon Kinesis Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) di Panduan *Pengembang Amazon Data Firehose*. Beri nama aliran Firehose Anda. **ExampleDeliveryStream** **Saat Anda membuat aliran Firehose, buat juga tujuan **S3** dan peran IAM Firehose stream.** 
+ [Bagaimana Cara Membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Beri bucket Amazon S3 nama yang unik secara global dengan menambahkan nama login Anda, seperti **ka-app-code-*<username>***.

##### Tulis catatan sampel ke aliran input
<a name="get-started-exercise-fh-2"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
    import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Jalankan skrip `stock.py`. 

   ```
   $ python stock.py
   ```

   Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

##### Unduh dan periksa kode Java streaming Apache Flink
<a name="get-started-exercise-fh-5"></a>

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/FirehoseSink` tersebut.

Kode aplikasi terletak di file `FirehoseSinkStreamingJob.java`. Perhatikan hal tentang kode aplikasi berikut:
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Aplikasi ini menggunakan wastafel Firehose untuk menulis data ke aliran Firehose. Cuplikan berikut membuat wastafel Firehose:

  ```
  private static KinesisFirehoseSink<String> createFirehoseSinkFromStaticConfig() {
          Properties sinkProperties = new Properties();
          sinkProperties.setProperty(AWS_REGION, region);
  
          return KinesisFirehoseSink.<String>builder()
                  .setFirehoseClientProperties(sinkProperties)
                  .setSerializationSchema(new SimpleStringSchema())
                  .setDeliveryStreamName(outputDeliveryStreamName)
                  .build();
      }
  ```

##### Kompilasi kode aplikasi
<a name="get-started-exercise-fh-5.5"></a>

Untuk mengompilasi aplikasi, lakukan hal berikut:

1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Lengkapi prasyarat yang diperlukan](getting-started.md#setting-up-prerequisites) di tutorial [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md).

1. **Untuk menggunakan konektor Kinesis untuk aplikasi berikut, Anda perlu mengunduh, membangun, dan menginstal Apache Maven. Untuk informasi selengkapnya, lihat [Menggunakan konektor Apache Flink Kinesis Streams dengan versi Apache Flink sebelumnya](#how-creating-apps-building-kinesis).**

1. Susun aplikasi dengan perintah berikut: 

   ```
   mvn package -Dflink.version=1.15.3
   ```
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. 

Mengkompilasi aplikasi membuat file JAR aplikasi (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Unggah kode Java streaming Apache Flink
<a name="get-started-exercise-fh-6"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian [Buat sumber daya yang bergantung](#get-started-exercise-fh-1).

**Untuk mengunggah kode aplikasi**

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

1. Di konsol, pilih *<username>* ember **ka-app-code-**, lalu pilih **Unggah**.

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `java-getting-started-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="get-started-exercise-fh-7"></a>

Anda dapat membuat dan menjalankan Layanan Terkelola untuk aplikasi Apache Flink menggunakan konsol atau aplikasi. AWS CLI

**catatan**  
Saat Anda membuat aplikasi menggunakan konsol, sumber daya AWS Identity and Access Management (IAM) dan Amazon CloudWatch Logs dibuat untuk Anda. Saat Anda membuat aplikasi menggunakan AWS CLI, Anda membuat sumber daya ini secara terpisah.

**Topics**
+ [Buat dan jalankan aplikasi (konsol)](#get-started-exercise-fh-7-console)
+ [Buat dan jalankan aplikasi (AWS CLI)](#get-started-exercise-fh-7-cli)

##### Buat dan jalankan aplikasi (konsol)
<a name="get-started-exercise-fh-7-console"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="get-started-exercise-fh-7-console-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My java test app**.
   + Untuk **Runtime**, pilih **Apache Flink**.
**catatan**  
Managed Service untuk Apache Flink menggunakan Apache Flink versi 1.15.2.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi menggunakan konsol, Anda memiliki opsi untuk memiliki IAM role dan kebijakan IAM yang dibuat untuk aplikasi Anda. Aplikasi menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Edit kebijakan IAM
<a name="get-started-exercise-fh-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin untuk mengakses aliran data Kinesis dan aliran Firehose.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti semua contoh akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/java-getting-started-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
              ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteDeliveryStream",
               "Effect": "Allow",
               "Action": "firehose:*",
               "Resource": "arn:aws:firehose:us-west-2:012345678901:deliverystream/ExampleDeliveryStream"
           }
       ]
   }
   ```

------

##### Konfigurasikan aplikasi
<a name="get-started-exercise-fh-7-console-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **java-getting-started-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`

##### Jalankan aplikasi
<a name="get-started-exercise-fh-7-console-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

##### Hentikan aplikasi
<a name="get-started-exercise-fh-7-console-stop"></a>

Pada **MyApplication**halaman, pilih **Berhenti**. Konfirmasikan tindakan.

##### Memperbarui aplikasi
<a name="get-started-exercise-fh-7-console-update"></a>

Dengan menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file dari JAR aplikasi. 

Pada **MyApplication**halaman, pilih **Konfigurasi**. Perbarui pengaturan aplikasi dan pilih **Update** (Perbarui).

**catatan**  
Untuk memperbarui kode aplikasi pada konsol, Anda harus mengubah nama objek JAR, menggunakan bucket S3 yang berbeda, atau menggunakan AWS CLI seperti yang dijelaskan di bagian [Perbarui kode aplikasi](#get-started-exercise-fh-7-cli-update-code). Jika nama file atau bucket tidak berubah, kode aplikasi tidak dimuat ulang ketika Anda memilih **Update** (Perbarui) di halaman **Konfigurasi**.

##### Buat dan jalankan aplikasi (AWS CLI)
<a name="get-started-exercise-fh-7-cli"></a>

Di bagian ini, Anda menggunakan AWS CLI untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink.

##### Membuat kebijakan izin
<a name="get-started-exercise-fh-7-cli-policy"></a>

Pertama, Anda membuat kebijakan izin dengan dua pernyataan: satu yang memberikan izin untuk tindakan `read` di aliran sumber, dan lainnya yang memberikan izin untuk tindakan `write` di aliran sink. Anda selanjutnya melampirkan kebijakan ke IAM role (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin `AKReadSourceStreamWriteSinkStream`. Ganti *username* dengan nama pengguna yang akan Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (`012345678901`) dengan ID akun Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": ["arn:aws:s3:::ka-app-code-username",
                "arn:aws:s3:::ka-app-code-username/*"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteDeliveryStream",
            "Effect": "Allow",
            "Action": "firehose:*",
            "Resource": "arn:aws:firehose:us-west-2:012345678901:deliverystream/ExampleDeliveryStream"
        }
    ]
}
```

------

Untuk step-by-step petunjuk membuat kebijakan izin, lihat [Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) di *Panduan Pengguna IAM*.

**catatan**  
Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK untuk Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensil yang diperlukan oleh SDK ke peran IAM eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

##### Membuat peran IAM
<a name="get-started-exercise-fh-7-cli-role"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh aplikasi Managed Service for Apache Flink untuk membaca aliran sumber dan menulis ke aliran sink.

Layanan Terkelola untuk Apache Flink tidak dapat mengakses aliran Anda jika tidak memiliki izin. Anda memberikan izin ini melalui IAM role. Setiap IAM role memiliki dua kebijakan yang dilampirkan. Kebijakan kepercayaan memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran tersebut. Kebijakan izin menentukan apa yang dapat dilakukan Layanan Terkelola untuk Apache Flink setelah mengambil peran.

Anda melampirkan kebijakan izin yang Anda buat di bagian sebelumnya ke peran ini.

**Untuk membuat IAM role**

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

1. Dalam panel navigasi, pilih **Roles** (Peran), **Create role** (Buat Peran).

1. Di bawah **Pilih tipe identitas tepercaya**, pilih **Layanan AWS **. Di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **Kinesis**. Di bawah **Pilih kasus penggunaan Anda**, pilih **Analitik Kinesis**.

   Pilih **Berikutnya: Izin**.

1. Di halaman **Lampirkan kebijakan izin**, pilih **Next: Review** (Selanjutnya: Tinjau). Anda melampirkan kebijakan izin setelah Anda membuat peran tersebut.

1. Di halaman **Buat peran**, masukkan **MF-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran).

   Sekarang Anda sudah membuat IAM role baru yang disebut `MF-stream-rw-role`. Berikutnya, Anda memperbarui kebijakan kepercayaan dan izin untuk peran.

1. Lampirkan kebijakan izin ke peran tersebut.
**catatan**  
Untuk latihan ini, Managed Service for Apache Flink mengasumsikan peran ini untuk membaca data dari aliran data Kinesis (sumber) dan menulis output ke aliran data Kinesis lain. Jadi, Anda melampirkan kebijakan yang Anda buat di langkah sebelumnya, [Membuat kebijakan izin](#get-started-exercise-fh-7-cli-policy).

   1. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

   1. Pilih **Attach Policies** (Lampirkan Kebijakan).

   1. Di kotak pencarian, masukkan **AKReadSourceStreamWriteSinkStream** (kebijakan yang Anda buat bagian sebelumnya).

   1. Pilih **AKReadSourceStreamWriteSinkStream**kebijakan, lalu pilih **Lampirkan kebijakan**.

Anda sekarang telah membuat peran eksekusi layanan yang akan digunakan aplikasi Anda untuk mengakses sumber daya. Buat catatan ARN peran baru.

Untuk step-by-step petunjuk cara membuat peran, lihat [Membuat Peran IAM (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*.

##### Buat Layanan Terkelola untuk aplikasi Apache Flink
<a name="get-started-exercise-fh-7-cli-create"></a>

1. Simpan kode JSON berikut ke file bernama `create_request.json`. Ganti ARN peran sampel dengan ARN untuk peran yang Anda buat sebelumnya. Ganti sufiks ARN bucket dengan sufiks yang Anda pilih di bagian [Buat sumber daya yang bergantung](#get-started-exercise-fh-1) (`ka-app-code-<username>`.) Ganti ID akun sampel (*012345678901*) di peran eksekusi layanan dengan ID akun Anda.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_15",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "java-getting-started-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           }
         }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) dengan permintaan sebelumnya untuk membuat aplikasi: 

   ```
   aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
   ```

Aplikasi ini sekarang dibuat. Anda memulai aplikasi di langkah berikutnya.

##### Mulai aplikasi
<a name="get-started-exercise-fh-7-cli-start"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) untuk memulai aplikasi.

**Untuk memulai aplikasi**

1. Simpan kode JSON berikut ke file bernama `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) dengan permintaan sebelumnya untuk memulai aplikasi:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

Aplikasi sekarang berjalan. Anda dapat memeriksa metrik Layanan Terkelola untuk Apache Flink di CloudWatch konsol Amazon untuk memverifikasi bahwa aplikasi berfungsi.

##### Hentikan aplikasi
<a name="get-started-exercise-fh-7-cli-stop"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) untuk menghentikan aplikasi.

**Untuk menghentikan aplikasi**

1. Simpan kode JSON berikut ke file bernama `stop_request.json`.

   ```
   {
       "ApplicationName": "test"
   }
   ```

1. Jalankan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) dengan permintaan berikut untuk menghentikan aplikasi:

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

Aplikasi sekarang dihentikan.

##### Tambahkan opsi CloudWatch logging
<a name="get-started-exercise-fh-7-cli-cw"></a>

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihat[Siapkan aplikasi logging di Managed Service untuk Apache Flink](cloudwatch-logs.md).

##### Perbarui kode aplikasi
<a name="get-started-exercise-fh-7-cli-update-code"></a>

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI tindakan.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggil`UpdateApplication`, tentukan bucket Amazon S3 dan nama objek yang sama.

Permintaan sampel berikut untuk tindakan `UpdateApplication` memuat ulang kode aplikasi dan memulai ulang aplikasi. Perbarui `CurrentApplicationVersionId` ke versi aplikasi saat ini. Anda dapat memeriksa versi aplikasi saat ini menggunakan tindakan `ListApplications` atau `DescribeApplication`. Perbarui akhiran nama bucket (< *username* >) dengan akhiran yang Anda pilih di bagian. [Buat sumber daya yang bergantung](#get-started-exercise-fh-1)

```
{
    "ApplicationName": "test",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "java-getting-started-1.0.jar"
                }
            }
        }
    }
}
```

##### Bersihkan AWS sumber daya
<a name="getting-started-fh-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Memulai.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#getting-started-fh-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#getting-started-fh-cleanup-stream)
+ [Hapus aliran Firehose Anda](#getting-started-fh-cleanup-fh)
+ [Hapus objek dan ember Amazon S3 Anda](#getting-started-fh-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#getting-started-fh-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#getting-started-fh-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="getting-started-fh-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Pilih **Configure** (Konfigurasikan).

1. Di bagian **Snapshots**, pilih **Disable** (Nonaktifkan), lalu pilih **Update** (Perbarui).

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="getting-started-fh-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

##### Hapus aliran Firehose Anda
<a name="getting-started-fh-cleanup-fh"></a>

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

1. Di panel Firehose, pilih. **ExampleDeliveryStream**

1. Di **ExampleDeliveryStream**halaman, pilih **Hapus aliran Firehose** dan kemudian konfirmasikan penghapusan.

##### Hapus objek dan ember Amazon S3 Anda
<a name="getting-started-fh-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

1. Jika Anda membuat bucket Amazon S3 untuk tujuan aliran Firehose, hapus juga bucket tersebut.

##### Hapus sumber daya IAM Anda
<a name="getting-started-fh-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Jika Anda membuat kebijakan baru untuk aliran Firehose, hapus kebijakan tersebut juga.

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

1. Jika Anda membuat peran baru untuk aliran Firehose, hapus peran itu juga.

##### Hapus CloudWatch sumber daya Anda
<a name="getting-started-fh-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Contoh: Baca dari aliran Kinesis di akun yang berbeda
<a name="examples-cross"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

Contoh ini menunjukkan cara membuat Layanan Terkelola untuk aplikasi Apache Flink yang membaca data dari aliran Kinesis di akun yang berbeda. Dalam contoh ini, Anda akan menggunakan satu akun untuk sumber Kinesis stream, dan akun kedua untuk Managed Service untuk aplikasi Apache Flink dan tenggelam Kinesis stream.

**Topics**
+ [Prasyarat](#examples-cross-prerequisites)
+ [Pengaturan](#examples-cross-setup)
+ [Buat aliran Kinesis sumber](#examples-cross-streams)
+ [Membuat dan memperbarui peran dan kebijakan IAM](#examples-cross-iam)
+ [Perbarui skrip Python](#examples-cross-python)
+ [Perbarui aplikasi Java](#examples-cross-app)
+ [Membangun, mengunggah, dan menjalankan aplikasi](#examples-cross-run)

##### Prasyarat
<a name="examples-cross-prerequisites"></a>
+ Dalam tutorial ini, Anda mengubah contoh *Memulai* untuk membaca data dari aliran Kinesis di akun yang berbeda. Selesaikan tutorial [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) sebelum melanjutkan.
+ Anda memerlukan dua AWS akun untuk menyelesaikan tutorial ini: satu untuk aliran sumber, dan satu untuk aplikasi dan aliran wastafel. Gunakan AWS akun yang Anda gunakan untuk tutorial Memulai untuk aplikasi dan sink stream. Gunakan akun AWS yang berbeda untuk aliran sumber.

##### Pengaturan
<a name="examples-cross-setup"></a>

Anda akan mengakses dua AWS akun Anda dengan menggunakan profil bernama. Ubah AWS kredensi dan file konfigurasi Anda untuk menyertakan dua profil yang berisi wilayah dan informasi koneksi untuk dua akun Anda.

File kredensial contoh berikut berisi dua profil yang diberi nama, `ka-source-stream-account-profile` dan `ka-sink-stream-account-profile`. Gunakan akun yang Anda gunakan untuk tutorial Memulai untuk akun aliran sink.

```
[ka-source-stream-account-profile]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[ka-sink-stream-account-profile]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
```

File konfigurasi contoh berikut berisi profil bernama sama dengan informasi wilayah dan format output.

```
[profile ka-source-stream-account-profile]
region=us-west-2
output=json

[profile ka-sink-stream-account-profile]
region=us-west-2
output=json
```

**catatan**  
Tutorial ini tidak menggunakan `ka-sink-stream-account-profile`. Ini termasuk sebagai contoh cara mengakses dua AWS akun berbeda menggunakan profil.

Untuk informasi selengkapnya tentang penggunaan profil bernama dengan AWS CLI, lihat [Profil Bernama](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) dalam *AWS Command Line Interface*dokumentasi.

##### Buat aliran Kinesis sumber
<a name="examples-cross-streams"></a>

Di bagian ini, Anda akan membuat aliran Kinesis di akun sumber.

Masukkan perintah berikut untuk membuat aliran Kinesis yang akan digunakan aplikasi untuk input. Perhatikan bahwa parameter `--profile` menentukan profil akun yang akan digunakan.

```
$ aws kinesis create-stream \
--stream-name SourceAccountExampleInputStream \
--shard-count 1 \
--profile ka-source-stream-account-profile
```

##### Membuat dan memperbarui peran dan kebijakan IAM
<a name="examples-cross-iam"></a>

Untuk mengizinkan akses objek di seluruh AWS akun, Anda membuat peran dan kebijakan IAM di akun sumber. Selanjutnya, Anda mengubah kebijakan IAM di akun sink. Untuk informasi tentang membuat IAM role dan kebijakan IAM, lihat topik berikut di bagian *Panduan Pengguna AWS Identity and Access Management *:
+ [Membuat Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)
+ [Membuat Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)

##### Tenggelamkan peran dan kebijakan akun
<a name="examples-cross-iam-sink"></a>

1. Edit kebijakan `kinesis-analytics-service-MyApplication-us-west-2` dari tutorial Memulai. Kebijakan ini memungkinkan peran dalam akun sumber diasumsikan agar dapat membaca aliran sumber. 
**catatan**  
Saat Anda menggunakan konsol untuk membuat aplikasi Anda, konsol membuat kebijakan yang disebut `kinesis-analytics-service-<application name>-<application region>`, dan peran yang disebut `kinesisanalytics-<application name>-<application region>`. 

   Tambahkan bagian yang disorot di bawah ini ke kebijakan. Ganti contoh ID akun (*SOURCE01234567*) dengan ID akun yang akan Anda gunakan untuk aliran sumber.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AssumeRoleInSourceAccount",
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam::123456789012:role/KA-Source-Stream-Role"
           },
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar"
               ]
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:123456789012:log-group:*"
               ]
           },
           {
               "Sid": "ListCloudwatchLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutCloudwatchLogs",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           }
       ]
   }
   ```

------

1. Buka peran `kinesis-analytics-MyApplication-us-west-2`, dan buat catatan Amazon Resource Name (ARN). Anda akan membutuhkannya di bagian selanjutnya. ARN peran terlihat seperti berikut.

   ```
   arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2
   ```

##### Peran dan kebijakan akun sumber
<a name="examples-cross-iam-source"></a>

1. Buat kebijakan di akun sumber yang disebut `KA-Source-Stream-Policy`. Gunakan JSON berikut untuk kebijakan. Ganti nomor akun sampel dengan nomor akun dari akun sumber.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStream",
                   "kinesis:GetRecords",
                   "kinesis:GetShardIterator",
                   "kinesis:ListShards"
               ],
               "Resource": "arn:aws:kinesis:us-west-2:111122223333:stream/SourceAccountExampleInputStream"
           }
       ]
   }
   ```

------

1. Buat peran di akun sumber yang disebut `MF-Source-Stream-Role`. Lakukan hal berikut untuk membuat peran menggunakan kasus penggunaan **Managed Flink**:

   1. Di Konsol Manajemen IAM, pilih **Create Role** (Buat Peran).

   1. Di halaman **Buat Peran**, pilih **Layanan AWS **. Dalam daftar layanan, pilih **Kinesis**.

   1. Di bagian **Pilih kasus penggunaan Anda**, pilih **Layanan Terkelola untuk Apache Flink**.

   1. Pilih **Berikutnya: Izin**.

   1. Tambahkan kebijakan izin `KA-Source-Stream-Policy` yang Anda buat di langkah sebelumnya. Pilih **Next:Tags**.

   1. Pilih **Next: Review** (Selanjutnya: Tinjauan).

   1. Beri nama peran `KA-Source-Stream-Role`. Aplikasi Anda akan menggunakan peran ini untuk mengakses aliran sumber.

1. Tambahkan ARN `kinesis-analytics-MyApplication-us-west-2` dari akun sink ke hubungan kepercayaan dari peran `KA-Source-Stream-Role` dalam akun sumber:

   1. Buka `KA-Source-Stream-Role` di konsol IAM.

   1. Pilih tab **Trust Relationships** (Hubungan Kepercayaan).

   1. Pilih **Edit trust relationship** (Edit Hubungan Kepercayaan).

   1. Gunakan kode berikut untuk hubungan kepercayaan. Ganti contoh ID akun (**SINK012345678**) dengan ID akun sink Anda.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/service-role/kinesis-analytics-MyApplication-us-west-2"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

##### Perbarui skrip Python
<a name="examples-cross-python"></a>

Di bagian ini, Anda memperbarui skrip Python yang menghasilkan data sampel untuk menggunakan profil akun sumber.

Perbarui skrip `stock.py` dengan perubahan yang disorot berikut.

```
import json
import boto3
import random
import datetime
import os

os.environ['AWS_PROFILE'] ='ka-source-stream-account-profile'
os.environ['AWS_DEFAULT_REGION'] = 'us-west-2'


kinesis = boto3.client('kinesis')
def getReferrer():
    data = {}
    now = datetime.datetime.now()
    str_now = now.isoformat()
    data['event_time'] = str_now
    data['ticker'] = random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV'])
    price = random.random() * 100
    data['price'] = round(price, 2)
    return data

while True:
        data = json.dumps(getReferrer())
        print(data)
        kinesis.put_record(
                StreamName="SourceAccountExampleInputStream",
                Data=data,
                PartitionKey="partitionkey")
```

##### Perbarui aplikasi Java
<a name="examples-cross-app"></a>

Di bagian ini, Anda memperbarui kode aplikasi Java untuk mengasumsikan peran akun sumber saat membaca dari aliran sumber.

Buat perubahan berikut ke file `BasicStreamingJob.java`. Ganti contoh nomor akun sumber (*SOURCE01234567*) dengan nomor akun sumber Anda.

```
package com.amazonaws.services.managed-flink;

import com.amazonaws.services.managed-flink.runtime.KinesisAnalyticsRuntime;
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer;
import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisProducer;
import org.apache.flink.streaming.connectors.kinesis.config.ConsumerConfigConstants;
import org.apache.flink.streaming.connectors.kinesis.config.AWSConfigConstants;

import java.io.IOException;
import java.util.Map;
import java.util.Properties;

 /**
 * A basic Managed Service for Apache Flink for Java application with Kinesis data streams
 * as source and sink.
 */
public class BasicStreamingJob {
    private static final String region = "us-west-2";
    private static final String inputStreamName = "SourceAccountExampleInputStream";
    private static final String outputStreamName = ExampleOutputStream;
    private static final String roleArn = "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role";
    private static final String roleSessionName = "ksassumedrolesession";

    private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) {
        Properties inputProperties = new Properties();
        inputProperties.setProperty(AWSConfigConstants.AWS_CREDENTIALS_PROVIDER, "ASSUME_ROLE");
        inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_ARN, roleArn);
        inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_SESSION_NAME, roleSessionName);
        inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region);
        inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST");

        return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
    }

    private static KinesisStreamsSink<String> createSinkFromStaticConfig() {
        Properties outputProperties = new Properties();
        outputProperties.setProperty(AWSConfigConstants.AWS_REGION, region);

        return KinesisStreamsSink.<String>builder()
                .setKinesisClientProperties(outputProperties)
                .setSerializationSchema(new SimpleStringSchema())
                .setStreamName(outputProperties.getProperty("OUTPUT_STREAM", "ExampleOutputStream"))
                .setPartitionKeyGenerator(element -> String.valueOf(element.hashCode()))
                .build();
    }

    public static void main(String[] args) throws Exception {
        // set up the streaming execution environment
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        DataStream<String> input = createSourceFromStaticConfig(env);

        input.addSink(createSinkFromStaticConfig());

        env.execute("Flink Streaming Java API Skeleton");
    }
}
```

##### Membangun, mengunggah, dan menjalankan aplikasi
<a name="examples-cross-run"></a>

Lakukan hal berikut untuk memperbarui dan menjalankan aplikasi:

1. Bangun lagi aplikasi dengan menjalankan perintah berikut di direktori dengan file `pom.xml`.

   ```
   mvn package -Dflink.version=1.15.3
   ```

1. Hapus file JAR sebelumnya dari bucket Amazon Simple Storage Service (Amazon S3) Anda, lalu unggah file `aws-kinesis-analytics-java-apps-1.0.jar` baru ke bucket S3.

1. Di halaman aplikasi di Managed Service for Apache Flink console, pilih **Configure**, **Update** untuk memuat ulang file JAR aplikasi.

1. Jalankan skrip `stock.py` untuk mengirim data ke aliran sumber.

   ```
   python stock.py
   ```

Aplikasi sekarang membaca data dari aliran Kinesis di akun lainnya.

Anda dapat memverifikasi bahwa aplikasi berfungsi dengan memeriksa metrik `PutRecords.Bytes` dari aliran `ExampleOutputStream`. Jika ada aktivitas dalam aliran output, aplikasi berfungsi dengan baik.

#### Tutorial: Menggunakan truststore kustom dengan Amazon MSK
<a name="example-keystore"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

##### Sumber data saat ini APIs
<a name="example-keystore-test-new"></a>

[Jika Anda menggunakan sumber data saat ini APIs, aplikasi Anda dapat memanfaatkan utilitas Penyedia Konfigurasi MSK Amazon yang dijelaskan di sini.](https://github.com/aws-samples/msk-config-providers) Ini memungkinkan KafkaSource fungsi Anda untuk mengakses keystore dan truststore Anda untuk TLS bersama di Amazon S3.

```
...
// define names of config providers:
builder.setProperty("config.providers", "secretsmanager,s3import");

// provide implementation classes for each provider:
builder.setProperty("config.providers.secretsmanager.class", "com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider");
builder.setProperty("config.providers.s3import.class", "com.amazonaws.kafka.config.providers.S3ImportConfigProvider");

String region = appProperties.get(Helpers.S3_BUCKET_REGION_KEY).toString();
String keystoreS3Bucket = appProperties.get(Helpers.KEYSTORE_S3_BUCKET_KEY).toString();
String keystoreS3Path = appProperties.get(Helpers.KEYSTORE_S3_PATH_KEY).toString();
String truststoreS3Bucket = appProperties.get(Helpers.TRUSTSTORE_S3_BUCKET_KEY).toString();
String truststoreS3Path = appProperties.get(Helpers.TRUSTSTORE_S3_PATH_KEY).toString();
String keystorePassSecret = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_KEY).toString();
String keystorePassSecretField = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_FIELD_KEY).toString();

// region, etc..
builder.setProperty("config.providers.s3import.param.region", region);

// properties
builder.setProperty("ssl.truststore.location", "${s3import:" + region + ":" + truststoreS3Bucket + "/" + truststoreS3Path + "}");
builder.setProperty("ssl.keystore.type", "PKCS12");
builder.setProperty("ssl.keystore.location", "${s3import:" + region + ":" + keystoreS3Bucket + "/" + keystoreS3Path + "}");
builder.setProperty("ssl.keystore.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}");
builder.setProperty("ssl.key.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}");
...
```

[Detail lebih lanjut dan panduan dapat ditemukan di sini.](https://github.com/aws-samples/amazon-kinesisanalytics-examples/tree/master/CustomKeystoreWithConfigProviders) 

##### Warisan SourceFunction APIs
<a name="example-keystore-legacy"></a>

Jika Anda menggunakan legacy SourceFunction APIs, aplikasi Anda akan menggunakan skema serialisasi dan deserialisasi khusus yang mengganti `open` metode untuk memuat truststore kustom. Hal ini membuat truststore tersedia untuk aplikasi setelah aplikasi restart atau menggantikan thread. 

Truststore kustom diambil dan disimpan menggunakan kode berikut:

```
public static void initializeKafkaTruststore() {
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    URL inputUrl = classLoader.getResource("kafka.client.truststore.jks");
    File dest = new File("/tmp/kafka.client.truststore.jks");

    try {
        FileUtils.copyURLToFile(inputUrl, dest);
    } catch (Exception ex) {
        throw new FlinkRuntimeException("Failed to initialize Kakfa truststore", ex);
    }
}
```

**catatan**  
[Apache Flink mengharuskan truststore dalam format JKS.](https://en.wikipedia.org/wiki/Java_KeyStore) 

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) terlebih dulu. 

Tutorial berikut menunjukkan cara menghubungkan dengan aman (enkripsi dalam perjalanan) ke Kafka Cluster yang menggunakan sertifikat server yang dikeluarkan oleh Certificate Authority (CA) kustom, pribadi, atau bahkan yang di-host sendiri. 

Untuk menghubungkan Klien Kafka dengan aman melalui TLS ke Kafka Cluster, Klien Kafka (seperti contoh aplikasi Flink) harus mempercayai rantai kepercayaan lengkap yang disajikan oleh sertifikat server Kafka Cluster (dari CA Penerbitan hingga CA Tingkat Root). Sebagai contoh untuk truststore kustom, kami akan menggunakan kluster MSK Amazon dengan Otentikasi Mutual TLS (MTLS) diaktifkan. Ini menyiratkan bahwa node cluster MSK menggunakan sertifikat server yang dikeluarkan oleh Certificate Manager Private AWS Certificate Authority (ACM Private CA) yang bersifat pribadi untuk akun dan Wilayah Anda dan oleh karena itu tidak dipercaya oleh truststore default Java Virtual Machine (JVM) yang menjalankan aplikasi Flink. 

**catatan**  
**Keystore** digunakan untuk menyimpan kunci pribadi dan sertifikat identitas aplikasi harus hadir ke server atau klien untuk verifikasi.
**Truststore** digunakan untuk menyimpan sertifikat dari Otoritas Bersertifikat (CA) yang memverifikasi sertifikat yang disajikan oleh server dalam koneksi SSL.

 Anda juga dapat menggunakan teknik dalam tutorial ini untuk interaksi antara Managed Service untuk aplikasi Apache Flink dan sumber Apache Kafka lainnya, seperti:
+ Cluster Apache Kafka khusus yang dihosting di AWS (Amazon [EC2 [atau](https://aws.amazon.com/eks/) Amazon](https://aws.amazon.com/ec2/) EKS)
+ [Cluster Confluent Kafka diselenggarakan](https://www.confluent.io) di AWS
+ Klaster Kafka on-premise yang diakses melalui [AWS Direct Connect](https://aws.amazon.com/directconnect/) atau VPN

**Topics**
+ [Sumber data saat ini APIs](#example-keystore-test-new)
+ [Warisan SourceFunction APIs](#example-keystore-legacy)
+ [Buat VPC dengan kluster MSK Amazon](#example-keystore-createcluster)
+ [Buat truststore kustom dan terapkan ke cluster Anda](#example-keystore-cert)
+ [Buat kode aplikasi](#example-keystore-code)
+ [Unggah kode Java streaming Apache Flink](#example-keystore-upload)
+ [Buat aplikasi](#example-keystore-create)
+ [Konfigurasikan aplikasi](#example-keystore-configure)
+ [Jalankan aplikasi](#example-keystore-run)
+ [Uji aplikasi](#example-keystore-test)

##### Buat VPC dengan kluster MSK Amazon
<a name="example-keystore-createcluster"></a>

Untuk membuat contoh klaster VPC dan Amazon MSK untuk mengakses dari aplikasi Managed Service for Apache Flink, ikuti tutorial [Memulai Menggunakan](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html) Amazon MSK.

Saat menyelesaikan tutorial, juga lakukan hal berikut:
+ Pada [Langkah 3: Buat Topik](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html), ulangi `kafka-topics.sh --create` perintah untuk membuat topik tujuan bernama`AWS KafkaTutorialTopicDestination`:

  ```
  bin/kafka-topics.sh --create --bootstrap-server ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestination
  ```
**catatan**  
Jika perintah `kafka-topics.sh` menampilkan `ZooKeeperClientTimeoutException`, verifikasi bahwa grup keamanan klaster Kafka memiliki aturan inbound untuk mengizinkan semua lalu lintas dari alamat IP privat instans klien.
+ Catat daftar server bootstrap untuk klaster Anda. Anda bisa mendapatkan daftar server bootstrap dengan perintah berikut (ganti *ClusterArn* dengan ARN cluster MSK Anda):

  ```
  aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn ClusterArn
  {...
      "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094"
  }
  ```
+ Saat mengikuti langkah-langkah dalam tutorial ini dan tutorial prasyarat, pastikan untuk menggunakan AWS Wilayah yang Anda pilih dalam kode, perintah, dan entri konsol Anda.

##### Buat truststore kustom dan terapkan ke cluster Anda
<a name="example-keystore-cert"></a>

Di bagian ini, Anda membuat otoritas sertifikat kustom (CA), menggunakannya untuk menghasilkan truststore kustom, dan menerapkannya ke cluster MSK Anda.

Untuk membuat dan menerapkan truststore kustom Anda, ikuti tutorial [Otentikasi Klien](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) di *Amazon Managed Streaming for* Apache Kafka Developer Guide.

##### Buat kode aplikasi
<a name="example-keystore-code"></a>

Di bagian ini, Anda mengunduh dan mengompilasi file JAR aplikasi.

Kode aplikasi Java untuk contoh ini tersedia dari GitHub. Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Kode aplikasi terletak di`amazon-kinesis-data-analytics-java-examples/CustomKeystore`. Anda dapat memeriksa kode untuk membiasakan diri dengan struktur Managed Service untuk kode Apache Flink.

1. Gunakan salah satu alat Maven baris perintah atau lingkungan pengembangan pilihan Anda untuk membuat file JAR. Untuk mengompilasi file JAR menggunakan alat Maven baris perintah, masukkan berikut ini:

   ```
   mvn package -Dflink.version=1.15.3
   ```

   Jika berhasil membangun, file berikut dibuat:

   ```
   target/flink-app-1.0-SNAPSHOT.jar
   ```
**catatan**  
Kode sumber yang disediakan bergantung pada pustaka dari Java 11. 

##### Unggah kode Java streaming Apache Flink
<a name="example-keystore-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di tutorial [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md).

**catatan**  
Jika Anda menghapus bucket Amazon S3 dari tutorial Memulai, ikuti lagi langkah [Unggah file JAR kode aplikasi](get-started-exercise.md#get-started-exercise-6).

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `flink-app-1.0-SNAPSHOT.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat aplikasi
<a name="example-keystore-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink** versi 1.15.2.

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat Anda membuat Layanan Terkelola untuk Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurasikan aplikasi
<a name="example-keystore-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **flink-app-1.0-SNAPSHOT.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).
**catatan**  
Jika Anda menentukan sumber daya aplikasi menggunakan konsol (seperti logd atau VPC), konsol tersebut akan mengubah peran eksekusi aplikasi Anda untuk memberikan izin mengakses sumber daya tersebut.

1. Di bawah **Properties** (Properti), pilih **Add Group** (Tambahkan Grup). Masukkan properti berikut:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)
**catatan**  
**ssl.truststore.password** untuk sertifikat default adalah "changeit"—Anda tidak perlu mengubah nilai ini jika menggunakan sertifikat default.

   Pilih **Add Group** (Tambahkan Grup) lagi. Masukkan properti berikut:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

   Kode aplikasi membaca properti aplikasi di atas untuk mengonfigurasi sumber dan sink yang digunakan untuk berinteraksi dengan VPC dan klaster Amazon MSK Anda. Untuk informasi selengkapnya tentang penggunaan runtime, lihat [Gunakan properti runtime](how-properties.md).

1. Di bawah **Snapshots**, pilih **Disable** (Nonaktifkan). Tindakan ini akan memudahkan pembaruan aplikasi tanpa memuat data status aplikasi yang tidak valid.

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Di bagian **Virtual Private Cloud (VPC)**, pilih VPC untuk dikaitkan dengan aplikasi Anda. Pilih subnet dan grup keamanan yang terkait dengan VPC Anda yang ingin digunakan aplikasi untuk mengakses sumber daya VPC.

1. Pilih **Update** (Perbarui).

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi.

##### Jalankan aplikasi
<a name="example-keystore-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

##### Uji aplikasi
<a name="example-keystore-test"></a>

Di bagian ini, Anda menulis catatan ke topik sumber. Aplikasi membaca catatan dari topik sumber dan menuliskannya ke topik tujuan. Anda memverifikasi bahwa aplikasi berfungsi dengan menulis catatan ke topik sumber dan membaca catatan dari topik tujuan.

Untuk menulis dan membaca catatan dari topik, ikuti langkah-langkah di [Langkah 6: Buat dan Gunakan Data](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html) di tutorial [Memulai Menggunakan Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

Untuk membaca dari topik tujuan, gunakan nama topik tujuan bukan topik sumber dalam koneksi kedua Anda ke kluster:

```
bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning
```

Jika tidak ada catatan yang muncul dalam topik tujuan, lihat bagian [Tidak dapat mengakses sumber daya dalam VPC](troubleshooting-symptoms.md#troubleshooting-rt-vpc) di topik [Memecahkan Masalah Layanan Terkelola untuk Apache Flink](troubleshooting.md).

### Contoh Python
<a name="examples-python"></a>

Contoh berikut menunjukkan cara membuat aplikasi menggunakan Python dengan API Tabel Apache Flink.

**Topics**
+ [Contoh: Membuat jendela jatuh di Python](#examples-python-tumbling)
+ [Contoh: Membuat jendela geser dengan Python](#examples-python-sliding)
+ [Contoh: Kirim data streaming ke Amazon S3 dengan Python](#examples-python-s3)

#### Contoh: Membuat jendela jatuh di Python
<a name="examples-python-tumbling"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

Dalam latihan ini, Anda membuat Layanan Terkelola Python untuk aplikasi Apache Flink yang mengumpulkan data menggunakan jendela tumbling. 

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan Python di Managed Service untuk Apache Flink](gs-python.md) terlebih dulu.

**Topics**
+ [Buat sumber daya yang bergantung](#examples-python-tumbling-resources)
+ [Tulis catatan sampel ke aliran input](#examples-python-tumbling-write)
+ [Unduh dan periksa kode aplikasi](#examples-python-tumbling-download)
+ [Kompres dan unggah kode Python streaming Apache Flink](#examples-python-tumbling-upload)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#examples-python-tumbling-create-run)
+ [Bersihkan AWS sumber daya](#examples-python-tumbling-cleanup)

##### Buat sumber daya yang bergantung
<a name="examples-python-tumbling-resources"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, Anda membuat sumber daya dependen berikut: 
+ Dua Kinesis data streams (`ExampleInputStream` dan `ExampleOutputStream`)
+ Bucket Amazon S3 untuk menyimpan kode aplikasi (`ka-app-code-<username>`) 

Anda dapat membuat aliran Kinesis dan bucket Amazon S3 menggunakan konsol. Untuk petunjuk membuat sumber daya ini, lihat topik berikut:
+ [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. Beri nama aliran data **ExampleInputStream** dan **ExampleOutputStream** Anda.
+ [Bagaimana Cara Membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Beri bucket Amazon S3 nama yang unik secara global dengan menambahkan nama login Anda, seperti **ka-app-code-*<username>***.

##### Tulis catatan sampel ke aliran input
<a name="examples-python-tumbling-write"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**catatan**  
Skrip Python di bagian ini menggunakan AWS CLI. Anda harus mengonfigurasi AWS CLI untuk menggunakan kredensi akun dan wilayah default Anda. Untuk mengkonfigurasi Anda AWS CLI, masukkan yang berikut ini:  

```
aws configure
```

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Jalankan skrip `stock.py`. 

   ```
   $ python stock.py
   ```

   Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

##### Unduh dan periksa kode aplikasi
<a name="examples-python-tumbling-download"></a>

Kode aplikasi Python untuk contoh ini tersedia dari. GitHub Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/python/TumblingWindow` tersebut.

Kode aplikasi terletak di file `tumbling-windows.py`. Perhatikan hal tentang kode aplikasi berikut:
+ Aplikasi menggunakan sumber tabel Kinesis untuk membaca dari aliran sumber. Cuplikan berikut memanggil fungsi `create_table` untuk membuat sumber tabel Kinesis:

  ```
  table_env.execute_sql(
          create_input_table(input_table_name, input_stream, input_region, stream_initpos)
      )
  ```

  Fungsi `create_table` menggunakan perintah SQL untuk membuat tabel yang didukung oleh sumber streaming:

  ```
  def create_input_table(table_name, stream_name, region, stream_initpos):
      return """ CREATE TABLE {0} (
                  ticker VARCHAR(6),
                  price DOUBLE,
                  event_time TIMESTAMP(3),
                  WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
                )
                PARTITIONED BY (ticker)
                WITH (
                  'connector' = 'kinesis',
                  'stream' = '{1}',
                  'aws.region' = '{2}',
                  'scan.stream.initpos' = '{3}',
                  'format' = 'json',
                  'json.timestamp-format.standard' = 'ISO-8601'
                ) """.format(table_name, stream_name, region, stream_initpos)
  ```
+ Aplikasi menggunakan operator `Tumble` untuk menggabungkan catatan dalam jendela tumbling tertentu, dan mengembalikan catatan agregat sebagai objek tabel:

  ```
  tumbling_window_table = (
          input_table.window(
              Tumble.over("10.seconds").on("event_time").alias("ten_second_window")
          )
          .group_by("ticker, ten_second_window")
          .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time")
  ```
+ Aplikasi ini menggunakan konektor Flink Kinesis, dari [https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2).

##### Kompres dan unggah kode Python streaming Apache Flink
<a name="examples-python-tumbling-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian [Buat sumber daya yang bergantung](#examples-python-tumbling-resources).

1. Gunakan aplikasi kompresi pilihan Anda untuk mengompresi file `tumbling-windows.py` dan `flink-sql-connector-kinesis-1.15.2.jar`. Beri nama arsip `myapp.zip`.

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `myapp.zip` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="examples-python-tumbling-create-run"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="examples-python-tumbling-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application. 

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink**.
**catatan**  
Managed Service untuk Apache Flink menggunakan Apache Flink versi 1.15.2.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ). 

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurasikan aplikasi
<a name="examples-python-tumbling-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **myapp.zip**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup). 

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

   Pilih **Simpan**.

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup) lagi. 

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup) lagi. Untuk **ID Grup**, masukkan **kinesis.analytics.flink.run.options**. Grup properti khusus ini memberi tahu aplikasi Anda tempat untuk menemukan sumber daya kodenya. Untuk informasi selengkapnya, lihat [Tentukan file kode Anda](how-python-creating.md#how-python-creating-code).

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi. Ini bukan aliran log yang sama dengan yang digunakan aplikasi untuk mengirim hasil.

##### Edit kebijakan IAM
<a name="examples-python-tumbling-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/myapp.zip"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Jalankan aplikasi
<a name="examples-python-tumbling-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

Anda dapat memeriksa metrik Managed Service for Apache Flink di CloudWatch konsol untuk memverifikasi bahwa aplikasi berfungsi. 

##### Bersihkan AWS sumber daya
<a name="examples-python-tumbling-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Tumbling Window.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-python-tumbling-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-python-tumbling-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#examples-python-tumbling-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-python-tumbling-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-python-tumbling-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-python-tumbling-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-python-tumbling-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

##### Hapus objek dan ember Amazon S3 Anda
<a name="examples-python-tumbling-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-python-tumbling-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-python-tumbling-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Contoh: Membuat jendela geser dengan Python
<a name="examples-python-sliding"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan Python di Managed Service untuk Apache Flink](gs-python.md) terlebih dulu.

**Topics**
+ [Buat sumber daya yang bergantung](#examples-python-sliding-resources)
+ [Tulis catatan sampel ke aliran input](#examples-python-sliding-write)
+ [Unduh dan periksa kode aplikasi](#examples-python-sliding-download)
+ [Kompres dan unggah kode Python streaming Apache Flink](#examples-python-sliding-upload)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#examples-python-sliding-create-run)
+ [Bersihkan AWS sumber daya](#examples-python-sliding-cleanup)

##### Buat sumber daya yang bergantung
<a name="examples-python-sliding-resources"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, Anda membuat sumber daya dependen berikut: 
+ Dua Kinesis data streams (`ExampleInputStream` dan `ExampleOutputStream`)
+ Bucket Amazon S3 untuk menyimpan kode aplikasi (`ka-app-code-<username>`) 

Anda dapat membuat aliran Kinesis dan bucket Amazon S3 menggunakan konsol. Untuk petunjuk membuat sumber daya ini, lihat topik berikut:
+ [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. Beri nama aliran data **ExampleInputStream** dan **ExampleOutputStream** Anda.
+ [Bagaimana Cara Membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Beri bucket Amazon S3 nama yang unik secara global dengan menambahkan nama login Anda, seperti **ka-app-code-*<username>***.

##### Tulis catatan sampel ke aliran input
<a name="examples-python-sliding-write"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**catatan**  
Skrip Python di bagian ini menggunakan AWS CLI. Anda harus mengonfigurasi AWS CLI untuk menggunakan kredensi akun dan wilayah default Anda. Untuk mengkonfigurasi Anda AWS CLI, masukkan yang berikut ini:  

```
aws configure
```

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Jalankan skrip `stock.py`. 

   ```
   $ python stock.py
   ```

   Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

##### Unduh dan periksa kode aplikasi
<a name="examples-python-sliding-download"></a>

Kode aplikasi Python untuk contoh ini tersedia dari. GitHub Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/python/SlidingWindow` tersebut.

Kode aplikasi terletak di file `sliding-windows.py`. Perhatikan hal tentang kode aplikasi berikut:
+ Aplikasi menggunakan sumber tabel Kinesis untuk membaca dari aliran sumber. Cuplikan berikut memanggil fungsi `create_input_table` untuk membuat sumber tabel Kinesis:

  ```
  table_env.execute_sql(
          create_input_table(input_table_name, input_stream, input_region, stream_initpos)
      )
  ```

  Fungsi `create_input_table` menggunakan perintah SQL untuk membuat tabel yang didukung oleh sumber streaming:

  ```
  def create_input_table(table_name, stream_name, region, stream_initpos):
      return """ CREATE TABLE {0} (
                  ticker VARCHAR(6),
                  price DOUBLE,
                  event_time TIMESTAMP(3),
                  WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
                )
                PARTITIONED BY (ticker)
                WITH (
                  'connector' = 'kinesis',
                  'stream' = '{1}',
                  'aws.region' = '{2}',
                  'scan.stream.initpos' = '{3}',
                  'format' = 'json',
                  'json.timestamp-format.standard' = 'ISO-8601'
                ) """.format(table_name, stream_name, region, stream_initpos)
   }
  ```
+ Aplikasi menggunakan operator `Slide` untuk menggabungkan catatan dalam jendela geser tertentu, dan mengembalikan catatan agregat sebagai objek tabel:

  ```
  sliding_window_table = (
          input_table
              .window(
                  Slide.over("10.seconds")
                  .every("5.seconds")
                  .on("event_time")
                  .alias("ten_second_window")
              )
              .group_by("ticker, ten_second_window")
              .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time")
      )
  ```
+ [Aplikasi ini menggunakan konektor Kinesis Flink, dari file -1.15.2.jar. flink-sql-connector-kinesis](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2)

##### Kompres dan unggah kode Python streaming Apache Flink
<a name="examples-python-sliding-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian [Buat sumber daya yang bergantung](#examples-python-sliding-resources).

Bagian ini menjelaskan cara mengemas aplikasi Python Anda.

1. Gunakan aplikasi kompresi pilihan Anda untuk mengompresi file `sliding-windows.py` dan `flink-sql-connector-kinesis-1.15.2.jar`. Beri nama arsip `myapp.zip`.

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `myapp.zip` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="examples-python-sliding-create-run"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="examples-python-sliding-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application. 

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink**.
**catatan**  
Managed Service untuk Apache Flink menggunakan Apache Flink versi 1.15.2.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ). 

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurasikan aplikasi
<a name="examples-python-sliding-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **myapp.zip**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup). 

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

   Pilih **Simpan**.

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup) lagi. 

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup) lagi. Untuk **ID Grup**, masukkan **kinesis.analytics.flink.run.options**. Grup properti khusus ini memberi tahu aplikasi Anda tempat untuk menemukan sumber daya kodenya. Untuk informasi selengkapnya, lihat [Tentukan file kode Anda](how-python-creating.md#how-python-creating-code).

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi. Ini bukan aliran log yang sama dengan yang digunakan aplikasi untuk mengirim hasil.

##### Edit kebijakan IAM
<a name="examples-python-sliding-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/myapp.zip"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Jalankan aplikasi
<a name="examples-python-sliding-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

Anda dapat memeriksa metrik Managed Service for Apache Flink di CloudWatch konsol untuk memverifikasi bahwa aplikasi berfungsi. 

##### Bersihkan AWS sumber daya
<a name="examples-python-sliding-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Sliding Window.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-python-sliding-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-python-sliding-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#examples-python-sliding-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-python-sliding-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-python-sliding-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-python-sliding-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-python-sliding-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

##### Hapus objek dan ember Amazon S3 Anda
<a name="examples-python-sliding-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-python-sliding-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-python-sliding-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Contoh: Kirim data streaming ke Amazon S3 dengan Python
<a name="examples-python-s3"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

Dalam latihan ini, Anda membuat Layanan Terkelola Python untuk aplikasi Apache Flink yang mengalirkan data ke wastafel Amazon Simple Storage Service. 

**catatan**  
Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan [Tutorial: Mulai menggunakan Python di Managed Service untuk Apache Flink](gs-python.md) terlebih dulu.

**Topics**
+ [Buat sumber daya yang bergantung](#examples-python-s3-resources)
+ [Tulis catatan sampel ke aliran input](#examples-python-s3-write)
+ [Unduh dan periksa kode aplikasi](#examples-python-s3-download)
+ [Kompres dan unggah kode Python streaming Apache Flink](#examples-python-s3-upload)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#examples-python-s3-create-run)
+ [Bersihkan AWS sumber daya](#examples-python-s3-cleanup)

##### Buat sumber daya yang bergantung
<a name="examples-python-s3-resources"></a>

Sebelum Anda membuat Layanan Terkelola untuk aplikasi Apache Flink untuk latihan ini, Anda membuat sumber daya dependen berikut: 
+ Kinesis data stream (`ExampleInputStream`)
+ Bucket Amazon S3 untuk menyimpan kode dan output aplikasi (`ka-app-code-<username>`) 

**catatan**  
Layanan Terkelola untuk Apache Flink tidak dapat menulis data ke Amazon S3 dengan enkripsi sisi server diaktifkan pada Layanan Terkelola untuk Apache Flink.

Anda dapat membuat aliran Kinesis dan bucket Amazon S3 menggunakan konsol. Untuk petunjuk membuat sumber daya ini, lihat topik berikut:
+ [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di *Panduan Developer Amazon Kinesis Data Streams*. Beri nama aliran data **ExampleInputStream** Anda.
+ [Bagaimana Cara Membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. Beri bucket Amazon S3 nama yang unik secara global dengan menambahkan nama login Anda, seperti **ka-app-code-*<username>***.

##### Tulis catatan sampel ke aliran input
<a name="examples-python-s3-write"></a>

Di bagian ini, Anda menggunakan script Python untuk menulis catatan sampel ke aliran untuk diproses aplikasi.

**catatan**  
Bagian ini memerlukan [AWS SDK for Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**catatan**  
Skrip Python di bagian ini menggunakan AWS CLI. Anda harus mengonfigurasi AWS CLI untuk menggunakan kredensi akun dan wilayah default Anda. Untuk mengkonfigurasi Anda AWS CLI, masukkan yang berikut ini:  

```
aws configure
```

1. Buat file bernama `stock.py` dengan konten berikut:

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. Jalankan skrip `stock.py`. 

   ```
   $ python stock.py
   ```

   Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

##### Unduh dan periksa kode aplikasi
<a name="examples-python-s3-download"></a>

Kode aplikasi Python untuk contoh ini tersedia dari. GitHub Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/python/S3Sink` tersebut.

Kode aplikasi terletak di file `streaming-file-sink.py`. Perhatikan hal tentang kode aplikasi berikut:
+ Aplikasi menggunakan sumber tabel Kinesis untuk membaca dari aliran sumber. Cuplikan berikut memanggil fungsi `create_source_table` untuk membuat sumber tabel Kinesis:

  ```
  table_env.execute_sql(
          create_source_table(input_table_name, input_stream, input_region, stream_initpos)
      )
  ```

  `create_source_table`Fungsi ini menggunakan perintah SQL untuk membuat tabel yang didukung oleh sumber streaming

  ```
  import datetime
      import json
      import random
      import boto3
  
      STREAM_NAME = "ExampleInputStream"
  
  
      def get_data():
          return {
              'event_time': datetime.datetime.now().isoformat(),
              'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
              'price': round(random.random() * 100, 2)}
  
  
      def generate(stream_name, kinesis_client):
          while True:
              data = get_data()
              print(data)
              kinesis_client.put_record(
                  StreamName=stream_name,
                  Data=json.dumps(data),
                  PartitionKey="partitionkey")
  
  
      if __name__ == '__main__':
          generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  ```
+ Aplikasi menggunakan konektor `filesystem` untuk mengirim catatan ke bucket Amazon S3:

  ```
  def create_sink_table(table_name, bucket_name):
      return """ CREATE TABLE {0} (
                  ticker VARCHAR(6),
                  price DOUBLE,
                  event_time VARCHAR(64)
                )
                PARTITIONED BY (ticker)
                WITH (
                    'connector'='filesystem',
                    'path'='s3a://{1}/',
                    'format'='json',
                    'sink.partition-commit.policy.kind'='success-file',
                    'sink.partition-commit.delay' = '1 min'
                ) """.format(table_name, bucket_name)
  ```
+ [Aplikasi ini menggunakan konektor Kinesis Flink, dari file -1.15.2.jar. flink-sql-connector-kinesis](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2)

##### Kompres dan unggah kode Python streaming Apache Flink
<a name="examples-python-s3-upload"></a>

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian [Buat sumber daya yang bergantung](#examples-python-s3-resources).

1. Gunakan aplikasi kompresi pilihan Anda untuk mengompres file `streaming-file-sink.py` dan [flink-sql-connector-kinesis-1.15.2.jar](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2). Beri nama arsip `myapp.zip`.

1. **Di konsol Amazon S3, pilih *<username>* bucket **ka-app-code-**, dan pilih Unggah.**

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `myapp.zip` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan Managed Service untuk aplikasi Apache Flink
<a name="examples-python-s3-create-run"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="examples-python-s3-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application. 

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Runtime**, pilih **Apache Flink**.
**catatan**  
Managed Service untuk Apache Flink menggunakan Apache Flink versi 1.15.2.
   + Biarkan versi pulldown sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ). 

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurasikan aplikasi
<a name="examples-python-s3-configure"></a>

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **myapp.zip**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup).

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

   Pilih **Simpan**.

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup) lagi. Untuk **ID Grup**, masukkan **kinesis.analytics.flink.run.options**. Grup properti khusus ini memberi tahu aplikasi Anda tempat untuk menemukan sumber daya kodenya. Untuk informasi selengkapnya, lihat [Tentukan file kode Anda](how-python-creating.md#how-python-creating-code).

1. Masukkan properti dan nilai aplikasi berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup) lagi. Untuk **ID Grup**, masukkan **sink.config.0**. Grup properti khusus ini memberi tahu aplikasi Anda tempat untuk menemukan sumber daya kodenya. Untuk informasi selengkapnya, lihat [Tentukan file kode Anda](how-python-creating.md#how-python-creating-code).

1. Masukkan properti dan nilai aplikasi berikut: (ganti *bucket-name* dengan nama sebenarnya bucket Amazon S3 Anda.)    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch logging, Managed Service for Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`
Aliran log ini digunakan untuk memantau aplikasi. Ini bukan aliran log yang sama dengan yang digunakan aplikasi untuk mengirim hasil.

##### Edit kebijakan IAM
<a name="examples-python-s3-iam"></a>

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "logs:DescribeLogGroups",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*",
                   "arn:aws:s3:::ka-app-code-<username>/myapp.zip"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": "logs:DescribeLogStreams",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": "logs:PutLogEvents",
               "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteObjects",
               "Effect": "Allow",
               "Action": [
                   "s3:Abort*",
                   "s3:DeleteObject*",
                   "s3:GetObject*",
                   "s3:GetBucket*",
                   "s3:List*",
                   "s3:ListBucket",
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-<username>",
                   "arn:aws:s3:::ka-app-code-<username>/*"
               ]
           }
       ]
   }
   ```

------

##### Jalankan aplikasi
<a name="examples-python-s3-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

Anda dapat memeriksa metrik Managed Service for Apache Flink di CloudWatch konsol untuk memverifikasi bahwa aplikasi berfungsi. 

##### Bersihkan AWS sumber daya
<a name="examples-python-s3-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Sliding Window.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-python-s3-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-python-s3-cleanup-stream)
+ [Hapus objek dan bucket Amazon S3 Anda](#examples-python-s3-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-python-s3-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-python-s3-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-python-s3-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-python-s3-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

##### Hapus objek dan bucket Amazon S3 Anda
<a name="examples-python-s3-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-python-s3-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-python-s3-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

### Contoh scala
<a name="examples-scala"></a>

Contoh berikut menunjukkan cara membuat aplikasi menggunakan Scala dengan Apache Flink.

**Topics**
+ [Contoh: Membuat jendela jatuh di Scala](#examples-tumbling-scala)
+ [Contoh: Membuat jendela geser di Scala](#examples-sliding-scala)
+ [Contoh: Kirim data streaming ke Amazon S3 di Scala](#examples-s3sink-scala)

#### Contoh: Membuat jendela jatuh di Scala
<a name="examples-tumbling-scala"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

**catatan**  
Mulai dari versi 1.15 Flink gratis Scala. Aplikasi sekarang dapat menggunakan Java API dari versi Scala apa pun. Flink masih menggunakan Scala di beberapa komponen kunci secara internal tetapi tidak mengekspos Scala ke dalam classloader kode pengguna. Karena itu, pengguna perlu menambahkan dependensi Scala ke dalam arsip jar mereka.  
Untuk informasi selengkapnya tentang perubahan Scala di Flink 1.15, lihat [Scala Free](https://flink.apache.org/2022/02/22/scala-free.html) in One Fifteen.

Dalam latihan ini, Anda akan membuat aplikasi streaming sederhana yang menggunakan Scala 3.2.0 dan Java API Flink. DataStream Aplikasi membaca data dari aliran Kinesis, menggabungkannya menggunakan jendela geser dan menulis hasil ke output Kinesis stream.

**catatan**  
Untuk mengatur prasyarat yang diperlukan untuk latihan ini, pertama-tama selesaikan latihan [Memulai (](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html)Scala). 

**Topics**
+ [Unduh dan periksa kode aplikasi](#examples-tumbling-scala-download)
+ [Kompilasi dan unggah kode aplikasi](#examples-tumbling-scala-upload)
+ [Buat dan jalankan aplikasi (konsol)](#scala-7)
+ [Membuat dan menjalankan aplikasi (CLI)](#examples-tumbling-scala-create-run-cli)
+ [Perbarui kode aplikasi](#examples-tumbling-scala-update-app-code)
+ [Bersihkan AWS sumber daya](#examples-tumbling-scala-cleanup)

##### Unduh dan periksa kode aplikasi
<a name="examples-tumbling-scala-download"></a>

Kode aplikasi Python untuk contoh ini tersedia dari. GitHub Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/scala/TumblingWindow` tersebut.

Perhatikan hal tentang kode aplikasi berikut:
+ `build.sbt`File berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.
+ `BasicStreamingJob.scala`File berisi metode utama yang mendefinisikan fungsionalitas aplikasi.
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  private def createSource: FlinkKinesisConsumer[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val inputProperties = applicationProperties.get("ConsumerConfigProperties")
  
    new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName),
      new SimpleStringSchema, inputProperties)
  }
  ```

  Aplikasi ini juga menggunakan sink Kinesis untuk menulis ke dalam aliran hasil. Cuplikan berikut membuat sink Kinesis:

  ```
  private def createSink: KinesisStreamsSink[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val outputProperties = applicationProperties.get("ProducerConfigProperties")
  
    KinesisStreamsSink.builder[String]
      .setKinesisClientProperties(outputProperties)
      .setSerializationSchema(new SimpleStringSchema)
      .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName))
      .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode))
      .build
  }
  ```
+ Aplikasi ini menggunakan operator jendela untuk menemukan jumlah nilai untuk setiap simbol saham selama 5 detik jatuh jendela. Kode berikut membuat operator dan mengirimkan data agregat ke sink Kinesis Data Streams baru:

  ```
  environment.addSource(createSource)
    .map { value =>
      val jsonNode = jsonParser.readValue(value, classOf[JsonNode])
      new Tuple2[String, Int](jsonNode.get("ticker").toString, 1)
    }
    .returns(Types.TUPLE(Types.STRING, Types.INT))
    .keyBy(v => v.f0) // Logically partition the stream for each ticker 
    .window(TumblingProcessingTimeWindows.of(Time.seconds(10)))
    .sum(1) // Sum the number of tickers per partition
    .map { value => value.f0 + "," + value.f1.toString + "\n" }
    .sinkTo(createSink)
  ```
+ Aplikasi ini membuat konektor sumber dan wastafel untuk mengakses sumber daya eksternal menggunakan StreamExecutionEnvironment objek.
+ Aplikasi ini membuat konektor sumber dan wastafel menggunakan properti aplikasi dinamis. Properti aplikasi runtime dibaca untuk mengkonfigurasi konektor. Untuk informasi selengkapnya tentang properti runtime, lihat Properti [Runtime](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Kompilasi dan unggah kode aplikasi
<a name="examples-tumbling-scala-upload"></a>

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

**Kompilasi Kode Aplikasi**

Gunakan alat build [SBT](https://www.scala-sbt.org/) untuk membangun kode Scala untuk aplikasi. Untuk menginstal SBT, lihat [Menginstal sbt dengan pengaturan cs](https://www.scala-sbt.org/download.html). Anda juga perlu menginstal Java Development Kit (JDK). Lihat [Prasyarat untuk Menyelesaikan Latihan](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Untuk menggunakan kode aplikasi Anda, Anda mengompilasi dan mengemasnya ke dalam file JAR. Anda dapat mengkompilasi dan mengemas kode Anda dengan SBT:

   ```
   sbt assembly
   ```

1. Jika aplikasi berhasil mengompilasi, file berikut dibuat:

   ```
   target/scala-3.2.0/tumbling-window-scala-1.0.jar
   ```

**Unggah Kode Scala Streaming Apache Flink**

Di bagian ini, Anda membuat bucket Amazon S3 dan mengunggah kode aplikasi Anda.

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

1. Pilih **Buat ember**

1. Masukkan `ka-app-code-<username>` di bidang **Bucket name** (Nama bucket). Tambahkan sufiks ke nama bucket, seperti nama pengguna Anda, untuk membuatnya unik secara global. Pilih **Berikutnya**.

1. Di **opsi Konfigurasi**, pertahankan pengaturan apa adanya, dan pilih **Berikutnya**.

1. Di **Setel izin**, pertahankan pengaturan apa adanya, dan pilih **Berikutnya**.

1. Pilih **Buat bucket**.

1. Pilih `ka-app-code-<username>` bucket, lalu pilih **Unggah**.

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `tumbling-window-scala-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan aplikasi (konsol)
<a name="scala-7"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="scala-7-console-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My Scala test app**.
   + Untuk **Runtime**, pilih **Apache Flink**.
   + Tinggalkan versi sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurasikan aplikasi
<a name="scala-7-console-configure"></a>

Gunakan prosedur berikut untuk mengonfigurasi aplikasi.

**Untuk mengonfigurasi aplikasi**

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **tumbling-window-scala-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup). 

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

   Pilih **Simpan**.

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup) lagi. 

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch pencatatan Amazon, Layanan Terkelola untuk Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`

##### Edit kebijakan IAM
<a name="scala-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin agar dapat mengakses bucket Amazon S3.

**Untuk mengedit kebijakan IAM agar dapat menambahkan izin bucket S3**

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/tumbling-window-scala-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Jalankan aplikasi
<a name="scala-7-console-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

##### Hentikan aplikasi
<a name="scala-7-console-stop"></a>

Untuk menghentikan aplikasi, pada **MyApplication**halaman, pilih **Berhenti**. Konfirmasikan tindakan.

##### Membuat dan menjalankan aplikasi (CLI)
<a name="examples-tumbling-scala-create-run-cli"></a>

Di bagian ini, Anda menggunakan AWS Command Line Interface untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink. Gunakan AWS CLI perintah *kinesisanalyticsv2* untuk membuat dan berinteraksi dengan Managed Service untuk aplikasi Apache Flink.

##### Membuat kebijakan izin
<a name="examples-tumbling-scala-permissions"></a>

**catatan**  
Anda harus membuat kebijakan izin dan peran untuk aplikasi Anda. Jika Anda tidak membuat sumber daya IAM ini, aplikasi Anda tidak dapat mengakses data dan aliran log. 

Pertama, Anda membuat kebijakan izin dengan dua pernyataan: satu yang memberikan izin untuk tindakan baca di aliran sumber, dan satu lagi yang memberikan izin untuk tindakan tulis di aliran sink. Anda selanjutnya melampirkan kebijakan ke IAM role (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin `AKReadSourceStreamWriteSinkStream`. Ganti **username** dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) **(012345678901)** dengan ID akun Anda. Peran eksekusi **MF-stream-rw-role** layanan harus disesuaikan dengan peran khusus pelanggan.

```
{
    "ApplicationName": "tumbling_window",
    "ApplicationDescription": "Scala tumbling window application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "tumbling-window-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleOutputStream"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Untuk step-by-step petunjuk membuat kebijakan izin, lihat [Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) di *Panduan Pengguna IAM*.

##### Membuat peran IAM
<a name="examples-tumbling-scala-iam-policy"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh aplikasi Managed Service for Apache Flink untuk membaca aliran sumber dan menulis ke aliran sink.

Layanan Terkelola untuk Apache Flink tidak dapat mengakses aliran Anda tanpa izin. Anda memberikan izin ini melalui IAM role. Setiap IAM role memiliki dua kebijakan yang dilampirkan. Kebijakan kepercayaan memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran, dan kebijakan izin menentukan apa yang dapat dilakukan Layanan Terkelola untuk Apache Flink setelah mengambil peran.

Anda melampirkan kebijakan izin yang Anda buat di bagian sebelumnya ke peran ini. 

**Untuk membuat IAM role**

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

1. Di panel navigasi, pilih **Peran** dan kemudian **Buat Peran**.

1. Di bawah **Pilih jenis identitas tepercaya**, pilih **AWS Layanan**

1. Di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **Kinesis**.

1. Di bawah **Pilih kasus penggunaan Anda**, pilih **Layanan Terkelola untuk Apache Flink**.

1. Pilih **Berikutnya: Izin**.

1. Di halaman **Lampirkan kebijakan izin**, pilih **Next: Review** (Selanjutnya: Tinjau). Anda melampirkan kebijakan izin setelah Anda membuat peran tersebut.

1. Di halaman **Buat peran**, masukkan **MF-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran). 

    Sekarang Anda sudah membuat IAM role baru yang disebut `MF-stream-rw-role`. Selanjutnya, Anda memperbarui kebijakan kepercayaan dan izin untuk peran tersebut

1. Lampirkan kebijakan izin ke peran tersebut.
**catatan**  
Untuk latihan ini, Managed Service for Apache Flink mengasumsikan peran ini untuk membaca data dari aliran data Kinesis (sumber) dan menulis output ke aliran data Kinesis lain. Jadi Anda melampirkan kebijakan yang Anda buat di langkah sebelumnya, [Buat Kebijakan Izin](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

   1. Pilih **Attach Policies** (Lampirkan Kebijakan).

   1. Di kotak pencarian, masukkan **AKReadSourceStreamWriteSinkStream** (kebijakan yang Anda buat bagian sebelumnya). 

   1. Pilih `AKReadSourceStreamWriteSinkStream` kebijakan, lalu pilih **Lampirkan kebijakan**.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Buat catatan ARN peran baru.

Untuk step-by-step petunjuk cara membuat peran, lihat [Membuat Peran IAM (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*.

##### Buat aplikasi
<a name="examples-tumbling-scala-create-application-cli"></a>

Simpan kode JSON berikut ke file bernama `create_request.json`. Ganti ARN peran sampel dengan ARN untuk peran yang Anda buat sebelumnya. Ganti bucket akhiran ARN (username) dengan akhiran yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (012345678901) di peran eksekusi layanan dengan ID akun Anda. `ServiceExecutionRole`Harus menyertakan peran pengguna IAM yang Anda buat di bagian sebelumnya.

```
"ApplicationName": "tumbling_window",
    "ApplicationDescription": "Scala getting started application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "tumbling-window-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleOutputStream"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Jalankan [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)dengan permintaan berikut untuk membuat aplikasi:

```
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
```

Aplikasi ini sekarang dibuat. Anda memulai aplikasi di langkah berikutnya.

##### Mulai aplikasi
<a name="examples-tumbling-scala-start"></a>

Di bagian ini, Anda menggunakan tindakan [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) untuk memulai aplikasi.

**Untuk memulai aplikasi**

1. Simpan kode JSON berikut ke file bernama `start_request.json`.

   ```
   {
       "ApplicationName": "tumbling_window",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Jalankan tindakan `StartApplication` dengan permintaan sebelumnya untuk memulai aplikasi:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

Aplikasi sekarang berjalan. Anda dapat memeriksa metrik Layanan Terkelola untuk Apache Flink di CloudWatch konsol Amazon untuk memverifikasi bahwa aplikasi berfungsi.

##### Hentikan aplikasi
<a name="examples-tumbling-scala-stop"></a>

Di bagian ini, Anda menggunakan tindakan [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) untuk menghentikan aplikasi.

**Untuk menghentikan aplikasi**

1. Simpan kode JSON berikut ke file bernama `stop_request.json`.

   ```
   {
      "ApplicationName": "tumbling_window"
   }
   ```

1. Jalankan `StopApplication` tindakan dengan permintaan sebelumnya untuk menghentikan aplikasi:

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

Aplikasi sekarang dihentikan.

##### Tambahkan opsi CloudWatch logging
<a name="examples-tumbling-scala-cw-option"></a>

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihat [Menyiapkan Pencatatan Aplikasi](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Perbarui properti lingkungan
<a name="examples-tumbling-scala-update-environment-properties"></a>

Di bagian ini, Anda menggunakan tindakan [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) untuk mengubah properti lingkungan untuk aplikasi tanpa mengompilasi ulang kode aplikasi. Dalam contoh ini, Anda mengubah Wilayah aliran sumber dan tujuan.

**Untuk memperbarui properti lingkungan untuk aplikasi**

1. Simpan kode JSON berikut ke file bernama `update_properties_request.json`.

   ```
   {"ApplicationName": "tumbling_window",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleInputStream",
                       "flink.stream.initpos" : "LATEST"
                  }
               },
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleOutputStream"
                  }
               }
            ]
         }
      }
   }
   ```

1. Jalankan tindakan `UpdateApplication` dengan permintaan sebelumnya untuk memperbarui properti lingkungan:

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Perbarui kode aplikasi
<a name="examples-tumbling-scala-update-app-code"></a>

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan tindakan [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**catatan**  
Untuk memuat versi baru kode aplikasi dengan nama file yang sama, Anda harus menentukan versi objek baru. Untuk informasi selengkapnya tentang menggunakan versi objek Amazon S3, lihat [Mengaktifkan dan Menonaktifkan Versioning](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggil`UpdateApplication`, tentukan bucket Amazon S3 dan nama objek yang sama, dan versi objek baru. Aplikasi akan memulai ulang dengan paket kode baru.

Permintaan sampel berikut untuk tindakan `UpdateApplication` memuat ulang kode aplikasi dan memulai ulang aplikasi. Perbarui `CurrentApplicationVersionId` ke versi aplikasi saat ini. Anda dapat memeriksa versi aplikasi saat ini menggunakan tindakan `ListApplications` atau `DescribeApplication`. Perbarui akhiran nama bucket (<username>) dengan akhiran yang Anda pilih di bagian. [Buat sumber daya yang bergantung](examples-gs-scala.md#examples-gs-scala-resources)

```
{
    "ApplicationName": "tumbling_window",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "tumbling-window-scala-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

##### Bersihkan AWS sumber daya
<a name="examples-tumbling-scala-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Tumbling Window.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-tumbling-scala-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-tumbling-scala-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#examples-tumbling-scala-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-tumbling-scala-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-tumbling-scala-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-tumbling-scala-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-tumbling-scala-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

##### Hapus objek dan ember Amazon S3 Anda
<a name="examples-tumbling-scala-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-tumbling-scala-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-tumbling-scala-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Contoh: Membuat jendela geser di Scala
<a name="examples-sliding-scala"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

**catatan**  
Mulai dari versi 1.15 Flink gratis Scala. Aplikasi sekarang dapat menggunakan Java API dari versi Scala apa pun. Flink masih menggunakan Scala di beberapa komponen kunci secara internal tetapi tidak mengekspos Scala ke dalam classloader kode pengguna. Karena itu, pengguna perlu menambahkan dependensi Scala ke dalam arsip jar mereka.  
Untuk informasi selengkapnya tentang perubahan Scala di Flink 1.15, lihat [Scala Free](https://flink.apache.org/2022/02/22/scala-free.html) in One Fifteen.

Dalam latihan ini, Anda akan membuat aplikasi streaming sederhana yang menggunakan Scala 3.2.0 dan Java API Flink. DataStream Aplikasi membaca data dari aliran Kinesis, menggabungkannya menggunakan jendela geser dan menulis hasil ke output Kinesis stream.

**catatan**  
Untuk mengatur prasyarat yang diperlukan untuk latihan ini, pertama-tama selesaikan latihan [Memulai (](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html)Scala). 

**Topics**
+ [Unduh dan periksa kode aplikasi](#examples-sliding-scala-download)
+ [Kompilasi dan unggah kode aplikasi](#examples-sliding-scala-upload)
+ [Buat dan jalankan aplikasi (konsol)](#scala-7)
+ [Membuat dan menjalankan aplikasi (CLI)](#examples-sliding-scala-create-run-cli)
+ [Perbarui kode aplikasi](#examples-sliding-scala-update-app-code)
+ [Bersihkan AWS sumber daya](#examples-sliding-scala-cleanup)

##### Unduh dan periksa kode aplikasi
<a name="examples-sliding-scala-download"></a>

Kode aplikasi Python untuk contoh ini tersedia dari. GitHub Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/scala/SlidingWindow` tersebut.

Perhatikan hal tentang kode aplikasi berikut:
+ `build.sbt`File berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.
+ `BasicStreamingJob.scala`File berisi metode utama yang mendefinisikan fungsionalitas aplikasi.
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  private def createSource: FlinkKinesisConsumer[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val inputProperties = applicationProperties.get("ConsumerConfigProperties")
  
    new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName),
      new SimpleStringSchema, inputProperties)
  }
  ```

  Aplikasi ini juga menggunakan sink Kinesis untuk menulis ke dalam aliran hasil. Cuplikan berikut membuat sink Kinesis:

  ```
  private def createSink: KinesisStreamsSink[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val outputProperties = applicationProperties.get("ProducerConfigProperties")
  
    KinesisStreamsSink.builder[String]
      .setKinesisClientProperties(outputProperties)
      .setSerializationSchema(new SimpleStringSchema)
      .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName))
      .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode))
      .build
  }
  ```
+ Aplikasi ini menggunakan operator jendela untuk menemukan jumlah nilai untuk setiap simbol saham selama jendela 10 detik yang meluncur 5 detik. Kode berikut membuat operator dan mengirimkan data agregat ke sink Kinesis Data Streams baru:

  ```
  environment.addSource(createSource)
      .map { value =>
        val jsonNode = jsonParser.readValue(value, classOf[JsonNode])
        new Tuple2[String, Double](jsonNode.get("ticker").toString, jsonNode.get("price").asDouble)
      }
      .returns(Types.TUPLE(Types.STRING, Types.DOUBLE))
      .keyBy(v => v.f0) // Logically partition the stream for each word
      .window(SlidingProcessingTimeWindows.of(Time.seconds(10), Time.seconds(5)))
      .min(1) // Calculate minimum price per ticker over the window
      .map { value => value.f0 + String.format(",%.2f", value.f1) + "\n" }
      .sinkTo(createSink)
  ```
+ Aplikasi ini membuat konektor sumber dan wastafel untuk mengakses sumber daya eksternal menggunakan StreamExecutionEnvironment objek.
+ Aplikasi ini membuat konektor sumber dan wastafel menggunakan properti aplikasi dinamis. Properti aplikasi runtime dibaca untuk mengkonfigurasi konektor. Untuk informasi selengkapnya tentang properti runtime, lihat Properti [Runtime](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Kompilasi dan unggah kode aplikasi
<a name="examples-sliding-scala-upload"></a>

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

**Kompilasi Kode Aplikasi**

Gunakan alat build [SBT](https://www.scala-sbt.org/) untuk membangun kode Scala untuk aplikasi. Untuk menginstal SBT, lihat [Menginstal sbt dengan pengaturan cs](https://www.scala-sbt.org/download.html). Anda juga perlu menginstal Java Development Kit (JDK). Lihat [Prasyarat untuk Menyelesaikan Latihan](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Untuk menggunakan kode aplikasi Anda, Anda mengompilasi dan mengemasnya ke dalam file JAR. Anda dapat mengkompilasi dan mengemas kode Anda dengan SBT:

   ```
   sbt assembly
   ```

1. Jika aplikasi berhasil mengompilasi, file berikut dibuat:

   ```
   target/scala-3.2.0/sliding-window-scala-1.0.jar
   ```

**Unggah Kode Scala Streaming Apache Flink**

Di bagian ini, Anda membuat bucket Amazon S3 dan mengunggah kode aplikasi Anda.

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

1. Pilih **Buat ember**

1. Masukkan `ka-app-code-<username>` di bidang **Bucket name** (Nama bucket). Tambahkan sufiks ke nama bucket, seperti nama pengguna Anda, untuk membuatnya unik secara global. Pilih **Berikutnya**.

1. Di **opsi Konfigurasi**, pertahankan pengaturan apa adanya, dan pilih **Berikutnya**.

1. Di **Setel izin**, pertahankan pengaturan apa adanya, dan pilih **Berikutnya**.

1. Pilih **Buat bucket**.

1. Pilih `ka-app-code-<username>` bucket, lalu pilih **Unggah**.

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `sliding-window-scala-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan aplikasi (konsol)
<a name="scala-7"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="scala-7-console-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My Scala test app**.
   + Untuk **Runtime**, pilih **Apache Flink**.
   + Tinggalkan versi sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurasikan aplikasi
<a name="scala-7-console-configure"></a>

Gunakan prosedur berikut untuk mengonfigurasi aplikasi.

**Untuk mengonfigurasi aplikasi**

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **sliding-window-scala-1.0.jar.**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup). 

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

   Pilih **Simpan**.

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup) lagi. 

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch pencatatan Amazon, Layanan Terkelola untuk Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`

##### Edit kebijakan IAM
<a name="scala-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin agar dapat mengakses bucket Amazon S3.

**Untuk mengedit kebijakan IAM agar dapat menambahkan izin bucket S3**

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/sliding-window-scala-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

##### Jalankan aplikasi
<a name="scala-7-console-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

##### Hentikan aplikasi
<a name="scala-7-console-stop"></a>

Untuk menghentikan aplikasi, pada **MyApplication**halaman, pilih **Berhenti**. Konfirmasikan tindakan.

##### Membuat dan menjalankan aplikasi (CLI)
<a name="examples-sliding-scala-create-run-cli"></a>

Di bagian ini, Anda menggunakan AWS Command Line Interface untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink. Gunakan AWS CLI perintah *kinesisanalyticsv2* untuk membuat dan berinteraksi dengan Managed Service untuk aplikasi Apache Flink.

##### Membuat kebijakan izin
<a name="examples-sliding-scala-permissions"></a>

**catatan**  
Anda harus membuat kebijakan izin dan peran untuk aplikasi Anda. Jika Anda tidak membuat sumber daya IAM ini, aplikasi Anda tidak dapat mengakses data dan aliran log. 

Pertama, Anda membuat kebijakan izin dengan dua pernyataan: satu yang memberikan izin untuk tindakan baca di aliran sumber, dan satu lagi yang memberikan izin untuk tindakan tulis di aliran sink. Anda selanjutnya melampirkan kebijakan ke IAM role (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin `AKReadSourceStreamWriteSinkStream`. Ganti **username** dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) **(012345678901)** dengan ID akun Anda.

```
{
    "ApplicationName": "sliding_window",
    "ApplicationDescription": "Scala sliding window application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "sliding-window-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleOutputStream"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Untuk step-by-step petunjuk membuat kebijakan izin, lihat [Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) di *Panduan Pengguna IAM*.

##### Membuat peran IAM
<a name="examples-sliding-scala-iam-policy"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh aplikasi Managed Service for Apache Flink untuk membaca aliran sumber dan menulis ke aliran sink.

Layanan Terkelola untuk Apache Flink tidak dapat mengakses aliran Anda tanpa izin. Anda memberikan izin ini melalui IAM role. Setiap IAM role memiliki dua kebijakan yang dilampirkan. Kebijakan kepercayaan memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran, dan kebijakan izin menentukan apa yang dapat dilakukan Layanan Terkelola untuk Apache Flink setelah mengambil peran.

Anda melampirkan kebijakan izin yang Anda buat di bagian sebelumnya ke peran ini. 

**Untuk membuat IAM role**

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

1. Di panel navigasi, pilih **Peran** dan kemudian **Buat Peran**.

1. Di bawah **Pilih jenis identitas tepercaya**, pilih **AWS Layanan**

1. Di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **Kinesis**.

1. Di bawah **Pilih kasus penggunaan Anda**, pilih **Layanan Terkelola untuk Apache Flink**.

1. Pilih **Berikutnya: Izin**.

1. Di halaman **Lampirkan kebijakan izin**, pilih **Next: Review** (Selanjutnya: Tinjau). Anda melampirkan kebijakan izin setelah Anda membuat peran tersebut.

1. Di halaman **Buat peran**, masukkan **MF-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran). 

    Sekarang Anda sudah membuat IAM role baru yang disebut `MF-stream-rw-role`. Selanjutnya, Anda memperbarui kebijakan kepercayaan dan izin untuk peran tersebut

1. Lampirkan kebijakan izin ke peran tersebut.
**catatan**  
Untuk latihan ini, Managed Service for Apache Flink mengasumsikan peran ini untuk membaca data dari aliran data Kinesis (sumber) dan menulis output ke aliran data Kinesis lain. Jadi Anda melampirkan kebijakan yang Anda buat di langkah sebelumnya, [Buat Kebijakan Izin](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

   1. Pilih **Attach Policies** (Lampirkan Kebijakan).

   1. Di kotak pencarian, masukkan **AKReadSourceStreamWriteSinkStream** (kebijakan yang Anda buat bagian sebelumnya). 

   1. Pilih `AKReadSourceStreamWriteSinkStream` kebijakan, lalu pilih **Lampirkan kebijakan**.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Buat catatan ARN peran baru.

Untuk step-by-step petunjuk cara membuat peran, lihat [Membuat Peran IAM (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*.

##### Buat aplikasi
<a name="examples-sliding-scala-create-application-cli"></a>

Simpan kode JSON berikut ke file bernama `create_request.json`. Ganti ARN peran sampel dengan ARN untuk peran yang Anda buat sebelumnya. Ganti bucket akhiran ARN (username) dengan akhiran yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (012345678901) di peran eksekusi layanan dengan ID akun Anda.

```
{
    "ApplicationName": "sliding_window",
    "ApplicationDescription": "Scala sliding_window application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "sliding-window-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleOutputStream"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Jalankan [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)dengan permintaan berikut untuk membuat aplikasi:

```
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
```

Aplikasi ini sekarang dibuat. Anda memulai aplikasi di langkah berikutnya.

##### Mulai aplikasi
<a name="examples-sliding-scala-start"></a>

Di bagian ini, Anda menggunakan tindakan [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) untuk memulai aplikasi.

**Untuk memulai aplikasi**

1. Simpan kode JSON berikut ke file bernama `start_request.json`.

   ```
   {
       "ApplicationName": "sliding_window",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Jalankan tindakan `StartApplication` dengan permintaan sebelumnya untuk memulai aplikasi:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

Aplikasi sekarang berjalan. Anda dapat memeriksa metrik Layanan Terkelola untuk Apache Flink di CloudWatch konsol Amazon untuk memverifikasi bahwa aplikasi berfungsi.

##### Hentikan aplikasi
<a name="examples-sliding-scala-stop"></a>

Di bagian ini, Anda menggunakan tindakan [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) untuk menghentikan aplikasi.

**Untuk menghentikan aplikasi**

1. Simpan kode JSON berikut ke file bernama `stop_request.json`.

   ```
   {
      "ApplicationName": "sliding_window"
   }
   ```

1. Jalankan `StopApplication` tindakan dengan permintaan sebelumnya untuk menghentikan aplikasi:

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

Aplikasi sekarang dihentikan.

##### Tambahkan opsi CloudWatch logging
<a name="examples-sliding-scala-cw-option"></a>

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihat [Menyiapkan Pencatatan Aplikasi](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Perbarui properti lingkungan
<a name="examples-sliding-scala-update-environment-properties"></a>

Di bagian ini, Anda menggunakan tindakan [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) untuk mengubah properti lingkungan untuk aplikasi tanpa mengompilasi ulang kode aplikasi. Dalam contoh ini, Anda mengubah Wilayah aliran sumber dan tujuan.

**Untuk memperbarui properti lingkungan untuk aplikasi**

1. Simpan kode JSON berikut ke file bernama `update_properties_request.json`.

   ```
   {"ApplicationName": "sliding_window",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleInputStream",
                       "flink.stream.initpos" : "LATEST"
                  }
               },
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleOutputStream"
                  }
               }
            ]
         }
      }
   }
   ```

1. Jalankan tindakan `UpdateApplication` dengan permintaan sebelumnya untuk memperbarui properti lingkungan:

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Perbarui kode aplikasi
<a name="examples-sliding-scala-update-app-code"></a>

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan tindakan [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**catatan**  
Untuk memuat versi baru kode aplikasi dengan nama file yang sama, Anda harus menentukan versi objek baru. Untuk informasi selengkapnya tentang menggunakan versi objek Amazon S3, lihat [Mengaktifkan dan Menonaktifkan Versioning](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggil`UpdateApplication`, tentukan bucket Amazon S3 dan nama objek yang sama, dan versi objek baru. Aplikasi akan memulai ulang dengan paket kode baru.

Permintaan sampel berikut untuk tindakan `UpdateApplication` memuat ulang kode aplikasi dan memulai ulang aplikasi. Perbarui `CurrentApplicationVersionId` ke versi aplikasi saat ini. Anda dapat memeriksa versi aplikasi saat ini menggunakan tindakan `ListApplications` atau `DescribeApplication`. Perbarui akhiran nama bucket (<username>) dengan akhiran yang Anda pilih di bagian. [Buat sumber daya yang bergantung](examples-gs-scala.md#examples-gs-scala-resources)

```
{
    "ApplicationName": "sliding_window",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

##### Bersihkan AWS sumber daya
<a name="examples-sliding-scala-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Jendela geser.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-sliding-scala-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-sliding-scala-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#examples-sliding-scala-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-sliding-scala-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-sliding-scala-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-sliding-scala-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-sliding-scala-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

##### Hapus objek dan ember Amazon S3 Anda
<a name="examples-sliding-scala-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-sliding-scala-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-sliding-scala-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.

#### Contoh: Kirim data streaming ke Amazon S3 di Scala
<a name="examples-s3sink-scala"></a>

**catatan**  
Untuk contoh saat ini, lihat[Contoh untuk membuat dan bekerja dengan Managed Service untuk aplikasi Apache Flink](examples-collapsibles.md).

**catatan**  
Mulai dari versi 1.15 Flink gratis Scala. Aplikasi sekarang dapat menggunakan Java API dari versi Scala apa pun. Flink masih menggunakan Scala di beberapa komponen kunci secara internal tetapi tidak mengekspos Scala ke dalam classloader kode pengguna. Karena itu, pengguna perlu menambahkan dependensi Scala ke dalam arsip jar mereka.  
Untuk informasi selengkapnya tentang perubahan Scala di Flink 1.15, lihat [Scala Free](https://flink.apache.org/2022/02/22/scala-free.html) in One Fifteen.

Dalam latihan ini, Anda akan membuat aplikasi streaming sederhana yang menggunakan Scala 3.2.0 dan Java API Flink. DataStream Aplikasi membaca data dari aliran Kinesis, menggabungkannya menggunakan jendela geser dan menulis hasil ke S3.

**catatan**  
Untuk mengatur prasyarat yang diperlukan untuk latihan ini, pertama-tama selesaikan latihan [Memulai (](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html)Scala). *Anda hanya perlu membuat folder tambahan **data/** di bucket ka-app-code Amazon S3 -.* <username> 

**Topics**
+ [Unduh dan periksa kode aplikasi](#examples-s3sink-scala-download)
+ [Kompilasi dan unggah kode aplikasi](#examples-s3sink-scala-upload)
+ [Buat dan jalankan aplikasi (konsol)](#scala-7)
+ [Membuat dan menjalankan aplikasi (CLI)](#examples-s3sink-scala-create-run-cli)
+ [Perbarui kode aplikasi](#examples-s3sink-scala-update-app-code)
+ [Bersihkan AWS sumber daya](#examples-s3sink-scala-cleanup)

##### Unduh dan periksa kode aplikasi
<a name="examples-s3sink-scala-download"></a>

Kode aplikasi Python untuk contoh ini tersedia dari. GitHub Untuk mengunduh kode aplikasi, lakukan hal berikut:

1. Instal klien Git jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat [Menginstal Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klon repositori jarak jauh dengan perintah berikut:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Buka direktori `amazon-kinesis-data-analytics-java-examples/scala/S3Sink` tersebut.

Perhatikan hal tentang kode aplikasi berikut:
+ `build.sbt`File berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.
+ `BasicStreamingJob.scala`File berisi metode utama yang mendefinisikan fungsionalitas aplikasi.
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut ini membuat sumber Kinesis:

  ```
  private def createSource: FlinkKinesisConsumer[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val inputProperties = applicationProperties.get("ConsumerConfigProperties")
  
    new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName),
      new SimpleStringSchema, inputProperties)
  }
  ```

  Aplikasi ini juga menggunakan a StreamingFileSink untuk menulis ke ember Amazon S3: `

  ```
  def createSink: StreamingFileSink[String] = {
    val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties
    val s3SinkPath = applicationProperties.get("ProducerConfigProperties").getProperty("s3.sink.path")
  
    StreamingFileSink
      .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder[String]("UTF-8"))
      .build()
  }
  ```
+ Aplikasi ini membuat konektor sumber dan wastafel untuk mengakses sumber daya eksternal menggunakan StreamExecutionEnvironment objek.
+ Aplikasi ini membuat konektor sumber dan wastafel menggunakan properti aplikasi dinamis. Properti aplikasi runtime dibaca untuk mengkonfigurasi konektor. Untuk informasi selengkapnya tentang properti runtime, lihat Properti [Runtime](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Kompilasi dan unggah kode aplikasi
<a name="examples-s3sink-scala-upload"></a>

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

**Kompilasi Kode Aplikasi**

Gunakan alat build [SBT](https://www.scala-sbt.org/) untuk membangun kode Scala untuk aplikasi. Untuk menginstal SBT, lihat [Menginstal sbt dengan pengaturan cs](https://www.scala-sbt.org/download.html). Anda juga perlu menginstal Java Development Kit (JDK). Lihat [Prasyarat untuk Menyelesaikan Latihan](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Untuk menggunakan kode aplikasi Anda, Anda mengompilasi dan mengemasnya ke dalam file JAR. Anda dapat mengkompilasi dan mengemas kode Anda dengan SBT:

   ```
   sbt assembly
   ```

1. Jika aplikasi berhasil mengompilasi, file berikut dibuat:

   ```
   target/scala-3.2.0/s3-sink-scala-1.0.jar
   ```

**Unggah Kode Scala Streaming Apache Flink**

Di bagian ini, Anda membuat bucket Amazon S3 dan mengunggah kode aplikasi Anda.

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

1. Pilih **Buat ember**

1. Masukkan `ka-app-code-<username>` di bidang **Bucket name** (Nama bucket). Tambahkan sufiks ke nama bucket, seperti nama pengguna Anda, untuk membuatnya unik secara global. Pilih **Berikutnya**.

1. Di **opsi Konfigurasi**, pertahankan pengaturan apa adanya, dan pilih **Berikutnya**.

1. Di **Setel izin**, pertahankan pengaturan apa adanya, dan pilih **Berikutnya**.

1. Pilih **Buat bucket**.

1. Pilih `ka-app-code-<username>` bucket, lalu pilih **Unggah**.

1. Di langkah **Pilih file**, pilih **Add files** (Tambahkan berkas). Navigasikan ke file `s3-sink-scala-1.0.jar` yang Anda buat di langkah sebelumnya. 

1. Anda tidak perlu mengubah pengaturan apa pun untuk objek, jadi pilih **Upload** (Unggah).

Kode aplikasi Anda sekarang disimpan di bucket Amazon S3 yang dapat diakses aplikasi Anda.

##### Buat dan jalankan aplikasi (konsol)
<a name="scala-7"></a>

Ikuti langkah-langkah ini untuk membuat, mengonfigurasi, memperbarui, dan menjalankan aplikasi menggunakan konsol.

##### Buat aplikasi
<a name="scala-7-console-create"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. Pada dashboard Managed Service for Apache Flink, pilih **Create Analytics** Application.

1. Pada **Layanan Terkelola untuk Apache Flink - Buat halaman aplikasi**, berikan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My java test app**.
   + Untuk **Runtime**, pilih **Apache Flink**.
   + Tinggalkan versi sebagai **Apache Flink versi 1.15.2 (Versi** yang disarankan).

1. Untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Buat/perbarui IAM role ).

1. Pilih **Create application** (Buat aplikasi).

**catatan**  
Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat peran dan kebijakan IAM untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. Sumber daya IAM ini diberi nama menggunakan nama aplikasi dan Wilayah sebagai berikut:  
Kebijakan: `kinesis-analytics-service-MyApplication-us-west-2`
Peran: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurasikan aplikasi
<a name="scala-7-console-configure"></a>

Gunakan prosedur berikut untuk mengonfigurasi aplikasi.

**Untuk mengonfigurasi aplikasi**

1. Pada **MyApplication**halaman, pilih **Konfigurasi**.

1. Di halaman **Konfigurasikan aplikasi**, berikan **Code location** (Lokasi kode):
   + Untuk **Bucket Amazon S3**, masukkan **ka-app-code-*<username>***.
   + Untuk **Jalur ke objek Amazon S3**, masukkan **s3-sink-scala-1.0.jar**.

1. Di bawah **Akses ke sumber daya aplikasi**, untuk **Access permissions** (Izin akses), pilih **Create / update IAM role `kinesis-analytics-MyApplication-us-west-2`** (Pilih/perbarui IAM role ).

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup). 

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

   Pilih **Simpan**.

1. Di bawah **Properties** (Properti), pilih **Add group** (Tambahkan grup). 

1. Masukkan yang berikut ini:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/earlier.html)

1. Di bawah **Pemantauan**, pastikan **Memantau tingkat metrik** diatur ke **Aplikasi**.

1. Untuk **CloudWatch logging**, pilih kotak centang **Aktifkan**.

1. Pilih **Perbarui**.

**catatan**  
Saat Anda memilih untuk mengaktifkan CloudWatch pencatatan Amazon, Layanan Terkelola untuk Apache Flink membuat grup log dan aliran log untuk Anda. Nama-nama sumber daya ini adalah sebagai berikut:   
Grup log: `/aws/kinesis-analytics/MyApplication`
Aliran log: `kinesis-analytics-log-stream`

##### Edit kebijakan IAM
<a name="scala-7-console-iam"></a>

Edit kebijakan IAM untuk menambahkan izin agar dapat mengakses bucket Amazon S3.

**Untuk mengedit kebijakan IAM agar dapat menambahkan izin bucket S3**

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

1. Pilih **Policies** (Kebijakan). Pilih kebijakan **`kinesis-analytics-service-MyApplication-us-west-2`** yang dibuat konsol untuk Anda di bagian sebelumnya. 

1. Di halaman **Ringkasan**, pilih **Edit policy** (Edit kebijakan). Pilih tab **JSON**.

1. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (*012345678901*) dengan ID akun Anda.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadCode",
               "Effect": "Allow",
               "Action": [
                   "s3:Abort*", 
                   "s3:DeleteObject*", 
                   "s3:GetObject*", 
                   "s3:GetBucket*", 
                   "s3:List*", 
                   "s3:ListBucket", 
                   "s3:PutObject"
               ],
               "Resource": [ 
                   "arn:aws:s3:::ka-app-code-<username>", 
                   "arn:aws:s3:::ka-app-code-<username>/*" 
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           }
       ]
   }
   ```

------

##### Jalankan aplikasi
<a name="scala-7-console-run"></a>

Grafik pekerjaan Flink dapat dilihat dengan menjalankan aplikasi, membuka dasbor Apache Flink, dan memilih pekerjaan Flink yang diinginkan.

##### Hentikan aplikasi
<a name="scala-7-console-stop"></a>

Untuk menghentikan aplikasi, pada **MyApplication**halaman, pilih **Berhenti**. Konfirmasikan tindakan.

##### Membuat dan menjalankan aplikasi (CLI)
<a name="examples-s3sink-scala-create-run-cli"></a>

Di bagian ini, Anda menggunakan AWS Command Line Interface untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink. Gunakan AWS CLI perintah *kinesisanalyticsv2* untuk membuat dan berinteraksi dengan Managed Service untuk aplikasi Apache Flink.

##### Membuat kebijakan izin
<a name="examples-s3sink-scala-permissions"></a>

**catatan**  
Anda harus membuat kebijakan izin dan peran untuk aplikasi Anda. Jika Anda tidak membuat sumber daya IAM ini, aplikasi Anda tidak dapat mengakses data dan aliran log. 

Pertama, Anda membuat kebijakan izin dengan dua pernyataan: satu yang memberikan izin untuk tindakan baca di aliran sumber, dan satu lagi yang memberikan izin untuk tindakan tulis di aliran sink. Anda selanjutnya melampirkan kebijakan ke IAM role (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin `AKReadSourceStreamWriteSinkStream`. Ganti **username** dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) **(012345678901)** dengan ID akun Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadCode",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::ka-app-code-username/getting-started-scala-1.0.jar"
            ]
        },
        {
            "Sid": "DescribeLogGroups",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:*"
            ]
        },
        {
            "Sid": "DescribeLogStreams",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
            ]
        },
        {
            "Sid": "PutLogEvents",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:123456789012:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:123456789012:stream/ExampleOutputStream"
        }
    ]
}
```

------

Untuk step-by-step petunjuk membuat kebijakan izin, lihat [Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) di *Panduan Pengguna IAM*.

##### Membuat peran IAM
<a name="examples-s3sink-scala-iam-policy"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh aplikasi Managed Service for Apache Flink untuk membaca aliran sumber dan menulis ke aliran sink.

Layanan Terkelola untuk Apache Flink tidak dapat mengakses aliran Anda tanpa izin. Anda memberikan izin ini melalui IAM role. Setiap IAM role memiliki dua kebijakan yang dilampirkan. Kebijakan kepercayaan memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran, dan kebijakan izin menentukan apa yang dapat dilakukan Layanan Terkelola untuk Apache Flink setelah mengambil peran.

Anda melampirkan kebijakan izin yang Anda buat di bagian sebelumnya ke peran ini. 

**Untuk membuat IAM role**

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

1. Di panel navigasi, pilih **Peran** dan kemudian **Buat Peran**.

1. Di bawah **Pilih jenis identitas tepercaya**, pilih **AWS Layanan**

1. Di bawah **Pilih layanan yang akan menggunakan peran ini**, pilih **Kinesis**.

1. Di bawah **Pilih kasus penggunaan Anda**, pilih **Layanan Terkelola untuk Apache Flink**.

1. Pilih **Berikutnya: Izin**.

1. Di halaman **Lampirkan kebijakan izin**, pilih **Next: Review** (Selanjutnya: Tinjau). Anda melampirkan kebijakan izin setelah Anda membuat peran tersebut.

1. Di halaman **Buat peran**, masukkan **MF-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran). 

    Sekarang Anda sudah membuat IAM role baru yang disebut `MF-stream-rw-role`. Selanjutnya, Anda memperbarui kebijakan kepercayaan dan izin untuk peran tersebut

1. Lampirkan kebijakan izin ke peran tersebut.
**catatan**  
Untuk latihan ini, Managed Service for Apache Flink mengasumsikan peran ini untuk membaca data dari aliran data Kinesis (sumber) dan menulis output ke aliran data Kinesis lain. Jadi Anda melampirkan kebijakan yang Anda buat di langkah sebelumnya, [Buat Kebijakan Izin](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

   1. Pilih **Attach Policies** (Lampirkan Kebijakan).

   1. Di kotak pencarian, masukkan **AKReadSourceStreamWriteSinkStream** (kebijakan yang Anda buat bagian sebelumnya). 

   1. Pilih `AKReadSourceStreamWriteSinkStream` kebijakan, lalu pilih **Lampirkan kebijakan**.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Buat catatan ARN peran baru.

Untuk step-by-step petunjuk cara membuat peran, lihat [Membuat Peran IAM (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) di *Panduan Pengguna IAM*.

##### Buat aplikasi
<a name="examples-s3sink-scala-create-application-cli"></a>

Simpan kode JSON berikut ke file bernama `create_request.json`. Ganti ARN peran sampel dengan ARN untuk peran yang Anda buat sebelumnya. Ganti bucket akhiran ARN (username) dengan akhiran yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (012345678901) di peran eksekusi layanan dengan ID akun Anda.

```
{
    "ApplicationName": "s3_sink",
    "ApplicationDescription": "Scala tumbling window application",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "s3-sink-scala-1.0.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        },
        "EnvironmentProperties":  { 
         "PropertyGroups": [ 
            { 
               "PropertyGroupId": "ConsumerConfigProperties",
               "PropertyMap" : {
                    "aws.region" : "us-west-2",
                    "stream.name" : "ExampleInputStream",
                    "flink.stream.initpos" : "LATEST"
               }
            },
            { 
               "PropertyGroupId": "ProducerConfigProperties",
               "PropertyMap" : {
                    "s3.sink.path" : "s3a://ka-app-code-<username>/data"
               }
            }
         ]
      }
    },
    "CloudWatchLoggingOptions": [ 
      { 
         "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream"
      }
   ]
}
```

Jalankan [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)dengan permintaan berikut untuk membuat aplikasi:

```
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
```

Aplikasi ini sekarang dibuat. Anda memulai aplikasi di langkah berikutnya.

##### Mulai aplikasi
<a name="examples-s3sink-scala-start"></a>

Di bagian ini, Anda menggunakan tindakan [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) untuk memulai aplikasi.

**Untuk memulai aplikasi**

1. Simpan kode JSON berikut ke file bernama `start_request.json`.

   ```
   {{
       "ApplicationName": "s3_sink",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Jalankan tindakan `StartApplication` dengan permintaan sebelumnya untuk memulai aplikasi:

   ```
   aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
   ```

Aplikasi sekarang berjalan. Anda dapat memeriksa metrik Layanan Terkelola untuk Apache Flink di CloudWatch konsol Amazon untuk memverifikasi bahwa aplikasi berfungsi.

##### Hentikan aplikasi
<a name="examples-s3sink-scala-stop"></a>

Di bagian ini, Anda menggunakan tindakan [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) untuk menghentikan aplikasi.

**Untuk menghentikan aplikasi**

1. Simpan kode JSON berikut ke file bernama `stop_request.json`.

   ```
   {
      "ApplicationName": "s3_sink"
   }
   ```

1. Jalankan `StopApplication` tindakan dengan permintaan sebelumnya untuk menghentikan aplikasi:

   ```
   aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
   ```

Aplikasi sekarang dihentikan.

##### Tambahkan opsi CloudWatch logging
<a name="examples-s3sink-scala-cw-option"></a>

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihat [Menyiapkan Pencatatan Aplikasi](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Perbarui properti lingkungan
<a name="examples-s3sink-scala-update-environment-properties"></a>

Di bagian ini, Anda menggunakan tindakan [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) untuk mengubah properti lingkungan untuk aplikasi tanpa mengompilasi ulang kode aplikasi. Dalam contoh ini, Anda mengubah Wilayah aliran sumber dan tujuan.

**Untuk memperbarui properti lingkungan untuk aplikasi**

1. Simpan kode JSON berikut ke file bernama `update_properties_request.json`.

   ```
   {"ApplicationName": "s3_sink",
      "CurrentApplicationVersionId": 1,
      "ApplicationConfigurationUpdate": { 
         "EnvironmentPropertyUpdates": { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2",
                       "stream.name" : "ExampleInputStream",
                       "flink.stream.initpos" : "LATEST"
                  }
               },
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "s3.sink.path" : "s3a://ka-app-code-<username>/data"
                  }
               }
            ]
         }
      }
   }
   ```

1. Jalankan tindakan `UpdateApplication` dengan permintaan sebelumnya untuk memperbarui properti lingkungan:

   ```
   aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
   ```

##### Perbarui kode aplikasi
<a name="examples-s3sink-scala-update-app-code"></a>

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan tindakan [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**catatan**  
Untuk memuat versi baru kode aplikasi dengan nama file yang sama, Anda harus menentukan versi objek baru. Untuk informasi selengkapnya tentang menggunakan versi objek Amazon S3, lihat [Mengaktifkan dan Menonaktifkan Versioning](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggil`UpdateApplication`, tentukan bucket Amazon S3 dan nama objek yang sama, dan versi objek baru. Aplikasi akan memulai ulang dengan paket kode baru.

Permintaan sampel berikut untuk tindakan `UpdateApplication` memuat ulang kode aplikasi dan memulai ulang aplikasi. Perbarui `CurrentApplicationVersionId` ke versi aplikasi saat ini. Anda dapat memeriksa versi aplikasi saat ini menggunakan tindakan `ListApplications` atau `DescribeApplication`. Perbarui akhiran nama bucket (<username>) dengan akhiran yang Anda pilih di bagian. [Buat sumber daya yang bergantung](examples-gs-scala.md#examples-gs-scala-resources)

```
{
    "ApplicationName": "s3_sink",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username",
                    "FileKeyUpdate": "s3-sink-scala-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

##### Bersihkan AWS sumber daya
<a name="examples-s3sink-scala-cleanup"></a>

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang dibuat dalam tutorial Tumbling Window.

**Topics**
+ [Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink](#examples-s3sink-scala-cleanup-app)
+ [Hapus aliran data Kinesis Anda](#examples-s3sink-scala-cleanup-stream)
+ [Hapus objek dan ember Amazon S3 Anda](#examples-s3sink-scala-cleanup-s3)
+ [Hapus sumber daya IAM Anda](#examples-s3sink-scala-cleanup-iam)
+ [Hapus CloudWatch sumber daya Anda](#examples-s3sink-scala-cleanup-cw)

##### Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="examples-s3sink-scala-cleanup-app"></a>

1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon MSF di /flink. https://console.aws.amazon.com

1. di panel Managed Service for Apache Flink, pilih. **MyApplication**

1. Di halaman aplikasi, pilih **Delete** (Hapus), lalu konfirmasikan penghapusan.

##### Hapus aliran data Kinesis Anda
<a name="examples-s3sink-scala-cleanup-stream"></a>

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

1. Di panel Kinesis Data Streams, pilih. **ExampleInputStream**

1. Di **ExampleInputStream**halaman, pilih **Hapus Stream Kinesis** dan kemudian konfirmasikan penghapusan.

1. Di halaman **Kinesis streams**, pilih, pilih **Tindakan **ExampleOutputStream****, pilih **Hapus**, lalu konfirmasikan penghapusan.

##### Hapus objek dan ember Amazon S3 Anda
<a name="examples-s3sink-scala-cleanup-s3"></a>

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

1. Pilih **ka-app-code- *<username>* ember.**

1. Pilih **Delete** (Hapus), lalu masukkan nama bucket untuk mengonfirmasi penghapusan.

##### Hapus sumber daya IAM Anda
<a name="examples-s3sink-scala-cleanup-iam"></a>

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

1. Di bilah navigasi, pilih **Policies** (Kebijakan).

1. Di kontrol filter, masukkan **kinesis**.

1. Pilih kebijakan **kinesis-analytics-service- MyApplication -us-west-2**.

1. Pilih **Policy Actions** (Tindakan Kebijakan), lalu pilih **Delete** (Hapus).

1. Di bilah navigasi, pilih **Roles** (Peran).

1. Pilih peran **kinesis-analytics- -us-west-2**. MyApplication

1. Pilih **Delete role** (Hapus peran), lalu konfirmasi penghapusan.

##### Hapus CloudWatch sumber daya Anda
<a name="examples-s3sink-scala-cleanup-cw"></a>

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

1. Di bilah navigasi, pilih **Logs**.

1. Pilih grup**/aws/kinesis-analytics/MyApplication**log.

1. Pilih **Delete Log Group** (Hapus Grup Log), lalu konfirmasi penghapusan.