Informasi versi sebelumnya untuk Managed Service untuk Apache Flink - Layanan Terkelola untuk Apache Flink

Amazon Managed Service untuk Apache Flink sebelumnya dikenal sebagai Amazon Kinesis Data Analytics untuk Apache Flink.

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

Informasi versi sebelumnya untuk Managed Service untuk Apache Flink

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. Upgrade versi di tempat untuk Apache Flink

Versi 1.15.2, dan 1.13.2 dari Apache Flink didukung oleh Managed Service untuk Apache Flink, tetapi tidak lagi didukung oleh komunitas Apache Flink.

Menggunakan konektor Apache Flink Kinesis Streams dengan versi Apache Flink sebelumnya

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 atau lebih tinggi.

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

  1. Pastikan Anda menginstal Apache Maven, dan variabel lingkungan JAVA_HOME Anda merujuk ke JDK bukan JRE. Anda dapat menguji penginstalan Apache Maven Anda dengan perintah berikut:

    mvn -version
  2. 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
  3. Batalkan kompresi kode sumber Apache Flink:

    tar -xvf flink-1.8.2-src.tgz
  4. Ubah ke direktori kode sumber Apache Flink:

    cd flink-1.8.2
  5. 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

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 Flink 1.8.2 Memulai Aplikasi.

Untuk informasi tentang cara membuat dan menggunakan kode aplikasi untuk Layanan Terkelola untuk aplikasi Apache Flink, lihat. Membuat aplikasi

Membangun aplikasi dengan Apache Flink 1.6.2

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 Java 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 Flink 1.6.2 Memulai Aplikasi.

Untuk informasi tentang cara membuat dan menggunakan kode aplikasi untuk Layanan Terkelola untuk aplikasi Apache Flink, lihat. Membuat aplikasi

Memutakhirkan aplikasi

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 AWS CloudFormation AWS Management Console Untuk informasi selengkapnya, lihat Upgrade versi di tempat untuk Apache Flink.

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

Kerangka kerja Apache Flink berisi konektor untuk mengakses data dari berbagai sumber.

Memulai: Flink 1.13.2

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.

Komponen Layanan Terkelola untuk aplikasi Apache Flink

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 Sumber.

  • Operators (Operator): Aplikasi memproses data menggunakan satu atau beberapa operator. Operator dapat mengubah, memperkaya, atau menggabungkan data. Untuk informasi selengkapnya, lihat DataStream Operator API.

  • 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 Sink.

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

Untuk menyelesaikan langkah-langkah di panduan ini, Anda harus memiliki hal-hal berikut:

Untuk memulai, buka Langkah 1: Siapkan AWS akun dan buat pengguna administrator.

Langkah 1: Siapkan AWS akun dan buat pengguna administrator

Mendaftar untuk Akun AWS

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/signup.

  2. Ikuti petunjuk online.

    Bagian dari prosedur pendaftaran melibatkan tindakan menerima panggilan telepon dan memasukkan kode verifikasi di keypad telepon.

    Saat Anda mendaftar untuk sebuah Akun AWS, sebuah Pengguna root akun AWSdibuat. 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.

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan mengunjungi https://aws.amazon.com/ dan memilih Akun Saya.

Buat pengguna dengan akses administratif

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 AWS Management Consolesebagai 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 di AWS Sign-In Panduan Pengguna.

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

    Untuk petunjuk, lihat Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda di Panduan Pengguna IAM.

Buat pengguna dengan akses administratif
  1. Aktifkan Pusat Identitas IAM.

    Untuk mendapatkan petunjuk, silakan lihat Mengaktifkan AWS IAM Identity Center di Panduan Pengguna AWS IAM Identity Center .

  2. 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 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 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 petunjuk, lihat Membuat set izin di Panduan AWS IAM Identity Center Pengguna.

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

    Untuk petunjuk, lihat Menambahkan grup di Panduan AWS IAM Identity Center Pengguna.

Memberikan akses programatis

Pengguna membutuhkan akses terprogram jika mereka ingin berinteraksi dengan AWS luar. AWS Management Console 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

Identitas tenaga kerja

(Pengguna yang dikelola di Pusat Identitas IAM)

Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

IAM Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS Mengikuti petunjuk dalam Menggunakan kredensi sementara dengan AWS sumber daya di Panduan Pengguna IAM.
IAM

(Tidak direkomendasikan)

Gunakan kredensyal jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

Langkah selanjutnya

Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)

Langkah selanjutnya

Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)

Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)

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 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:

  2. 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 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 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.

  3. 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 selanjutnya

Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink

Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink

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

Buat dua aliran data Amazon Kinesis

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 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
  2. 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

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).

  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'))
  2. 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

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
  2. Buka direktori amazon-kinesis-data-analytics-java-examples/GettingStarted tersebut.

Perhatikan hal tentang kode aplikasi berikut:

  • File Project Object Model (pom.xml) 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 Properti runtime.

Kompilasi kode aplikasi

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.

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).

  2. Jika ada kesalahan saat mengompilasi, pastikan variabel lingkungan JAVA_HOMEAnda 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

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/.

  2. Pilih Buat bucket.

  3. 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).

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

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

  6. Pilih Create bucket (Buat bucket).

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

  8. 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 Selanjutnya.

  9. 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

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.

Buat dan jalankan aplikasi (konsol)

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

Buat Aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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.

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

  5. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  6. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  7. 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

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

Hentikan aplikasi

Pada MyApplicationhalaman, pilih Berhenti. Konfirmasikan tindakan.

Memperbarui aplikasi

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 MyApplicationhalaman, pilih Konfigurasi. Perbarui pengaturan aplikasi dan pilih Update (Perbarui).

Buat dan jalankan aplikasi (AWS CLI)

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
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 (ARN) (012345678901) dengan ID akun Anda.

{ "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 di Panduan Pengguna IAM.

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for 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.

Membuat peran IAM

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/.

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

  3. 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.

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

  5. 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.

  6. 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.

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

    2. Pilih Attach Policies (Lampirkan Kebijakan).

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

    4. Pilih ReadSourceStreamWriteSinkStream kebijakan AK, dan 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) di Panduan Pengguna IAM.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  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" } } ] } } }
  2. Jalankan tindakan CreateApplication 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

Di bagian ini, Anda menggunakan tindakan StartApplication 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" } } }
  2. 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

Di bagian ini, Anda menggunakan tindakan StopApplication untuk menghentikan aplikasi.

Untuk menghentikan aplikasi
  1. Simpan kode JSON berikut ke file bernama stop_request.json.

    { "ApplicationName": "test" }
  2. Jalankan tindakan StopApplication dengan permintaan berikut untuk menghentikan aplikasi:

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

Aplikasi sekarang dihentikan.

Tambahkan Opsi CloudWatch Logging

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihatMenyiapkan pencatatan aplikasi.

Perbarui Properti Lingkungan

Di bagian ini, Anda menggunakan tindakan UpdateApplication 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" } } ] } } }
  2. 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

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan UpdateApplication 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.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggilUpdateApplication, 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 sufiks nama bucket (<username>) dengan sufiks yang Anda pilih di bagian Buat dua aliran data Amazon Kinesis.

