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 sekarang berencana untuk mengakhiri dukungan untuk versi ini di Amazon Managed Service untuk Apache Flink. Mulai 5 November 2024, Anda tidak akan dapat membuat aplikasi baru untuk versi Flink ini. Anda dapat terus menjalankan aplikasi yang ada saat ini.

Untuk semua Wilayah dengan pengecualian Wilayah China dan AWS GovCloud (US) Regions, mulai 5 Februari 2025, Anda tidak akan lagi dapat membuat, memulai, atau menjalankan aplikasi menggunakan versi Apache Flink ini di Amazon Managed Service untuk Apache Flink.

Untuk Wilayah China dan AWS GovCloud (US) Regions, mulai 19 Maret 2025, Anda tidak akan lagi dapat membuat, memulai, atau menjalankan aplikasi menggunakan versi Apache Flink ini di Amazon Managed Service untuk Apache Flink.

Anda dapat memutakhirkan aplikasi secara statis menggunakan fitur peningkatan versi di tempat di Layanan Terkelola untuk Apache Flink. Untuk informasi selengkapnya, lihat Gunakan upgrade versi di tempat untuk Apache Flink.

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

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

  1. Pastikan bahwa Anda memiliki Apache Maven diinstal, dan variabel JAVA_HOME lingkungan Anda menunjuk ke JDK bukan a. 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 Jawa SDK 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,,, atau. AWS CLI AWS SDK AWS CloudFormation AWS Management Console Untuk informasi selengkapnya, lihat Gunakan 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 Layanan Terkelola untuk Apache Flink dan. DataStream API 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 Tambahkan sumber data streaming.

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

  • Sink: Aplikasi menghasilkan data ke sumber eksternal menggunakan sink. Konektor sink menulis data ke aliran data Kinesis, aliran Firehose, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat Tulis data menggunakan sink.

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

  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 mengirimkan email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk https://aws.amazon.com.rproxy.goskope.comke/ 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. Aktifkan otentikasi multi-faktor (MFA) untuk pengguna root Anda.

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

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

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

  2. Di Pusat IAM Identitas, 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 IAM Identitas, gunakan login URL yang dikirim ke alamat email saat Anda membuat pengguna Pusat IAM Identitas.

    Untuk bantuan masuk menggunakan pengguna Pusat IAM Identitas, lihat Masuk ke portal AWS akses di Panduan AWS Sign-In Pengguna.

Tetapkan akses ke pengguna tambahan
  1. Di Pusat IAM Identitas, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

    Untuk petunjuknya, 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 dikelola di Pusat IAM Identitas)

Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

IAM Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs Mengikuti petunjuk dalam Menggunakan kredensi sementara dengan AWS sumber daya di IAMPanduan Pengguna.
IAM

(Tidak direkomendasikan)

Gunakan kredensi jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

Langkah selanjutnya

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 Menggunakan properti runtime di Managed Service untuk Apache Flink.

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 mengkompilasi dan mengemasnya ke dalam JAR file. Anda dapat mengompilasi dan mengemas kode Anda dengan salah satu dari dua cara:

    • Gunakan alat Maven baris perintah. Buat JAR file Anda dengan menjalankan perintah berikut di direktori yang berisi pom.xml file:

      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 JAR file, atau Anda dapat mengompres paket Anda dan mengunggahnya sebagai ZIP file. Jika Anda membuat aplikasi menggunakan AWS CLI, Anda menentukan jenis konten kode Anda (JARatauZIP).

  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 - ka-app-code<username>bucket, dan pilih Upload.

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

  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, resource 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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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

Menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file aplikasiJAR. 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 IAM sumber daya ini, aplikasi Anda tidak dapat mengakses data dan aliran lognya.

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 kemudian melampirkan kebijakan ke IAM peran (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin AKReadSourceStreamWriteSinkStream. Ganti username dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (012345678901) dengan ID akun Anda.

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

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensional yang SDK diperlukan oleh IAM peran eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

Buat IAM peran

Di bagian ini, Anda membuat IAM peran 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 peran. Setiap IAM peran memiliki dua kebijakan yang terlampir. 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 peran
  1. Buka IAM konsol 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 telah menciptakan IAM peran baru yang disebutMF-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 AKReadSourceStreamWriteSinkStreamkebijakan, lalu pilih Lampirkan kebijakan.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Catat peran baru. ARN

Untuk step-by-step petunjuk cara membuat peran, lihat Membuat IAM Peran (Konsol) di Panduan IAM Pengguna.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  1. Simpan JSON kode berikut ke file bernamacreate_request.json. Ganti peran sampel ARN dengan peran yang Anda buat sebelumnya. ARN Ganti ARN akhiran bucket (username) dengan akhiran 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 JSON kode berikut ke file bernamastart_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 JSON kode berikut ke file bernamastop_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, lihatSiapkan pencatatan aplikasi di Layanan Terkelola untuk Apache Flink.

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 JSON kode berikut ke file bernamaupdate_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 akhiran nama bucket (<username>) dengan akhiran yang Anda pilih di Buat dua aliran data Amazon Kinesis bagian.

{ "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 /kinesis. https://console.aws.amazon.com

  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 /flink https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda

  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

  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 memberikan ETL contoh 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 IAM peran dan kebijakan, CloudWatch dasbor, dan CloudWatch alarm.

  • AWS Solusi Data Streaming untuk Amazon MSK: Solusi Data AWS Streaming untuk Amazon MSK menyediakan AWS CloudFormation templat 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 for 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.

  • Pelajari Flink: Pelatihan Hands On: Pelatihan pengantar resmi Apache Flink yang membantu Anda mulai menulis streaming, analitikETL, dan aplikasi berbasis acara yang dapat diskalakan.

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

Topik ini berisi versi Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink tutorial yang menggunakan Apache Flink 1.11.1.

Bagian ini memperkenalkan Anda pada konsep dasar Layanan Terkelola untuk Apache Flink dan. DataStream API 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 Tambahkan sumber data streaming.

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

  • Sink: Aplikasi menghasilkan data ke sumber eksternal menggunakan sink. Konektor sink menulis data ke aliran data Kinesis, aliran Firehose, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat Tulis data menggunakan sink.

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

  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 mengirimkan email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk https://aws.amazon.com.rproxy.goskope.comke/ 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. Aktifkan otentikasi multi-faktor (MFA) untuk pengguna root Anda.

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

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

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

  2. Di Pusat IAM Identitas, 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 IAM Identitas, gunakan login URL yang dikirim ke alamat email saat Anda membuat pengguna Pusat IAM Identitas.

    Untuk bantuan masuk menggunakan pengguna Pusat IAM Identitas, lihat Masuk ke portal AWS akses di Panduan AWS Sign-In Pengguna.

Tetapkan akses ke pengguna tambahan
  1. Di Pusat IAM Identitas, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

    Untuk petunjuknya, 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 dikelola di Pusat IAM Identitas)

Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

IAM Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs Mengikuti petunjuk dalam Menggunakan kredensi sementara dengan AWS sumber daya di IAMPanduan Pengguna.
IAM

(Tidak direkomendasikan)

Gunakan kredensi jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

Langkah selanjutnya

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 Menggunakan properti runtime di Managed Service untuk Apache Flink.

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 mengkompilasi dan mengemasnya ke dalam JAR file. Anda dapat mengompilasi dan mengemas kode Anda dengan salah satu dari dua cara:

    • Gunakan alat Maven baris perintah. Buat JAR file Anda dengan menjalankan perintah berikut di direktori yang berisi pom.xml file:

      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 versi Java proyek Anda adalah 11.

    Anda dapat mengunggah paket Anda sebagai JAR file, atau Anda dapat mengompres paket Anda dan mengunggahnya sebagai ZIP file. Jika Anda membuat aplikasi menggunakan AWS CLI, Anda menentukan jenis konten kode Anda (JARatauZIP).

  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 - ka-app-code<username>bucket, dan pilih Upload.

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

  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, resource 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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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

Menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file aplikasiJAR. 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 IAM sumber daya ini, aplikasi Anda tidak dapat mengakses data dan aliran lognya.

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 kemudian melampirkan kebijakan ke IAM peran (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin AKReadSourceStreamWriteSinkStream. Ganti username dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (012345678901) dengan ID akun Anda.

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

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensional yang SDK diperlukan oleh IAM peran eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

Buat IAM Peran

Di bagian ini, Anda membuat IAM peran 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 peran. Setiap IAM peran memiliki dua kebijakan yang terlampir. 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 peran
  1. Buka IAM konsol 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 telah menciptakan IAM peran baru yang disebutMF-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 AKReadSourceStreamWriteSinkStreamkebijakan, lalu pilih Lampirkan kebijakan.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Catat peran baru. ARN

Untuk step-by-step petunjuk cara membuat peran, lihat Membuat IAM Peran (Konsol) di Panduan IAM Pengguna.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  1. Simpan JSON kode berikut ke file bernamacreate_request.json. Ganti peran sampel ARN dengan peran yang Anda buat sebelumnya. ARN Ganti ARN akhiran bucket (username) dengan akhiran 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 JSON kode berikut ke file bernamastart_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 JSON kode berikut ke file bernamastop_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, lihatSiapkan pencatatan aplikasi di Layanan Terkelola untuk Apache Flink.

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 JSON kode berikut ke file bernamaupdate_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 akhiran nama bucket (<username>) dengan akhiran yang Anda pilih di Buat dua aliran data Amazon Kinesis bagian.

{ "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 /kinesis. https://console.aws.amazon.com

  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 /flink https://console.aws.amazon.com

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

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

Hapus sumber daya rour IAM

  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

  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 memberikan ETL contoh 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 IAM peran dan kebijakan, CloudWatch dasbor, dan CloudWatch alarm.

  • AWS Solusi Data Streaming untuk Amazon MSK: Solusi Data AWS Streaming untuk Amazon MSK menyediakan AWS CloudFormation templat 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 for 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.

  • Pelajari Flink: Pelatihan Hands On: Pelatihan pengantar resmi Apache Flink yang membantu Anda mulai menulis streaming, analitikETL, dan aplikasi berbasis acara yang dapat diskalakan.

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

Topik ini berisi versi Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 Tambahkan sumber data streaming.

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

  • Sink: Aplikasi menghasilkan data ke sumber eksternal menggunakan sink. Konektor sink menulis data ke aliran data Kinesis, aliran Firehose, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat Tulis data menggunakan sink.

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

  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 mengirimkan email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk https://aws.amazon.com.rproxy.goskope.comke/ 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. Aktifkan otentikasi multi-faktor (MFA) untuk pengguna root Anda.

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

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

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

  2. Di Pusat IAM Identitas, 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 IAM Identitas, gunakan login URL yang dikirim ke alamat email saat Anda membuat pengguna Pusat IAM Identitas.

    Untuk bantuan masuk menggunakan pengguna Pusat IAM Identitas, lihat Masuk ke portal AWS akses di Panduan AWS Sign-In Pengguna.

Tetapkan akses ke pengguna tambahan
  1. Di Pusat IAM Identitas, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

    Untuk petunjuknya, 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 dikelola di Pusat IAM Identitas)

Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

IAM Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs Mengikuti petunjuk dalam Menggunakan kredensi sementara dengan AWS sumber daya di IAMPanduan Pengguna.
IAM

(Tidak direkomendasikan)

Gunakan kredensi jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs

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 Menggunakan properti runtime di Managed Service untuk Apache Flink.

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 mengkompilasi dan mengemasnya ke dalam JAR file. Anda dapat mengompilasi dan mengemas kode Anda dengan salah satu dari dua cara:

    • Gunakan alat Maven baris perintah. Buat JAR file Anda dengan menjalankan perintah berikut di direktori yang berisi pom.xml file:

      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 JAR file, atau Anda dapat mengompres paket Anda dan mengunggahnya sebagai ZIP file. Jika Anda membuat aplikasi menggunakan AWS CLI, Anda menentukan jenis konten kode Anda (JARatauZIP).

  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 - ka-app-code<username>bucket, dan pilih Upload.

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

  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, resource 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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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

Menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file aplikasiJAR. 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 IAM sumber daya ini, aplikasi Anda tidak dapat mengakses data dan aliran lognya.

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 kemudian melampirkan kebijakan ke IAM peran (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin AKReadSourceStreamWriteSinkStream. Ganti username dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (012345678901) dengan ID akun Anda.

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

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensional yang SDK diperlukan oleh IAM peran eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

Buat IAM peran

Di bagian ini, Anda membuat IAM peran 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 peran. Setiap IAM peran memiliki dua kebijakan yang terlampir. 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 peran
  1. Buka IAM konsol 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 telah menciptakan IAM peran baru yang disebutMF-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 AKReadSourceStreamWriteSinkStreamkebijakan, lalu pilih Lampirkan kebijakan.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Catat peran baru. ARN

Untuk step-by-step petunjuk cara membuat peran, lihat Membuat IAM Peran (Konsol) di Panduan IAM Pengguna.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  1. Simpan JSON kode berikut ke file bernamacreate_request.json. Ganti peran sampel ARN dengan peran yang Anda buat sebelumnya. ARN Ganti ARN akhiran bucket (username) dengan akhiran 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 JSON kode berikut ke file bernamastart_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 JSON kode berikut ke file bernamastop_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, lihatSiapkan pencatatan aplikasi di Layanan Terkelola untuk Apache Flink.

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 JSON kode berikut ke file bernamaupdate_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 akhiran nama bucket (<username>) dengan akhiran yang Anda pilih di Buat dua aliran data Amazon Kinesis bagian.

{ "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 /kinesis. https://console.aws.amazon.com

  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 /flink https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda

  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

Topik ini berisi versi Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 Tambahkan sumber data streaming.

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

  • Sink: Aplikasi menghasilkan data ke sumber eksternal menggunakan sink. Konektor sink menulis data ke aliran data Kinesis, aliran Firehose, bucket Amazon S3, dll. Untuk informasi selengkapnya, lihat Tulis data menggunakan sink.

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:

  • Java Development Kit (JDK) versi 8. Atur variabel JAVA_HOME lingkungan untuk menunjuk ke lokasi JDK penginstalan Anda.

  • Sebaiknya gunakan lingkungan pengembangan (seperti Eclipse Java Neon atau IntelliJ Idea) untuk mengembangkan dan mengompilasi aplikasi Anda.

  • Klien Git. Instal klien Git jika Anda belum menginstalnya.

  • Plugin Compiler Apache Maven. Maven harus berada di jalur kerja Anda. Untuk menguji instalasi Apache Maven Anda, masukkan hal berikut:

    $ mvn -version

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

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

  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 mengirimkan email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk https://aws.amazon.com.rproxy.goskope.comke/ 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. Aktifkan otentikasi multi-faktor (MFA) untuk pengguna root Anda.

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

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

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

  2. Di Pusat IAM Identitas, 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 IAM Identitas, gunakan login URL yang dikirim ke alamat email saat Anda membuat pengguna Pusat IAM Identitas.

    Untuk bantuan masuk menggunakan pengguna Pusat IAM Identitas, lihat Masuk ke portal AWS akses di Panduan AWS Sign-In Pengguna.

Tetapkan akses ke pengguna tambahan
  1. Di Pusat IAM Identitas, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

    Untuk petunjuknya, 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 dikelola di Pusat IAM Identitas)

Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs

Mengikuti petunjuk untuk antarmuka yang ingin Anda gunakan.

IAM Gunakan kredensi sementara untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs Mengikuti petunjuk dalam Menggunakan kredensi sementara dengan AWS sumber daya di IAMPanduan Pengguna.
IAM

(Tidak direkomendasikan)

Gunakan kredensi jangka panjang untuk menandatangani permintaan terprogram ke AWS CLI,, AWS SDKs atau. AWS APIs

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 Menggunakan properti runtime di Managed Service untuk Apache Flink.

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 mengkompilasi dan mengemasnya ke dalam JAR file. Anda dapat mengompilasi dan mengemas kode Anda dengan salah satu dari dua cara:

    • Gunakan alat Maven baris perintah. Buat JAR file Anda dengan menjalankan perintah berikut di direktori yang berisi pom.xml file:

      mvn package
      catatan

      Parameter -DFLink.version tidak diperlukan untuk Managed Service untuk Apache Flink Runtime versi 1.0.1; hanya diperlukan untuk versi 1.1.0 dan yang lebih baru. Untuk informasi selengkapnya, lihat Tentukan versi Apache Flink aplikasi Anda.

    • Menyiapkan lingkungan pengembangan Anda. Lihat dokumentasi lingkungan pengembangan Anda untuk detail.

    Anda dapat mengunggah paket Anda sebagai JAR file, atau Anda dapat mengompres paket Anda dan mengunggahnya sebagai ZIP file. Jika Anda membuat aplikasi menggunakan AWS CLI, Anda menentukan jenis konten kode Anda (JARatauZIP).

  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 - ka-app-code<username>bucket, dan pilih Upload.

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

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

  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, resource 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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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

Menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file aplikasiJAR. 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 kemudian melampirkan kebijakan ke IAM peran (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin AKReadSourceStreamWriteSinkStream. Ganti username dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (012345678901) dengan ID akun Anda.

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

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensional yang SDK diperlukan oleh IAM peran eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

Buat IAM peran

Di bagian ini, Anda membuat IAM peran 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 peran. Setiap IAM peran memiliki dua kebijakan yang terlampir. 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 peran
  1. Buka IAM konsol 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 telah menciptakan IAM peran baru yang disebutMF-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 AKReadSourceStreamWriteSinkStreamkebijakan, lalu pilih Lampirkan kebijakan.

Anda sekarang telah membuat peran eksekusi layanan yang digunakan aplikasi Anda untuk mengakses sumber daya. Catat peran baru. ARN

Untuk step-by-step petunjuk cara membuat peran, lihat Membuat IAM Peran (Konsol) di Panduan IAM Pengguna.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  1. Simpan JSON kode berikut ke file bernamacreate_request.json. Ganti peran sampel ARN dengan peran yang Anda buat sebelumnya. ARN Ganti ARN akhiran bucket (username) dengan akhiran 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 JSON kode berikut ke file bernamastart_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 JSON kode berikut ke file bernamastop_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, lihatSiapkan pencatatan aplikasi di Layanan Terkelola untuk Apache Flink.

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 JSON kode berikut ke file bernamaupdate_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 akhiran nama bucket (<username>) dengan akhiran yang Anda pilih di Buat dua aliran data Amazon Kinesis bagian.

{ "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 /kinesis. https://console.aws.amazon.com

  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 /flink https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda

  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

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

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 peran Anda dengan tepat.

DataStream APIcontoh

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

Contoh: Jendela jatuh

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink yang mengumpulkan data menggunakan jendela tumbling. Agregrasi diaktifkan secara default di Flink. Untuk menonaktifkannya, gunakan yang berikut ini:

sink.producer.aggregation-enabled' = 'false'
catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 Lengkapi prasyarat yang diperlukan di tutorial Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink.

  2. Susun aplikasi dengan perintah berikut:

    mvn package -Dflink.version=1.15.3
    catatan

    Kode sumber yang disediakan bergantung pada pustaka dari Java 11.

Kompilasi aplikasi membuat JAR file 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 - ka-app-code<username>bucket, dan pilih Upload.

  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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

Contoh: Jendela geser

catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 Lengkapi prasyarat yang diperlukan di tutorial Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink.

  2. Susun aplikasi dengan perintah berikut:

    mvn package -Dflink.version=1.15.3
    catatan

    Kode sumber yang disediakan bergantung pada pustaka dari Java 11.

Kompilasi aplikasi membuat JAR file 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 - ka-app-code<username>bucket, lalu pilih Upload.

  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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

  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 Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 Lengkapi prasyarat yang diperlukan di tutorial Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink.

  2. Susun aplikasi dengan perintah berikut:

    mvn package -Dflink.version=1.15.3

Kompilasi aplikasi membuat JAR file 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 - ka-app-code<username>bucket, navigasikan ke folder kode, dan pilih Unggah.

  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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

    catatan

    Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  7. Pilih Create application (Buat aplikasi).

catatan

Saat Anda membuat Layanan Terkelola untuk Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (012345678901) dengan ID akun Anda. Ganti <username> dengan nama pengguna Anda.

    { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:%LOG_STREAM_PLACEHOLDER%" ] } , { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, ] }
Konfigurasikan aplikasi
  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

  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 MSK cluster ke yang lain dalam VPC

Tutorial berikut menunjukkan cara membuat Amazon VPC dengan MSK cluster Amazon dan dua topik, dan cara membuat Layanan Terkelola untuk aplikasi Apache Flink yang membaca dari satu MSK topik Amazon dan menulis ke yang lain.

catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink terlebih dulu.

Buat Amazon VPC dengan MSK cluster Amazon

Untuk membuat sampel VPC dan MSK klaster Amazon 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 ClusterArn dengan ARN MSK cluster 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 mengkompilasi JAR file 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 alat Maven baris perintah atau lingkungan pengembangan pilihan Anda untuk membuat file. JAR Untuk mengkompilasi JAR file menggunakan alat Maven baris perintah, masukkan yang 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 Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink.

catatan

Jika Anda menghapus bucket Amazon S3 dari tutorial Memulai, ikuti lagi langkah Unggah JAR file kode aplikasi.

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

  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 /flink. https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

    catatan

    Saat Anda menentukan sumber daya aplikasi menggunakan konsol (seperti CloudWatch Log atau AmazonVPC), 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 The bootstrap server list you saved previously
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/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 The bootstrap server list you saved previously
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/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 MSK cluster Anda VPC dan Amazon. Untuk informasi selengkapnya tentang penggunaan runtime, lihat Menggunakan properti runtime di Managed Service untuk Apache Flink.

  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 yang akan dikaitkan dengan aplikasi Anda. Pilih subnet dan grup keamanan yang terkait dengan Anda VPC yang ingin digunakan aplikasi untuk mengakses VPC sumber daya.

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

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: Menghasilkan dan Mengkonsumsi Data dalam Memulai Menggunakan Amazon MSK tutorial.

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 di VPC di topik Memecahkan Masalah Layanan Terkelola untuk Apache Flink.

Contoh: Gunakan EFO konsumen dengan aliran data Kinesis

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 menggunakanEFO, layanan Kinesis Data Streams memberikan bandwidth khusus sendiri, daripada memiliki konsumen berbagi bandwidth tetap dari aliran dengan konsumen lain yang membaca dari aliran.

Untuk informasi lebih lanjut tentang penggunaan EFO dengan konsumen Kinesis, lihat FLIP-128: Enhanced Fan Out 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 Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 EFO konsumen dengan menetapkan parameter berikut pada konsumen Kinesis:

    • RECORD_ PUBLISHER _TYPE: Setel parameter ini EFOagar aplikasi Anda dapat menggunakan EFO konsumen untuk mengakses data Kinesis Data Stream.

    • EFO_ CONSUMER _NAME: Setel 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 EFO konsumen untuk 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 Lengkapi prasyarat yang diperlukan di tutorial Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink.

  2. Susun aplikasi dengan perintah berikut:

    mvn package -Dflink.version=1.15.3
    catatan

    Kode sumber yang disediakan bergantung pada pustaka dari Java 11.

Kompilasi aplikasi membuat JAR file 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 - ka-app-code<username>bucket, dan pilih Upload.

  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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

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

    catatan

    Izin ini memberikan aplikasi kemampuan untuk mengakses EFO konsumen.

    { "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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 fan-out 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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

Contoh: Menulis ke Firehose

Dalam latihan ini, Anda membuat Layanan Terkelola untuk aplikasi Apache Flink yang memiliki aliran data Kinesis sebagai sumber dan aliran Firehose sebagai wastafel. Dengan menggunakan sink, Anda dapat memverifikasi output aplikasi di bucket Amazon S3.

catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 Lengkapi prasyarat yang diperlukan di tutorial Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink.

  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.

Kompilasi aplikasi membuat JAR file 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 ka-app-code -<username>bucket, lalu pilih Upload.

  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, resource 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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda sebagai berikut:

  • Kebijakan: kinesis-analytics-service-MyApplication-us-west-2

  • Peran: kinesisanalytics-MyApplication-us-west-2

Edit IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis dan aliran Firehose.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti semua contoh akun IDs 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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

Menggunakan konsol, Anda dapat memperbarui pengaturan aplikasi seperti properti aplikasi, pengaturan pemantauan, dan lokasi atau nama file aplikasiJAR.

Pada MyApplicationhalaman, pilih Konfigurasi. Perbarui pengaturan aplikasi dan pilih Update (Perbarui).

catatan

Untuk memperbarui kode aplikasi di konsol, Anda harus mengubah nama objekJAR, menggunakan bucket S3 yang berbeda, atau menggunakan AWS CLI seperti yang dijelaskan di Perbarui kode aplikasi bagian. 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 kemudian melampirkan kebijakan ke IAM peran (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin AKReadSourceStreamWriteSinkStream. Ganti username dengan nama pengguna yang akan Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (012345678901) dengan ID akun Anda.

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

catatan

Untuk mengakses layanan Amazon lainnya, Anda dapat menggunakan AWS SDK for Java. Layanan Terkelola untuk Apache Flink secara otomatis menetapkan kredensional yang SDK diperlukan oleh IAM peran eksekusi layanan yang terkait dengan aplikasi Anda. Tidak ada langkah tambahan yang diperlukan.

Buat IAM peran

Di bagian ini, Anda membuat IAM peran 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 peran. Setiap IAM peran memiliki dua kebijakan yang terlampir. 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 peran
  1. Buka IAM konsol 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 telah menciptakan IAM peran baru yang disebutMF-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 AKReadSourceStreamWriteSinkStreamkebijakan, lalu pilih Lampirkan kebijakan.

Anda sekarang telah membuat peran eksekusi layanan yang akan digunakan aplikasi Anda untuk mengakses sumber daya. Catat peran baru. ARN

Untuk step-by-step petunjuk cara membuat peran, lihat Membuat IAM Peran (Konsol) di Panduan IAM Pengguna.

Buat Layanan Terkelola untuk aplikasi Apache Flink
  1. Simpan JSON kode berikut ke file bernamacreate_request.json. Ganti peran sampel ARN dengan peran yang Anda buat sebelumnya. ARN Ganti ARN akhiran bucket dengan akhiran yang Anda pilih di Buat sumber daya yang bergantung bagian (ka-app-code-<username>.) Ganti ID akun sampel (012345678901) dalam 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 JSON kode berikut ke file bernamastart_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 JSON kode berikut ke file bernamastop_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, lihatSiapkan pencatatan aplikasi di Layanan Terkelola untuk Apache Flink.

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 akhiran nama bucket (<username>) dengan akhiran yang Anda pilih di Buat sumber daya yang bergantung bagian.

{ "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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

  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 IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

Contoh: Baca dari aliran Kinesis di akun yang berbeda

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 Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 IAM peran dan kebijakan

Untuk mengizinkan akses objek di seluruh AWS akun, Anda membuat IAM peran dan kebijakan di akun sumber. Kemudian, Anda mengubah IAM kebijakan di akun sink. Untuk informasi tentang membuat IAM peran dan kebijakan, lihat topik berikut di Panduan AWS Identity and Access Management Pengguna:

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 kinesis-analytics-MyApplication-us-west-2 peran, dan catat Nama Sumber Daya Amazon (ARN). Anda akan membutuhkannya di bagian selanjutnya. Perannya ARN terlihat seperti berikut ini.

    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 yang berikut ini JSON 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 IAM Management Console, pilih Create Role.

    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 akun kinesis-analytics-MyApplication-us-west-2 ARN from the sink ke hubungan kepercayaan KA-Source-Stream-Role peran di akun sumber:

    1. Buka KA-Source-Stream-Role di IAM konsol.

    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 contoh nomor akun sumber (SOURCE01234567) dengan nomor akun sumber Anda.

package com.amazonaws.services.managed-flink; import com.amazonaws.services.managed-flink.runtime.KinesisAnalyticsRuntime; import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisProducer; import org.apache.flink.streaming.connectors.kinesis.config.ConsumerConfigConstants; import org.apache.flink.streaming.connectors.kinesis.config.AWSConfigConstants; import java.io.IOException; import java.util.Map; import java.util.Properties; /** * A basic Managed Service for Apache Flink for Java application with Kinesis data streams * as source and sink. */ public class BasicStreamingJob { private static final String region = "us-west-2"; private static final String inputStreamName = "SourceAccountExampleInputStream"; private static final String outputStreamName = ExampleOutputStream; private static final String roleArn = "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role"; private static final String roleSessionName = "ksassumedrolesession"; private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) { Properties inputProperties = new Properties(); inputProperties.setProperty(AWSConfigConstants.AWS_CREDENTIALS_PROVIDER, "ASSUME_ROLE"); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_ARN, roleArn); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_SESSION_NAME, roleSessionName); inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region); inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST"); return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties)); } private static KinesisStreamsSink<String> createSinkFromStaticConfig() { Properties outputProperties = new Properties(); outputProperties.setProperty(AWSConfigConstants.AWS_REGION, region); return KinesisStreamsSink.<String>builder() .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema()) .setStreamName(outputProperties.getProperty("OUTPUT_STREAM", "ExampleOutputStream")) .setPartitionKeyGenerator(element -> String.valueOf(element.hashCode())) .build(); } public static void main(String[] args) throws Exception { // set up the streaming execution environment final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> input = createSourceFromStaticConfig(env); input.addSink(createSinkFromStaticConfig()); env.execute("Flink Streaming Java API Skeleton"); } }
Membangun, mengunggah, dan menjalankan aplikasi

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 JAR file sebelumnya dari bucket Amazon Simple Storage Service (Amazon S3), 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 aplikasi. JAR

  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 khusus dengan Amazon MSK

Sumber data saat ini APIs

Jika Anda menggunakan sumber data saat iniAPIs, aplikasi Anda dapat memanfaatkan utilitas Penyedia MSK Konfigurasi Amazon yang dijelaskan di sini. Ini memungkinkan KafkaSource fungsi Anda untuk mengakses keystore dan truststore Anda untuk saling menguntungkan di Amazon TLS 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.

Warisan SourceFunction APIs

Jika Anda menggunakan legacy SourceFunction APIs, aplikasi Anda akan menggunakan skema serialisasi dan deserialisasi khusus yang mengganti open metode untuk memuat truststore kustom. Hal ini membuat truststore tersedia untuk aplikasi setelah aplikasi restart atau menggantikan thread.

Truststore kustom diambil dan disimpan menggunakan kode berikut:

public static void initializeKafkaTruststore() { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL inputUrl = classLoader.getResource("kafka.client.truststore.jks"); File dest = new File("/tmp/kafka.client.truststore.jks"); try { FileUtils.copyURLToFile(inputUrl, dest); } catch (Exception ex) { throw new FlinkRuntimeException("Failed to initialize Kakfa truststore", ex); } }
catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink 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 TLS ke Kafka Cluster, Klien Kafka (seperti contoh aplikasi Flink) harus mempercayai rantai kepercayaan lengkap yang diberikan oleh sertifikat server Kafka Cluster (dari CA Penerbitan hingga CA Tingkat Root). Sebagai contoh untuk truststore kustom, kita akan menggunakan MSK cluster Amazon dengan Mutual TLS (MTLS) Authentication diaktifkan. Ini menyiratkan bahwa node MSK cluster menggunakan sertifikat server yang dikeluarkan oleh AWS Certificate Manager Private Certificate Authority (ACMPrivate 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 suatu SSL koneksi.

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 MSK cluster Amazon

Untuk membuat sampel VPC dan MSK klaster Amazon 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 ClusterArn dengan ARN MSK cluster 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 membuat truststore kustom, dan menerapkannya ke cluster AndaMSK.

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 mengkompilasi JAR file 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 alat Maven baris perintah atau lingkungan pengembangan pilihan Anda untuk membuat file. JAR Untuk mengkompilasi JAR file menggunakan alat Maven baris perintah, masukkan yang 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 Tutorial: Mulai menggunakan Layanan Terkelola DataStream API di Apache Flink.

catatan

Jika Anda menghapus bucket Amazon S3 dari tutorial Memulai, ikuti lagi langkah Unggah JAR file kode aplikasi.

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

  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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat Anda membuat Layanan Terkelola untuk Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

    catatan

    Saat Anda menentukan sumber daya aplikasi menggunakan konsol (seperti log atau aVPC), konsol akan memodifikasi 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 The bootstrap server list you saved previously
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/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 The bootstrap server list you saved previously
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/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 MSK cluster Anda VPC dan Amazon. Untuk informasi selengkapnya tentang penggunaan runtime, lihat Menggunakan properti runtime di Managed Service untuk Apache Flink.

  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 yang akan dikaitkan dengan aplikasi Anda. Pilih subnet dan grup keamanan yang terkait dengan Anda VPC yang ingin digunakan aplikasi untuk mengakses VPC sumber daya.

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

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: Menghasilkan dan Mengkonsumsi Data dalam Memulai Menggunakan Amazon MSK tutorial.

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 di VPC di topik Memecahkan Masalah Layanan Terkelola untuk Apache Flink.

Contoh Python

Contoh berikut menunjukkan cara membuat aplikasi menggunakan Python dengan Apache Flink Table. API

Contoh: Membuat jendela jatuh di Python

Dalam latihan ini, Anda membuat Layanan Terkelola Python untuk aplikasi Apache Flink yang mengumpulkan data menggunakan jendela tumbling.

catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Tutorial: Mulai menggunakan Python di Managed Service untuk Apache Flink 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) )

    create_tableFungsi ini menggunakan SQL perintah 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 - ka-app-code<username>bucket, dan pilih Upload.

  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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 Tentukan 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 IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

Contoh: Membuat jendela geser dengan Python

catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Tutorial: Mulai menggunakan Python di Managed Service untuk Apache Flink 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) )

    create_input_tableFungsi ini menggunakan SQL perintah 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 - ka-app-code<username>bucket, dan pilih Upload.

  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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 Tentukan 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 IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

Contoh: Kirim data streaming ke Amazon S3 dengan Python

Dalam latihan ini, Anda membuat Layanan Terkelola Python untuk aplikasi Apache Flink yang mengalirkan data ke wastafel Amazon Simple Storage Service.

catatan

Untuk menyiapkan prasyarat yang diperlukan untuk latihan ini, selesaikan latihan Tutorial: Mulai menggunakan Python di Managed Service untuk Apache Flink 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 SQL perintah 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 - ka-app-code<username>bucket, dan pilih Upload.

  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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 Tentukan 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 Tentukan file kode Anda.

  9. Masukkan properti dan nilai aplikasi berikut: (ganti bucket-name dengan nama sebenarnya dari ember 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 IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses aliran data Kinesis.

  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

  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

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 Flink's Java. DataStream API 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 wastafel untuk mengakses sumber daya eksternal menggunakan StreamExecutionEnvironment objek.

  • Aplikasi ini membuat konektor sumber dan wastafel menggunakan properti aplikasi dinamis. Properti aplikasi runtime dibaca untuk mengkonfigurasi konektor. Untuk informasi selengkapnya tentang properti runtime, lihat Properti Runtime.

Kompilasi dan unggah kode aplikasi

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

Kompilasi Kode Aplikasi

Gunakan alat SBTbuild untuk membangun kode Scala untuk aplikasi. Untuk menginstalSBT, 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 mengkompilasi dan mengemasnya ke dalam JAR file. Anda dapat mengkompilasi dan mengemas kode Anda denganSBT:

    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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses bucket Amazon S3.

Untuk mengedit IAM kebijakan untuk menambahkan izin bucket S3
  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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.

Buat dan jalankan 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 IAM sumber daya ini, aplikasi Anda tidak dapat mengakses data dan aliran lognya.

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 kemudian melampirkan kebijakan ke IAM peran (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin AKReadSourceStreamWriteSinkStream. Ganti username dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (012345678901) dengan ID akun Anda. Peran eksekusi MF-stream-rw-role layanan harus disesuaikan dengan peran khusus pelanggan.

{ "ApplicationName": "tumbling_window", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }

Untuk step-by-step petunjuk membuat kebijakan izin, lihat Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda di Panduan IAM Pengguna.

Buat IAM peran

Di bagian ini, Anda membuat IAM peran 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 peran. Setiap IAM peran memiliki dua kebijakan yang terlampir. 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 peran
  1. Buka IAM konsol 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 telah menciptakan IAM peran baru yang disebutMF-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. Catat peran baru. ARN

Untuk step-by-step petunjuk cara membuat peran, lihat Membuat IAM Peran (Konsol) di Panduan IAM Pengguna.

Buat aplikasi

Simpan JSON kode berikut ke file bernamacreate_request.json. Ganti peran sampel ARN dengan peran yang Anda buat sebelumnya. ARN Ganti ARN akhiran bucket (nama pengguna) dengan akhiran yang Anda pilih di bagian sebelumnya. Ganti ID akun sampel (012345678901) di peran eksekusi layanan dengan ID akun Anda. ServiceExecutionRoleHarus menyertakan peran IAM pengguna 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 JSON kode berikut ke file bernamastart_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 JSON kode berikut ke file bernamastop_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 logging

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 JSON kode berikut ke file bernamaupdate_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 UpdateApplicationCLItindakan.

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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

Contoh: Membuat jendela geser di Scala

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 Flink's Java. DataStream API 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 wastafel untuk mengakses sumber daya eksternal menggunakan StreamExecutionEnvironment objek.

  • Aplikasi ini membuat konektor sumber dan wastafel menggunakan properti aplikasi dinamis. Properti aplikasi runtime dibaca untuk mengkonfigurasi konektor. Untuk informasi selengkapnya tentang properti runtime, lihat Properti Runtime.

Kompilasi dan unggah kode aplikasi

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

Kompilasi Kode Aplikasi

Gunakan alat SBTbuild untuk membangun kode Scala untuk aplikasi. Untuk menginstalSBT, 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 mengkompilasi dan mengemasnya ke dalam JAR file. Anda dapat mengkompilasi dan mengemas kode Anda denganSBT:

    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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses bucket Amazon S3.

Untuk mengedit IAM kebijakan untuk menambahkan izin bucket S3
  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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.

Buat dan jalankan 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 IAM sumber daya ini, aplikasi Anda tidak dapat mengakses data dan aliran lognya.

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 kemudian melampirkan kebijakan ke IAM peran (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin AKReadSourceStreamWriteSinkStream. Ganti username dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (012345678901) dengan ID akun Anda.

{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }

Untuk step-by-step petunjuk membuat kebijakan izin, lihat Tutorial: Membuat dan Melampirkan Kebijakan Terkelola Pelanggan Pertama Anda di Panduan IAM Pengguna.

Buat IAM peran

Di bagian ini, Anda membuat IAM peran 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 peran. Setiap IAM peran memiliki dua kebijakan yang terlampir. 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 peran
  1. Buka IAM konsol 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 telah menciptakan IAM peran baru yang disebutMF-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. Catat peran baru. ARN

Untuk step-by-step petunjuk cara membuat peran, lihat Membuat IAM Peran (Konsol) di Panduan IAM Pengguna.

Buat aplikasi

Simpan JSON kode berikut ke file bernamacreate_request.json. Ganti peran sampel ARN dengan peran yang Anda buat sebelumnya. ARN Ganti ARN akhiran bucket (nama pengguna) 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 JSON kode berikut ke file bernamastart_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 JSON kode berikut ke file bernamastop_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 logging

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 JSON kode berikut ke file bernamaupdate_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 UpdateApplicationCLItindakan.

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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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

Contoh: Kirim data streaming ke Amazon S3 di Scala

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 Flink's Java. DataStream API 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 wastafel untuk mengakses sumber daya eksternal menggunakan StreamExecutionEnvironment objek.

  • Aplikasi ini membuat konektor sumber dan wastafel menggunakan properti aplikasi dinamis. Properti aplikasi runtime dibaca untuk mengkonfigurasi konektor. Untuk informasi selengkapnya tentang properti runtime, lihat Properti Runtime.

Kompilasi dan unggah kode aplikasi

Di bagian ini, Anda mengkompilasi dan mengunggah kode aplikasi ke bucket Amazon S3.

Kompilasi Kode Aplikasi

Gunakan alat SBTbuild untuk membangun kode Scala untuk aplikasi. Untuk menginstalSBT, 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 mengkompilasi dan mengemasnya ke dalam JAR file. Anda dapat mengkompilasi dan mengemas kode Anda denganSBT:

    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 /flink https://console.aws.amazon.com

  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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  5. Pilih Create application (Buat aplikasi).

catatan

Saat membuat aplikasi Managed Service for Apache Flink menggunakan konsol, Anda memiliki opsi untuk membuat IAM peran dan kebijakan untuk aplikasi Anda. Aplikasi Anda menggunakan peran dan kebijakan ini untuk mengakses sumber daya dependen. IAMSumber daya ini diberi nama menggunakan nama aplikasi dan Wilayah Anda 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 izin Akses, pilih Buat/perbarui IAM peran kinesis-analytics-MyApplication-us-west-2.

  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 IAM kebijakan

Edit IAM kebijakan untuk menambahkan izin untuk mengakses bucket Amazon S3.

Untuk mengedit IAM kebijakan untuk menambahkan izin bucket S3
  1. Buka IAM konsol 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 JSONtab.

  4. Tambahkan bagian yang disorot dari contoh kebijakan berikut ke kebijakan. Ganti akun sampel IDs (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.

Buat dan jalankan 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 IAM sumber daya ini, aplikasi Anda tidak dapat mengakses data dan aliran lognya.

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 kemudian melampirkan kebijakan ke IAM peran (yang Anda buat di bagian berikutnya). Jadi, ketika Layanan Terkelola untuk Apache Flink mengasumsikan peran tersebut, layanan memiliki izin yang diperlukan untuk membaca dari aliran sumber dan menulis ke aliran wastafel.

Gunakan kode berikut untuk membuat kebijakan izin AKReadSourceStreamWriteSinkStream. Ganti username dengan nama pengguna yang Anda gunakan untuk membuat bucket Amazon S3 untuk menyimpan kode aplikasi. Ganti ID akun di Amazon Resource Names (ARNs) (012345678901) dengan ID akun Anda.

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

Buat IAM peran

Di bagian ini, Anda membuat IAM peran 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 peran. Setiap IAM peran memiliki dua kebijakan yang terlampir. 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 peran
  1. Buka IAM konsol 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 telah menciptakan IAM peran baru yang disebutMF-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. Catat peran baru. ARN

Untuk step-by-step petunjuk cara membuat peran, lihat Membuat IAM Peran (Konsol) di Panduan IAM Pengguna.

Buat aplikasi

Simpan JSON kode berikut ke file bernamacreate_request.json. Ganti peran sampel ARN dengan peran yang Anda buat sebelumnya. ARN Ganti ARN akhiran bucket (nama pengguna) 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 JSON kode berikut ke file bernamastart_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 JSON kode berikut ke file bernamastop_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 logging

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 JSON kode berikut ke file bernamaupdate_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 UpdateApplicationCLItindakan.

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 /flink https://console.aws.amazon.com

  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 /kinesis. https://console.aws.amazon.com

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

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

Hapus IAM sumber daya Anda
  1. Buka IAM konsol 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/aws/kinesis-analytics/MyApplicationlog.

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