

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

# Membuat dan menjalankan aplikasi (CLI)
<a name="examples-gs-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-gs-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*.

## Buat kebijakan IAM
<a name="examples-gs-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-gs-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 akhiran ARN bucket (username) dengan akhiran yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (012345678901) di peran eksekusi layanan dengan ID akun Anda.

```
{
    "ApplicationName": "getting_started",
    "ApplicationDescription": "Scala getting started application",
    "RuntimeEnvironment": "FLINK-1_19",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "getting-started-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-gs-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": "getting_started",
       "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": "getting_started",
          "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-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": "getting_started",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-<username>",
                    "FileKeyUpdate": "getting-started-scala-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```