{ "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 selanjutnya

Langkah 4: Bersihkan AWS sumber daya

Langkah 4: Bersihkan AWS sumber daya

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink

  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda

  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda

  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda

  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Langkah selanjutnya

Langkah 5: Langkah selanjutnya

Langkah 5: Langkah selanjutnya

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: 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: 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: 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 untuk Apache Flink Workshop: 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: 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

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. Upgrade versi di tempat untuk Apache Flink

Topik ini berisi versi Memulai (DataStream API) 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.

Komponen Layanan Terkelola untuk aplikasi Apache Flink

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 Sumber.

  • Operators (Operator): Aplikasi memproses data menggunakan satu atau beberapa operator. Operator dapat mengubah, memperkaya, atau menggabungkan data. Untuk informasi selengkapnya, lihat DataStream Operator API.

  • 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 Sink.

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

Untuk menyelesaikan langkah-langkah di panduan ini, Anda harus memiliki hal-hal berikut:

Untuk memulai, buka Langkah 1: Siapkan AWS akun dan buat pengguna administrator.

Langkah 1: Siapkan AWS akun dan buat pengguna administrator

Mendaftar untuk Akun AWS

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/signup.

  2. Ikuti petunjuk online.

    Bagian dari prosedur pendaftaran melibatkan tindakan menerima panggilan telepon dan memasukkan kode verifikasi di keypad telepon.

    Saat Anda mendaftar untuk sebuah Akun AWS, sebuah Pengguna root akun AWSdibuat. 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.

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan mengunjungi https://aws.amazon.com/ dan memilih Akun Saya.

Buat pengguna dengan akses administratif

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 AWS Management Consolesebagai 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 di AWS Sign-In Panduan Pengguna.

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

    Untuk petunjuk, lihat Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda di Panduan Pengguna IAM.

Buat pengguna dengan akses administratif
  1. Aktifkan Pusat Identitas IAM.

    Untuk mendapatkan petunjuk, silakan lihat Mengaktifkan AWS IAM Identity Center di Panduan Pengguna AWS IAM Identity Center .

  2. 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 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 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 petunjuk, lihat Membuat set izin di Panduan AWS IAM Identity Center Pengguna.

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

    Untuk petunjuk, lihat Menambahkan grup di Panduan AWS IAM Identity Center Pengguna.

Memberikan akses programatis

Pengguna membutuhkan akses terprogram jika mereka ingin berinteraksi dengan AWS luar. AWS Management Console 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

Identitas tenaga kerja

(Pengguna yang dikelola di Pusat Identitas IAM)

Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

IAM Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS Mengikuti petunjuk dalam Menggunakan kredensi sementara dengan AWS sumber daya di Panduan Pengguna IAM.
IAM

(Tidak direkomendasikan)

Gunakan kredensyal jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

Langkah selanjutnya

Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)

Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)

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 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:

  2. 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 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 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.

  3. 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 selanjutnya

Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink

Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink

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

Buat dua aliran data Amazon Kinesis

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 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
  2. 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

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).

  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"))
  2. 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

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
  2. Buka direktori amazon-kinesis-data-analytics-java-examples/GettingStarted tersebut.

Perhatikan hal tentang kode aplikasi berikut:

  • File Project Object Model (pom.xml) 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 Properti runtime.

Kompilasi kode aplikasi

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.

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).

  2. Jika ada kesalahan saat mengompilasi, pastikan variabel lingkungan JAVA_HOMEAnda 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

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/.

  2. Pilih Buat bucket.

  3. 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).

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

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

  6. Pilih Create bucket (Buat bucket).

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

  8. 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 Selanjutnya.

  9. 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

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.

Buat dan jalankan aplikasi (konsol)

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

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

  5. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  6. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  7. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  8. 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

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

Hentikan aplikasi

Pada MyApplicationhalaman, pilih Berhenti. Konfirmasikan tindakan.

Memperbarui aplikasi

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 MyApplicationhalaman, pilih Konfigurasi. Perbarui pengaturan aplikasi dan pilih Update (Perbarui).

Buat dan jalankan aplikasi (AWS CLI)

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
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 (ARN) (012345678901) dengan ID akun Anda.

{ "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 di Panduan Pengguna IAM.

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for 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

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/.

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

  3. 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.

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

  5. 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.

  6. 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.

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

    2. Pilih Attach Policies (Lampirkan Kebijakan).

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

    4. Pilih ReadSourceStreamWriteSinkStream kebijakan AK, dan 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) di Panduan Pengguna IAM.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  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" } } ] } } }
  2. Jalankan tindakan CreateApplication 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

Di bagian ini, Anda menggunakan tindakan StartApplication 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" } } }
  2. 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

Di bagian ini, Anda menggunakan tindakan StopApplication untuk menghentikan aplikasi.

Untuk menghentikan aplikasi
  1. Simpan kode JSON berikut ke file bernama stop_request.json.

    { "ApplicationName": "test" }
  2. Jalankan tindakan StopApplication dengan permintaan berikut untuk menghentikan aplikasi:

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

Aplikasi sekarang dihentikan.

Tambahkan opsi CloudWatch pencatatan

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihatMenyiapkan pencatatan aplikasi.

Perbarui properti lingkungan

Di bagian ini, Anda menggunakan tindakan UpdateApplication 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" } } ] } } }
  2. 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

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan UpdateApplication 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.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggilUpdateApplication, 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 sufiks nama bucket (<username>) dengan sufiks yang Anda pilih di bagian Buat dua aliran data Amazon Kinesis.

{ "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 selanjutnya

Langkah 4: Bersihkan AWS sumber daya

Langkah 4: Bersihkan AWS sumber daya

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink

  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda

  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda

  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM rour

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda

  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Langkah selanjutnya

Langkah 5: Langkah selanjutnya

Langkah 5: Langkah selanjutnya

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: 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: 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: 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 untuk Apache Flink Workshop: 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: 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: Sebuah GitHub repositori dari berbagai macam contoh aplikasi Apache Flink.

Memulai: Flink 1.8.2 - mencela

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. Upgrade versi di tempat untuk Apache Flink

Topik ini berisi versi Memulai (DataStream API) tutorial yang menggunakan Apache Flink 1.8.2.

Komponen Layanan Terkelola untuk aplikasi Apache Flink

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 Sumber.

  • Operators (Operator): Aplikasi memproses data menggunakan satu atau beberapa operator. Operator dapat mengubah, memperkaya, atau menggabungkan data. Untuk informasi selengkapnya, lihat DataStream Operator API.

  • 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 Sink.

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

Untuk menyelesaikan langkah-langkah di panduan ini, Anda harus memiliki hal-hal berikut:

Untuk memulai, buka Langkah 1: Siapkan AWS akun dan buat pengguna administrator.

Langkah 1: Siapkan AWS akun dan buat pengguna administrator

Mendaftar untuk Akun AWS

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/signup.

  2. Ikuti petunjuk online.

    Bagian dari prosedur pendaftaran melibatkan tindakan menerima panggilan telepon dan memasukkan kode verifikasi di keypad telepon.

    Saat Anda mendaftar untuk sebuah Akun AWS, sebuah Pengguna root akun AWSdibuat. 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.

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan mengunjungi https://aws.amazon.com/ dan memilih Akun Saya.

Buat pengguna dengan akses administratif

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 AWS Management Consolesebagai 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 di AWS Sign-In Panduan Pengguna.

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

    Untuk petunjuk, lihat Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda di Panduan Pengguna IAM.

Buat pengguna dengan akses administratif
  1. Aktifkan Pusat Identitas IAM.

    Untuk mendapatkan petunjuk, silakan lihat Mengaktifkan AWS IAM Identity Center di Panduan Pengguna AWS IAM Identity Center .

  2. 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 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 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 petunjuk, lihat Membuat set izin di Panduan AWS IAM Identity Center Pengguna.

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

    Untuk petunjuk, lihat Menambahkan grup di Panduan AWS IAM Identity Center Pengguna.

Memberikan akses programatis

Pengguna membutuhkan akses terprogram jika mereka ingin berinteraksi dengan AWS luar. AWS Management Console 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

Identitas tenaga kerja

(Pengguna yang dikelola di Pusat Identitas IAM)

Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

IAM Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS Mengikuti petunjuk dalam Menggunakan kredensi sementara dengan AWS sumber daya di Panduan Pengguna IAM.
IAM

(Tidak direkomendasikan)

Gunakan kredensyal jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)

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 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:

  2. 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 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 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.

  3. 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 selanjutnya

Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink

Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink

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

