

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

# Versi Apache Flink yang didukung dan tidak digunakan lagi
<a name="release-version-list"></a>

Topik ini berisi informasi tentang versi Apache Flink yang didukung di Managed Service for Apache Flink. Topik ini juga mencantumkan fitur Apache Flink yang didukung di setiap rilis.

**catatan**  
Jika Anda menggunakan versi Apache Flink yang tidak digunakan lagi, sebaiknya Anda meng-upgrade aplikasi Anda ke versi Flink terbaru yang didukung menggunakan [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md) fitur di Managed Service for Apache Flink.


| Versi Apache Flink | Status - Layanan Dikelola Amazon untuk Apache Flink | Status - komunitas Apache Flink | Tautan | Catatan | 
| --- | --- | --- | --- | --- | 
| 2.2.0 | Didukung | Didukung | [Layanan Dikelola Amazon untuk Apache Flink 2.2](flink-2-2.md) | Ini adalah versi utama dengan perubahan yang melanggar. Lihat [Melanggar perubahan dan penghentian](flink-2-2.md#flink-2-2-breaking-changes) sebelum melanjutkan. | 
| 1.20.0 | Didukung | Didukung | [Layanan Dikelola Amazon untuk Apache Flink 1.20](flink-1-20.md) |  | 
| 1.19.1 | Didukung | Didukung | [Layanan Dikelola Amazon untuk Apache Flink 1.19](flink-1-19.md) |  | 
| 1.18.1 | Didukung | Tidak didukung | [Layanan Dikelola Amazon untuk Apache Flink 1.18](flink-1-18.md) |  | 
| 1.15.2 | Didukung | Tidak didukung | [Layanan Dikelola Amazon untuk Apache Flink 1.15](flink-1-15-2.md) |  | 
| 1.13.1 | Mencela | Tidak didukung | [Memulai: Flink 1.13.2](earlier.md#getting-started-1-13) | Dukungan untuk versi ini di Amazon Managed Service untuk Apache Flink akan berakhir pada 16 Oktober 2025. | 
| 1.11.1 | Mencela | Tidak didukung | [Informasi versi sebelumnya untuk Managed Service untuk Apache Flink](earlier.md)(Versi ini tidak akan didukung mulai Februari 2025) |  Kami berencana untuk mengakhiri dukungan untuk Apache Flink versi 1.6, 1.8, dan 1.11 di Amazon Managed Service untuk Apache Flink. Mulai 14 Juli 2025, kami akan menempatkan aplikasi yang menggunakan versi ini ke dalam status READY. Mulai 28 Juli 2025, Anda tidak akan dapat MEMULAI aplikasi menggunakan versi ini. Kami menyarankan Anda sekarang segera meningkatkan aplikasi Anda ke Flink versi 1.20 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).  | 
| 1.8.2 | Mencela | Tidak didukung | [Informasi versi sebelumnya untuk Managed Service untuk Apache Flink](earlier.md)(Versi ini tidak akan didukung mulai Februari 2025) |  Kami berencana untuk mengakhiri dukungan untuk Apache Flink versi 1.6, 1.8, dan 1.11 di Amazon Managed Service untuk Apache Flink. Mulai 14 Juli 2025, kami akan menempatkan aplikasi yang menggunakan versi ini ke dalam status READY. Mulai 28 Juli 2025, Anda tidak akan dapat MEMULAI aplikasi menggunakan versi ini. Kami menyarankan Anda sekarang segera meningkatkan aplikasi Anda ke Flink versi 1.20 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). | 
| 1.6.2 | Mencela | Tidak didukung | [Informasi versi sebelumnya untuk Managed Service untuk Apache Flink](earlier.md)(Versi ini tidak akan didukung mulai Februari 2025) |  Kami berencana untuk mengakhiri dukungan untuk Apache Flink versi 1.6, 1.8, dan 1.11 di Amazon Managed Service untuk Apache Flink. Mulai 14 Juli 2025, kami akan menempatkan aplikasi yang menggunakan versi ini ke dalam status READY. Mulai 28 Juli 2025, Anda tidak akan dapat MEMULAI aplikasi menggunakan versi ini. Kami menyarankan Anda sekarang segera meningkatkan aplikasi Anda ke Flink versi 1.20 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).  | 

**Topics**
+ [Layanan Dikelola Amazon untuk Apache Flink 2.2](flink-2-2.md)
+ [Layanan Dikelola Amazon untuk Apache Flink 1.20](flink-1-20.md)
+ [Layanan Dikelola Amazon untuk Apache Flink 1.19](flink-1-19.md)
+ [Layanan Dikelola Amazon untuk Apache Flink 1.18](flink-1-18.md)
+ [Layanan Dikelola Amazon untuk Apache Flink 1.15](flink-1-15-2.md)
+ [Informasi versi sebelumnya untuk Managed Service untuk Apache Flink](earlier.md)

# Layanan Dikelola Amazon untuk Apache Flink 2.2
<a name="flink-2-2"></a>

Amazon Managed Service untuk Apache Flink sekarang mendukung Apache Flink versi 2.2. Ini adalah upgrade versi utama pertama untuk layanan ini. Halaman ini mencakup kemampuan yang diperkenalkan di Flink 2.2, bersama dengan pertimbangan penting untuk meningkatkan dari Flink 1.x.

**catatan**  
Flink 2.2 memperkenalkan perubahan yang melanggar yang membutuhkan perencanaan yang matang. Tinjau daftar lengkap perubahan dan penghentian yang melanggar di bawah ini dan [Panduan kompatibilitas status untuk peningkatan Flink 2.2](state-compatibility.md) sebelum memutakhirkan dari 1.x.

## Apa yang baru di Amazon Managed Service for Apache Flink 2.2
<a name="flink-2-2-whats-new"></a>

Amazon Managed Service untuk Apache Flink 2.2 memperkenalkan perubahan perilaku yang dapat merusak aplikasi yang ada saat upgrade. Tinjau ini dengan hati-hati di samping perubahan Flink API di bagian berikutnya.

