

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

# Membuat dan menjalankan Managed Service untuk aplikasi Apache Flink
<a name="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](#get-started-exercise-1)
+ [Tulis Catatan Sampel ke Aliran Input](#get-started-exercise-2)
+ [Unduh dan periksa kode Java streaming Apache Flink](#get-started-exercise-5)
+ [Kompilasi kode aplikasi](#get-started-exercise-5.5)
+ [Unggah kode Java streaming Apache Flink](#get-started-exercise-6)
+ [Buat dan jalankan Managed Service untuk aplikasi Apache Flink](#get-started-exercise-7)

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

Sebelum Anda membuat Amazon Managed Service untuk 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 petunjuk konsol, lihat [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html). 

**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"></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="get-started-exercise-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-java-examples.git
   ```

1. Buka direktori `GettingStarted` tersebut.

Kode aplikasi terletak di file `CustomSinkStreamingJob.java` dan `CloudWatchLogSink.java`. Perhatikan hal tentang kode aplikasi berikut:
+ Aplikasi menggunakan sumber Kinesis untuk membaca dari aliran sumber. Cuplikan berikut membuat sink Kinesis:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```

## Kompilasi kode aplikasi
<a name="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 [Prasyarat untuk menyelesaikan latihan](tutorial-stock-data.md#setting-up-prerequisites).

Aplikasi Java Anda memerlukan komponen-komponen berikut:
+ File [Model Objek Proyek (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html). File ini berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Amazon Managed Service untuk pustaka Apache Flink.
+ `main`Metode yang berisi logika aplikasi.

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

**Untuk membuat dan mengkompilasi kode aplikasi**

1. Buat Java/Maven aplikasi di lingkungan pengembangan Anda. Untuk informasi tentang membuat aplikasi, lihat dokumentasi untuk lingkungan pengembangan Anda:
   + [Membuat proyek Java pertama Anda (Eclipse Java Neon)](https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-3.htm)
   + [Membuat, Menjalankan, dan Mengemas Aplikasi Java Pertama Anda (IntelliJ Idea)](https://www.jetbrains.com/help/idea/creating-and-running-your-first-java-application.html)

1. Gunakan kode berikut untuk file bernama`StreamingJob.java`. 

   ```
    
   package com.amazonaws.services.kinesisanalytics;
   
   import com.amazonaws.services.kinesisanalytics.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 java.io.IOException;
   import java.util.Map;
   import java.util.Properties;
   
   public class StreamingJob {
   
       private static final String region = "us-east-1";
       private static final String inputStreamName = "ExampleInputStream";
       private static final String outputStreamName = "ExampleOutputStream";
   
       private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) {
           Properties inputProperties = new Properties();
           inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region);
           inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST");
   
           return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
       }
   
       private static DataStream<String> createSourceFromApplicationProperties(StreamExecutionEnvironment env)
               throws IOException {
           Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties();
           return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(),
                   applicationProperties.get("ConsumerConfigProperties")));
       }
   
       private static FlinkKinesisProducer<String> createSinkFromStaticConfig() {
           Properties outputProperties = new Properties();
           outputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region);
           outputProperties.setProperty("AggregationEnabled", "false");
   
           FlinkKinesisProducer<String> sink = new FlinkKinesisProducer<>(new SimpleStringSchema(), outputProperties);
           sink.setDefaultStream(outputStreamName);
           sink.setDefaultPartition("0");
           return sink;
       }
   
       private static FlinkKinesisProducer<String> createSinkFromApplicationProperties() throws IOException {
           Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties();
           FlinkKinesisProducer<String> sink = new FlinkKinesisProducer<>(new SimpleStringSchema(),
                   applicationProperties.get("ProducerConfigProperties"));
   
           sink.setDefaultStream(outputStreamName);
           sink.setDefaultPartition("0");
           return sink;
       }
   
       public static void main(String[] args) throws Exception {
           // set up the streaming execution environment
           final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
   
           /*
            * if you would like to use runtime configuration properties, uncomment the
            * lines below
            * DataStream<String> input = createSourceFromApplicationProperties(env);
            */
   
           DataStream<String> input = createSourceFromStaticConfig(env);
   
           /*
            * if you would like to use runtime configuration properties, uncomment the
            * lines below
            * input.addSink(createSinkFromApplicationProperties())
            */
   
           input.addSink(createSinkFromStaticConfig());
   
           env.execute("Flink Streaming Java API Skeleton");
       }
   }
   ```

   Perhatikan hal berikut tentang contoh kode sebelumnya:
   + File ini berisi `main` metode yang mendefinisikan fungsionalitas aplikasi.
   + 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.

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
     ```
   + 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/java-getting-started-1.0.jar`

## Unggah kode Java streaming Apache Flink
<a name="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 `java-getting-started-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="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 Anda 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)
+ [Buat dan jalankan aplikasi (AWS CLI)](#get-started-exercise-7-cli)

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

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

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

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

1. Di dasbor Amazon Kinesis, pilih **Buat aplikasi analitik**.

1. Di halaman **Kinesis Analytics - Buat aplikasi**, masukkan detail aplikasi sebagai berikut:
   + Untuk **Application name** (Nama aplikasi), masukkan **MyApplication**.
   + Untuk **Description** (Deskripsi), masukkan **My java test app**.
   + Untuk **Runtime**, pilih **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 Anda membuat Amazon Managed Service untuk aplikasi 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: `kinesis-analytics-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",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::ka-app-code-username/java-getting-started-1.0.jar"
               ]
           },
           {
               "Sid": "ListCloudwatchLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "ListCloudwatchLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutCloudwatchLogs",
               "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"></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 **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/streams/latest/dev/get-started-exercise.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`

#### Jalankan aplikasi
<a name="get-started-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="get-started-exercise-7-console-stop"></a>

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

#### Memperbarui aplikasi
<a name="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="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 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"></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 `KAReadSourceStreamWriteSinkStream`. 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 AWS layanan lain, Anda dapat menggunakan AWS SDK untuk Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensional 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="get-started-exercise-7-cli-role"></a>

Di bagian ini, Anda membuat peran IAM yang dapat diasumsikan oleh 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 **KA-stream-rw-role** untuk **Role name** (Nama peran). Pilih **Create role** (Buat peran).

   Sekarang Anda sudah membuat IAM role baru yang disebut `KA-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. Di halaman **Ringkasan**, pilih tab **Permissions** (Izin).

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

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

   1. Pilih **KAReadInputStreamWriteOutputStream**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 Managed Service untuk Apache Flink Application
<a name="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_6",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/KA-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/kinesisanalytics/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/kinesisanalytics/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"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/kinesisanalytics/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/kinesisanalytics/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/kinesisanalytics/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"></a>

Di bagian ini, Anda menggunakan tindakan [https://docs.aws.amazon.com/kinesisanalytics/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/kinesisanalytics/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/kinesisanalytics/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/kinesisanalytics/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.