Buat dua aliran data Amazon Kinesis

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 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
  2. 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

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).

  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"))
  2. 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

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
  2. Buka direktori amazon-kinesis-data-analytics-java-examples/GettingStarted_1_8 tersebut.

Perhatikan hal tentang kode aplikasi berikut:

  • File Project Object Model (pom.xml) 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 Properti runtime.

Kompilasi kode aplikasi

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.

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.

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).

  2. Jika ada kesalahan saat mengompilasi, pastikan variabel lingkungan JAVA_HOMEAnda 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

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/.

  2. Pilih Buat bucket.

  3. 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).

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

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

  6. Pilih Create bucket (Buat bucket).

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

  8. 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 Selanjutnya.

  9. 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

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.

Buat dan jalankan aplikasi (konsol)

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  6. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  7. 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
  1. Pada MyApplicationhalaman, pilih Jalankan. Konfirmasikan tindakan.

  2. Ketika aplikasi berjalan, refresh halaman. Konsol menunjukkan Grafik aplikasi.

Hentikan aplikasi

Pada MyApplicationhalaman, pilih Berhenti. Konfirmasikan tindakan.

Memperbarui aplikasi

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 MyApplicationhalaman, pilih Konfigurasi. Perbarui pengaturan aplikasi dan pilih Update (Perbarui).

Buat dan jalankan aplikasi (AWS CLI)

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
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 (ARN) (012345678901) dengan ID akun Anda.

{ "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 di Panduan Pengguna IAM.

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for 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.

Membuat peran IAM

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/.

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

  3. 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.

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

  5. 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.

  6. 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.

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

    2. Pilih Attach Policies (Lampirkan Kebijakan).

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

    4. Pilih ReadSourceStreamWriteSinkStream kebijakan AK, dan 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) di Panduan Pengguna IAM.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  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" } } ] } } }
  2. Jalankan tindakan CreateApplication 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

Di bagian ini, Anda menggunakan tindakan StartApplication 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" } } }
  2. 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

Di bagian ini, Anda menggunakan tindakan StopApplication untuk menghentikan aplikasi.

Untuk menghentikan aplikasi
  1. Simpan kode JSON berikut ke file bernama stop_request.json.

    { "ApplicationName": "test" }
  2. Jalankan tindakan StopApplication dengan permintaan berikut untuk menghentikan aplikasi:

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

Aplikasi sekarang dihentikan.

Tambahkan opsi CloudWatch pencatatan

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihatMenyiapkan pencatatan aplikasi.

Perbarui properti lingkungan

Di bagian ini, Anda menggunakan tindakan UpdateApplication 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" } } ] } } }
  2. 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

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan UpdateApplication 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.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggilUpdateApplication, 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 sufiks nama bucket (<username>) dengan sufiks yang Anda pilih di bagian Buat dua aliran data Amazon Kinesis.

{ "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 selanjutnya

Langkah 4: Bersihkan AWS sumber daya

Langkah 4: Bersihkan AWS sumber daya

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink

  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Managed Service for Apache Flink, pilih. MyApplication

  3. Pilih Configure (Konfigurasikan).

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

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

Hapus aliran data Kinesis Anda

  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda

  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda

  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Memulai: Flink 1.6.2 - mencela

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. Upgrade versi di tempat untuk Apache Flink

Topik ini berisi versi Memulai (DataStream API) tutorial yang menggunakan Apache Flink 1.6.2.

Komponen Layanan Terkelola untuk aplikasi Apache Flink

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 Sumber.

  • Operators (Operator): Aplikasi memproses data menggunakan satu atau beberapa operator. Operator dapat mengubah, memperkaya, atau menggabungkan data. Untuk informasi selengkapnya, lihat DataStream Operator API.

  • 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 Sink.

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

Untuk menyelesaikan langkah-langkah di panduan ini, Anda harus memiliki hal-hal berikut:

Untuk memulai, buka Langkah 1: Siapkan AWS akun dan buat pengguna administrator.

Langkah 1: Siapkan AWS akun dan buat pengguna administrator

Mendaftar untuk Akun AWS

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/signup.

  2. Ikuti petunjuk online.

    Bagian dari prosedur pendaftaran melibatkan tindakan menerima panggilan telepon dan memasukkan kode verifikasi di keypad telepon.

    Saat Anda mendaftar untuk sebuah Akun AWS, sebuah Pengguna root akun AWSdibuat. 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.

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan mengunjungi https://aws.amazon.com/ dan memilih Akun Saya.

Buat pengguna dengan akses administratif

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 AWS Management Consolesebagai 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 di AWS Sign-In Panduan Pengguna.

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

    Untuk petunjuk, lihat Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda di Panduan Pengguna IAM.

Buat pengguna dengan akses administratif
  1. Aktifkan Pusat Identitas IAM.

    Untuk mendapatkan petunjuk, silakan lihat Mengaktifkan AWS IAM Identity Center di Panduan Pengguna AWS IAM Identity Center .

  2. 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 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 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 petunjuk, lihat Membuat set izin di Panduan AWS IAM Identity Center Pengguna.

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

    Untuk petunjuk, lihat Menambahkan grup di Panduan AWS IAM Identity Center Pengguna.

Memberikan akses programatis

Pengguna membutuhkan akses terprogram jika mereka ingin berinteraksi dengan AWS luar. AWS Management Console 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

Identitas tenaga kerja

(Pengguna yang dikelola di Pusat Identitas IAM)

Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

IAM Gunakan kredensyal sementara untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS Mengikuti petunjuk dalam Menggunakan kredensi sementara dengan AWS sumber daya di Panduan Pengguna IAM.
IAM

(Tidak direkomendasikan)

Gunakan kredensyal jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI, AWS SDK, atau API. AWS

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

Langkah 2: Mengatur AWS Command Line Interface (AWS CLI)

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 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:

  2. 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 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 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.

  3. 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 selanjutnya

Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink

Langkah 3: Buat dan jalankan Layanan Terkelola untuk aplikasi Apache Flink

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

Buat dua aliran data Amazon Kinesis

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 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
  2. 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

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).

  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"))
  2. 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

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
  2. Buka direktori amazon-kinesis-data-analytics-java-examples/GettingStarted_1_6 tersebut.

Perhatikan hal tentang kode aplikasi berikut:

  • File Project Object Model (pom.xml) 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 Properti runtime.

Kompilasi kode aplikasi

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.

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.

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 Menentukan versi Apache Flink aplikasi Anda.

    • 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).

  2. Jika ada kesalahan saat mengompilasi, pastikan variabel lingkungan JAVA_HOMEAnda 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

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/.

  2. Pilih Buat bucket.

  3. 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).

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

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

  6. Pilih Create bucket (Buat bucket).

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

  8. 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 Selanjutnya.

  9. Di langkah Atur izin, jangan ubah pengaturan. Pilih Selanjutnya.

  10. 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

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.

Buat dan jalankan aplikasi (konsol)

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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.

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

  5. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  6. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  7. 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
  1. Pada MyApplicationhalaman, pilih Jalankan. Konfirmasikan tindakan.

  2. Ketika aplikasi berjalan, refresh halaman. Konsol menunjukkan Grafik aplikasi.

