

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

# Buat Layanan Terkelola untuk aplikasi Apache Flink
<a name="how-creating-apps"></a>

Topik ini berisi informasi tentang membuat Layanan Terkelola untuk aplikasi Apache Flink.

**Topics**
+ [Bangun Layanan Terkelola Anda untuk kode aplikasi Apache Flink](#how-creating-apps-building)
+ [Buat Layanan Terkelola Anda untuk aplikasi Apache Flink](#how-creating-apps-creating)
+ [Gunakan kunci yang dikelola pelanggan](#how-creating-apps-use-cmk)
+ [Mulai Layanan Terkelola Anda untuk aplikasi Apache Flink](#how-creating-apps-starting)
+ [Verifikasi Layanan Terkelola Anda untuk aplikasi Apache Flink](#how-creating-apps-verifying)
+ [Aktifkan rollback sistem untuk Layanan Terkelola Anda untuk aplikasi Apache Flink](how-system-rollbacks.md)

## Bangun Layanan Terkelola Anda untuk kode aplikasi Apache Flink
<a name="how-creating-apps-building"></a>

Bagian ini menjelaskan komponen yang Anda gunakan untuk membangun kode aplikasi untuk Layanan Terkelola untuk aplikasi Apache Flink Anda. 

Sebaiknya gunakan versi terbaru Apache Flink yang didukung untuk kode aplikasi Anda. Untuk informasi tentang memutakhirkan Layanan Terkelola untuk aplikasi Apache Flink, lihat. [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md) 

Anda membangun kode aplikasi Anda menggunakan [Apache Maven](https://maven.apache.org/). Proyek Apache Maven menggunakan file `pom.xml` untuk menentukan versi komponen yang digunakan. 

**catatan**  
Layanan Terkelola untuk Apache Flink mendukung file JAR hingga ukuran 512 MB. Jika Anda menggunakan file JAR lebih besar dari ini, aplikasi Anda akan gagal dimulai.

Aplikasi sekarang dapat menggunakan Java API dari versi Scala apa pun. Anda harus menggabungkan pustaka standar Scala pilihan Anda ke dalam aplikasi Scala Anda.

Untuk informasi tentang membuat Layanan Terkelola untuk aplikasi Apache Flink yang menggunakan **Apache Beam**, lihat. [Gunakan Apache Beam dengan Managed Service untuk aplikasi Apache Flink](how-creating-apps-beam.md)

### Tentukan versi Apache Flink aplikasi Anda
<a name="how-creating-apps-building-flink"></a>

Saat menggunakan Managed Service for Apache Flink Runtime versi 1.1.0 dan yang lebih baru, Anda menentukan versi Apache Flink yang digunakan aplikasi Anda saat Anda mengkompilasi aplikasi Anda. Anda memberikan versi Apache Flink dengan parameter. `-Dflink.version` Misalnya, jika Anda menggunakan Apache Flink 2.2.0, berikan yang berikut ini:

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

Untuk membangun aplikasi dengan versi Apache Flink sebelumnya, lihat. [Versi sebelumnya](earlier.md)

## Buat Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="how-creating-apps-creating"></a>

Setelah membuat kode aplikasi, lakukan hal berikut untuk membuat aplikasi Managed Service for Apache Flink (Amazon MSF):
+ **Unggah kode Aplikasi Anda**: Unggah kode aplikasi Anda ke bucket Amazon S3. Anda menentukan nama bucket S3 dan nama objek kode aplikasi Anda ketika membuat aplikasi Anda. Untuk tutorial yang menunjukkan cara mengunggah kode aplikasi Anda, lihat [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) tutorialnya.
+ **Buat Layanan Terkelola untuk aplikasi Apache Flink** Anda: Gunakan salah satu metode berikut untuk membuat aplikasi MSF Amazon Anda:
**catatan**  
Amazon MSF mengenkripsi aplikasi Anda secara default menggunakan. Kunci milik AWS Anda juga dapat membuat aplikasi baru menggunakan kunci terkelola AWS KMS pelanggan (CMKs) untuk membuat, memiliki, dan mengelola kunci Anda sendiri. Untuk informasi tentang CMKs, lihat[Manajemen kunci di Amazon Managed Service untuk Apache Flink](key-management-flink.md).
  + **Buat aplikasi Amazon MSF Anda menggunakan AWS konsol:** Anda dapat membuat dan mengonfigurasi aplikasi Anda menggunakan AWS konsol. 

    Saat Anda membuat aplikasi menggunakan konsol, sumber daya dependen aplikasi Anda (seperti aliran CloudWatch Log, peran IAM, dan kebijakan IAM) akan dibuat untuk Anda. 

    Saat Anda membuat aplikasi menggunakan konsol, Anda menentukan versi Apache Flink yang digunakan aplikasi Anda dengan memilihnya dari pull-down pada halaman **Managed Service for Apache Flink** - Create application. 

    Untuk tutorial tentang cara menggunakan konsol untuk membuat aplikasi, lihat [Tutorial: Mulai menggunakan DataStream API di Managed Service untuk Apache Flink](getting-started.md) tutorialnya.
  + **Buat aplikasi Amazon MSF Anda menggunakan AWS CLI**: Anda dapat membuat dan mengkonfigurasi aplikasi Anda menggunakan CLI. AWS 

    Saat Anda membuat aplikasi menggunakan CLI, Anda juga harus membuat sumber daya dependen aplikasi Anda (seperti aliran CloudWatch Log, peran IAM, dan kebijakan IAM) secara manual.

    Ketika Anda membuat aplikasi Anda menggunakan CLI, Anda menentukan versi Apache Flink yang digunakan aplikasi Anda menggunakan parameter `RuntimeEnvironment` dari tindakan `CreateApplication`.
**catatan**  
Anda dapat mengubah `RuntimeEnvironment` aplikasi yang ada. Untuk mempelajari caranya, lihat [Gunakan upgrade versi di tempat untuk Apache Flink](how-in-place-version-upgrades.md).

## Gunakan kunci yang dikelola pelanggan
<a name="how-creating-apps-use-cmk"></a>

Di Amazon MSF, kunci yang dikelola pelanggan (CMKs) adalah fitur yang dapat digunakan untuk mengenkripsi data aplikasi Anda dengan kunci yang Anda buat, miliki, dan kelola pada AWS Key Management Service ()AWS KMS. Untuk aplikasi Amazon MSF, ini berarti semua data yang tunduk pada [pos pemeriksaan](how-fault.md) Flink atau [snapshot](how-snapshots.md) dienkripsi dengan CMK yang Anda tentukan untuk aplikasi itu.

Untuk menggunakan CMK dengan aplikasi Anda, Anda harus terlebih dahulu [membuat aplikasi baru Anda](#how-creating-apps-creating), dan kemudian menerapkan CMK. Untuk informasi selengkapnya tentang penggunaan CMKs, lihat[Manajemen kunci di Amazon Managed Service untuk Apache Flink](key-management-flink.md).

## Mulai Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="how-creating-apps-starting"></a>

Setelah Anda membangun kode aplikasi Anda, mengunggahnya ke S3, dan membuat Layanan Terkelola untuk aplikasi Apache Flink, Anda kemudian memulai aplikasi Anda. Memulai Layanan Terkelola untuk aplikasi Apache Flink biasanya memakan waktu beberapa menit.

Gunakan salah satu metode berikut untuk memulai aplikasi Anda:
+ **Mulai Layanan Terkelola untuk aplikasi Apache Flink menggunakan AWS konsol:** Anda dapat menjalankan aplikasi Anda dengan memilih **Jalankan** pada halaman aplikasi Anda di AWS konsol.
+ **Mulai Layanan Terkelola untuk aplikasi Apache Flink menggunakan AWS API:** Anda dapat menjalankan aplikasi Anda menggunakan tindakan. [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) 

## Verifikasi Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="how-creating-apps-verifying"></a>

Anda dapat memverifikasi bahwa aplikasi Anda bekerja dengan cara berikut:
+ **Menggunakan CloudWatch Log:** Anda dapat menggunakan Wawasan CloudWatch CloudWatch Log dan Log untuk memverifikasi bahwa aplikasi Anda berjalan dengan benar. Untuk informasi tentang menggunakan CloudWatch Log dengan Layanan Terkelola untuk aplikasi Apache Flink, lihat. [Pencatatan dan pemantauan di Amazon Managed Service untuk Apache Flink](monitoring-overview.md)
+ **Menggunakan CloudWatch Metrik:** Anda dapat menggunakan CloudWatch Metrik untuk memantau aktivitas aplikasi, atau aktivitas dalam sumber daya yang digunakan aplikasi untuk input atau output (seperti aliran Kinesis, aliran Firehose, atau bucket Amazon S3.) Untuk informasi selengkapnya tentang CloudWatch metrik, lihat [Bekerja dengan Metrik](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) di CloudWatch Panduan Pengguna Amazon.
+ **Pemantauan Lokasi Output:** Jika aplikasi Anda menulis output ke lokasi (seperti bucket atau basis data Amazon S3), Anda dapat memantau lokasi tersebut untuk data tertulis.

# Aktifkan rollback sistem untuk Layanan Terkelola Anda untuk aplikasi Apache Flink
<a name="how-system-rollbacks"></a>

Dengan kemampuan system-rollback, Anda dapat mencapai ketersediaan yang lebih tinggi dari aplikasi Apache Flink yang sedang berjalan di Amazon Managed Service untuk Apache Flink. Memilih ke konfigurasi ini memungkinkan layanan untuk secara otomatis mengembalikan aplikasi ke versi yang berjalan sebelumnya ketika tindakan seperti `UpdateApplication` atau `autoscaling` berjalan ke kode atau konfigurasi bug.

**catatan**  
Untuk menggunakan fitur rollback sistem, Anda harus ikut serta dengan memperbarui aplikasi Anda. Aplikasi yang ada tidak akan secara otomatis menggunakan rollback sistem secara default.

## Cara kerjanya
<a name="how-rollback-works"></a>

Saat Anda memulai operasi aplikasi, seperti tindakan pembaruan atau penskalaan, Amazon Managed Service untuk Apache Flink pertama kali mencoba menjalankan operasi tersebut. Jika mendeteksi masalah yang mencegah operasi berhasil, seperti bug kode atau izin yang tidak memadai, layanan secara otomatis memulai operasi. `RollbackApplication`

Rollback mencoba mengembalikan aplikasi ke versi sebelumnya yang berhasil berjalan, bersama dengan status aplikasi terkait. Jika rollback berhasil, aplikasi Anda terus memproses data dengan downtime minimal menggunakan versi sebelumnya. Jika rollback otomatis juga gagal, Amazon Managed Service untuk Apache Flink mentransisikan aplikasi ke `READY` status, sehingga Anda dapat mengambil tindakan lebih lanjut, termasuk memperbaiki kesalahan dan mencoba kembali operasi. 

Anda harus memilih untuk menggunakan rollback sistem otomatis. Anda dapat mengaktifkannya menggunakan konsol atau API untuk semua operasi pada aplikasi Anda mulai saat ini. 

Contoh permintaan berikut untuk `UpdateApplication` tindakan memungkinkan rollback sistem untuk aplikasi:

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 1,
   "ApplicationConfigurationUpdate": { 
      "ApplicationSystemRollbackConfigurationUpdate": { 
         "RollbackEnabledUpdate": "true"
       }
    }
}
```

## Tinjau skenario umum untuk rollback sistem otomatis
<a name="common-scenarios"></a>

Skenario berikut menggambarkan di mana kemunduran sistem otomatis bermanfaat:
+ **Pembaruan aplikasi:** Jika Anda memperbarui aplikasi Anda dengan kode baru yang memiliki bug saat menginisialisasi pekerjaan Flink melalui metode utama, rollback otomatis memungkinkan versi kerja sebelumnya dipulihkan. Skenario pembaruan lain di mana rollback sistem membantu meliputi:
  + [Jika aplikasi Anda diperbarui untuk berjalan dengan paralelisme yang lebih tinggi dari MaxParallelism.](https://docs.aws.amazon.com/managed-flink/latest/java/how-scaling.html#how-scaling-auto)
  + Jika aplikasi Anda diperbarui untuk berjalan dengan subnet yang salah untuk aplikasi VPC yang mengakibatkan kegagalan selama startup pekerjaan Flink. 
+ **Peningkatan versi Flink:** Saat Anda meningkatkan ke versi Apache Flink baru dan aplikasi yang ditingkatkan mengalami masalah kompatibilitas snapshot, rollback sistem memungkinkan Anda kembali ke versi Flink sebelumnya secara otomatis. 
+ **AutoScaling:** Saat aplikasi ditingkatkan tetapi mengalami masalah pemulihan dari savepoint, karena ketidakcocokan operator antara snapshot dan grafik pekerjaan Flink.

## Gunakan operasi APIs untuk rollback sistem
<a name="operation-apis"></a>

Untuk memberikan visibilitas yang lebih baik, Amazon Managed Service untuk Apache Flink memiliki dua yang APIs terkait dengan operasi aplikasi yang dapat membantu Anda melacak kegagalan dan rollback sistem terkait.

`ListApplicationOperations`

API ini mencantumkan semua operasi yang dilakukan pada aplikasi, termasuk`UpdateApplication`,`Maintenance`,`RollbackApplication`, dan lainnya dalam urutan kronologis terbalik. Contoh permintaan berikut untuk `ListApplicationOperations` tindakan mencantumkan 10 operasi aplikasi pertama untuk aplikasi:

```
{
   "ApplicationName": "MyApplication",
   "Limit": 10
}
```

Contoh permintaan bantuan berikut `ListApplicationOperations` ini memfilter daftar ke pembaruan sebelumnya pada aplikasi:

```
{
   "ApplicationName": "MyApplication",
   "operation": "UpdateApplication"
}
```

`DescribeApplicationOperation`

API ini memberikan informasi terperinci tentang operasi tertentu yang dicantumkan oleh`ListApplicationOperations`, termasuk alasan kegagalan, jika berlaku. Contoh permintaan berikut untuk `DescribeApplicationOperation` tindakan mencantumkan rincian untuk operasi aplikasi tertentu:

```
{
   "ApplicationName": "MyApplication",
   "OperationId": "xyzoperation"
}
```

Untuk informasi pemecahan masalah, lihat [Praktik terbaik rollback sistem](troubleshooting-system-rollback.md).