**Penanganan Konfigurasi Terprogram**
+ MSF Flink 2.2 sekarang melaporkan pengecualian ketika pelanggan mencoba memodifikasi konfigurasi yang tidak didukung oleh MSF melalui atau serupa. `env.getConfig().set()` APIs Lihat [Properti konfigurasi Flink terprogram](programmatic-configuration.md).
+ Pelanggan masih dapat meminta untuk mengubah konfigurasi tertentu melalui tiket dukungan (lihat Pengaturan yang Dapat [Dimodifikasi](https://docs.aws.amazon.com/managed-flink/latest/java/reference-modifiable-settings.html))

**Penghapusan Metrik**
+ `fullRestarts`Metrik telah dihapus di Flink 2.2. Gunakan `numRestarts` metrik sebagai gantinya.
+ `bytesRequestedPerFetch`Metrik untuk konektor KDS telah dihapus di konektor Flink versi 6.0.0 (hanya versi AWS konektor yang kompatibel dengan Flink 2.2).
+ `downtime`Metrik `uptime` dan keduanya ditandai sebagai usang di Flink 2.2 dan akan segera dihapus. Ganti `uptime` dengan metrik baru`runningTime`. Ganti `downtime` dengan satu atau lebih dari`restartingTime`,`cancellingTime`, dan`failingTime`.
+ Lihat [halaman Metrik dan Dimensi](https://docs.aws.amazon.com/managed-flink/latest/java/metrics-dimensions.html) untuk daftar lengkap metrik yang didukung.

**Panggilan IMDS Non-Kredenal Diblokir**
+ Titik akhir yang diizinkan ini digunakan oleh AWS SDK **DefaultCredentialsProvider**(`/latest/meta-data/iam/security-credentials/`) dan **DefaultAwsRegionProviderChain**(`/latest/dynamic/instance-identity/document`) untuk mengonfigurasi kredensil dan wilayah secara otomatis untuk aplikasi Anda.
+ Aplikasi yang menggunakan fungsi AWS SDK yang mengandalkan panggilan IMDS non-kredensi (seperti`EC2MetadataUtils.getInstanceId()`,, `EC2MetadataUtils.getInstanceType()``EC2MetadataUtils.getLocalHostName()`, atau`EC2MetadataUtils.getAvailabilityZone()`) akan menerima kesalahan HTTP 4xx saat mencoba panggilan ini.
+ Jika aplikasi Anda menggunakan IMDS misalnya metadata atau informasi lain di luar jalur yang diizinkan, refactor kode Anda untuk menggunakan variabel lingkungan atau konfigurasi aplikasi sebagai gantinya.

**Sistem File Root Hanya Baca**
+ Untuk meningkatkan keamanan, ketergantungan apa pun di luar `/tmp` yang merupakan direktori kerja flink default akan menghasilkan:. `java.io.FileNotFoundException: /{path}/{filename} (Read-only file system)`
+ Dependensi sistem file dapat berasal langsung dari kode Anda atau secara tidak langsung dari pustaka yang disertakan dalam dependensi Anda. Ganti dependensi sistem file langsung ke dalam kode Anda. `/tmp/` Untuk dependensi sistem file tidak langsung dari pustaka, gunakan penggantian konfigurasi pustaka untuk mengarahkan operasi sistem file ke. `/tmp/`

## Melanggar perubahan dan penghentian
<a name="flink-2-2-breaking-changes"></a>

Di bawah ini adalah ringkasan perubahan dan penghentian yang melanggar yang diperkenalkan di Managed Service untuk Apache Flink 2.2. Lihat Catatan Rilis [Apache Flink 2.0 untuk catatan rilis](https://nightlies.apache.org/flink/flink-docs-stable/release-notes/flink-2.0/) lengkap Apache Flink 2.0 yang memperkenalkan perubahan yang melanggar ini.

**DataSet API Dihapus**
+  DataSet API lama untuk pemrosesan batch telah sepenuhnya dihapus di Flink 2.0\$1. Semua pemrosesan batch sekarang harus menggunakan DataStream API terpadu.
+ Aplikasi yang menggunakan DataSet API harus dimigrasikan ke DataStream API sebelum melakukan upgrade. Lihat [panduan migrasi Apache Flink untuk konversi DataSet DataStream](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/dataset_migration/)

**Java 11 dan Python 3.8 Dihapus**
+ Dukungan Java 11 sepenuhnya dihapus; Java 17 adalah runtime default dan direkomendasikan.
+ Dukungan Python 3.8 dihapus; Python 3.12 sekarang default.

**Kelas Konektor Legacy Dihapus**
+ Warisan `SourceFunction` dan `SinkFunction` antarmuka telah digantikan oleh Sumber terpadu baru (FLIP-27) dan Sink (FLIP-143), yang memberikan dukungan yang lebih baik untuk bounded/unbounded dualitas, peningkatan koordinasi pos pemeriksaan APIs, dan model pemrograman yang lebih bersih.
+ Untuk Kinesis Data Streams`KinesisStreamsSource`, `KinesisStreamsSink` gunakan dan dari. `flink-connector-aws-kinesis-streams:6.0.0-2.0`

**Scala API dihapus**
+ Flink Scala API telah dihapus. API Java Flink sekarang menjadi API tunggal yang didukung untuk aplikasi berbasis JVM.
+ Jika aplikasi Anda ditulis dalam Scala, Anda masih dapat menggunakan API Java Flink dari kode Scala — perubahan utamanya adalah pembungkus khusus Scala dan konversi implisit tidak lagi tersedia. Lihat [Memutakhirkan Aplikasi dan Versi Flink](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/upgrading/) untuk detail tentang memperbarui aplikasi Scala Anda.

**Pertimbangan Kompatibilitas Negara**
+ Kryo serializer yang ditingkatkan dari versi 2.24 ke 5.6 dapat menyebabkan masalah kompatibilitas status.
+ POJOs dengan koleksi (`HashMap`,`ArrayList`,`HashSet`) mungkin memiliki masalah kompatibilitas status.
+ Serialisasi Avro dan Protobuf tidak terpengaruh.
+ Lihat penilaian terperinci [Panduan kompatibilitas status untuk peningkatan Flink 2.2](state-compatibility.md) untuk menilai tingkat risiko aplikasi Anda.

## Fitur Apache Flink 2.2 didukung
<a name="flink-2-2-supported-features"></a>

**Runtime dan dukungan bahasa**


****  

| Fitur | Deskripsi | Dokumentasi | 
| --- | --- | --- | 
| Java 17 Runtime | Java 17 sekarang menjadi runtime default dan direkomendasikan; Dukungan Java 11 dihapus. | [Kompatibilitas Java](https://nightlies.apache.org/flink/flink-docs-stable/zh/docs/deployment/java_compatibility/) | 
| Dukungan Python 3.12 | Python 3.12 sekarang didukung; Dukungan Python 3.8 dihapus. | [PyFlink Dokumentasi](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/python/overview/) | 

**Manajemen dan kinerja negara**


****  

| Fitur | Deskripsi | Dokumentasi | 
| --- | --- | --- | 
| RocksDB 8.10.0 | Peningkatan I/O kinerja dengan upgrade RocksDB. | [Backend Negara](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/state/state_backends/) | 
| Perbaikan Serialisasi | Serializer khusus untuk Peta, Daftar, Set; Kryo ditingkatkan dari 2,24 menjadi 5,6. | [Jenis Serialisasi](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/fault-tolerance/serialization/types_serialization/) | 

**Fitur SQL dan Table API**


****  

| Fitur | Deskripsi | Dokumentasi | 
| --- | --- | --- | 
| VARIANT Tipe Data | Dukungan asli untuk data semi-terstruktur (JSON) tanpa penguraian string berulang. | [Tipe Data](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/types/) | 
| Delta Bergabung | Mengurangi persyaratan status untuk streaming bergabung dengan hanya mempertahankan versi terbaru dari setiap kunci; membutuhkan infrastruktur yang dikelola pelanggan (misalnya, Apache Fluss). | [Bergabung](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/queries/joins/) | 
| StreamingMultiJoinOperator | Mengeksekusi gabungan multi-arah sebagai operator tunggal, menghilangkan materialisasi menengah. | [FLIP-516](https://cwiki.apache.org/confluence/display/FLINK/FLIP-516) | 
| ProcessTableFunction (PTF) | Mengaktifkan logika stateful dan berbasis peristiwa secara langsung di SQL dengan status dan timer per kunci. | [Fungsi yang Ditetapkan Pengguna](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/functions/udfs/) | 
| Fungsi ML\$1PREDICT | Panggil model ML terdaftar pada streaming/batch tabel langsung dari SQL. Membutuhkan pelanggan untuk menggabungkan ModelProvider implementasi (misalnya,flink-model-openai). ModelProvider pustaka tidak dikirimkan oleh Managed Service untuk Apache Flink. | [Prediksi ML](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/queries/model-inference/) | 
| Model DDL | Tentukan model ML sebagai objek katalog kelas satu menggunakan pernyataan CREATE MODEL. | [BUAT Pernyataan](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/create/#create-model) | 
| Pencarian Vektor | Flink SQL API mendukung pencarian database vektor. Tidak ada VectorSearchTableSource implementasi open source saat ini tersedia; pelanggan harus menyediakan implementasi mereka sendiri. | [Flink SQL](https://nightlies.apache.org/flink/flink-docs-stable/release-notes/flink-2.2/#support-vector_search-in-flink-sql) | 

**DataStream Fitur API**


****  

| Fitur | Deskripsi | Dokumentasi | 
| --- | --- | --- | 
| API Sumber FLIP-27 | Antarmuka sumber terpadu baru menggantikan warisan SourceFunction. | [Sumber](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/sources/) | 
| API Wastafel FLIP-143 | Antarmuka wastafel terpadu baru menggantikan warisan SinkFunction. | [Wastafel](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/sinks/) | 
| Python Asinkron DataStream |  I/O Operasi non-pemblokiran di DataStream Python API menggunakan. AsyncFunction | [Asinkron I/O](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/python/datastream/operators/async_io/) | 

## Ketersediaan konektor
<a name="flink-2-2-connectors"></a>

Saat memutakhirkan ke Flink 2.2, Anda juga perlu memperbarui dependensi konektor Anda ke versi yang kompatibel dengan runtime Flink 2.2. Konektor Flink dilepaskan secara independen dari runtime Flink, dan belum semua konektor memiliki rilis yang kompatibel dengan Flink 2.2. Tabel berikut merangkum ketersediaan konektor yang umum digunakan di Amazon Managed Service untuk Apache Flink:


**Ketersediaan konektor untuk Flink 2.2**  

| Konektor | Versi Flink 1.20 | Flink 2.0\$1 Versi | Catatan | 
| --- | --- | --- | --- | 
| Apache Kafka | flink-connector-kafka 3.4.0-1.20 | flink-connector-kafka 4.0.0-2.0 | Direkomendasikan untuk Flink 2.2 | 
| Kinesis Data Streams (sumber) | flink-connector-kinesis 5.0.0-1.20 | flink-connector-aws-kinesis-aliran 6.0.0-2.0 | Direkomendasikan untuk Flink 2.2 | 
| Kinesis Data Streams (wastafel) | flink-connector-aws-kinesis-aliran 5.1.0-1.20 | flink-connector-aws-kinesis-aliran 6.0.0-2.0 | Direkomendasikan untuk Flink 2.2 | 
| Amazon Data Firehose | flink-connector-aws-kinesis-firehose 5.1.0-1.20 | flink-connector-aws-kinesis-firehose 6.0.0-2.0 | Kompatibel dengan Flink 2.0 | 
| Amazon DynamoDB | flink-connector-dynamodb 5.1.0-1.20 | flink-connector-dynamodb 6.0.0-2.0 | Kompatibel dengan Flink 2.0 | 
| Amazon SQS | flink-connector-sqs 5.1.0-1.20 | flink-connector-sqs 6.0.0-2.0 | Kompatibel dengan Flink 2.0 | 
| FileSystem (S3, HDFS) | Dibundel dengan Flink | Dibundel dengan Flink | Dibangun ke dalam distribusi Flink - selalu tersedia | 
| JDBC | flink-connector-jdbc 3.3.0-1.20 | Belum dirilis untuk 2.x | Tidak ada rilis yang kompatibel dengan Flink 2.x | 
| OpenSearch | flink-connector-opensearch 1.2.0-1.19 | Belum dirilis untuk 2.x | Tidak ada rilis yang kompatibel dengan Flink 2.x | 
| Elasticsearch | Hanya konektor lama | Belum dirilis untuk 2.x | Pertimbangkan untuk bermigrasi ke konektor OpenSearch  | 
| Amazon Managed Service for Prometheus | flink-connector-prometheus 1.0.0-1.20 | Belum dirilis untuk 2.x | Tidak ada rilis yang kompatibel dengan Flink 2.x | 
+ Jika aplikasi Anda bergantung pada konektor yang belum memiliki rilis Flink 2.x, Anda memiliki dua opsi: tunggu konektor merilis versi yang kompatibel, atau evaluasi apakah Anda dapat menggantinya dengan alternatif (misalnya, menggunakan katalog JDBC atau wastafel khusus).
+ Saat memperbarui versi konektor, perhatikan perubahan nama artefak - beberapa konektor diganti namanya di antara versi utama (misalnya, konektor Firehose berubah dari `flink-connector-aws-kinesis-firehose` ke `flink-connector-aws-firehose` beberapa versi perantara).
+ Selalu periksa [dokumentasi konektor Amazon Managed Service untuk Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html) untuk mengetahui nama dan versi artefak yang tepat yang didukung dalam runtime target Anda.

## Fitur yang tidak didukung dan eksperimental
<a name="flink-2-2-unsupported"></a>

Fitur berikut tidak didukung di Amazon Managed Service untuk Apache Flink 2.2:
+ **Tabel Terwujud: Snapshot tabel** yang dipelihara secara terus menerus dan dapat dikueri.
+ **Perubahan Telemetri Kustom**: Reporter metrik khusus dan konfigurasi telemetri.
+ **ForSt State Backend**: Penyimpanan status terpilah (eksperimental di open source).
+ **Java 21**: Dukungan eksperimental di open source, tidak didukung di Managed Service untuk Apache Flink.

## Masalah yang diketahui
<a name="flink-2-2-known-issues"></a>

**Layanan Dikelola Amazon untuk Apache Flink Studio**

Flink 2.2 di Amazon Managed Service untuk Apache Flink tidak mendukung aplikasi Studio. Untuk informasi selengkapnya, lihat [Membuat buku catatan Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Konektor Kinesis EFO**
+ Aplikasi yang menggunakan jalur `KinesisStreamsSource` with EFO (Enhanced Fan-Out/ SubscribeToShard) yang diperkenalkan di konektor v5.0.0 dan v6.0.0 mungkin gagal saat aliran Kinesis mengalami resharding. Ini adalah masalah yang diketahui di masyarakat. Untuk informasi lebih lanjut, lihat [FLINK-37648](https://issues.apache.org/jira/browse/FLINK-37648).
+ Aplikasi yang menggunakan jalur `KinesisStreamsSource` with EFO (Enhanced Fan-Out/ SubscribeToShard) yang diperkenalkan di konektor v5.0.0 dan v6.0.0 bersama-sama dengan `KinesisStreamsSink` mungkin mengalami kebuntuan jika aplikasi Flink berada di bawah tekanan balik, menghasilkan penghentian total pemrosesan data dalam satu atau lebih. TaskManagers Operasi penghentian paksa dan operasi aplikasi mulai diperlukan untuk memulihkan aplikasi. Ini adalah sub-kasus dari masalah yang diketahui di masyarakat. Untuk informasi lebih lanjut, lihat [FLINK-34071](https://issues.apache.org/jira/browse/FLINK-34071).

## Tingkatkan pengalaman
<a name="flink-2-2-upgrade"></a>

Amazon Managed Service untuk Apache Flink mendukung peningkatan versi di tempat yang mempertahankan konfigurasi aplikasi, log, metrik, tag, dan—jika status dan binari kompatibel — status aplikasi Anda. Untuk step-by-step instruksi, lihat[Upgrade ke Flink 2.2: Panduan lengkap](flink-2-2-upgrade-guide.md).

Untuk panduan tentang menilai risiko kompatibilitas status dan menangani status yang tidak kompatibel selama peningkatan, lihat. [Panduan kompatibilitas status untuk peningkatan Flink 2.2](state-compatibility.md)

## Langkah selanjutnya
<a name="flink-2-2-next-steps"></a>
+ Baru mengenal Flink 2.2? Untuk mendetail dokumentasi Apache Flink 2.2, lihat Dokumentasi [Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-2.2/) 2.2.
+ Merencanakan peningkatan? Lihat [Upgrade ke Flink 2.2: Panduan lengkap](flink-2-2-upgrade-guide.md)
+ Masalah kompatibilitas negara? Lihat [Panduan kompatibilitas status untuk peningkatan Flink 2.2](state-compatibility.md)

Untuk pertanyaan atau masalah, lihat [Memecahkan Masalah Layanan Terkelola untuk Apache Flink](troubleshooting.md) atau hubungi AWS Support.

# Layanan Dikelola Amazon untuk Apache Flink 1.20
<a name="flink-1-20"></a>

Layanan Terkelola untuk Apache Flink sekarang mendukung Apache Flink versi 1.20.0. Bagian ini memperkenalkan Anda pada fitur baru utama dan perubahan yang diperkenalkan dengan Layanan Terkelola untuk dukungan Apache Flink dari Apache Flink 1.20.0. Apache Flink 1.20 diharapkan menjadi rilis 1.x terakhir dan versi dukungan jangka panjang Flink (LTS). Untuk informasi selengkapnya, lihat [FLIP-458: Long-Term Support untuk Rilis Final Apache Flink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-458%3A+Long-Term+Support+for+the+Final+Release+of+Apache+Flink+1.x+Line) 1.x Line.

**catatan**  
Jika Anda menggunakan versi Apache Flink yang didukung sebelumnya dan ingin meningkatkan aplikasi yang ada ke Apache Flink 1.20.0, Anda dapat melakukannya menggunakan upgrade versi Apache Flink di tempat. Untuk informasi selengkapnya, lihat [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md). Dengan peningkatan versi di tempat, Anda mempertahankan ketertelusuran aplikasi terhadap satu ARN di seluruh versi Apache Flink, termasuk snapshot, log, metrik, tag, konfigurasi Flink, dan banyak lagi. 

## Fitur yang didukung
<a name="flink-1-20-0-supported-features"></a>

Apache Flink 1.20.0 memperkenalkan perbaikan di SQL APIs, di, dan di dasbor Flink. DataStream APIs


**Fitur yang didukung dan dokumentasi terkait**  

| Fitur yang didukung | Deskripsi | Referensi dokumentasi Apache Flink  | 
| --- | --- | --- | 
| Tambahkan klausa DISTRIBUTED BY | Banyak mesin SQL mengekspos konsepPartitioning,Bucketing, atau. Clustering Flink 1.20 memperkenalkan konsep untuk Flink. Bucketing  | [FLIP-376: Tambahkan klausa DISTRIBUTED BY](https://cwiki.apache.org/confluence/display/FLINK/FLIP-376%3A+Add+DISTRIBUTED+BY+clause) | 
| DataStream API: Mendukung Proessing Partisi Penuh  | Flink 1.20 memperkenalkan dukungan bawaan untuk agregasi pada aliran non-kunci melalui API. FullPartitionWindow  | [FLIP-380: Mendukung Pemrosesan Partisi Penuh pada Non-keyed DataStream](https://cwiki.apache.org/confluence/display/FLINK/FLIP-380%3A+Support+Full+Partition+Processing+On+Non-keyed+DataStream) | 
| Tampilkan skor miring data di Dasbor Flink | Dasbor Flink 1.20 sekarang menunjukkan pelanggaran kemiringan data. Setiap operator pada UI grafik pekerjaan Flink menunjukkan skor kemiringan data tambahan.  | [FLIP-418: Tampilkan skor miring data di Dasbor Flink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-418%3A+Show+data+skew+score+on+Flink+Dashboard) | 

Untuk dokumentasi rilis Apache Flink 1.20.0, lihat [Apache](https://nightlies.apache.org/flink/flink-docs-stable/) Flink Documentation v1.20.0. Untuk catatan rilis Flink 1.20, lihat [Catatan rilis -](https://nightlies.apache.org/flink/flink-docs-release-1.20/release-notes/flink-1.20/) Flink 1.20

## Komponen-komponen
<a name="flink-1-20-0-components"></a>


**Komponen Flink 1.20**  

| Komponen | Versi | 
| --- | --- | 
| Java  | 11 (direkomendasikan) | 
| Python |  3.11  | 
| Kinesis Data Analytics Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| Konektor | Untuk informasi tentang konektor yang tersedia, lihat konektor [Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html). | 
| [Apache Beam (hanya aplikasi Beam)](https://aws.amazon.com/developer/language/python/) |  Tidak ada Apache Flink Runner yang kompatibel untuk Flink 1.20. Untuk informasi selengkapnya, lihat [Kompatibilitas Versi Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Masalah yang diketahui
<a name="flink-1-20-0-known-issues"></a>

**Balok Apache**

Saat ini tidak ada Apache Flink Runner yang kompatibel untuk Flink 1.20 di Apache Beam. Untuk informasi selengkapnya, lihat [Kompatibilitas Versi Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).

**Layanan Dikelola Amazon untuk Apache Flink Studio**

Amazon Managed Service untuk Apache Flink Studio menggunakan notebook Apache Zeppelin untuk memberikan pengalaman pengembangan antarmuka tunggal untuk mengembangkan, men-debug kode, dan menjalankan aplikasi pemrosesan aliran Apache Flink. Upgrade diperlukan untuk Zeppelin's Flink Interpreter untuk mengaktifkan dukungan Flink 1.20. Pekerjaan ini dijadwalkan dengan komunitas Zeppelin. Kami akan memperbarui catatan ini ketika pekerjaan itu selesai. Anda dapat terus menggunakan Flink 1.15 dengan Amazon Managed Service untuk Apache Flink Studio. Untuk informasi selengkapnya, lihat [Membuat buku catatan Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Perbaikan bug backport**

Amazon Managed Service untuk Apache Flink backports perbaikan dari komunitas Flink untuk masalah kritis. Berikut ini adalah daftar perbaikan bug yang telah kami backport:


**Perbaikan bug backport**  

| Tautan Apache Flink JIRA | Deskripsi | 
| --- | --- | 
| [BATU FLINK-35886](https://issues.apache.org/jira/browse/FLINK-35886) | Perbaikan ini mengatasi masalah yang menyebabkan penghitungan batas waktu kemalasan tanda air yang salah saat subtugas ditekankan/diblokir. | 

# Layanan Dikelola Amazon untuk Apache Flink 1.19
<a name="flink-1-19"></a>

Layanan Terkelola untuk Apache Flink sekarang mendukung Apache Flink versi 1.19.1. Bagian ini memperkenalkan Anda pada fitur dan perubahan baru utama yang diperkenalkan dengan Layanan Terkelola untuk dukungan Apache Flink dari Apache Flink 1.19.1.

**catatan**  
Jika Anda menggunakan versi Apache Flink yang didukung sebelumnya dan ingin meningkatkan aplikasi yang ada ke Apache Flink 1.19.1, Anda dapat melakukannya menggunakan upgrade versi Apache Flink di tempat. Untuk informasi selengkapnya, lihat [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md). Dengan peningkatan versi di tempat, Anda mempertahankan ketertelusuran aplikasi terhadap satu ARN di seluruh versi Apache Flink, termasuk snapshot, log, metrik, tag, konfigurasi Flink, dan banyak lagi. 

## Fitur yang didukung
<a name="flink-1-19-1-supported-features"></a>

Apache Flink 1.19.1 memperkenalkan peningkatan dalam SQL API, seperti parameter bernama, paralelisme sumber kustom, dan status yang berbeda untuk berbagai operator Flink. TTLs 


**Fitur yang didukung dan dokumentasi terkait**  

| Fitur yang didukung | Deskripsi | Referensi dokumentasi Apache Flink  | 
| --- | --- | --- | 
| SQL API: Support Mengkonfigurasi Status yang Berbeda TTLs menggunakan Petunjuk SQL | Pengguna sekarang dapat mengonfigurasi status TTL pada aliran gabungan reguler dan agregat grup.  | [FLIP-373: Mengkonfigurasi Status Berbeda menggunakan Petunjuk SQL TTLs ](https://cwiki.apache.org/confluence/display/FLINK/FLIP-373%3A+Support+Configuring+Different+State+TTLs+using+SQL+Hint) | 
| SQL API: Mendukung parameter bernama untuk fungsi dan prosedur panggilan | Pengguna sekarang dapat menggunakan parameter bernama dalam fungsi, daripada mengandalkan urutan parameter.  | [FLIP-378: Mendukung parameter bernama untuk fungsi dan prosedur panggilan](https://cwiki.apache.org/confluence/display/FLINK/FLIP-387%3A+Support+named+parameters+for+functions+and+call+procedures) | 
| SQL API: Mengatur paralelisme untuk sumber SQL | Pengguna sekarang dapat menentukan paralelisme untuk sumber SQL. | [FLIP-367: Support Setting Parallelism untuk Sumber Table/SQL ](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=263429150) | 
| SQL API: Mendukung Jendela Sesi TVF | Pengguna sekarang dapat menggunakan jendela sesi Table-Valued Functions.  | [FLINK-24024: Jendela Sesi Dukungan TVF](https://issues.apache.org/jira/browse/FLINK-24024) | 
| SQL API: Agregasi TVF Jendela Mendukung Input Changelog | Pengguna sekarang dapat melakukan agregasi jendela pada input changelog.  | [FLINK-20281: Agregasi jendela mendukung input aliran changelog](https://issues.apache.org/jira/browse/FLINK-20281) | 
|  Support Python 3.11  | Flink sekarang mendukung Python 3.11, yang 10-60% lebih cepat dibandingkan dengan Python 3.10. Untuk informasi selengkapnya, lihat [Apa yang Baru di Python](https://docs.python.org/3/whatsnew/3.11.html#summary-release-highlights) 3.11. | [FLINK-33030: Tambahkan dukungan python 3.11](https://issues.apache.org/jira/browse/FLINK-33030) | 
| Berikan metrik untuk wastafel TwoPhaseCommitting  | Pengguna dapat melihat statistik seputar status committers dalam dua fase commit sink. | [FLIP-371: Berikan konteks inisialisasi untuk pembuatan Committer di TwoPhaseCommittingSink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-371%3A+Provide+initialization+context+for+Committer+creation+in+TwoPhaseCommittingSink) | 
|  Lacak Reporter untuk memulai kembali pekerjaan dan pos pemeriksaan  | Pengguna sekarang dapat memantau jejak di sekitar durasi pos pemeriksaan dan tren pemulihan. Di Amazon Managed Service untuk Apache Flink, kami mengaktifkan pelapor jejak SLF4j secara default, sehingga pengguna dapat memantau pos pemeriksaan dan jejak pekerjaan melalui Log aplikasi. CloudWatch  | [FLIP-384: Memperkenalkan TraceReporter dan menggunakannya untuk membuat jejak pos pemeriksaan dan pemulihan](https://cwiki.apache.org/confluence/display/FLINK/FLIP-384%3A+Introduce+TraceReporter+and+use+it+to+create+checkpointing+and+recovery+traces) | 

**catatan**  
Anda dapat memilih fitur-fitur berikut dengan mengirimkan kasus [dukungan](https://console.aws.amazon.com/support/home#/):


**Fitur opt-in dan dokumentasi terkait**  

| Fitur keikutsertaan | Deskripsi | Referensi dokumentasi Apache Flink  | 
| --- | --- | --- | 
| Support menggunakan interval checkpointing yang lebih besar saat sumber memproses backlog | Ini adalah fitur opt-in, karena pengguna harus menyetel konfigurasi untuk persyaratan pekerjaan spesifik mereka. | [FLIP-309: Support menggunakan interval checkpointing yang lebih besar saat sumber memproses backlog](https://cwiki.apache.org/confluence/display/FLINK/FLIP-309%3A+Support+using+larger+checkpointing+interval+when+source+is+processing+backlog) | 
| Arahkan ulang System.out dan System.err ke log Java | Ini adalah fitur opt-in. Di Amazon Managed Service untuk Apache Flink, perilaku default adalah mengabaikan output dari System.out dan System.err karena praktik terbaik dalam produksi adalah menggunakan logger Java asli. | [FLIP-390: Support System out dan err untuk dialihkan ke LOG atau dibuang](https://cwiki.apache.org/confluence/display/FLINK/FLIP-390%3A+Support+System+out+and+err+to+be+redirected+to+LOG+or+discarded) | 

Untuk dokumentasi rilis Apache Flink 1.19.1, lihat [Apache](https://nightlies.apache.org/flink/flink-docs-stable/) Flink Documentation v1.19.1.

## Perubahan Layanan Terkelola Amazon untuk Apache Flink 1.19.1
<a name="flink-1-19-1-known-issues"></a>

**Logging Trace Reporter diaktifkan secara default**

Apache Flink 1.19.1 memperkenalkan pos pemeriksaan dan jejak pemulihan, memungkinkan pengguna untuk men-debug pos pemeriksaan dan masalah pemulihan pekerjaan dengan lebih baik. Di Amazon Managed Service untuk Apache Flink, jejak ini masuk ke aliran CloudWatch log, memungkinkan pengguna untuk memecah waktu yang dihabiskan untuk inisialisasi pekerjaan, dan mencatat ukuran historis pos pemeriksaan.

**Strategi restart default sekarang eksponensial-delay**

Di Apache Flink 1.19.1, ada peningkatan signifikan pada strategi restart penundaan eksponensial. Di Amazon Managed Service untuk Apache Flink dari Flink 1.19.1 dan seterusnya, pekerjaan Flink menggunakan strategi restart penundaan eksponensial secara default. Ini berarti bahwa pekerjaan pengguna akan pulih lebih cepat dari kesalahan sementara, tetapi tidak akan membebani sistem eksternal jika pekerjaan dimulai ulang tetap ada.

**Perbaikan bug backport**

Amazon Managed Service untuk Apache Flink backports perbaikan dari komunitas Flink untuk masalah kritis. Ini berarti bahwa runtime berbeda dari rilis Apache Flink 1.19.1. Berikut ini adalah daftar perbaikan bug yang telah kami backport:


**Perbaikan bug backport**  

| Tautan Apache Flink JIRA | Deskripsi | 
| --- | --- | 
| [FLINK-35531](https://issues.apache.org/jira/browse/FLINK-35531) | Perbaikan ini membahas regresi kinerja yang diperkenalkan di 1.17.0 yang menyebabkan penulisan lebih lambat ke HDFS. | 
| [BATU FLINK-35157](https://issues.apache.org/jira/browse/FLINK-35157) | Perbaikan ini mengatasi masalah pekerjaan Flink yang macet saat sumber dengan penyelarasan tanda air mengalami subtugas selesai. | 
| [FLINK-34252](https://issues.apache.org/jira/browse/FLINK-34252) | Perbaikan ini mengatasi masalah dalam pembuatan tanda air yang menghasilkan status tanda air IDLE yang salah. | 
| [FLINK-34252](https://issues.apache.org/jira/browse/FLINK-34252) | Perbaikan ini mengatasi regresi kinerja selama pembuatan tanda air dengan mengurangi panggilan sistem. | 
| [BATU FLINK-33936](https://issues.apache.org/jira/browse/FLINK-33936) | Perbaikan ini mengatasi masalah dengan catatan duplikat selama agregasi mini-batch pada API Tabel. | 
| [BATU FLINK-35498](https://issues.apache.org/jira/browse/FLINK-35498) | Perbaikan ini mengatasi masalah konflik nama argumen saat mendefinisikan parameter bernama di API UDFs Tabel. | 
| [FLINK-33192](https://issues.apache.org/jira/browse/FLINK-33192) | Perbaikan ini mengatasi masalah kebocoran memori status di operator jendela karena pembersihan timer yang tidak tepat. | 
| [FLINK-35069](https://issues.apache.org/jira/browse/FLINK-35069) | Perbaikan ini mengatasi masalah saat pekerjaan Flink macet memicu pengatur waktu di ujung jendela. | 
| [FLINK-35832](https://issues.apache.org/jira/browse/FLINK-35832) | Perbaikan ini mengatasi masalah ketika IFNULL mengembalikan hasil yang salah. | 
| [BATU FLINK-35886](https://issues.apache.org/jira/browse/FLINK-35886) | Perbaikan ini mengatasi masalah ketika tugas backpressured dianggap sebagai idle. | 

## Komponen-komponen
<a name="flink-1-19-1-components"></a>


****  

| Komponen | Versi | 
| --- | --- | 
| Java  | 11 (direkomendasikan) | 
| Python |  3.11  | 
| Kinesis Data Analytics Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| Konektor | Untuk informasi tentang konektor yang tersedia, lihat konektor [Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html). | 
| [Apache Beam (hanya aplikasi Beam)](https://aws.amazon.com/developer/language/python/) |  Dari versi 2.61.0. Untuk informasi selengkapnya, lihat [Kompatibilitas Versi Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Masalah yang diketahui
<a name="flink-1-19-other-issues"></a>

**Layanan Dikelola Amazon untuk Apache Flink Studio**

Studio menggunakan notebook Apache Zeppelin untuk memberikan pengalaman pengembangan antarmuka tunggal untuk mengembangkan, men-debug kode, dan menjalankan aplikasi pemrosesan aliran Apache Flink. Upgrade diperlukan untuk Zeppelin's Flink Interpreter untuk mengaktifkan dukungan Flink 1.19. Pekerjaan ini dijadwalkan dengan komunitas Zeppelin dan kami akan memperbarui catatan ini setelah selesai. Anda dapat terus menggunakan Flink 1.15 dengan Amazon Managed Service untuk Apache Flink Studio. Untuk informasi selengkapnya, lihat [Membuat buku catatan Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

# Layanan Dikelola Amazon untuk Apache Flink 1.18
<a name="flink-1-18"></a>

 Layanan Terkelola untuk Apache Flink sekarang mendukung Apache Flink versi 1.18.1. Pelajari tentang fitur dan perubahan baru utama yang diperkenalkan dengan Layanan Terkelola untuk dukungan Apache Flink Apache Flink 1.18.1.

**catatan**  
Jika Anda menggunakan versi Apache Flink yang didukung sebelumnya dan ingin meningkatkan aplikasi yang ada ke Apache Flink 1.18.1, Anda dapat melakukannya menggunakan upgrade versi Apache Flink di tempat. Dengan peningkatan versi di tempat, Anda mempertahankan ketertelusuran aplikasi terhadap satu ARN di seluruh versi Apache Flink, termasuk snapshot, log, metrik, tag, konfigurasi Flink, dan banyak lagi. Anda dapat menggunakan fitur ini di `RUNNING` dan `READY` negara bagian. Untuk informasi selengkapnya, lihat [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md). 


**Fitur yang didukung dengan referensi dokumentasi Apache Flink**  

| Fitur yang Didukung | Deskripsi | Referensi dokumentasi Apache Flink  | 
| --- | --- | --- | 
| Konektor Opensearch | Konektor ini termasuk wastafel yang memberikan at-least-once jaminan. | [github: Konektor Opensearch](https://github.com/apache/flink-connector-opensearch/blob/main/docs/content/docs/connectors/datastream/opensearch.md) | 
| Konektor Amazon DynamoDB | Konektor ini termasuk wastafel yang memberikan at-least-once jaminan. | [Wastafel Amazon DynamoDB](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/dynamodb/) | 
| Konektor MongoDB | Konektor ini termasuk sumber dan wastafel yang memberikan at-least-once jaminan. | [Konektor MongoDB](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/mongodb/) | 
| Pisahkan Sarang dengan perencana Flink |  Anda dapat menggunakan dialek Hive secara langsung tanpa pertukaran JAR tambahan.  | [FLINK-26603: Pisahkan Sarang dengan perencana Flink](https://issues.apache.org/jira/browse/FLINK-26603) | 
| Nonaktifkan WAL di Rocks secara DBWrite BatchWrapper default |  Ini memberikan waktu pemulihan yang lebih cepat.  | [FLINK-32326: Nonaktifkan WAL di Rocks secara default DBWrite BatchWrapper ](https://issues.apache.org/jira/browse/FLINK-32326) | 
|  Tingkatkan kinerja agregasi tanda air saat mengaktifkan penyelarasan tanda air  |  Meningkatkan kinerja agregasi tanda air saat mengaktifkan penyelarasan tanda air, dan menambahkan tolok ukur terkait.  | [FLINK-32524: Kinerja agregasi tanda air](https://issues.apache.org/jira/browse/FLINK-32420) | 
| Buat penyelarasan tanda air siap untuk penggunaan produksi | Menghilangkan risiko kelebihan beban pekerjaan besar JobManager | [FLINK-32548: Siapkan perataan tanda air](https://issues.apache.org/jira/browse/FLINK-32548) | 
|  Dapat dikonfigurasi RateLimitingStratey untuk Async Sink  |  RateLimitingStrategy memungkinkan Anda mengonfigurasi keputusan tentang apa yang akan diskalakan, kapan harus menskalakan, dan berapa banyak skala.  | [FLIP-242: Perkenalkan yang dapat dikonfigurasi RateLimitingStrategy untuk Async Sink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-242%3A+Introduce+configurable+RateLimitingStrategy+for+Async+Sink) | 
|  Statistik tabel dan kolom pengambilan massal  | Peningkatan kinerja kueri. | [FLIP-247: Pengambilan massal statistik tabel dan kolom untuk partisi yang diberikan](https://cwiki.apache.org/confluence/display/FLINK/FLIP-247%3A+Bulk+fetch+of+table+and+column+statistics+for+given+partitions) | 

Untuk dokumentasi rilis Apache Flink 1.18.1, lihat Pengumuman Rilis [Apache](https://flink.apache.org/2024/01/19/apache-flink-1.18.1-release-announcement/) Flink 1.18.1.

## Perubahan Amazon Managed Service untuk Apache Flink dengan Apache Flink 1.18
<a name="flink-1-15-2-known-issues"></a>

**Akka diganti dengan Pekko**

 Apache Flink menggantikan Akka dengan Pekko di Apache Flink 1.18. Perubahan ini sepenuhnya didukung di Managed Service untuk Apache Flink dari Apache Flink 1.18.1 dan yang lebih baru. Anda tidak perlu memodifikasi aplikasi Anda sebagai akibat dari perubahan ini. Untuk informasi lebih lanjut, lihat [FLINK-32468:](https://issues.apache.org/jira/browse/FLINK-32468) Ganti Akka oleh Pekko.

**Mendukung eksekusi PyFlink Runtime dalam Mode Thread**

Perubahan Apache Flink ini memperkenalkan mode eksekusi baru untuk kerangka kerja Pyflink Runtime, Process Mode. Mode Proses sekarang dapat menjalankan fungsi yang ditentukan pengguna Python di utas yang sama, bukan proses terpisah.

**Perbaikan bug backport**

Amazon Managed Service untuk Apache Flink backports perbaikan dari komunitas Flink untuk masalah kritis. Ini berarti bahwa runtime berbeda dari rilis Apache Flink 1.18.1. Berikut ini adalah daftar perbaikan bug yang telah kami backport:


**Perbaikan bug backport**  

| Tautan Apache Flink JIRA | Deskripsi | 
| --- | --- | 
| [BATU FLINK-33863](https://issues.apache.org/jira/browse/FLINK-33863) | Perbaikan ini mengatasi masalah saat pemulihan status gagal untuk snapshot terkompresi. | 
| [BATU FLINK-34063](https://issues.apache.org/jira/browse/FLINK-34063) | Perbaikan ini mengatasi masalah saat operator sumber kehilangan split saat kompresi snapshot diaktifkan. Apache Flink menawarkan kompresi opsional (default: off) untuk semua pos pemeriksaan dan savepoint. Apache Flink mengidentifikasi bug di Flink 1.18.1 di mana status operator tidak dapat dipulihkan dengan benar saat kompresi snapshot diaktifkan. Hal ini dapat mengakibatkan hilangnya data atau ketidakmampuan untuk memulihkan dari pos pemeriksaan.  | 
| [FLINK-35069](https://issues.apache.org/jira/browse/FLINK-35069) | Perbaikan ini mengatasi masalah saat pekerjaan Flink macet memicu pengatur waktu di ujung jendela.  | 
| [FLINK-35097](https://issues.apache.org/jira/browse/FLINK-35097) | Perbaikan ini membahas pissue rekaman duplikat dalam konektor Sistem File API Tabel dengan format mentah.  | 
| [FLINK-34379](https://issues.apache.org/jira/browse/FLINK-34379) | Perbaikan ini mengatasi masalah OutOfMemoryError saat mengaktifkan pemfilteran tabel dinamis.  | 
| [FLINK-28693](https://issues.apache.org/jira/browse/FLINK-28693) | Perbaikan ini mengatasi masalah API Tabel yang tidak dapat menghasilkan grafik jika tanda air memiliki ekspresi ColumnBy.  | 
| [BATU FLINK-35217](https://issues.apache.org/jira/browse/FLINK-35217) | Perbaikan ini mengatasi masalah pos pemeriksaan yang rusak selama mode kegagalan pekerjaan Flink tertentu.  | 

## Komponen-komponen
<a name="flink-1-15-2-components"></a>


****  

| Komponen | Versi | 
| --- | --- | 
| Java  | 11 (direkomendasikan) | 
| Skala |  Sejak versi 1.15, Flink adalah Scala-agnostik. Sebagai referensi, MSF Flink 1.18 telah diverifikasi terhadap Scala 3.3 (LTS).  | 
| Layanan Terkelola untuk Apache Flink Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| [AWS Konektor Kinesis (flink-connector-kinesis) [Sumber]](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kinesis/4.2.0-1.18) | 4.2.0-1.18 | 
| [AWS Konektor Kinesis (flink-connector-kinesis) [Wastafel]](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-aws-kinesis-streams/4.2.0-1.18) | 4.2.0-1.18 | 
| [Apache Beam (hanya aplikasi Beam)](https://aws.amazon.com/developer/language/python/) |  Dari versi 2.57.0. Untuk informasi selengkapnya, lihat [Kompatibilitas Versi Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Masalah yang diketahui
<a name="flink-1-18-known-issues"></a>

**Layanan Dikelola Amazon untuk Apache Flink Studio**

Studio menggunakan notebook Apache Zeppelin untuk memberikan pengalaman pengembangan antarmuka tunggal untuk mengembangkan, men-debug kode, dan menjalankan aplikasi pemrosesan aliran Apache Flink. Upgrade diperlukan untuk Zeppelin's Flink Interpreter untuk mengaktifkan dukungan Flink 1.18. Pekerjaan ini dijadwalkan dengan komunitas Zeppelin dan kami akan memperbarui catatan ini setelah selesai. Anda dapat terus menggunakan Flink 1.15 dengan Amazon Managed Service untuk Apache Flink Studio. Untuk informasi selengkapnya, lihat [Membuat buku catatan Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Kemalasan tanda air yang salah saat subtugas ditekan kembali**

Ada masalah yang diketahui dalam pembuatan tanda air ketika subtugas di-backpressured, yang telah diperbaiki dari Flink 1.19 dan yang lebih baru. Ini dapat muncul sebagai lonjakan jumlah catatan terlambat ketika grafik pekerjaan Flink ditekan kembali. Kami menyarankan Anda meningkatkan ke versi Flink terbaru untuk melakukan perbaikan ini. Untuk informasi selengkapnya, lihat [Penghitungan batas waktu kemalasan tanda air yang salah saat subtugas ditekankan/diblokir](https://issues.apache.org/jira/browse/FLINK-35886).

# Layanan Dikelola Amazon untuk Apache Flink 1.15
<a name="flink-1-15-2"></a>

 Managed Service untuk Apache Flink mendukung fitur baru berikut di Apache 1.15.2: 


****  

| Fitur | Deskripsi | Referensi Apache FLIP  | 
| --- | --- | --- | 
| Wastafel Async  | Kerangka kerja yang AWS disumbangkan untuk membangun tujuan asinkron yang memungkinkan pengembang membuat AWS konektor khusus dengan kurang dari setengah upaya sebelumnya. Untuk informasi lebih lanjut, lihat [The Generic Asynchronous](https://flink.apache.org/2022/05/06/async-sink-base.html) Base Sink. | [FLIP-171:](https://cwiki.apache.org/confluence/display/FLINK/FLIP-171%3A+Async+Sink) Wastafel Asinkron. | 
| Sink Kinesis Data Firehose  | AWS telah menyumbangkan Amazon Kinesis Firehose Sink baru menggunakan kerangka kerja Async.  | Wastafel Selang Api [Amazon Kinesis Data](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/connectors/datastream/firehose/). | 
| Berhenti dengan Savepoint  | Berhenti dengan Savepoint memastikan operasi berhenti bersih, yang paling penting mendukung semantik yang tepat sekali untuk pelanggan yang bergantung pada mereka. | [FLIP-34: Terminate/Suspend Job dengan](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103090212) Savepoint. | 
| Pemisahan Scala  | Pengguna sekarang dapat memanfaatkan Java API dari versi Scala apa pun, termasuk Scala 3. Pelanggan perlu menggabungkan pustaka standar Scala pilihan mereka dalam aplikasi Scala mereka.  | [FLIP-28: Tujuan jangka panjang membuat flink-table bebas](https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free) Scala-free. | 
| Skala | Lihat decoupling Scala di atas  | [FLIP-28: Tujuan jangka panjang membuat flink-table bebas](https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free) Scala-free. | 
| Metrik Konektor Terpadu | Flink telah [menetapkan metrik standar](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/ops/metrics/) untuk pekerjaan, tugas, dan operator. Layanan Terkelola untuk Apache Flink akan terus mendukung sink dan metrik sumber dan di 1.15 diperkenalkan numRestarts secara paralel dengan fullRestarts untuk Availability Metrics.  | [FLIP-33: Standarisasi Metrik Konektor dan [FLIP-179](https://cwiki.apache.org/confluence/display/FLINK/FLIP-179%3A+Expose+Standardized+Operator+Metrics): Paparkan Metrik](https://cwiki.apache.org/confluence/display/FLINK/FLIP-33%3A+Standardize+Connector+Metrics) Operator Standar. | 
| Checkpointing tugas selesai  | Fitur ini diaktifkan secara default di Flink 1.15 dan memungkinkan untuk terus melakukan pos pemeriksaan bahkan jika bagian dari grafik pekerjaan telah selesai memproses semua data, yang mungkin terjadi jika berisi sumber (batch) terbatas.  | [FLIP-147: Support Checkpoints](https://cwiki.apache.org/confluence/display/FLINK/FLIP-147%3A+Support+Checkpoints+After+Tasks+Finished) Setelah Tugas Selesai.  | 

## Perubahan Amazon Managed Service untuk Apache Flink dengan Apache Flink 1.15
<a name="flink-1-15-2-changes"></a>

**Notebook studio**

Layanan Terkelola untuk Apache Flink Studio sekarang mendukung Apache Flink 1.15. Managed Service untuk Apache Flink Studio menggunakan notebook Apache Zeppelin untuk memberikan pengalaman pengembangan antarmuka tunggal untuk mengembangkan, men-debug kode, dan menjalankan aplikasi pemrosesan aliran Apache Flink. Anda dapat mempelajari lebih lanjut tentang Layanan Terkelola untuk Apache Flink Studio dan cara memulainya. [Menggunakan notebook Studio dengan Managed Service untuk Apache Flink](how-notebook.md)

**Konektor EFO**

Saat memutakhirkan ke Layanan Terkelola untuk Apache Flink versi 1.15, pastikan Anda menggunakan Konektor EFO terbaru, yaitu versi 1.15.3 atau yang lebih baru. Untuk informasi lebih lanjut tentang alasannya, lihat [FLINK-29324](https://issues.apache.org/jira/browse/FLINK-29324 ).

**Pemisahan Scala**

Dimulai dengan Flink 1.15.2, Anda perlu menggabungkan pustaka standar Scala pilihan Anda dalam aplikasi Scala Anda. 

**Wastafel Selang Api Data Kinesis**

Saat memutakhirkan ke Layanan Terkelola untuk Apache Flink versi 1.15, pastikan Anda menggunakan Sink Amazon Kinesis Data [Firehose](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/connectors/datastream/firehose/) terbaru.

**Konektor Kafka**

Saat memutakhirkan ke Amazon Managed Service untuk Apache Flink untuk Apache Flink versi 1.15, pastikan Anda menggunakan konektor Kafka terbaru. APIs Apache Flink telah usang [FlinkKafkaConsumer](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-consumer)dan [FlinkKafkaProducer](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-producer)Ini APIs untuk wastafel Kafka tidak dapat berkomitmen ke Kafka untuk Flink 1.15. Pastikan Anda menggunakan [KafkaSource](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-source)dan [KafkaSink](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-sink). 

## Komponen-komponen
<a name="flink-1-15-2-components"></a>


****  

| Komponen | Versi | 
| --- | --- | 
| Java  | 11 (direkomendasikan) | 
| Skala | 2.12 | 
| Layanan Terkelola untuk Apache Flink Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| [AWS Konektor Kinesis () flink-connector-kinesis](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kinesis/1.15.4) | 1.15.4 | 
| [Apache Beam (hanya aplikasi Beam)](https://aws.amazon.com/developer/language/python/) | 2.33.0, dengan Jackson versi 2.12.2 | 

## Masalah yang diketahui
<a name="flink-1-15-known-issues"></a>

**Kafka Commit pada checkpointing gagal berulang kali setelah broker memulai ulang**

Ada masalah open source Apache Flink yang diketahui dengan konektor Apache Kafka di Flink versi 1.15 yang disebabkan oleh bug Kafka Client open source kritis di Kafka Client 2.8.1. Untuk informasi selengkapnya, lihat [Komit Kafka pada pos pemeriksaan gagal berulang kali setelah broker memulai ulang](https://issues.apache.org/jira/browse/FLINK-28060) dan [KafkaConsumer tidak dapat memulihkan koneksi ke koordinator grup](https://issues.apache.org/jira/browse/KAFKA-13840) setelah pengecualian. commitOffsetAsync 

Untuk menghindari masalah ini, kami sarankan Anda menggunakan Apache Flink 1.18 atau yang lebih baru di Amazon Managed Service untuk Apache Flink.

# 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.govskope.cake/](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.govskope.cake/](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.govskope.cake/](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.govskope.cake/](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.