Hentikan aplikasi

Pada MyApplicationhalaman, pilih Berhenti. Konfirmasikan tindakan.

Memperbarui aplikasi

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 MyApplicationhalaman, pilih Konfigurasi. Perbarui pengaturan aplikasi dan pilih Update (Perbarui).

Buat dan jalankan aplikasi (AWS CLI)

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

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 (ARN) (012345678901) dengan ID akun Anda.

{ "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 di Panduan Pengguna IAM.

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for 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.

Membuat peran IAM

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/.

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

  3. 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.

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

  5. 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.

  6. 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.

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

    2. Pilih Attach Policies (Lampirkan Kebijakan).

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

    4. Pilih ReadSourceStreamWriteSinkStream kebijakan AK, dan 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) di Panduan Pengguna IAM.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  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" } } ] } } }
  2. Jalankan tindakan CreateApplication 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

Di bagian ini, Anda menggunakan tindakan StartApplication 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" } } }
  2. 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

Di bagian ini, Anda menggunakan tindakan StopApplication untuk menghentikan aplikasi.

Untuk menghentikan aplikasi
  1. Simpan kode JSON berikut ke file bernama stop_request.json.

    { "ApplicationName": "test" }
  2. Jalankan tindakan StopApplication dengan permintaan berikut untuk menghentikan aplikasi:

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

Aplikasi sekarang dihentikan.

Tambahkan opsi CloudWatch pencatatan

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihatMenyiapkan pencatatan aplikasi.

Perbarui properti lingkungan

Di bagian ini, Anda menggunakan tindakan UpdateApplication 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" } } ] } } }
  2. 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

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan UpdateApplication AWS CLI tindakan.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggilUpdateApplication, 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 sufiks nama bucket (<username>) dengan sufiks yang Anda pilih di bagian Buat dua aliran data Amazon Kinesis.

{ "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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink

  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Managed Service for Apache Flink, pilih. MyApplication

  3. Pilih Configure (Konfigurasikan).

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

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

Hapus aliran data Kinesis Anda

  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda

  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda

  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh versi sebelumnya (warisan) untuk Managed Service untuk Apache Flink

catatan

Untuk contoh saat ini, lihatContoh.

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:

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.

DataStream Contoh API

Contoh berikut menunjukkan cara membuat aplikasi menggunakan Apache Flink API DataStream .

Contoh: Jendela jatuh

catatan

Untuk contoh saat ini, lihatContoh.

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 Memulai (DataStream API) terlebih dulu.

Buat sumber daya yang bergantung

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 di Panduan Developer Amazon Kinesis Data Streams. Beri nama aliran data ExampleInputStream dan ExampleOutputStream Anda.

  • Bagaimana Cara Membuat Bucket S3? 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

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).

  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'))
  2. Jalankan skrip stock.py.

    $ python stock.py

    Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

Unduh dan periksa kode 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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. 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

Untuk mengompilasi aplikasi, lakukan hal berikut:

  1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat Prasyarat di tutorial Memulai (DataStream API).

  2. 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

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian Buat sumber daya yang bergantung.

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

  2. 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.

  3. 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

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

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

  5. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  6. 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
  1. Pada MyApplicationhalaman, pilih Jalankan. Biarkan opsi Run without snapshot (Jalankan tanpa snapshot) dipilih, dan konfirmasikan tindakan.

  2. 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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh: Jendela geser

catatan

Untuk contoh saat ini, lihatContoh.

catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Memulai (DataStream API) terlebih dulu.

Buat sumber daya yang bergantung

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 di Panduan Developer Amazon Kinesis Data Streams. Beri nama aliran data ExampleInputStream dan ExampleOutputStream Anda.

  • Bagaimana Cara Membuat Bucket S3? 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

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).

  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"))
  2. Jalankan skrip stock.py.

    $ python stock.py

    Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

Unduh dan periksa kode 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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. 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

Untuk mengompilasi aplikasi, lakukan hal berikut:

  1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat Prasyarat di tutorial Memulai (DataStream API).

  2. 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

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian Buat sumber daya yang bergantung.

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

  2. 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.

  3. 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

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

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

  5. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  6. 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

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 ListApplicationstindakan DescribeApplicationatau.

Jalankan aplikasi

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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. Di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh: Menulis ke ember Amazon S3

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 Memulai (DataStream API) terlebih dulu.

Buat sumber daya yang bergantung

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 di Panduan Developer Amazon Kinesis Data Streams. Beri nama aliran data ExampleInputStream Anda.

  • Bagaimana Cara Membuat Bucket S3? 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

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).

  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'))
  2. Jalankan skrip stock.py.

    $ python stock.py

    Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

Unduh dan periksa kode 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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. 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 tentangStreamingFileSink, lihat StreamingFileSinkdi dokumentasi Apache Flink.

Ubah kode aplikasi

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

Untuk mengompilasi aplikasi, lakukan hal berikut:

  1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat Prasyarat di tutorial Memulai (DataStream API).

  2. 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

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian Buat sumber daya yang bergantung.

  1. Di konsol Amazon S3, pilih bucket ka-app-code -, navigasikan ke folder kode, dan pilih Unggah. <username>

  2. 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.

  3. 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

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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).

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

  7. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data stream.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti ID akun sampel (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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

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

  5. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  6. 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
  1. Pada MyApplicationhalaman, pilih Jalankan. Biarkan opsi Run without snapshot (Jalankan tanpa snapshot) dipilih, dan konfirmasikan tindakan.

  2. Ketika aplikasi berjalan, refresh halaman. Konsol menunjukkan Grafik aplikasi.

Verifikasi output aplikasi

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

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 untuk mengompilasi kode aplikasi yang diperbarui.

  • Ulangi langkah-langkah di bagian Unggah kode Java streaming Apache Flink 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.

Konfigurasikan partisi data

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;
  2. 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 Anda menerapkan logika kustom Anda menggunakan metode getBucketId.

Implementasi kustom dari BucketAssigner dapat menggunakan parameter Context untuk mendapatkan informasi selengkapnya tentang catatan untuk menentukan folder tujuannya.

Konfigurasikan frekuensi baca

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

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 UpdateApplicationtindakan 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 ListApplicationstindakan.

  2. Tambahkan pernyataan impor berikut ke bagian depan file S3StreamingSinkJob.java:

    import java.util.concurrent.TimeUnit;
  3. 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 di Dokumentasi Apache Flink.

Bersihkan AWS sumber daya

Bagian ini mencakup prosedur untuk membersihkan AWS sumber daya yang Anda buat di tutorial Amazon S3.

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. Di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Pada ExampleInputStreamhalaman, pilih Hapus Kinesis Stream dan kemudian konfirmasikan penghapusan.

Hapus objek dan bucket Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

  4. 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

catatan

Untuk contoh saat ini, lihatContoh.

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 Memulai (DataStream API) terlebih dulu.

Buat Amazon VPC dengan klaster Amazon MSK

Untuk membuat contoh klaster VPC dan Amazon MSK untuk mengakses dari aplikasi Managed Service for Apache Flink, ikuti tutorial Memulai Menggunakan Amazon MSK.

Saat menyelesaikan tutorial, perhatikan hal berikut:

  • Pada Langkah 3: Buat Topik, ulangi kafka-topics.sh --create perintah untuk membuat topik tujuan bernamaAWSKafkaTutorialTopicDestination:

    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 ClusterArndengan 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

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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. 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.

  4. 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

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di tutorial Memulai (DataStream API).

catatan

Jika Anda menghapus bucket Amazon S3 dari tutorial Memulai, ikuti lagi langkah Unggah kode Java streaming Apache Flink.

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

  2. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file KafkaGettingStartedJob-1.0.jar yang Anda buat di langkah sebelumnya.

  3. 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
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink.

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

  3. 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.

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

  5. 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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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.

  4. Di bawah Properties (Properti), pilih Add Group (Tambahkan Grup). Masukkan properti berikut:

    ID Grup Kunci Nilai
    KafkaSource topik AWS KafkaTutorialTopic
    KafkaSource bootstrap.servers Daftar server bootstrap yang Anda simpan sebelumnya
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/keamanan/cacerts
    KafkaSource ssl.truststore.password changeit
    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:

    ID Grup Kunci Nilai
    KafkaSink topik AWS KafkaTutorialTopicDestination
    KafkaSink bootstrap.servers Daftar server bootstrap yang Anda simpan sebelumnya
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/keamanan/cacerts
    KafkaSink ssl.truststore.password changeit
    KafkaSink transaction.timeout.ms 1000

    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 Properti runtime.

  5. Di bawah Snapshots, pilih Disable (Nonaktifkan). Tindakan ini akan memudahkan pembaruan aplikasi tanpa memuat data status aplikasi yang tidak valid.

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

  7. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  8. 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.

  9. 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

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

Uji aplikasi

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 di tutorial Memulai Menggunakan Amazon MSK.

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 di topik Pemecahan Masalah.

Contoh: Gunakan konsumen EFO dengan aliran data Kinesis

catatan

Untuk contoh saat ini, lihatContoh.

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink yang membaca dari aliran data Kinesis menggunakan konsumen Enhanced Fan-Out (EFO). 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.

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 Memulai (DataStream API) terlebih dulu.

Buat sumber daya yang bergantung

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 di Panduan Developer Amazon Kinesis Data Streams. Beri nama aliran data ExampleInputStream dan ExampleOutputStream Anda.

  • Bagaimana Cara Membuat Bucket S3? 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

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).

  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'))
  2. Jalankan skrip stock.py.

    $ python stock.py

    Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

Unduh dan periksa kode 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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. 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_PUBLISHER_TYPE: Atur parameter ini ke EFO untuk aplikasi Anda agar dapat menggunakan konsumen EFO untuk mengakses data Kinesis Data Stream.

    • EFO_CONSUMER_NAME: 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

Untuk mengompilasi aplikasi, lakukan hal berikut:

  1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat Prasyarat di tutorial Memulai (DataStream API).

  2. 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

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian Buat sumber daya yang bergantung.

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

  2. 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.

  3. 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

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    catatan

    Izin ini memberi aplikasi kemampuan untuk mengakses konsumen EFO.

    { "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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Di bawah Properties (Properti), pilih Create group (Buat grup).

  5. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    ConsumerConfigProperties flink.stream.recordpublisher EFO
    ConsumerConfigProperties flink.stream.efo.consumername basic-efo-flink-app
    ConsumerConfigProperties INPUT_STREAM ExampleInputStream
    ConsumerConfigProperties flink.inputstream.initpos LATEST
    ConsumerConfigProperties AWS_REGION us-west-2
  6. Di bawah Properties (Properti), pilih Create group (Buat grup).

  7. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    ProducerConfigProperties OUTPUT_STREAM ExampleOutputStream
    ProducerConfigProperties AWS_REGION us-west-2
    ProducerConfigProperties AggregationEnabled false
  8. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  9. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  10. 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

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 Penggemar yang Ditingkatkan aliran data, untuk mengetahui nama konsumen Anda (). basic-efo-flink-app

Bersihkan AWS sumber daya

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus Objek dan Bucket Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh: Menulis ke Firehose

catatan

Untuk contoh saat ini, lihatContoh.

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 Memulai (DataStream API) terlebih dulu.

Buat sumber daya yang bergantung

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:

Tulis catatan sampel ke aliran input

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).

  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'))
  2. Jalankan skrip stock.py.

    $ python stock.py

    Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

Unduh dan periksa kode Java streaming Apache Flink

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
  2. 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

Untuk mengompilasi aplikasi, lakukan hal berikut:

  1. Instal Java dan Maven jika Anda belum menginstalnya. Untuk informasi selengkapnya, lihat Prasyarat di tutorial Memulai (DataStream API).

  2. 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.

  3. 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

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian Buat sumber daya yang bergantung.

Untuk mengunggah kode aplikasi
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di konsol, pilih <username>ember ka-app-code-, lalu pilih Unggah.

  3. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file java-getting-started-1.0.jar yang Anda buat di langkah sebelumnya.

  4. 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

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.

Buat dan jalankan aplikasi (konsol)

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

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/.

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

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

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti semua instans ID akun sampel (012345678901) dengan ID akun Anda.

    { "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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

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

  5. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  6. 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

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

Hentikan aplikasi

Pada MyApplicationhalaman, pilih Berhenti. Konfirmasikan tindakan.

Memperbarui aplikasi

Dengan menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file dari JAR aplikasi.

Pada MyApplicationhalaman, 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. 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)

Di bagian ini, Anda menggunakan AWS CLI untuk membuat dan menjalankan aplikasi Managed Service for Apache Flink.

Membuat kebijakan izin

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 (nama pengguna) dengan nama pengguna yang akan Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARN) (012345678901) dengan ID akun Anda.

{ "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 di Panduan Pengguna IAM.

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for 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.

Membuat peran IAM

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/.

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

  3. 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.

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

  5. 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.

  6. 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.

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

    2. Pilih Attach Policies (Lampirkan Kebijakan).

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

    4. Pilih ReadSourceStreamWriteSinkStream kebijakan AK, dan 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) di Panduan Pengguna IAM.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  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 (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" } } } }
  2. Jalankan tindakan CreateApplication 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

Di bagian ini, Anda menggunakan tindakan StartApplication 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" } } }
  2. 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

Di bagian ini, Anda menggunakan tindakan StopApplication untuk menghentikan aplikasi.

Untuk menghentikan aplikasi
  1. Simpan kode JSON berikut ke file bernama stop_request.json.

    { "ApplicationName": "test" }
  2. Jalankan tindakan StopApplication dengan permintaan berikut untuk menghentikan aplikasi:

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

Aplikasi sekarang dihentikan.

Tambahkan opsi CloudWatch pencatatan

Anda dapat menggunakan AWS CLI untuk menambahkan aliran CloudWatch log Amazon ke aplikasi Anda. Untuk informasi tentang menggunakan CloudWatch Log dengan aplikasi Anda, lihatMenyiapkan pencatatan aplikasi.

Perbarui kode aplikasi

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan UpdateApplication AWS CLI tindakan.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggilUpdateApplication, 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 sufiks nama bucket (<username>) dengan sufiks yang Anda pilih di bagian Buat sumber daya yang bergantung.

{ "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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. Di panel Managed Service for Apache Flink, pilih. MyApplication

  3. Pilih Configure (Konfigurasikan).

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

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

Hapus aliran Firehose Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Firehose, pilih. ExampleDeliveryStream

  3. Di ExampleDeliveryStreamhalaman, pilih Hapus aliran Firehose dan kemudian konfirmasikan penghapusan.

Hapus objek dan ember Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

  4. Jika Anda membuat bucket Amazon S3 untuk tujuan aliran Firehose, hapus juga bucket tersebut.

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Jika Anda membuat kebijakan baru untuk aliran Firehose, hapus kebijakan tersebut juga.

  7. Di bilah navigasi, pilih Roles (Peran).

  8. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

  10. Jika Anda membuat peran baru untuk aliran Firehose, hapus peran itu juga.

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh: Baca dari aliran Kinesis di akun yang berbeda

catatan

Untuk contoh saat ini, lihatContoh.

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.

Prasyarat
  • Dalam tutorial ini, Anda mengubah contoh Memulai untuk membaca data dari aliran Kinesis di akun yang berbeda. Selesaikan tutorial Memulai (DataStream API) 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

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 dalam AWS Command Line Interfacedokumentasi.

Buat aliran Kinesis sumber

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

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 :

Tenggelamkan peran dan kebijakan akun
  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 ID akun sampel (SOURCE01234567) dengan ID akun yang akan Anda gunakan untuk aliran sumber.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeRoleInSourceAccount", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::SOURCE01234567: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:SINK012345678:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] } ] }
  2. 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
  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.

    { "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:SOURCE123456784:stream/SourceAccountExampleInputStream" } ] }
  2. 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).

    2. Di halaman Buat Peran, pilih Layanan AWS . Dalam daftar layanan, pilih Kinesis.

    3. Di bagian Pilih kasus penggunaan Anda, pilih Layanan Terkelola untuk Apache Flink.

    4. Pilih Berikutnya: Izin.

    5. Tambahkan kebijakan izin KA-Source-Stream-Policy yang Anda buat di langkah sebelumnya. Pilih Next:Tags.

    6. Pilih Next: Review (Selanjutnya: Tinjauan).

    7. Beri nama peran KA-Source-Stream-Role. Aplikasi Anda akan menggunakan peran ini untuk mengakses aliran sumber.

  3. 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.

    2. Pilih tab Trust Relationships (Hubungan Kepercayaan).

    3. Pilih Edit trust relationship (Edit Hubungan Kepercayaan).

    4. Gunakan kode berikut untuk hubungan kepercayaan. Ganti ID akun sampel (SINK012345678) dengan ID akun sink Anda.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2" }, "Action": "sts:AssumeRole" } ] }
Perbarui skrip Python

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

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 nomor akun sumber contoh (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

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
  2. 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.

  3. Di halaman aplikasi di Managed Service for Apache Flink console, pilih Configure, Update untuk memuat ulang file JAR aplikasi.

  4. 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

catatan

Untuk contoh saat ini, lihatContoh.

API sumber data saat ini

Jika Anda menggunakan API sumber data saat ini, aplikasi Anda dapat memanfaatkan utilitas Penyedia Konfigurasi MSK Amazon yang dijelaskan di sini. 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.

API Legacy SourceFunction

Jika Anda menggunakan SourceFunction API lama, 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

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Memulai (DataStream API) 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:

Buat VPC dengan kluster MSK Amazon

Untuk membuat contoh klaster VPC dan Amazon MSK untuk mengakses dari aplikasi Managed Service for Apache Flink, ikuti tutorial Memulai Menggunakan Amazon MSK.

Saat menyelesaikan tutorial, juga lakukan hal berikut:

  • Pada Langkah 3: Buat Topik, ulangi kafka-topics.sh --create perintah untuk membuat topik tujuan bernamaAWS 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 ClusterArndengan 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

Di bagian ini, Anda membuat otoritas sertifikat kustom (CA), menggunakannya untuk menghasilkan truststore kustom, dan menerapkannya ke klaster MSK Anda.

Untuk membuat dan menerapkan truststore kustom Anda, ikuti tutorial Otentikasi Klien di Amazon Managed Streaming for Apache Kafka Developer Guide.

Buat kode aplikasi

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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Kode aplikasi terletak diamazon-kinesis-data-analytics-java-examples/CustomKeystore. Anda dapat memeriksa kode untuk membiasakan diri dengan struktur Managed Service untuk kode Apache Flink.

  4. 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

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di tutorial Memulai (DataStream API).

catatan

Jika Anda menghapus bucket Amazon S3 dari tutorial Memulai, ikuti lagi langkah Unggah kode Java streaming Apache Flink.

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

  2. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file flink-app-1.0-SNAPSHOT.jar yang Anda buat di langkah sebelumnya.

  3. 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
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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.

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

  5. 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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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.

  4. Di bawah Properties (Properti), pilih Add Group (Tambahkan Grup). Masukkan properti berikut:

    ID Grup Kunci Nilai
    KafkaSource topik AWS KafkaTutorialTopic
    KafkaSource bootstrap.servers Daftar server bootstrap yang Anda simpan sebelumnya
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/keamanan/cacerts
    KafkaSource ssl.truststore.password changeit
    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:

    ID Grup Kunci Nilai
    KafkaSink topik AWS KafkaTutorialTopicDestination
    KafkaSink bootstrap.servers Daftar server bootstrap yang Anda simpan sebelumnya
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/keamanan/cacerts
    KafkaSink ssl.truststore.password changeit
    KafkaSink transaction.timeout.ms 1000

    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 Properti runtime.

  5. Di bawah Snapshots, pilih Disable (Nonaktifkan). Tindakan ini akan memudahkan pembaruan aplikasi tanpa memuat data status aplikasi yang tidak valid.

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

  7. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  8. 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.

  9. 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

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

Uji aplikasi

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 di tutorial Memulai Menggunakan Amazon MSK.

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 di topik Pemecahan Masalah.

Contoh Python

Contoh berikut menunjukkan cara membuat aplikasi menggunakan Python dengan API Tabel Apache Flink.

Contoh: Membuat jendela jatuh di Python

catatan

Untuk contoh saat ini, lihatContoh.

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 Memulai (Python) terlebih dulu.

Buat sumber daya yang bergantung

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 di Panduan Developer Amazon Kinesis Data Streams. Beri nama aliran data ExampleInputStream dan ExampleOutputStream Anda.

  • Bagaimana Cara Membuat Bucket S3? 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

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).

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'))
  2. Jalankan skrip stock.py.

    $ python stock.py

    Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

Unduh dan periksa kode aplikasi

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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. 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 flink-sql-connector-kinesis-1.15.2.jar.

Kompres dan unggah kode Python streaming Apache Flink

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian Buat sumber daya yang bergantung.

  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.

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

  3. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file myapp.zip yang Anda buat di langkah sebelumnya.

  4. 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

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Di bawah Properties (Properti), pilih Add group (Tambahkan grup).

  5. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Pilih Simpan.

  6. Di bawah Properties (Properti), pilih Add group (Tambahkan grup) lagi.

  7. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. 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 Menentukan file kode Anda.

  9. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    kinesis.analytics.flink.run.options python tumbling-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis-1.15.2.jar
  10. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  11. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  12. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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

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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh: Membuat jendela geser dengan Python

catatan

Untuk contoh saat ini, lihatContoh.

catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Memulai (Python) terlebih dulu.

Buat sumber daya yang bergantung

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 di Panduan Developer Amazon Kinesis Data Streams. Beri nama aliran data ExampleInputStream dan ExampleOutputStream Anda.

  • Bagaimana Cara Membuat Bucket S3? 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

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).

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'))
  2. Jalankan skrip stock.py.

    $ python stock.py

    Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

Unduh dan periksa kode aplikasi

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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
  3. 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

Kompres dan unggah kode Python streaming Apache Flink

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian Buat sumber daya yang bergantung.

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.

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

  3. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file myapp.zip yang Anda buat di langkah sebelumnya.

  4. 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

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Di bawah Properties (Properti), pilih Add group (Tambahkan grup).

  5. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Pilih Simpan.

  6. Di bawah Properties (Properti), pilih Add group (Tambahkan grup) lagi.

  7. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. 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 Menentukan file kode Anda.

  9. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    kinesis.analytics.flink.run.options python sliding-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis_1.15.2.jar
  10. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  11. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  12. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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

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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh: Kirim data streaming ke Amazon S3 dengan Python

catatan

Untuk contoh saat ini, lihatContoh.

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 Memulai (Python) terlebih dulu.

Buat sumber daya yang bergantung

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 di Panduan Developer Amazon Kinesis Data Streams. Beri nama aliran data ExampleInputStream Anda.

  • Bagaimana Cara Membuat Bucket S3? 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

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).

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'))
  2. Jalankan skrip stock.py.

    $ python stock.py

    Biarkan skrip tetap berjalan saat menyelesaikan sisa tutorial.

Unduh dan periksa kode aplikasi

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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. 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_tableFungsi 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

Kompres dan unggah kode Python streaming Apache Flink

Di bagian ini, Anda mengunggah kode aplikasi ke bucket Amazon S3 yang Anda buat di bagian Buat sumber daya yang bergantung.

  1. Gunakan aplikasi kompresi pilihan Anda untuk mengompres file streaming-file-sink.py dan flink-sql-connector-kinesis-1.15.2.jar. Beri nama arsip myapp.zip.

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

  3. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file myapp.zip yang Anda buat di langkah sebelumnya.

  4. 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

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Di bawah Properties (Properti), pilih Add group (Tambahkan grup).

  5. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Pilih Simpan.

  6. 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 Menentukan file kode Anda.

  7. Masukkan properti dan nilai aplikasi berikut:

    ID Grup Kunci Nilai
    kinesis.analytics.flink.run.options python streaming-file-sink.py
    kinesis.analytics.flink.run.options jarfile S3Sink/lib/flink-sql-connector-kinesis-1.15.2.jar
  8. 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 Menentukan file kode Anda.

  9. Masukkan properti dan nilai aplikasi berikut: (ganti nama ember dengan nama sebenarnya dari bucket Amazon S3 Anda.)

    ID Grup Kunci Nilai
    sink.config.0 output.bucket.name bucket-name
  10. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  11. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  12. 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

Edit kebijakan IAM untuk menambahkan izin mengakses Kinesis data streams.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

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

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

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

    { "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

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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

Hapus objek dan bucket Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh scala

Contoh berikut menunjukkan cara membuat aplikasi menggunakan Scala dengan Apache Flink.

Contoh: Membuat jendela jatuh di Scala

catatan

Untuk contoh saat ini, lihatContoh.

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 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 (Scala).

Unduh dan periksa kode aplikasi

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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Buka direktori amazon-kinesis-data-analytics-java-examples/scala/TumblingWindow tersebut.

Perhatikan hal tentang kode aplikasi berikut:

  • build.sbtFile berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.

  • BasicStreamingJob.scalaFile 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 sink 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.

Kompilasi dan unggah kode aplikasi

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

Kompilasi Kode Aplikasi

Gunakan alat build SBT untuk membangun kode Scala untuk aplikasi. Untuk menginstal SBT, lihat Menginstal sbt dengan pengaturan cs. Anda juga perlu menginstal Java Development Kit (JDK). Lihat Prasyarat untuk Menyelesaikan Latihan.

  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
  2. 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/.

  2. Pilih Buat ember

  3. 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).

  4. Di opsi Konfigurasi, pertahankan pengaturan apa adanya, dan pilih Berikutnya.

  5. Di Setel izin, pertahankan pengaturan apa adanya, dan pilih Berikutnya.

  6. Pilih Buat bucket.

  7. Pilih ka-app-code-<username> bucket, lalu pilih Unggah.

  8. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file tumbling-window-scala-1.0.jar yang Anda buat di langkah sebelumnya.

  9. 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)

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

Gunakan prosedur berikut untuk mengonfigurasi aplikasi.

Untuk mengonfigurasi aplikasi
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Di bawah Properties (Properti), pilih Add group (Tambahkan grup).

  5. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Pilih Simpan.

  6. Di bawah Properties (Properti), pilih Add group (Tambahkan grup) lagi.

  7. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  9. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  10. 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

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/.

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

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

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

    { "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

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

Hentikan aplikasi

Untuk menghentikan aplikasi, pada MyApplicationhalaman, pilih Berhenti. Konfirmasikan tindakan.

Membuat dan menjalankan aplikasi (CLI)

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
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 (ARN) (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 di Panduan Pengguna IAM.

Membuat peran IAM

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/.

  2. Di panel navigasi, pilih Peran dan kemudian Buat Peran.

  3. Di bawah Pilih jenis identitas tepercaya, pilih AWS Layanan

  4. Di bawah Pilih layanan yang akan menggunakan peran ini, pilih Kinesis.

  5. Di bawah Pilih kasus penggunaan Anda, pilih Layanan Terkelola untuk Apache Flink.

  6. Pilih Berikutnya: Izin.

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

  8. 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

  9. 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.

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

    2. Pilih Attach Policies (Lampirkan Kebijakan).

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

    4. 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) di Panduan Pengguna IAM.

Buat aplikasi

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. ServiceExecutionRoleHarus 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 CreateApplicationdengan 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

Di bagian ini, Anda menggunakan StartApplicationtindakan 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" } } }
  2. 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

Di bagian ini, Anda menggunakan StopApplicationtindakan untuk menghentikan aplikasi.

Untuk menghentikan aplikasi
  1. Simpan kode JSON berikut ke file bernama stop_request.json.

    { "ApplicationName": "tumbling_window" }
  2. 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 pencatatan

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.

Perbarui properti lingkungan

Di bagian ini, Anda menggunakan UpdateApplicationtindakan untuk mengubah properti lingkungan untuk aplikasi tanpa mengkompilasi 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" } } ] } } }
  2. 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

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan tindakan UpdateApplicationCLI.

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.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggilUpdateApplication, 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

{ "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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh: Membuat jendela geser di Scala

catatan

Untuk contoh saat ini, lihatContoh.

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 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 (Scala).

Unduh dan periksa kode aplikasi

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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Buka direktori amazon-kinesis-data-analytics-java-examples/scala/SlidingWindow tersebut.

Perhatikan hal tentang kode aplikasi berikut:

  • build.sbtFile berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.

  • BasicStreamingJob.scalaFile 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 sink 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.

Kompilasi dan unggah kode aplikasi

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

Kompilasi Kode Aplikasi

Gunakan alat build SBT untuk membangun kode Scala untuk aplikasi. Untuk menginstal SBT, lihat Menginstal sbt dengan pengaturan cs. Anda juga perlu menginstal Java Development Kit (JDK). Lihat Prasyarat untuk Menyelesaikan Latihan.

  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
  2. 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/.

  2. Pilih Buat ember

  3. 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).

  4. Di opsi Konfigurasi, pertahankan pengaturan apa adanya, dan pilih Berikutnya.

  5. Di Setel izin, pertahankan pengaturan apa adanya, dan pilih Berikutnya.

  6. Pilih Buat bucket.

  7. Pilih ka-app-code-<username> bucket, lalu pilih Unggah.

  8. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file sliding-window-scala-1.0.jar yang Anda buat di langkah sebelumnya.

  9. 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)

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

Gunakan prosedur berikut untuk mengonfigurasi aplikasi.

Untuk mengonfigurasi aplikasi
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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..

  3. 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 ).

  4. Di bawah Properties (Properti), pilih Add group (Tambahkan grup).

  5. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Pilih Simpan.

  6. Di bawah Properties (Properti), pilih Add group (Tambahkan grup) lagi.

  7. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  9. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  10. 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

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/.

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

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

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

    { "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

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

Hentikan aplikasi

Untuk menghentikan aplikasi, pada MyApplicationhalaman, pilih Berhenti. Konfirmasikan tindakan.

Membuat dan menjalankan aplikasi (CLI)

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
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 (ARN) (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 di Panduan Pengguna IAM.

Membuat peran IAM

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/.

  2. Di panel navigasi, pilih Peran dan kemudian Buat Peran.

  3. Di bawah Pilih jenis identitas tepercaya, pilih AWS Layanan

  4. Di bawah Pilih layanan yang akan menggunakan peran ini, pilih Kinesis.

  5. Di bawah Pilih kasus penggunaan Anda, pilih Layanan Terkelola untuk Apache Flink.

  6. Pilih Berikutnya: Izin.

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

  8. 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

  9. 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.

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

    2. Pilih Attach Policies (Lampirkan Kebijakan).

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

    4. 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) di Panduan Pengguna IAM.

Buat aplikasi

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": "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 CreateApplicationdengan 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

Di bagian ini, Anda menggunakan StartApplicationtindakan 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" } } }
  2. 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

Di bagian ini, Anda menggunakan StopApplicationtindakan untuk menghentikan aplikasi.

Untuk menghentikan aplikasi
  1. Simpan kode JSON berikut ke file bernama stop_request.json.

    { "ApplicationName": "sliding_window" }
  2. 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 pencatatan

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.

Perbarui properti lingkungan

Di bagian ini, Anda menggunakan UpdateApplicationtindakan untuk mengubah properti lingkungan untuk aplikasi tanpa mengkompilasi 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" } } ] } } }
  2. 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

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan tindakan UpdateApplicationCLI.

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.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggilUpdateApplication, 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

{ "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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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

Contoh: Kirim data streaming ke Amazon S3 di Scala

catatan

Untuk contoh saat ini, lihatContoh.

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 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 (Scala). Anda hanya perlu membuat folder tambahan data/ di bucket ka-app-code Amazon S3 -. <username>

Unduh dan periksa kode aplikasi

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.

  2. Klon repositori jarak jauh dengan perintah berikut:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Buka direktori amazon-kinesis-data-analytics-java-examples/scala/S3Sink tersebut.

Perhatikan hal tentang kode aplikasi berikut:

  • build.sbtFile berisi informasi tentang konfigurasi dan dependensi aplikasi, termasuk Layanan Terkelola untuk pustaka Apache Flink.

  • BasicStreamingJob.scalaFile 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 sink 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.

Kompilasi dan unggah kode aplikasi

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

Kompilasi Kode Aplikasi

Gunakan alat build SBT untuk membangun kode Scala untuk aplikasi. Untuk menginstal SBT, lihat Menginstal sbt dengan pengaturan cs. Anda juga perlu menginstal Java Development Kit (JDK). Lihat Prasyarat untuk Menyelesaikan Latihan.

  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
  2. 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/.

  2. Pilih Buat ember

  3. 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).

  4. Di opsi Konfigurasi, pertahankan pengaturan apa adanya, dan pilih Berikutnya.

  5. Di Setel izin, pertahankan pengaturan apa adanya, dan pilih Berikutnya.

  6. Pilih Buat bucket.

  7. Pilih ka-app-code-<username> bucket, lalu pilih Unggah.

  8. Di langkah Pilih file, pilih Add files (Tambahkan berkas). Navigasikan ke file s3-sink-scala-1.0.jar yang Anda buat di langkah sebelumnya.

  9. 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)

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

Buat aplikasi
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

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

  3. 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).

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

  5. 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

Gunakan prosedur berikut untuk mengonfigurasi aplikasi.

Untuk mengonfigurasi aplikasi
  1. Pada MyApplicationhalaman, pilih Konfigurasi.

  2. 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.

  3. 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 ).

  4. Di bawah Properties (Properti), pilih Add group (Tambahkan grup).

  5. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Pilih Simpan.

  6. Di bawah Properties (Properti), pilih Add group (Tambahkan grup).

  7. Masukkan yang berikut ini:

    ID Grup Kunci Nilai
    ProducerConfigProperties s3.sink.path s3a://ka-app-code-<user-name>/data
  8. Di bawah Pemantauan, pastikan Memantau tingkat metrik diatur ke Aplikasi.

  9. Untuk CloudWatch logging, pilih kotak centang Aktifkan.

  10. 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

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/.

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

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

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

    { "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

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

Hentikan aplikasi

Untuk menghentikan aplikasi, pada MyApplicationhalaman, pilih Berhenti. Konfirmasikan tindakan.

Membuat dan menjalankan aplikasi (CLI)

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
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 (ARN) (012345678901) dengan ID akun Anda.

{ "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: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" } ] }

Untuk step-by-step petunjuk membuat kebijakan izin, lihat Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda di Panduan Pengguna IAM.

Membuat peran IAM

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/.

  2. Di panel navigasi, pilih Peran dan kemudian Buat Peran.

  3. Di bawah Pilih jenis identitas tepercaya, pilih AWS Layanan

  4. Di bawah Pilih layanan yang akan menggunakan peran ini, pilih Kinesis.

  5. Di bawah Pilih kasus penggunaan Anda, pilih Layanan Terkelola untuk Apache Flink.

  6. Pilih Berikutnya: Izin.

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

  8. 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

  9. 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.

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

    2. Pilih Attach Policies (Lampirkan Kebijakan).

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

    4. 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) di Panduan Pengguna IAM.

Buat aplikasi

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": "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 CreateApplicationdengan 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

Di bagian ini, Anda menggunakan StartApplicationtindakan 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" } } }
  2. 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

Di bagian ini, Anda menggunakan StopApplicationtindakan untuk menghentikan aplikasi.

Untuk menghentikan aplikasi
  1. Simpan kode JSON berikut ke file bernama stop_request.json.

    { "ApplicationName": "s3_sink" }
  2. 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 pencatatan

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.

Perbarui properti lingkungan

Di bagian ini, Anda menggunakan UpdateApplicationtindakan untuk mengubah properti lingkungan untuk aplikasi tanpa mengkompilasi 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" } } ] } } }
  2. 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

Ketika Anda perlu memperbarui kode aplikasi Anda dengan versi baru dari paket kode Anda, Anda menggunakan tindakan UpdateApplicationCLI.

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.

Untuk menggunakan AWS CLI, hapus paket kode sebelumnya dari bucket Amazon S3, unggah versi baru, dan panggilUpdateApplication, 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

{ "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

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

Hapus Layanan Terkelola Anda untuk aplikasi Apache Flink
  1. Buka Layanan Terkelola untuk konsol Apache Flink di https://console.aws.amazon.com/flink

  2. di panel Managed Service for Apache Flink, pilih. MyApplication

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

Hapus aliran data Kinesis Anda
  1. Buka konsol Kinesis di https://console.aws.amazon.com/kinesis.

  2. Di panel Kinesis Data Streams, pilih. ExampleInputStream

  3. Di ExampleInputStreamhalaman, pilih Hapus Stream Kinesis dan kemudian konfirmasikan penghapusan.

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

Hapus objek dan ember Amazon S3 Anda
  1. Buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Pilih ka-app-code- ember. <username>

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

Hapus sumber daya IAM Anda
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di bilah navigasi, pilih Policies (Kebijakan).

  3. Di kontrol filter, masukkan kinesis.

  4. Pilih kebijakan kinesis-analytics-service- MyApplication -us-west-2.

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

  6. Di bilah navigasi, pilih Roles (Peran).

  7. Pilih peran kinesis-analytics- -us-west-2. MyApplication

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

Hapus CloudWatch sumber daya Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di bilah navigasi, pilih Logs.

  3. Pilih grup log MyApplication/aws/kinesis-analytics/.

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