Informationen zu früheren Versionen für Managed Service for Apache Flink - Managed Service für Apache Flink

Amazon Managed Service für Apache Flink war zuvor als Amazon Kinesis Data Analytics für Apache Flink bekannt.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Informationen zu früheren Versionen für Managed Service for Apache Flink

Anmerkung

Die Apache Flink-Versionen 1.6, 1.8 und 1.11 werden seit über drei Jahren nicht mehr von der Apache Flink-Community unterstützt. Wir planen nun, die Unterstützung für diese Versionen in Amazon Managed Service für Apache Flink einzustellen. Ab dem 5. November 2024 können Sie keine neuen Anwendungen für diese Flink-Versionen erstellen. Sie können bestehende Anwendungen derzeit weiter ausführen.

Für alle Regionen mit Ausnahme der Regionen China und der ab dem AWS GovCloud (US) Regions5. Februar 2025 können Sie keine Anwendungen mehr mit diesen Versionen von Apache Flink in Amazon Managed Service für Apache Flink erstellen, starten oder ausführen.

Für die Regionen China und die AWS GovCloud (US) Regions ab dem 19. März 2025 können Sie mit diesen Versionen von Apache Flink in Amazon Managed Service für Apache Flink keine Anwendungen mehr erstellen, starten oder ausführen.

Mithilfe der Funktion für direkte Versionsupgrades in Managed Service für Apache Flink können Sie Ihre Anwendungen statusmäßig aktualisieren. Weitere Informationen finden Sie unter Verwenden Sie direkte Versionsupgrades für Apache Flink.

Die Versionen 1.15.2 und 1.13.2 von Apache Flink werden von Managed Service for Apache Flink unterstützt, aber nicht mehr von der Apache Flink-Community unterstützt.

Verwenden des Apache Flink Kinesis Streams Connectors mit früheren Apache Flink-Versionen

Der Apache Flink Kinesis Streams-Konnektor war vor Version 1.11 nicht in Apache Flink enthalten. Damit Ihre Anwendung den Apache Flink Kinesis-Konnektor mit früheren Versionen von Apache Flink verwenden kann, müssen Sie die Version von Apache Flink, die Ihre Anwendung verwendet, herunterladen, kompilieren und installieren. Dieser Konnektor wird verwendet, um Daten aus einem Kinesis Stream zu konsumieren, der als Anwendungsquelle verwendet wird, oder um Daten in einen Kinesis Stream zu schreiben, der für die Anwendungsausgabe verwendet wird.

Anmerkung

Stellen Sie sicher, dass Sie den Connector mit KPLVersion 0.14.0 oder höher erstellen.

Gehen Sie wie folgt vor, um den Quellcode von Apache Flink Version 1.8.2 herunterzuladen und zu installieren:

  1. Stellen Sie sicher, dass Sie Apache Maven installiert haben und dass Ihre JAVA_HOME Umgebungsvariable auf a und JDK nicht auf a verweist. JRE Sie können Ihre Apache Maven-Installation mit dem folgenden Befehl testen:

    mvn -version
  2. Laden Sie den Quellcode von Apache Flink Version 1.8.2 herunter:

    wget https://archive.apache.org/dist/flink/flink-1.8.2/flink-1.8.2-src.tgz
  3. Dekomprimieren Sie den Apache Flink-Quellcode:

    tar -xvf flink-1.8.2-src.tgz
  4. Wechseln Sie in das Apache Flink-Quellcodeverzeichnis:

    cd flink-1.8.2
  5. Kompilieren und installieren Sie Apache Flink:

    mvn clean install -Pinclude-kinesis -DskipTests
    Anmerkung

    Wenn Sie Flink unter Microsoft Windows kompilieren, müssen Sie den -Drat.skip=true Parameter hinzufügen.

Anwendungen mit Apache Flink 1.8.2 erstellen

Dieser Abschnitt enthält Informationen über Komponenten, die Sie für die Erstellung von Managed Service für Apache Flink-Anwendungen verwenden, die mit Apache Flink 1.8.2 funktionieren.

Verwenden Sie die folgenden Komponentenversionen für Managed Service für Apache Flink-Anwendungen:

Komponente Version
Java 1.8 (empfohlen)
Apache Flink 1.8.2
Verwalteter Dienst für Apache Flink für Flink Runtime () aws-kinesisanalytics-runtime 1.0.1
Verwalteter Dienst für Apache Flink Flink Connectors () aws-kinesisanalytics-flink 1.0.1
Apache Maven 3.1

Um eine Anwendung mit Apache Flink 1.8.2 zu kompilieren, führen Sie Maven mit dem folgenden Parameter aus:

mvn package -Dflink.version=1.8.2

Ein Beispiel für eine pom.xml-Datei für eine Managed Service für Apache Flink-Anwendung, die Apache Flink Version 1.8.2 verwendet, finden Sie in der Managed Service für Apache Flink 1.8.2 Erste Schritte-Anwendung.

Informationen zum Erstellen und Verwenden von Anwendungscode für eine Managed Service für Apache Flink-Anwendung finden Sie unter Erstellen einer Anwendung.

Erstellen von Anwendungen mit Apache Flink 1.6.2

Dieser Abschnitt enthält Informationen über Komponenten, die Sie für die Erstellung von Managed Service für Apache Flink-Anwendungen verwenden, die mit Apache Flink 1.6.2 funktionieren.

Verwenden Sie die folgenden Komponentenversionen für Managed Service für Apache Flink-Anwendungen:

Komponente Version
Java 1.8 (empfohlen)
AWS Java SDK 1.11.379
Apache Flink 1.6.2
Verwalteter Dienst für Apache Flink für Flink Runtime () aws-kinesisanalytics-runtime 1.0.1
Verwalteter Dienst für Apache Flink Flink Connectors () aws-kinesisanalytics-flink 1.0.1
Apache Maven 3.1
Apache Beam Wird mit Apache Flink 1.6.2 nicht unterstützt.
Anmerkung

Wenn Sie Managed Service für Apache Flink Laufzeit Version 1.0.1 verwenden, geben Sie die Version von Apache Flink in Ihrer pom.xml-Datei an, anstatt den -Dflink.version-Parameter beim Kompilieren Ihres Anwendungscodes zu verwenden.

Ein Beispiel für eine pom.xml-Datei für eine Managed Service für Apache Flink-Anwendung, die Apache Flink Version 1.6.2 verwendet, finden Sie in der Managed Service für Apache Flink 1.6.2 Erste Schritte-Anwendung.

Informationen zum Erstellen und Verwenden von Anwendungscode für eine Managed Service für Apache Flink-Anwendung finden Sie unter Erstellen einer Anwendung.

Anwendungen aktualisieren

Um die Apache Flink-Version einer Amazon Managed Service for Apache Flink-Anwendung zu aktualisieren, verwenden Sie die direkte Apache Flink-Versionsupgrade-Funktion mit dem AWS CLI, AWS SDK, AWS CloudFormation oder dem. AWS Management Console Weitere Informationen finden Sie unter Verwenden Sie direkte Versionsupgrades für Apache Flink.

Sie können diese Funktion mit allen vorhandenen Anwendungen verwenden, die Sie mit Amazon Managed Service for Apache Flink in READY oder im RUNNING Bundesstaat verwenden.

Verfügbare Konnektoren in Apache Flink 1.6.2 und 1.8.2

Das Apache Flink Framework enthält Konnektoren für den Zugriff auf Daten aus verschiedenen Quellen.

Erste Schritte: Flink 1.13.2

In diesem Abschnitt werden Ihnen die grundlegenden Konzepte von Managed Service für Apache Flink und die vorgestellt. DataStream API Es werden die verfügbaren Optionen für die Erstellung und das Testen von Anwendungen beschrieben. Er enthält auch Anweisungen zur Installation der Tools, die Sie benötigen, um die Tutorials in diesem Handbuch abzuschließen und Ihre erste Anwendung zu erstellen.

Komponenten einer Managed Service für Apache Flink-Anwendung

Zur Verarbeitung von Daten verwendet Ihre Managed Service für Apache Flink-Anwendung eine Java/Apache Maven- oder Scala-Anwendung, die mithilfe der Apache Flink-Laufzeit Eingaben verarbeitet und Ausgaben erzeugt.

Die Anwendung Managed Service für Apache Flink besteht aus folgenden Komponenten:

  • Runtime-Eigenschaften: Sie können Runtime-Eigenschaften verwenden, um Ihre Anwendung zu konfigurieren, ohne Ihren Anwendungscode neu kompilieren zu müssen.

  • Quelle: Die Anwendung verwendet Daten mithilfe einer Quelle. Ein Quell-Connector liest Daten aus einem Kinesis Data Stream, einem Amazon S3-Bucket usw. Weitere Informationen finden Sie unter Fügen Sie Streaming-Datenquellen hinzu.

  • Operatoren: Die Anwendung verarbeitet Daten mithilfe eines oder mehrerer Operatoren. Ein Operator kann Daten transformieren, anreichern oder aggregieren. Weitere Informationen finden Sie unter Operatoren.

  • Senke: Die Anwendung erzeugt Daten für externe Quellen mithilfe von Senken. Ein Sink-Connector schreibt Daten in einen Kinesis-Datenstream, einen Firehose-Stream, einen Amazon S3 S3-Bucket usw. Weitere Informationen finden Sie unter Schreiben Sie Daten mithilfe von Senken.

Nachdem Sie Ihren Anwendungscode erstellt, kompiliert und verpackt haben, laden Sie das Codepaket in einen Amazon Simple Storage Service (Amazon S3)-Bucket hoch. Anschließend erstellen Sie eine Managed Service für Apache Flink-Anwendung. Sie übergeben den Speicherort des Codepakets, einen Kinesis Data Stream als Streaming-Datenquelle und in der Regel einen Streaming- oder Dateispeicherort, der die verarbeiteten Daten der Anwendung empfängt.

Voraussetzungen für das Abschließen der Übungen

Zur Durchführung der Schritte in dieser Anleitung benötigen Sie Folgendes:

  • Java-Entwicklungskit (JDK) Version 11. Stellen Sie die JAVA_HOME Umgebungsvariable so ein, dass sie auf Ihren JDK Installationsort verweist.

  • Wir empfehlen die Verwendung einer Entwicklungsumgebung (wie Eclipse Java Neon oder IntelliJ Idea), um Ihre Anwendung zu entwickeln und zu kompilieren.

  • Git-Client. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben.

  • Apache Maven-Compiler-Plugin. Maven muss sich in Ihrem Arbeitspfad befinden. Zum Testen Ihrer Apache Maven-Installation geben Sie Folgendes ein:

    $ mvn -version

Um zu beginnen, gehen Sie zu Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer.

Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer

Melde dich an für ein AWS-Konto

Wenn Sie noch keine haben AWS-Konto, führen Sie die folgenden Schritte aus, um eine zu erstellen.

Um sich für eine anzumelden AWS-Konto
  1. Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.

  2. Folgen Sie den Online-Anweisungen.

    Bei der Anmeldung müssen Sie auch einen Telefonanruf entgegennehmen und einen Verifizierungscode über die Telefontasten eingeben.

    Wenn Sie sich für eine anmelden AWS-Konto, Root-Benutzer des AWS-Kontoswird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Administratorbenutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um Aufgaben auszuführen, die Root-Benutzerzugriff erfordern.

AWS sendet Ihnen nach Abschluss des Anmeldevorgangs eine Bestätigungs-E-Mail. Du kannst jederzeit deine aktuellen Kontoaktivitäten einsehen und dein Konto verwalten, indem du zu https://aws.amazon.com/gehst und Mein Konto auswählst.

Erstellen eines Benutzers mit Administratorzugriff

Nachdem Sie sich für einen angemeldet haben AWS-Konto, sichern Sie Ihren Root-Benutzer des AWS-Kontos AWS IAM Identity Center, aktivieren und erstellen Sie einen Administratorbenutzer, sodass Sie den Root-Benutzer nicht für alltägliche Aufgaben verwenden.

Sichern Sie Ihre Root-Benutzer des AWS-Kontos
  1. Melden Sie sich AWS Management Consoleals Kontoinhaber an, indem Sie Root-Benutzer auswählen und Ihre AWS-Konto E-Mail-Adresse eingeben. Geben Sie auf der nächsten Seite Ihr Passwort ein.

    Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Anmelden als Root-Benutzer im AWS-Anmeldung Benutzerhandbuch zu.

  2. Aktivieren Sie die Multi-Faktor-Authentifizierung (MFA) für Ihren Root-Benutzer.

    Anweisungen finden Sie im Benutzerhandbuch unter Aktivieren eines virtuellen MFA Geräts für Ihren AWS-Konto IAM Root-Benutzer (Konsole).

Erstellen eines Benutzers mit Administratorzugriff
  1. Aktivieren Sie IAM Identity Center.

    Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.

  2. Gewähren Sie einem Benutzer in IAM Identity Center Administratorzugriff.

    Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie unter Benutzerzugriff mit der Standardeinstellung konfigurieren IAM-Identity-Center-Verzeichnis im AWS IAM Identity Center Benutzerhandbuch.

Anmelden als Administratorbenutzer
Weiteren Benutzern Zugriff zuweisen
  1. Erstellen Sie in IAM Identity Center einen Berechtigungssatz, der der bewährten Methode zur Anwendung von Berechtigungen mit den geringsten Rechten folgt.

    Anweisungen hierzu finden Sie unter Berechtigungssatz erstellen im AWS IAM Identity Center Benutzerhandbuch.

  2. Weisen Sie Benutzer einer Gruppe zu und weisen Sie der Gruppe dann Single Sign-On-Zugriff zu.

    Eine genaue Anleitung finden Sie unter Gruppen hinzufügen im AWS IAM Identity Center Benutzerhandbuch.

Erteilen programmgesteuerten Zugriffs

Benutzer benötigen programmatischen Zugriff, wenn sie mit AWS außerhalb des interagieren möchten. AWS Management Console Die Art und Weise, wie programmatischer Zugriff gewährt wird, hängt vom Benutzertyp ab, der zugreift. AWS

Um Benutzern programmgesteuerten Zugriff zu gewähren, wählen Sie eine der folgenden Optionen.

Welcher Benutzer benötigt programmgesteuerten Zugriff? Bis Von

Mitarbeiteridentität

(In IAM Identity Center verwaltete Benutzer)

Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an AWS CLI AWS SDKs, oder AWS APIs zu signieren.

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

IAM Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder AWS APIs zu signieren. Folgen Sie den Anweisungen unter Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen im IAMBenutzerhandbuch.
IAM

(Nicht empfohlen)

Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder AWS APIs zu signieren.

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

Nächster Schritt

Richten Sie das AWS Command Line Interface (AWS CLI) ein

Nächster Schritt

Schritt 2: Richten Sie das AWS Command Line Interface (AWS CLI) ein

Schritt 2: Richten Sie das AWS Command Line Interface (AWS CLI) ein

In diesem Schritt laden Sie den herunter und konfigurieren ihn für AWS CLI die Verwendung mit Managed Service für Apache Flink.

Anmerkung

Bei allen Erste-Schritte-Übungen in diesem Handbuch wird davon ausgegangen, dass Sie in Ihrem Konto Administrator-Anmeldeinformationen (adminuser) verwenden, um die Operationen auszuführen.

Anmerkung

Wenn Sie das bereits AWS CLI installiert haben, müssen Sie möglicherweise ein Upgrade durchführen, um die neuesten Funktionen zu erhalten. Weitere Informationen finden Sie unter Installieren der AWS Command Line Interface im AWS Command Line Interface -Benutzerhandbuch. Führen Sie den folgenden Befehl aus AWS CLI, um die Version von zu überprüfen:

aws --version

Für die Übungen in diesem Tutorial ist die folgende AWS CLI Version oder höher erforderlich:

aws-cli/1.16.63
Um das einzurichten AWS CLI
  1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface -Benutzerhandbuch:

  2. Fügen Sie der Datei ein benanntes Profil für den Administratorbenutzer AWS CLI config hinzu. Verwenden Sie dieses Profil beim Ausführen von AWS CLI -Befehlen. Weitere Informationen zu benannten Profilen finden Sie unter Benannte Profile im AWS Command Line Interface Benutzerhandbuch.

    [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region

    Eine Liste der verfügbaren AWS Regionen finden Sie unter Regionen und Endpunkte in der Allgemeine Amazon Web Services-Referenz.

    Anmerkung

    Der Beispielcode und die Befehle in diesem Tutorial verwenden die Region USA West (Oregon). Um eine andere Region zu verwenden, ändern Sie die Region im Code und in den Befehlen für dieses Tutorial in die Region, die Sie verwenden möchten.

  3. Überprüfen Sie die Einrichtung, indem Sie die folgenden Hilfebefehle in die Befehlszeile eingeben:

    aws help

Nachdem Sie ein AWS Konto eingerichtet haben AWS CLI, können Sie die nächste Übung ausprobieren, in der Sie eine Beispielanwendung konfigurieren und das end-to-end Setup testen.

Nächster Schritt

Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus

Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus

In dieser Übung erstellen Sie eine Anwendung von Managed Service für Apache Flink mit Datenströmen als Quelle und Senke.

Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie zwei Kinesis Data Streams (ExampleInputStream und ExampleOutputStream). Ihre Anwendung verwendet diese Streams für die Quell- und Ziel-Streams der Anwendung.

Sie können diese Streams mithilfe der Amazon-Kinesis-Konsole oder des folgenden AWS CLI -Befehls erstellen. Anweisungen für die Konsole finden Sie unter Erstellen und Aktualisieren von Datenströmen im Amazon Kinesis Data Streams Entwicklerhandbuch.

So erstellen Sie die Daten-Streams (AWS CLI)
  1. Verwenden Sie den folgenden Amazon Kinesis create-stream AWS CLI Kinesis-Befehl, um den ersten Stream (ExampleInputStream) zu erstellen.

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Um den zweiten Stream zu erstellen, den die Anwendung zum Schreiben der Ausgabe verwendet, führen Sie denselben Befehl aus und ändern den Stream-Namen in ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Im weiteren Verlauf des Tutorials führen Sie das stock.py-Skript zum Senden von Daten an die Anwendung aus.

    $ python stock.py

Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Klonen Sie das Remote-Repository, indem Sie den folgenden Befehl verwenden:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/GettingStarted Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:

  • Eine Project Object Model (pom.xml) Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.

  • Die BasicStreamingJob.java-Datei enthält die main-Methode, die die Funktionalität der Anwendung definiert.

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Ihre Anwendung erstellt Quell- und Senkenkonnektoren für den Zugriff auf externe Ressourcen, indem ein StreamExecutionEnvironment-Objekt verwendet wird.

  • Die Anwendung erstellt Quell- und Senkenkonnektoren mit statischen Eigenschaften. Zum Verwenden dynamischer Anwendungseigenschaften verwenden Sie die Methoden createSourceFromApplicationProperties und createSinkFromApplicationProperties, um die Konnektoren zu erstellen. Diese Methoden lesen die Eigenschaften der Anwendung zum Konfigurieren der Konnektoren.

    Weitere Informationen zu Laufzeiteigenschaften finden Sie unter Verwenden Sie Laufzeiteigenschaften in Managed Service für Apache Flink.

Kompilieren Sie den Anwendungscode

In diesem Abschnitt verwenden Sie den Apache Maven-Compiler zum Erstellen des Java-Codes für die Anwendung. Hinweise zur Installation von Apache Maven und dem Java Development Kit (JDK) finden Sie unterErfüllen Sie die Voraussetzungen für das Abschließen der Übungen.

Kompilieren des Anwendungscodes
  1. Um Ihren Anwendungscode zu verwenden, kompilieren Sie ihn und packen ihn in eine JAR Datei. Sie können Ihren Code auf zwei Arten kompilieren und packen:

    • Verwenden Sie das Befehlszeilen-Maven-Tool. Erstellen Sie Ihre JAR Datei, indem Sie den folgenden Befehl in dem Verzeichnis ausführen, das die pom.xml Datei enthält:

      mvn package -Dflink.version=1.13.2
    • Verwenden Sie Ihre Entwicklungsumgebung. Weitere Informationen finden Sie in der Dokumentation Ihrer Entwicklungsumgebung.

      Anmerkung

      Der bereitgestellte Quellcode basiert auf Bibliotheken aus Java 11.

    Sie können Ihr Paket entweder als JAR Datei hochladen oder Sie können Ihr Paket komprimieren und als ZIP Datei hochladen. Wenn Sie Ihre Anwendung mit dem erstellen AWS CLI, geben Sie Ihren Codeinhaltstyp (JARoderZIP) an.

  2. Wenn während der Erstellung Fehler aufgetreten sind, überprüfen Sie, ob Ihre JAVA_HOME-Umgebungsvariable richtig eingestellt ist.

Wenn die Anwendung erfolgreich kompiliert wurde, wird die folgende Datei erstellt:

target/aws-kinesis-analytics-java-apps-1.0.jar

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt erstellen Sie einen Amazon Simple Storage Service (Amazon S3)-Bucket und laden Ihren Anwendungscode hoch.

So laden Sie den Anwendungscode hoch
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie Bucket erstellen aus.

  3. Geben Sie ka-app-code-<username> im Feld Bucket-Name ein. Fügen Sie dem Bucket-Namen ein Suffix hinzu, wie z. B. Ihren Benutzernamen, damit er global eindeutig ist. Wählen Sie Weiter.

  4. Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.

  5. Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.

  6. Wählen Sie Bucket erstellen aus.

  7. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  8. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der aws-kinesis-analytics-java-apps-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter.

  9. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Sie können eine Anwendung von Managed Service für Apache Flink entweder über die Konsole oder AWS CLI erstellen und ausführen.

Anmerkung

Wenn Sie die Anwendung mithilfe der Konsole erstellen, werden Ihre AWS Identity and Access Management (IAM) und Amazon CloudWatch Logs-Ressourcen für Sie erstellt. Wenn Sie die Anwendung mithilfe von erstellen AWS CLI, erstellen Sie diese Ressourcen separat.

Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen Sie die Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Geben Sie für Beschreibung den Text My java test app ein.

    • Wählen Sie für Runtime (Laufzeit) die Option Apache Flink aus.

    • Behalten Sie im Pulldown-Menü die Version Apache Flink Version 1.13 bei.

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert aws-kinesis-analytics-java-apps-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  6. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  7. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie sich dafür entscheiden, die CloudWatch Amazon-Protokollierung zu aktivieren, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Beenden Sie die Anwendung

Wählen Sie auf der MyApplicationSeite Stopp aus. Bestätigen Sie die Aktion.

Aktualisieren der Anwendung

Mithilfe der Konsole können Sie Anwendungseinstellungen wie Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der Anwendung aktualisierenJAR. Sie können die Anwendung auch JAR aus dem Amazon S3 S3-Bucket neu laden, wenn Sie den Anwendungscode aktualisieren müssen.

Wählen Sie auf der MyApplicationSeite Configure aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf Aktualisieren.

Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)

In diesem Abschnitt verwenden Sie die, AWS CLI um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen. Managed Service for Apache Flink verwendet den kinesisanalyticsv2 AWS CLI Befehl, um Managed Service for Apache Flink-Anwendungen zu erstellen und mit ihnen zu interagieren.

Erstellen einer Berechtigungsrichtlinie
Anmerkung

Sie müssen eine Berechtigungsrichtlinie und eine Rolle für Ihre Anwendung erstellen. Wenn Sie diese IAM Ressourcen nicht erstellen, kann Ihre Anwendung nicht auf ihre Daten und Protokollstreams zugreifen.

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die read-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die write-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie einer IAM Rolle hinzu (die Sie im nächsten Abschnitt erstellen). Wenn Managed Service für Apache Flink also die Rolle übernimmt, verfügt der Service über die erforderlichen Berechtigungen zum Lesen aus dem Quell-Stream und zum Schreiben in den Senken-Stream.

Verwenden Sie den folgenden Code zum Erstellen der AKReadSourceStreamWriteSinkStream-Berechtigungsrichtlinie. Ersetzen Sie username durch den Benutzernamen, den Sie verwendet haben, um den Amazon-S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (012345678901) durch Ihre Konto-ID.

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

step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie im IAMBenutzerhandbuch.

Anmerkung

Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK for Java verwenden. Managed Service for Apache Flink setzt automatisch die Anmeldedaten, die für SDK die für die IAM Dienstausführungsrolle erforderlich sind, ein, die Ihrer Anwendung zugeordnet ist. Es sind keine weiteren Schritte erforderlich.

Erstellen Sie eine IAM-Rolle

In diesem Abschnitt erstellen Sie eine IAM Rolle, von der die Anwendung Managed Service for Apache Flink annehmen kann, einen Quellstream zu lesen und in den Senkenstream zu schreiben.

Managed Service für Apache Flink kann ohne Berechtigungen nicht auf Ihren Stream zugreifen. Sie gewähren diese Berechtigungen über eine IAM Rolle. Jeder IAM Rolle sind zwei Richtlinien zugeordnet. Die Vertrauensrichtlinie erteilt Managed Service für Apache Flink die Berechtigung zum Übernehmen der Rolle und die Berechtigungsrichtlinie bestimmt, was Managed Service für Apache Flink nach Annahme der Rolle tun kann.

Sie können die Berechtigungsrichtlinie, die Sie im vorherigen Abschnitt erstellt haben, dieser Rolle anfügen.

So erstellen Sie eine IAM-Rolle
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus. Wählen Sie unter Select your use case (Wählen Sie Ihren Anwendungsfall aus) die Option Kinesis Analytics aus.

    Wählen Sie Weiter: Berechtigungen aus.

  4. Wählen Sie auf der Seite Attach permissions policies (Berechtigungsrichtlinien hinzufügen) Next: Review (Weiter: Überprüfen) aus. Sie fügen Berechtigungsrichtlinien an, nachdem Sie die Rolle erstellt haben.

  5. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen.

    Jetzt haben Sie eine neue IAM Rolle namens erstelltMF-stream-rw-role. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

  6. Fügen Sie die Berechtigungsrichtlinie der Rolle an.

    Anmerkung

    Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt erstellt haben, Erstellen einer Berechtigungsrichtlinie.

    1. Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.

    2. Wählen Sie Attach Policies (Richtlinien anfügen) aus.

    3. Geben Sie im Suchfeld AKReadSourceStreamWriteSinkStream (die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.

    4. Wählen Sie die AKReadSourceStreamWriteSinkStreamRichtlinie und anschließend Richtlinie anhängen aus.

Sie haben nun die Service-Ausführungsrolle erstellt, die Ihre Anwendung für den Zugriff auf Ressourcen verwendet. Notieren Sie sich die ARN der neuen Rolle.

step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter Erstellen einer IAM Rolle (Konsole) im IAMBenutzerhandbuch.

Erstellen Sie die Anwendung Managed Service für Apache Flink
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namencreate_request.json. Ersetzen Sie die Beispielrolle ARN durch die ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das ARN Bucket-Suffix (username) durch das Suffix, das Sie im vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (012345678901) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

    { "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. Führen Sie die CreateApplication-Aktion mit der vorherigen Anforderung zum Erstellen der Anwendung aus:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

Die Anwendung wird nun erstellt. Sie starten die Anwendung im nächsten Schritt.

Starten der Anwendung

In diesem Abschnitt verwenden Sie die StartApplication-Aktion, um die Anwendung zu starten.

So starten Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen. start_request.json

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Führen Sie die StartApplication-Aktion mit der vorherigen Anforderung zum Starten der Anwendung aus:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

Die Anwendung wird jetzt ausgeführt. Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Amazon-Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Stoppen der Anwendung

In diesem Abschnitt verwenden Sie die StopApplication-Aktion, um die Anwendung zu stoppen.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstop_request.json.

    { "ApplicationName": "test" }
  2. Führen Sie die StopApplication-Aktion mit der folgenden Anforderung zum Stoppen der Anwendung aus:

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unterAnwendungsprotokollierung in Managed Service für Apache Flink einrichten.

Umgebungseigenschaften aktualisieren

In diesem Abschnitt verwenden Sie die UpdateApplication-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

So aktualisieren Sie die Umgebungseigenschaften für die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenupdate_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. Führen Sie die UpdateApplication-Aktion mit der vorherigen Anforderung aus, um die Umgebungseigenschaften zu aktualisieren:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Aktualisieren Sie den Anwendungscode

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplication AWS CLI Aktion.

Anmerkung

Um eine neue Version des Anwendungscodes mit demselben Dateinamen zu laden, müssen Sie die neue Objektversion angeben. Weitere Informationen zur Verwendung von Amazon S3-Objektversionen finden Sie unter Versionsverwaltung aktivieren oder deaktivieren.

Um das zu verwenden AWS CLI, löschen Sie Ihr vorheriges Codepaket aus Ihrem Amazon S3 S3-Bucket, laden Sie die neue Version hoch und rufen Sie UpdateApplication auf. Geben Sie dabei denselben Amazon S3 S3-Bucket und Objektnamen sowie die neue Objektversion an. Die Anwendung wird mit dem neuen Codepaket neu gestartet.

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namensuffix (<username>) mit dem Suffix, das Sie im Abschnitt ausgewählt haben. Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams

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

Nächster Schritt

Schritt 4: Ressourcen AWS bereinigen

Schritt 4: Ressourcen AWS bereinigen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tutorial Erste Schritte erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung

  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams

  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket

  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen

  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen

  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Nächster Schritt

Schritt 5: Nächste Schritte

Schritt 5: Nächste Schritte

Nachdem Sie nun eine grundlegende Managed Service für Apache Flink-Anwendung erstellt und ausgeführt haben, finden Sie in den folgenden Ressourcen erweiterte Managed Service für Apache Flink-Lösungen.

  • Die AWS Streaming-Datenlösung für Amazon Kinesis: Die AWS Streaming-Datenlösung für Amazon Kinesis konfiguriert automatisch die AWS Dienste, die für die einfache Erfassung, Speicherung, Verarbeitung und Bereitstellung von Streaming-Daten erforderlich sind. Die Lösung bietet mehrere Optionen zur Lösung von Anwendungsfällen mit Streaming-Daten. Die Option Managed Service for Apache Flink bietet ein end-to-end ETL Streaming-Beispiel, das eine reale Anwendung demonstriert, die analytische Operationen mit simulierten New Yorker Taxidaten ausführt. Die Lösung richtet alle erforderlichen AWS Ressourcen wie IAM Rollen und Richtlinien, ein CloudWatch Dashboard und Alarme ein. CloudWatch

  • AWS Streaming-Datenlösung für Amazon MSK: Die AWS Streaming-Datenlösung für Amazon MSK bietet AWS CloudFormation Vorlagen, in denen Daten durch Produzenten, Streaming-Speicher, Verbraucher und Ziele fließen.

  • Clickstream Lab mit Apache Flink und Apache Kafka: Ein End-to-End-Lab für Clickstream-Anwendungsfälle mit Amazon Managed Streaming for Apache Kafka als Streaming-Speicher und Managed Service für Apache Flink für Apache Flink-Anwendungen zur Stream-Verarbeitung.

  • Amazon Managed Service for Apache Flink Workshop: In diesem Workshop entwickeln Sie eine end-to-end Streaming-Architektur, um Streaming-Daten nahezu in Echtzeit aufzunehmen, zu analysieren und zu visualisieren. Sie haben sich vorgenommen, den Betrieb eines Taxiunternehmens in New York City zu verbessern. Sie analysieren die Telemetriedaten einer Taxiflotte in New York City nahezu in Echtzeit, um deren Flottenbetrieb zu optimieren.

  • Lernen Sie Flink kennen: Praktisches Training: Offizielles Apache Flink-Einführungsseminar, das Ihnen den Einstieg in die Entwicklung skalierbarer Streaming-ETL, Analyse- und ereignisgesteuerter Anwendungen ermöglicht.

    Anmerkung

    Beachten Sie, dass Managed Service für Apache Flink die in dieser Schulung verwendete Apache Flink-Version (1.12) nicht unterstützt. Sie können Flink 1.15.2 in Flink Managed Service für Apache Flink verwenden.

Erste Schritte: Flink 1.11.1 — veraltet

Anmerkung

Die Apache Flink-Versionen 1.6, 1.8 und 1.11 wurden seit über drei Jahren nicht mehr von der Apache Flink-Community unterstützt. Wir planen, diese Versionen in Amazon Managed Service für Apache Flink am 5. November 2024 als veraltet anzusehen. Ab diesem Datum können Sie keine neuen Anwendungen für diese Flink-Versionen erstellen. Sie können bestehende Anwendungen zu diesem Zeitpunkt weiter ausführen. Sie können Ihre Anwendungen mithilfe der Funktion für direkte Versionsupgrades in Amazon Managed Service for Apache Flink statual aktualisieren. Weitere Informationen finden Sie unter. Verwenden Sie direkte Versionsupgrades für Apache Flink

Dieses Thema enthält eine Version des Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorials, die Apache Flink 1.11.1 verwendet.

In diesem Abschnitt werden Ihnen die grundlegenden Konzepte von Managed Service for Apache Flink und dem vorgestellt. DataStream API Es werden die verfügbaren Optionen für die Erstellung und das Testen von Anwendungen beschrieben. Er enthält auch Anweisungen zur Installation der Tools, die Sie benötigen, um die Tutorials in diesem Handbuch abzuschließen und Ihre erste Anwendung zu erstellen.

Komponenten einer Managed Service für Apache Flink-Anwendung

Zur Verarbeitung von Daten verwendet Ihre Managed Service für Apache Flink-Anwendung eine Java/Apache Maven- oder Scala-Anwendung, die mithilfe der Apache Flink-Laufzeit Eingaben verarbeitet und Ausgaben erzeugt.

Eine Anwendung Managed Service für Apache Flink besteht aus folgenden Komponenten:

  • Runtime-Eigenschaften: Sie können Runtime-Eigenschaften verwenden, um Ihre Anwendung zu konfigurieren, ohne Ihren Anwendungscode neu kompilieren zu müssen.

  • Quelle: Die Anwendung verwendet Daten mithilfe einer Quelle. Ein Quell-Connector liest Daten aus einem Kinesis Data Stream, einem Amazon S3-Bucket usw. Weitere Informationen finden Sie unter Fügen Sie Streaming-Datenquellen hinzu.

  • Operatoren: Die Anwendung verarbeitet Daten mithilfe eines oder mehrerer Operatoren. Ein Operator kann Daten transformieren, anreichern oder aggregieren. Weitere Informationen finden Sie unter Operatoren.

  • Senke: Die Anwendung erzeugt Daten für externe Quellen mithilfe von Senken. Ein Sink-Connector schreibt Daten in einen Kinesis-Datenstream, einen Firehose-Stream, einen Amazon S3 S3-Bucket usw. Weitere Informationen finden Sie unter Schreiben Sie Daten mithilfe von Senken.

Nachdem Sie Ihren Anwendungscode erstellt, kompiliert und verpackt haben, laden Sie das Codepaket in einen Amazon Simple Storage Service (Amazon S3)-Bucket hoch. Anschließend erstellen Sie eine Managed Service für Apache Flink-Anwendung. Sie übergeben den Speicherort des Codepakets, einen Kinesis Data Stream als Streaming-Datenquelle und in der Regel einen Streaming- oder Dateispeicherort, der die verarbeiteten Daten der Anwendung empfängt.

Voraussetzungen für das Abschließen der Übungen

Zur Durchführung der Schritte in dieser Anleitung benötigen Sie Folgendes:

  • Java-Entwicklungskit (JDK) Version 11. Stellen Sie die JAVA_HOME Umgebungsvariable so ein, dass sie auf Ihren JDK Installationsort verweist.

  • Wir empfehlen die Verwendung einer Entwicklungsumgebung (wie Eclipse Java Neon oder IntelliJ Idea), um Ihre Anwendung zu entwickeln und zu kompilieren.

  • Git-Client. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben.

  • Apache Maven-Compiler-Plugin. Maven muss sich in Ihrem Arbeitspfad befinden. Zum Testen Ihrer Apache Maven-Installation geben Sie Folgendes ein:

    $ mvn -version

Um zu beginnen, gehen Sie zu Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer.

Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer

Melde dich an für ein AWS-Konto

Wenn Sie noch keine haben AWS-Konto, führen Sie die folgenden Schritte aus, um eine zu erstellen.

Um sich für eine anzumelden AWS-Konto
  1. Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.

  2. Folgen Sie den Online-Anweisungen.

    Bei der Anmeldung müssen Sie auch einen Telefonanruf entgegennehmen und einen Verifizierungscode über die Telefontasten eingeben.

    Wenn Sie sich für eine anmelden AWS-Konto, Root-Benutzer des AWS-Kontoswird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Administratorbenutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um Aufgaben auszuführen, die Root-Benutzerzugriff erfordern.

AWS sendet Ihnen nach Abschluss des Anmeldevorgangs eine Bestätigungs-E-Mail. Du kannst jederzeit deine aktuellen Kontoaktivitäten einsehen und dein Konto verwalten, indem du zu https://aws.amazon.com/gehst und Mein Konto auswählst.

Erstellen eines Benutzers mit Administratorzugriff

Nachdem Sie sich für einen angemeldet haben AWS-Konto, sichern Sie Ihren Root-Benutzer des AWS-Kontos AWS IAM Identity Center, aktivieren und erstellen Sie einen Administratorbenutzer, sodass Sie den Root-Benutzer nicht für alltägliche Aufgaben verwenden.

Sichern Sie Ihre Root-Benutzer des AWS-Kontos
  1. Melden Sie sich AWS Management Consoleals Kontoinhaber an, indem Sie Root-Benutzer auswählen und Ihre AWS-Konto E-Mail-Adresse eingeben. Geben Sie auf der nächsten Seite Ihr Passwort ein.

    Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Anmelden als Root-Benutzer im AWS-Anmeldung Benutzerhandbuch zu.

  2. Aktivieren Sie die Multi-Faktor-Authentifizierung (MFA) für Ihren Root-Benutzer.

    Anweisungen finden Sie im Benutzerhandbuch unter Aktivieren eines virtuellen MFA Geräts für Ihren AWS-Konto IAM Root-Benutzer (Konsole).

Erstellen eines Benutzers mit Administratorzugriff
  1. Aktivieren Sie IAM Identity Center.

    Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.

  2. Gewähren Sie einem Benutzer in IAM Identity Center Administratorzugriff.

    Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie unter Benutzerzugriff mit der Standardeinstellung konfigurieren IAM-Identity-Center-Verzeichnis im AWS IAM Identity Center Benutzerhandbuch.

Anmelden als Administratorbenutzer
Weiteren Benutzern Zugriff zuweisen
  1. Erstellen Sie in IAM Identity Center einen Berechtigungssatz, der der bewährten Methode zur Anwendung von Berechtigungen mit den geringsten Rechten folgt.

    Anweisungen hierzu finden Sie unter Berechtigungssatz erstellen im AWS IAM Identity Center Benutzerhandbuch.

  2. Weisen Sie Benutzer einer Gruppe zu und weisen Sie der Gruppe dann Single Sign-On-Zugriff zu.

    Eine genaue Anleitung finden Sie unter Gruppen hinzufügen im AWS IAM Identity Center Benutzerhandbuch.

Erteilen programmgesteuerten Zugriffs

Benutzer benötigen programmatischen Zugriff, wenn sie mit AWS außerhalb des interagieren möchten. AWS Management Console Die Art und Weise, wie programmatischer Zugriff gewährt wird, hängt vom Benutzertyp ab, der zugreift. AWS

Um Benutzern programmgesteuerten Zugriff zu gewähren, wählen Sie eine der folgenden Optionen.

Welcher Benutzer benötigt programmgesteuerten Zugriff? Bis Von

Mitarbeiteridentität

(In IAM Identity Center verwaltete Benutzer)

Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an AWS CLI AWS SDKs, oder AWS APIs zu signieren.

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

IAM Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder AWS APIs zu signieren. Folgen Sie den Anweisungen unter Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen im IAMBenutzerhandbuch.
IAM

(Nicht empfohlen)

Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder AWS APIs zu signieren.

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

Nächster Schritt

Richten Sie das AWS Command Line Interface (AWS CLI) ein

Schritt 2: Einrichten der AWS Command Line Interface (AWS CLI)

In diesem Schritt laden Sie den herunter und konfigurieren ihn für AWS CLI die Verwendung mit Managed Service für Apache Flink.

Anmerkung

Bei allen Erste-Schritte-Übungen in diesem Handbuch wird davon ausgegangen, dass Sie in Ihrem Konto Administrator-Anmeldeinformationen (adminuser) verwenden, um die Operationen auszuführen.

Anmerkung

Wenn Sie das bereits AWS CLI installiert haben, müssen Sie möglicherweise ein Upgrade durchführen, um die neuesten Funktionen zu erhalten. Weitere Informationen finden Sie unter Installieren der AWS Command Line Interface im AWS Command Line Interface -Benutzerhandbuch. Führen Sie den folgenden Befehl aus AWS CLI, um die Version von zu überprüfen:

aws --version

Für die Übungen in diesem Tutorial ist die folgende AWS CLI Version oder höher erforderlich:

aws-cli/1.16.63
Um das einzurichten AWS CLI
  1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface -Benutzerhandbuch:

  2. Fügen Sie der Datei ein benanntes Profil für den Administratorbenutzer AWS CLI config hinzu. Verwenden Sie dieses Profil beim Ausführen von AWS CLI -Befehlen. Weitere Informationen zu benannten Profilen finden Sie unter Benannte Profile im AWS Command Line Interface Benutzerhandbuch.

    [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region

    Eine Liste der verfügbaren AWS Regionen finden Sie unter Regionen und Endpunkte in der Allgemeine Amazon Web Services-Referenz.

    Anmerkung

    Der Beispielcode und die Befehle in diesem Tutorial verwenden die Region USA West (Oregon). Um eine andere Region zu verwenden, ändern Sie die Region im Code und in den Befehlen für dieses Tutorial in die Region, die Sie verwenden möchten.

  3. Überprüfen Sie die Einrichtung, indem Sie die folgenden Hilfebefehle in die Befehlszeile eingeben:

    aws help

Nachdem Sie ein AWS Konto eingerichtet haben AWS CLI, können Sie die nächste Übung ausprobieren, in der Sie eine Beispielanwendung konfigurieren und das end-to-end Setup testen.

Nächster Schritt

Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus

Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus

In dieser Übung erstellen Sie eine Anwendung von Managed Service für Apache Flink mit Datenströmen als Quelle und Senke.

Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie zwei Kinesis Data Streams (ExampleInputStream und ExampleOutputStream). Ihre Anwendung verwendet diese Streams für die Quell- und Ziel-Streams der Anwendung.

Sie können diese Streams mithilfe der Amazon-Kinesis-Konsole oder des folgenden AWS CLI -Befehls erstellen. Anweisungen für die Konsole finden Sie unter Erstellen und Aktualisieren von Datenströmen im Amazon Kinesis Data Streams Entwicklerhandbuch.

So erstellen Sie die Daten-Streams (AWS CLI)
  1. Verwenden Sie den folgenden Amazon Kinesis create-stream AWS CLI Kinesis-Befehl, um den ersten Stream (ExampleInputStream) zu erstellen.

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Um den zweiten Stream zu erstellen, den die Anwendung zum Schreiben der Ausgabe verwendet, führen Sie denselben Befehl aus und ändern den Stream-Namen in ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Im weiteren Verlauf des Tutorials führen Sie das stock.py-Skript zum Senden von Daten an die Anwendung aus.

    $ python stock.py

Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Klonen Sie das Remote-Repository, indem Sie den folgenden Befehl verwenden:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/GettingStarted Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:

  • Eine Project Object Model (pom.xml) Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.

  • Die BasicStreamingJob.java-Datei enthält die main-Methode, die die Funktionalität der Anwendung definiert.

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Ihre Anwendung erstellt Quell- und Senkenkonnektoren für den Zugriff auf externe Ressourcen, indem ein StreamExecutionEnvironment-Objekt verwendet wird.

  • Die Anwendung erstellt Quell- und Senkenkonnektoren mit statischen Eigenschaften. Zum Verwenden dynamischer Anwendungseigenschaften verwenden Sie die Methoden createSourceFromApplicationProperties und createSinkFromApplicationProperties, um die Konnektoren zu erstellen. Diese Methoden lesen die Eigenschaften der Anwendung zum Konfigurieren der Konnektoren.

    Weitere Informationen zu Laufzeiteigenschaften finden Sie unter Verwenden Sie Laufzeiteigenschaften in Managed Service für Apache Flink.

Kompilieren Sie den Anwendungscode

In diesem Abschnitt verwenden Sie den Apache Maven-Compiler zum Erstellen des Java-Codes für die Anwendung. Hinweise zur Installation von Apache Maven und dem Java Development Kit (JDK) finden Sie unterErfüllen Sie die Voraussetzungen für das Abschließen der Übungen.

Kompilieren des Anwendungscodes
  1. Um Ihren Anwendungscode zu verwenden, kompilieren Sie ihn und packen ihn in eine JAR Datei. Sie können Ihren Code auf zwei Arten kompilieren und packen:

    • Verwenden Sie das Befehlszeilen-Maven-Tool. Erstellen Sie Ihre JAR Datei, indem Sie den folgenden Befehl in dem Verzeichnis ausführen, das die pom.xml Datei enthält:

      mvn package -Dflink.version=1.11.3
    • Verwenden Sie Ihre Entwicklungsumgebung. Weitere Informationen finden Sie in der Dokumentation Ihrer Entwicklungsumgebung.

      Anmerkung

      Der bereitgestellte Quellcode basiert auf Bibliotheken aus Java 11. Stellen Sie sicher, dass die Java-Version Ihres Projekts 11 ist.

    Sie können Ihr Paket entweder als JAR Datei hochladen oder Sie können Ihr Paket komprimieren und als ZIP Datei hochladen. Wenn Sie Ihre Anwendung mit dem erstellen AWS CLI, geben Sie Ihren Codeinhaltstyp (JARoderZIP) an.

  2. Wenn während der Erstellung Fehler aufgetreten sind, überprüfen Sie, ob Ihre JAVA_HOME-Umgebungsvariable richtig eingestellt ist.

Wenn die Anwendung erfolgreich kompiliert wurde, wird die folgende Datei erstellt:

target/aws-kinesis-analytics-java-apps-1.0.jar

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt erstellen Sie einen Amazon Simple Storage Service (Amazon S3)-Bucket und laden Ihren Anwendungscode hoch.

So laden Sie den Anwendungscode hoch
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie Bucket erstellen aus.

  3. Geben Sie ka-app-code-<username> im Feld Bucket-Name ein. Fügen Sie dem Bucket-Namen ein Suffix hinzu, wie z. B. Ihren Benutzernamen, damit er global eindeutig ist. Wählen Sie Weiter.

  4. Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.

  5. Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.

  6. Wählen Sie Bucket erstellen aus.

  7. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  8. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der aws-kinesis-analytics-java-apps-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter.

  9. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Sie können eine Anwendung von Managed Service für Apache Flink entweder über die Konsole oder AWS CLI erstellen und ausführen.

Anmerkung

Wenn Sie die Anwendung mithilfe der Konsole erstellen, werden Ihre AWS Identity and Access Management (IAM) und Amazon CloudWatch Logs-Ressourcen für Sie erstellt. Wenn Sie die Anwendung mithilfe von erstellen AWS CLI, erstellen Sie diese Ressourcen separat.

Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Geben Sie für Beschreibung den Text My java test app ein.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

    • Behalten Sie im Pulldown-Menü für die Version Apache Flink Version 1.11 (empfohlene Version) bei.

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert aws-kinesis-analytics-java-apps-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Geben Sie unter Eigenschaften für Gruppen-ID den Text ProducerConfigProperties ein.

  5. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  6. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  7. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  8. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie sich dafür entscheiden, die CloudWatch Amazon-Protokollierung zu aktivieren, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Beenden Sie die Anwendung

Wählen Sie auf der MyApplicationSeite Stopp aus. Bestätigen Sie die Aktion.

Aktualisieren der Anwendung

Mithilfe der Konsole können Sie Anwendungseinstellungen wie Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der Anwendung aktualisierenJAR. Sie können die Anwendung auch JAR aus dem Amazon S3 S3-Bucket neu laden, wenn Sie den Anwendungscode aktualisieren müssen.

Wählen Sie auf der MyApplicationSeite Configure aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf Aktualisieren.

Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)

In diesem Abschnitt verwenden Sie die, AWS CLI um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen. Ein Managed Service für Apache Flink verwendet den kinesisanalyticsv2 AWS CLI Befehl, um Managed Service for Apache Flink-Anwendungen zu erstellen und mit ihnen zu interagieren.

Erstellen einer Berechtigungsrichtlinie
Anmerkung

Sie müssen eine Berechtigungsrichtlinie und eine Rolle für Ihre Anwendung erstellen. Wenn Sie diese IAM Ressourcen nicht erstellen, kann Ihre Anwendung nicht auf ihre Daten- und Protokollstreams zugreifen.

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die read-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die write-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie einer IAM Rolle hinzu (die Sie im nächsten Abschnitt erstellen). Wenn Managed Service für Apache Flink also die Rolle übernimmt, verfügt der Service über die erforderlichen Berechtigungen zum Lesen aus dem Quell-Stream und zum Schreiben in den Senken-Stream.

Verwenden Sie den folgenden Code zum Erstellen der AKReadSourceStreamWriteSinkStream-Berechtigungsrichtlinie. Ersetzen Sie username durch den Benutzernamen, den Sie verwendet haben, um den Amazon-S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (012345678901) durch Ihre Konto-ID.

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

step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie im IAMBenutzerhandbuch.

Anmerkung

Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK for Java verwenden. Managed Service for Apache Flink setzt automatisch die Anmeldedaten, die für SDK die für die IAM Dienstausführungsrolle erforderlich sind, ein, die Ihrer Anwendung zugeordnet ist. Es sind keine weiteren Schritte erforderlich.

Erstellen Sie eine IAM-Rolle.

In diesem Abschnitt erstellen Sie eine IAM Rolle, von der die Anwendung Managed Service for Apache Flink annehmen kann, einen Quellstream zu lesen und in den Senkenstream zu schreiben.

Managed Service für Apache Flink kann ohne Berechtigungen nicht auf Ihren Stream zugreifen. Sie gewähren diese Berechtigungen über eine IAM Rolle. Jeder IAM Rolle sind zwei Richtlinien zugeordnet. Die Vertrauensrichtlinie erteilt Managed Service für Apache Flink die Berechtigung zum Übernehmen der Rolle und die Berechtigungsrichtlinie bestimmt, was Managed Service für Apache Flink nach Annahme der Rolle tun kann.

Sie können die Berechtigungsrichtlinie, die Sie im vorherigen Abschnitt erstellt haben, dieser Rolle anfügen.

So erstellen Sie eine IAM-Rolle
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus. Wählen Sie unter Select your use case (Wählen Sie Ihren Anwendungsfall aus) die Option Kinesis Analytics aus.

    Wählen Sie Weiter: Berechtigungen aus.

  4. Wählen Sie auf der Seite Attach permissions policies (Berechtigungsrichtlinien hinzufügen) Next: Review (Weiter: Überprüfen) aus. Sie fügen Berechtigungsrichtlinien an, nachdem Sie die Rolle erstellt haben.

  5. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen.

    Jetzt haben Sie eine neue IAM Rolle namens erstelltMF-stream-rw-role. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

  6. Fügen Sie die Berechtigungsrichtlinie der Rolle an.

    Anmerkung

    Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt erstellt haben, Erstellen einer Berechtigungsrichtlinie.

    1. Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.

    2. Wählen Sie Attach Policies (Richtlinien anfügen) aus.

    3. Geben Sie im Suchfeld AKReadSourceStreamWriteSinkStream (die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.

    4. Wählen Sie die AKReadSourceStreamWriteSinkStreamRichtlinie und anschließend Richtlinie anhängen aus.

Sie haben nun die Service-Ausführungsrolle erstellt, die Ihre Anwendung für den Zugriff auf Ressourcen verwendet. Notieren Sie sich die ARN der neuen Rolle.

step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter Erstellen einer IAM Rolle (Konsole) im IAMBenutzerhandbuch.

Erstellen Sie die Anwendung Managed Service für Apache Flink
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namencreate_request.json. Ersetzen Sie die Beispielrolle ARN durch die ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das ARN Bucket-Suffix (username) durch das Suffix, das Sie im vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (012345678901) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

    { "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. Führen Sie die CreateApplication-Aktion mit der vorherigen Anforderung zum Erstellen der Anwendung aus:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

Die Anwendung wird nun erstellt. Sie starten die Anwendung im nächsten Schritt.

Starten Sie die Anwendung

In diesem Abschnitt verwenden Sie die StartApplication-Aktion, um die Anwendung zu starten.

So starten Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Führen Sie die StartApplication-Aktion mit der vorherigen Anforderung zum Starten der Anwendung aus:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

Die Anwendung wird jetzt ausgeführt. Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Amazon-Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Beenden Sie die Anwendung

In diesem Abschnitt verwenden Sie die StopApplication-Aktion, um die Anwendung zu stoppen.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstop_request.json.

    { "ApplicationName": "test" }
  2. Führen Sie die StopApplication-Aktion mit der folgenden Anforderung zum Stoppen der Anwendung aus:

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unterAnwendungsprotokollierung in Managed Service für Apache Flink einrichten.

Aktualisieren Sie die Umgebungseigenschaften

In diesem Abschnitt verwenden Sie die UpdateApplication-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

So aktualisieren Sie die Umgebungseigenschaften für die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenupdate_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. Führen Sie die UpdateApplication-Aktion mit der vorherigen Anforderung aus, um die Umgebungseigenschaften zu aktualisieren:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Den Anwendungscode aktualisieren

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplication AWS CLI Aktion.

Anmerkung

Um eine neue Version des Anwendungscodes mit demselben Dateinamen zu laden, müssen Sie die neue Objektversion angeben. Weitere Informationen zur Verwendung von Amazon S3-Objektversionen finden Sie unter Versionsverwaltung aktivieren oder deaktivieren.

Um das zu verwenden AWS CLI, löschen Sie Ihr vorheriges Codepaket aus Ihrem Amazon S3 S3-Bucket, laden Sie die neue Version hoch und rufen Sie UpdateApplication auf. Geben Sie dabei denselben Amazon S3 S3-Bucket und Objektnamen sowie die neue Objektversion an. Die Anwendung wird mit dem neuen Codepaket neu gestartet.

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namensuffix (<username>) mit dem Suffix, das Sie im Abschnitt ausgewählt haben. Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams

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

Nächster Schritt

Schritt 4: Ressourcen AWS bereinigen

Schritt 4: Ressourcen AWS bereinigen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tutorial Erste Schritte erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung

  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams

  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket

  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie vier Ressourcen IAM

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen

  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Nächster Schritt

Schritt 5: Nächste Schritte

Schritt 5: Nächste Schritte

Nachdem Sie nun eine grundlegende Managed Service für Apache Flink-Anwendung erstellt und ausgeführt haben, finden Sie in den folgenden Ressourcen erweiterte Managed Service für Apache Flink-Lösungen.

  • Die AWS Streaming-Datenlösung für Amazon Kinesis: Die AWS Streaming-Datenlösung für Amazon Kinesis konfiguriert automatisch die AWS Dienste, die für die einfache Erfassung, Speicherung, Verarbeitung und Bereitstellung von Streaming-Daten erforderlich sind. Die Lösung bietet mehrere Optionen zur Lösung von Anwendungsfällen mit Streaming-Daten. Die Option Managed Service for Apache Flink bietet ein end-to-end ETL Streaming-Beispiel, das eine reale Anwendung demonstriert, die analytische Operationen mit simulierten New Yorker Taxidaten ausführt. Die Lösung richtet alle erforderlichen AWS Ressourcen wie IAM Rollen und Richtlinien, ein CloudWatch Dashboard und Alarme ein. CloudWatch

  • AWS Streaming-Datenlösung für Amazon MSK: Die AWS Streaming-Datenlösung für Amazon MSK bietet AWS CloudFormation Vorlagen, in denen Daten durch Produzenten, Streaming-Speicher, Verbraucher und Ziele fließen.

  • Clickstream Lab mit Apache Flink und Apache Kafka: Ein End-to-End-Lab für Clickstream-Anwendungsfälle mit Amazon Managed Streaming for Apache Kafka als Streaming-Speicher und Managed Service für Apache Flink für Apache Flink-Anwendungen zur Stream-Verarbeitung.

  • Amazon Managed Service for Apache Flink Workshop: In diesem Workshop entwickeln Sie eine end-to-end Streaming-Architektur, um Streaming-Daten nahezu in Echtzeit aufzunehmen, zu analysieren und zu visualisieren. Sie haben sich vorgenommen, den Betrieb eines Taxiunternehmens in New York City zu verbessern. Sie analysieren die Telemetriedaten einer Taxiflotte in New York City nahezu in Echtzeit, um deren Flottenbetrieb zu optimieren.

  • Lernen Sie Flink kennen: Praktisches Training: Offizielles Apache Flink-Einführungsseminar, das Ihnen den Einstieg in die Entwicklung skalierbarer Streaming-ETL, Analyse- und ereignisgesteuerter Anwendungen ermöglicht.

    Anmerkung

    Beachten Sie, dass Managed Service für Apache Flink die in dieser Schulung verwendete Apache Flink-Version (1.12) nicht unterstützt. Sie können Flink 1.15.2 in Flink Managed Service für Apache Flink verwenden.

  • Apache Flink-Codebeispiele: Eine GitHub Sammlung mit einer Vielzahl von Apache Flink-Anwendungsbeispielen.

Erste Schritte: Flink 1.8.2 — veraltet

Anmerkung

Die Apache Flink-Versionen 1.6, 1.8 und 1.11 wurden seit über drei Jahren nicht mehr von der Apache Flink-Community unterstützt. Wir planen, diese Versionen in Amazon Managed Service für Apache Flink am 5. November 2024 als veraltet anzusehen. Ab diesem Datum können Sie keine neuen Anwendungen für diese Flink-Versionen erstellen. Sie können bestehende Anwendungen zu diesem Zeitpunkt weiter ausführen. Sie können Ihre Anwendungen mithilfe der Funktion für direkte Versionsupgrades in Amazon Managed Service for Apache Flink statual aktualisieren. Weitere Informationen finden Sie unter. Verwenden Sie direkte Versionsupgrades für Apache Flink

Dieses Thema enthält eine Version des Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorials, die Apache Flink 1.8.2 verwendet.

Komponenten der Anwendung Managed Service für Apache Flink

Zur Verarbeitung von Daten verwendet Ihre Managed Service für Apache Flink-Anwendung eine Java/Apache Maven- oder Scala-Anwendung, die mithilfe der Apache Flink-Laufzeit Eingaben verarbeitet und Ausgaben erzeugt.

Eine Anwendung Managed Service für Apache Flink besteht aus folgenden Komponenten:

  • Runtime-Eigenschaften: Sie können Runtime-Eigenschaften verwenden, um Ihre Anwendung zu konfigurieren, ohne Ihren Anwendungscode neu kompilieren zu müssen.

  • Quelle: Die Anwendung verwendet Daten mithilfe einer Quelle. Ein Quell-Connector liest Daten aus einem Kinesis Data Stream, einem Amazon S3-Bucket usw. Weitere Informationen finden Sie unter Fügen Sie Streaming-Datenquellen hinzu.

  • Operatoren: Die Anwendung verarbeitet Daten mithilfe eines oder mehrerer Operatoren. Ein Operator kann Daten transformieren, anreichern oder aggregieren. Weitere Informationen finden Sie unter Operatoren.

  • Senke: Die Anwendung erzeugt Daten für externe Quellen mithilfe von Senken. Ein Sink-Connector schreibt Daten in einen Kinesis-Datenstream, einen Firehose-Stream, einen Amazon S3 S3-Bucket usw. Weitere Informationen finden Sie unter Schreiben Sie Daten mithilfe von Senken.

Nachdem Sie Ihren Anwendungscode erstellt, kompiliert und verpackt haben, laden Sie das Codepaket in einen Amazon Simple Storage Service (Amazon S3)-Bucket hoch. Anschließend erstellen Sie eine Managed Service für Apache Flink-Anwendung. Sie übergeben den Speicherort des Codepakets, einen Kinesis Data Stream als Streaming-Datenquelle und in der Regel einen Streaming- oder Dateispeicherort, der die verarbeiteten Daten der Anwendung empfängt.

Voraussetzungen für das Abschließen der Übungen

Zur Durchführung der Schritte in dieser Anleitung benötigen Sie Folgendes:

Um zu beginnen, gehen Sie zu Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer.

Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer

Melde dich an für ein AWS-Konto

Wenn Sie noch keine haben AWS-Konto, führen Sie die folgenden Schritte aus, um eine zu erstellen.

Um sich für eine anzumelden AWS-Konto
  1. Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.

  2. Folgen Sie den Online-Anweisungen.

    Bei der Anmeldung müssen Sie auch einen Telefonanruf entgegennehmen und einen Verifizierungscode über die Telefontasten eingeben.

    Wenn Sie sich für eine anmelden AWS-Konto, Root-Benutzer des AWS-Kontoswird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Administratorbenutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um Aufgaben auszuführen, die Root-Benutzerzugriff erfordern.

AWS sendet Ihnen nach Abschluss des Anmeldevorgangs eine Bestätigungs-E-Mail. Du kannst jederzeit deine aktuellen Kontoaktivitäten einsehen und dein Konto verwalten, indem du zu https://aws.amazon.com/gehst und Mein Konto auswählst.

Erstellen eines Benutzers mit Administratorzugriff

Nachdem Sie sich für einen angemeldet haben AWS-Konto, sichern Sie Ihren Root-Benutzer des AWS-Kontos AWS IAM Identity Center, aktivieren und erstellen Sie einen Administratorbenutzer, sodass Sie den Root-Benutzer nicht für alltägliche Aufgaben verwenden.

Sichern Sie Ihre Root-Benutzer des AWS-Kontos
  1. Melden Sie sich AWS Management Consoleals Kontoinhaber an, indem Sie Root-Benutzer auswählen und Ihre AWS-Konto E-Mail-Adresse eingeben. Geben Sie auf der nächsten Seite Ihr Passwort ein.

    Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Anmelden als Root-Benutzer im AWS-Anmeldung Benutzerhandbuch zu.

  2. Aktivieren Sie die Multi-Faktor-Authentifizierung (MFA) für Ihren Root-Benutzer.

    Anweisungen finden Sie im Benutzerhandbuch unter Aktivieren eines virtuellen MFA Geräts für Ihren AWS-Konto IAM Root-Benutzer (Konsole).

Erstellen eines Benutzers mit Administratorzugriff
  1. Aktivieren Sie IAM Identity Center.

    Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.

  2. Gewähren Sie einem Benutzer in IAM Identity Center Administratorzugriff.

    Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie unter Benutzerzugriff mit der Standardeinstellung konfigurieren IAM-Identity-Center-Verzeichnis im AWS IAM Identity Center Benutzerhandbuch.

Anmelden als Administratorbenutzer
Weiteren Benutzern Zugriff zuweisen
  1. Erstellen Sie in IAM Identity Center einen Berechtigungssatz, der der bewährten Methode zur Anwendung von Berechtigungen mit den geringsten Rechten folgt.

    Anweisungen hierzu finden Sie unter Berechtigungssatz erstellen im AWS IAM Identity Center Benutzerhandbuch.

  2. Weisen Sie Benutzer einer Gruppe zu und weisen Sie der Gruppe dann Single Sign-On-Zugriff zu.

    Eine genaue Anleitung finden Sie unter Gruppen hinzufügen im AWS IAM Identity Center Benutzerhandbuch.

Erteilen programmgesteuerten Zugriffs

Benutzer benötigen programmatischen Zugriff, wenn sie mit AWS außerhalb des interagieren möchten. AWS Management Console Die Art und Weise, wie programmatischer Zugriff gewährt wird, hängt vom Benutzertyp ab, der zugreift. AWS

Um Benutzern programmgesteuerten Zugriff zu gewähren, wählen Sie eine der folgenden Optionen.

Welcher Benutzer benötigt programmgesteuerten Zugriff? Bis Von

Mitarbeiteridentität

(In IAM Identity Center verwaltete Benutzer)

Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an AWS CLI AWS SDKs, oder AWS APIs zu signieren.

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

IAM Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder AWS APIs zu signieren. Folgen Sie den Anweisungen unter Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen im IAMBenutzerhandbuch.
IAM

(Nicht empfohlen)

Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder AWS APIs zu signieren.

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

Schritt 2: Richten Sie das AWS Command Line Interface (AWS CLI) ein

In diesem Schritt laden Sie den herunter und konfigurieren ihn für AWS CLI die Verwendung mit Managed Service für Apache Flink.

Anmerkung

Bei allen Erste-Schritte-Übungen in diesem Handbuch wird davon ausgegangen, dass Sie in Ihrem Konto Administrator-Anmeldeinformationen (adminuser) verwenden, um die Operationen auszuführen.

Anmerkung

Wenn Sie das bereits AWS CLI installiert haben, müssen Sie möglicherweise ein Upgrade durchführen, um die neuesten Funktionen zu erhalten. Weitere Informationen finden Sie unter Installieren der AWS Command Line Interface im AWS Command Line Interface -Benutzerhandbuch. Führen Sie den folgenden Befehl aus AWS CLI, um die Version von zu überprüfen:

aws --version

Für die Übungen in diesem Tutorial ist die folgende AWS CLI Version oder höher erforderlich:

aws-cli/1.16.63
Um das einzurichten AWS CLI
  1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface -Benutzerhandbuch:

  2. Fügen Sie der Datei ein benanntes Profil für den Administratorbenutzer AWS CLI config hinzu. Verwenden Sie dieses Profil beim Ausführen von AWS CLI -Befehlen. Weitere Informationen zu benannten Profilen finden Sie unter Benannte Profile im AWS Command Line Interface Benutzerhandbuch.

    [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region

    Eine Liste der verfügbaren Regionen finden Sie unter Regionen und Endpunkte in Allgemeine Amazon Web Services-Referenz.

    Anmerkung

    Der Beispielcode und die Befehle in diesem Tutorial verwenden die Region USA West (Oregon). Um eine andere AWS Region zu verwenden, ändern Sie die Region im Code und in den Befehlen für dieses Tutorial in die Region, die Sie verwenden möchten.

  3. Überprüfen Sie die Einrichtung, indem Sie die folgenden Hilfebefehle in die Befehlszeile eingeben:

    aws help

Nachdem Sie ein AWS Konto eingerichtet haben AWS CLI, können Sie die nächste Übung ausprobieren, in der Sie eine Beispielanwendung konfigurieren und das end-to-end Setup testen.

Nächster Schritt

Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus

Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus

In dieser Übung erstellen Sie eine Anwendung von Managed Service für Apache Flink mit Datenströmen als Quelle und Senke.

Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie zwei Kinesis Data Streams (ExampleInputStream und ExampleOutputStream). Ihre Anwendung verwendet diese Streams für die Quell- und Ziel-Streams der Anwendung.

Sie können diese Streams mithilfe der Amazon-Kinesis-Konsole oder des folgenden AWS CLI -Befehls erstellen. Anweisungen für die Konsole finden Sie unter Erstellen und Aktualisieren von Datenströmen im Amazon Kinesis Data Streams Entwicklerhandbuch.

So erstellen Sie die Daten-Streams (AWS CLI)
  1. Verwenden Sie den folgenden Amazon Kinesis create-stream AWS CLI Kinesis-Befehl, um den ersten Stream (ExampleInputStream) zu erstellen.

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Um den zweiten Stream zu erstellen, den die Anwendung zum Schreiben der Ausgabe verwendet, führen Sie denselben Befehl aus und ändern den Stream-Namen in ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Im weiteren Verlauf des Tutorials führen Sie das stock.py-Skript zum Senden von Daten an die Anwendung aus.

    $ python stock.py

Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Klonen Sie das Remote-Repository, indem Sie den folgenden Befehl verwenden:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/GettingStarted_1_8 Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:

  • Eine Project Object Model (pom.xml) Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.

  • Die BasicStreamingJob.java-Datei enthält die main-Methode, die die Funktionalität der Anwendung definiert.

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Ihre Anwendung erstellt Quell- und Senkenkonnektoren für den Zugriff auf externe Ressourcen, indem ein StreamExecutionEnvironment-Objekt verwendet wird.

  • Die Anwendung erstellt Quell- und Senkenkonnektoren mit statischen Eigenschaften. Zum Verwenden dynamischer Anwendungseigenschaften verwenden Sie die Methoden createSourceFromApplicationProperties und createSinkFromApplicationProperties, um die Konnektoren zu erstellen. Diese Methoden lesen die Eigenschaften der Anwendung zum Konfigurieren der Konnektoren.

    Weitere Informationen zu Laufzeiteigenschaften finden Sie unter Verwenden Sie Laufzeiteigenschaften in Managed Service für Apache Flink.

Kompilieren Sie den Anwendungscode

In diesem Abschnitt verwenden Sie den Apache Maven-Compiler zum Erstellen des Java-Codes für die Anwendung. Hinweise zur Installation von Apache Maven und dem Java Development Kit (JDK) finden Sie unterVoraussetzungen für das Abschließen der Übungen.

Anmerkung

Um den Kinesis-Connector mit Versionen von Apache Flink vor 1.11 verwenden zu können, müssen Sie Apache Maven herunterladen, erstellen und installieren. Weitere Informationen finden Sie unter Verwenden des Apache Flink Kinesis Streams Connectors mit früheren Apache Flink-Versionen.

Kompilieren des Anwendungscodes
  1. Um Ihren Anwendungscode zu verwenden, kompilieren Sie ihn und packen ihn in eine JAR Datei. Sie können Ihren Code auf zwei Arten kompilieren und packen:

    • Verwenden Sie das Befehlszeilen-Maven-Tool. Erstellen Sie Ihre JAR Datei, indem Sie den folgenden Befehl in dem Verzeichnis ausführen, das die pom.xml Datei enthält:

      mvn package -Dflink.version=1.8.2
    • Verwenden Sie Ihre Entwicklungsumgebung. Weitere Informationen finden Sie in der Dokumentation Ihrer Entwicklungsumgebung.

      Anmerkung

      Der bereitgestellte Quellcode basiert auf Bibliotheken aus Java 1.8. Stellen Sie sicher, dass die Java-Version Ihres Projekts 1.8 ist.

    Sie können Ihr Paket entweder als JAR Datei hochladen oder Sie können Ihr Paket komprimieren und als ZIP Datei hochladen. Wenn Sie Ihre Anwendung mit dem erstellen AWS CLI, geben Sie Ihren Codeinhaltstyp (JARoderZIP) an.

  2. Wenn während der Erstellung Fehler aufgetreten sind, überprüfen Sie, ob Ihre JAVA_HOME-Umgebungsvariable richtig eingestellt ist.

Wenn die Anwendung erfolgreich kompiliert wurde, wird die folgende Datei erstellt:

target/aws-kinesis-analytics-java-apps-1.0.jar

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt erstellen Sie einen Amazon Simple Storage Service (Amazon S3)-Bucket und laden Ihren Anwendungscode hoch.

So laden Sie den Anwendungscode hoch
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie Bucket erstellen aus.

  3. Geben Sie ka-app-code-<username> im Feld Bucket-Name ein. Fügen Sie dem Bucket-Namen ein Suffix hinzu, wie z. B. Ihren Benutzernamen, damit er global eindeutig ist. Wählen Sie Weiter.

  4. Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.

  5. Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.

  6. Wählen Sie Bucket erstellen aus.

  7. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  8. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der aws-kinesis-analytics-java-apps-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter.

  9. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Sie können eine Anwendung von Managed Service für Apache Flink entweder über die Konsole oder AWS CLI erstellen und ausführen.

Anmerkung

Wenn Sie die Anwendung mithilfe der Konsole erstellen, werden Ihre AWS Identity and Access Management (IAM) und Amazon CloudWatch Logs-Ressourcen für Sie erstellt. Wenn Sie die Anwendung mithilfe von erstellen AWS CLI, erstellen Sie diese Ressourcen separat.

Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Geben Sie für Beschreibung den Text My java test app ein.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

    • Behalten Sie im Pulldown-Menü die Option Apache Flink 1.8 (empfohlene Version) bei.

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert aws-kinesis-analytics-java-apps-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  6. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  7. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie sich dafür entscheiden, die CloudWatch Amazon-Protokollierung zu aktivieren, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Führen Sie die Anwendung aus.
  1. Wählen Sie auf der MyApplicationSeite die Option Ausführen aus. Bestätigen Sie die Aktion.

  2. Wenn die Anwendung ausgeführt wird, aktualisieren Sie die Seite. Die Konsole zeigt den Application graph (Anwendungs-Graph) an.

Beenden Sie die Anwendung

Wählen Sie auf der MyApplicationSeite Stopp aus. Bestätigen Sie die Aktion.

Aktualisieren der Anwendung

Mithilfe der Konsole können Sie Anwendungseinstellungen wie Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der Anwendung aktualisierenJAR. Sie können die Anwendung auch JAR aus dem Amazon S3 S3-Bucket neu laden, wenn Sie den Anwendungscode aktualisieren müssen.

Wählen Sie auf der MyApplicationSeite Configure aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf Aktualisieren.

Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)

In diesem Abschnitt verwenden Sie die, AWS CLI um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen. Managed Service for Apache Flink verwendet den kinesisanalyticsv2 AWS CLI Befehl, um Managed Service for Apache Flink-Anwendungen zu erstellen und mit ihnen zu interagieren.

Erstellen einer Berechtigungsrichtlinie
Anmerkung

Sie müssen eine Berechtigungsrichtlinie und eine Rolle für Ihre Anwendung erstellen. Wenn Sie diese IAM Ressourcen nicht erstellen, kann Ihre Anwendung nicht auf ihre Daten und Protokollstreams zugreifen.

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die read-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die write-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie einer IAM Rolle hinzu (die Sie im nächsten Abschnitt erstellen). Wenn Managed Service für Apache Flink also die Rolle übernimmt, verfügt der Service über die erforderlichen Berechtigungen zum Lesen aus dem Quell-Stream und zum Schreiben in den Senken-Stream.

Verwenden Sie den folgenden Code zum Erstellen der AKReadSourceStreamWriteSinkStream-Berechtigungsrichtlinie. Ersetzen Sie username durch den Benutzernamen, den Sie verwendet haben, um den Amazon-S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (012345678901) durch Ihre Konto-ID.

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

step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie im IAMBenutzerhandbuch.

Anmerkung

Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK for Java verwenden. Managed Service for Apache Flink setzt automatisch die Anmeldedaten, die für SDK die für die IAM Dienstausführungsrolle erforderlich sind, ein, die Ihrer Anwendung zugeordnet ist. Es sind keine weiteren Schritte erforderlich.

Erstellen Sie eine IAM-Rolle

In diesem Abschnitt erstellen Sie eine IAM Rolle, von der die Anwendung Managed Service for Apache Flink annehmen kann, einen Quellstream zu lesen und in den Senkenstream zu schreiben.

Managed Service für Apache Flink kann ohne Berechtigungen nicht auf Ihren Stream zugreifen. Sie gewähren diese Berechtigungen über eine IAM Rolle. Jeder IAM Rolle sind zwei Richtlinien zugeordnet. Die Vertrauensrichtlinie erteilt Managed Service für Apache Flink die Berechtigung zum Übernehmen der Rolle und die Berechtigungsrichtlinie bestimmt, was Managed Service für Apache Flink nach Annahme der Rolle tun kann.

Sie können die Berechtigungsrichtlinie, die Sie im vorherigen Abschnitt erstellt haben, dieser Rolle anfügen.

So erstellen Sie eine IAM-Rolle
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus. Wählen Sie unter Select your use case (Wählen Sie Ihren Anwendungsfall aus) die Option Kinesis Analytics aus.

    Wählen Sie Weiter: Berechtigungen aus.

  4. Wählen Sie auf der Seite Attach permissions policies (Berechtigungsrichtlinien hinzufügen) Next: Review (Weiter: Überprüfen) aus. Sie fügen Berechtigungsrichtlinien an, nachdem Sie die Rolle erstellt haben.

  5. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen.

    Jetzt haben Sie eine neue IAM Rolle namens erstelltMF-stream-rw-role. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

  6. Fügen Sie die Berechtigungsrichtlinie der Rolle an.

    Anmerkung

    Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt erstellt haben, Erstellen einer Berechtigungsrichtlinie.

    1. Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.

    2. Wählen Sie Attach Policies (Richtlinien anfügen) aus.

    3. Geben Sie im Suchfeld AKReadSourceStreamWriteSinkStream (die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.

    4. Wählen Sie die AKReadSourceStreamWriteSinkStreamRichtlinie und anschließend Richtlinie anhängen aus.

Sie haben nun die Service-Ausführungsrolle erstellt, die Ihre Anwendung für den Zugriff auf Ressourcen verwendet. Notieren Sie sich die ARN der neuen Rolle.

step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter Erstellen einer IAM Rolle (Konsole) im IAMBenutzerhandbuch.

Erstellen Sie die Anwendung Managed Service für Apache Flink
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namencreate_request.json. Ersetzen Sie die Beispielrolle ARN durch die ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das ARN Bucket-Suffix (username) durch das Suffix, das Sie im vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (012345678901) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

    { "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. Führen Sie die CreateApplication-Aktion mit der vorherigen Anforderung zum Erstellen der Anwendung aus:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

Die Anwendung wird nun erstellt. Sie starten die Anwendung im nächsten Schritt.

Starten Sie die Anwendung

In diesem Abschnitt verwenden Sie die StartApplication-Aktion, um die Anwendung zu starten.

So starten Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Führen Sie die StartApplication-Aktion mit der vorherigen Anforderung zum Starten der Anwendung aus:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

Die Anwendung wird jetzt ausgeführt. Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Amazon-Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Beenden Sie die Anwendung

In diesem Abschnitt verwenden Sie die StopApplication-Aktion, um die Anwendung zu stoppen.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstop_request.json.

    { "ApplicationName": "test" }
  2. Führen Sie die StopApplication-Aktion mit der folgenden Anforderung zum Stoppen der Anwendung aus:

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unterAnwendungsprotokollierung in Managed Service für Apache Flink einrichten.

Aktualisieren Sie die Umgebungseigenschaften

In diesem Abschnitt verwenden Sie die UpdateApplication-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

So aktualisieren Sie die Umgebungseigenschaften für die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenupdate_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. Führen Sie die UpdateApplication-Aktion mit der vorherigen Anforderung aus, um die Umgebungseigenschaften zu aktualisieren:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Den Anwendungscode aktualisieren

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplication AWS CLI Aktion.

Anmerkung

Um eine neue Version des Anwendungscodes mit demselben Dateinamen zu laden, müssen Sie die neue Objektversion angeben. Weitere Informationen zur Verwendung von Amazon S3-Objektversionen finden Sie unter Versionsverwaltung aktivieren oder deaktivieren.

Um das zu verwenden AWS CLI, löschen Sie Ihr vorheriges Codepaket aus Ihrem Amazon S3 S3-Bucket, laden Sie die neue Version hoch und rufen Sie UpdateApplication auf. Geben Sie dabei denselben Amazon S3 S3-Bucket und Objektnamen sowie die neue Objektversion an. Die Anwendung wird mit dem neuen Codepaket neu gestartet.

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namensuffix (<username>) mit dem Suffix, das Sie im Abschnitt ausgewählt haben. Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams

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

Nächster Schritt

Schritt 4: Ressourcen AWS bereinigen

Schritt 4: Ressourcen AWS bereinigen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tutorial Erste Schritte erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung

  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie Konfigurieren aus.

  4. Wählen Sie im Abschnitt Snapshots die Option Deaktivieren und anschließend Aktualisieren aus.

  5. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams

  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket

  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen

  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen

  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Erste Schritte: Flink 1.6.2 — veraltet

Anmerkung

Die Apache Flink-Versionen 1.6, 1.8 und 1.11 wurden seit über drei Jahren nicht mehr von der Apache Flink-Community unterstützt. Wir planen, diese Versionen in Amazon Managed Service für Apache Flink am 5. November 2024 als veraltet anzusehen. Ab diesem Datum können Sie keine neuen Anwendungen für diese Flink-Versionen erstellen. Sie können bestehende Anwendungen zu diesem Zeitpunkt weiter ausführen. Sie können Ihre Anwendungen mithilfe der Funktion für direkte Versionsupgrades in Amazon Managed Service for Apache Flink statual aktualisieren. Weitere Informationen finden Sie unter. Verwenden Sie direkte Versionsupgrades für Apache Flink

Dieses Thema enthält eine Version des Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorials, die Apache Flink 1.6.2 verwendet.

Komponenten einer Managed Service für Apache Flink-Anwendung

Zur Verarbeitung von Daten verwendet Ihre Managed Service für Apache Flink-Anwendung eine Java/Apache Maven- oder Scala-Anwendung, die mithilfe der Apache Flink-Laufzeit Eingaben verarbeitet und Ausgaben erzeugt.

Ein Managed Service für Apache Flink besteht aus den folgenden Komponenten:

  • Runtime-Eigenschaften: Sie können Runtime-Eigenschaften verwenden, um Ihre Anwendung zu konfigurieren, ohne Ihren Anwendungscode neu kompilieren zu müssen.

  • Quelle: Die Anwendung verwendet Daten mithilfe einer Quelle. Ein Quell-Connector liest Daten aus einem Kinesis Data Stream, einem Amazon S3-Bucket usw. Weitere Informationen finden Sie unter Fügen Sie Streaming-Datenquellen hinzu.

  • Operatoren: Die Anwendung verarbeitet Daten mithilfe eines oder mehrerer Operatoren. Ein Operator kann Daten transformieren, anreichern oder aggregieren. Weitere Informationen finden Sie unter Operatoren.

  • Senke: Die Anwendung erzeugt Daten für externe Quellen mithilfe von Senken. Ein Sink-Connector schreibt Daten in einen Kinesis-Datenstream, einen Firehose-Stream, einen Amazon S3 S3-Bucket usw. Weitere Informationen finden Sie unter Schreiben Sie Daten mithilfe von Senken.

Nachdem Sie Ihre Anwendung erstellt, kompiliert und verpackt haben, laden Sie das Codepaket in einen Amazon Simple Storage Service (Amazon S3)-Bucket hoch. Anschließend erstellen Sie eine Managed Service für Apache Flink-Anwendung. Sie übergeben den Speicherort des Codepakets, einen Kinesis Data Stream als Streaming-Datenquelle und in der Regel einen Streaming- oder Dateispeicherort, der die verarbeiteten Daten der Anwendung empfängt.

Voraussetzungen für das Abschließen der Übungen

Zur Durchführung der Schritte in dieser Anleitung benötigen Sie Folgendes:

  • Java-Entwicklungskit (JDK) Version 8. Stellen Sie die JAVA_HOME Umgebungsvariable so ein, dass sie auf Ihren JDK Installationsort verweist.

  • Wir empfehlen die Verwendung einer Entwicklungsumgebung (wie Eclipse Java Neon oder IntelliJ Idea), um Ihre Anwendung zu entwickeln und zu kompilieren.

  • Git-Client. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben.

  • Apache Maven-Compiler-Plugin. Maven muss sich in Ihrem Arbeitspfad befinden. Zum Testen Ihrer Apache Maven-Installation geben Sie Folgendes ein:

    $ mvn -version

Um zu beginnen, gehen Sie zu Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer.

Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer

Melde dich an für ein AWS-Konto

Wenn Sie noch keine haben AWS-Konto, führen Sie die folgenden Schritte aus, um eine zu erstellen.

Um sich für eine anzumelden AWS-Konto
  1. Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.

  2. Folgen Sie den Online-Anweisungen.

    Bei der Anmeldung müssen Sie auch einen Telefonanruf entgegennehmen und einen Verifizierungscode über die Telefontasten eingeben.

    Wenn Sie sich für eine anmelden AWS-Konto, Root-Benutzer des AWS-Kontoswird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Administratorbenutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um Aufgaben auszuführen, die Root-Benutzerzugriff erfordern.

AWS sendet Ihnen nach Abschluss des Anmeldevorgangs eine Bestätigungs-E-Mail. Du kannst jederzeit deine aktuellen Kontoaktivitäten einsehen und dein Konto verwalten, indem du zu https://aws.amazon.com/gehst und Mein Konto auswählst.

Erstellen eines Benutzers mit Administratorzugriff

Nachdem Sie sich für einen angemeldet haben AWS-Konto, sichern Sie Ihren Root-Benutzer des AWS-Kontos AWS IAM Identity Center, aktivieren und erstellen Sie einen Administratorbenutzer, sodass Sie den Root-Benutzer nicht für alltägliche Aufgaben verwenden.

Sichern Sie Ihre Root-Benutzer des AWS-Kontos
  1. Melden Sie sich AWS Management Consoleals Kontoinhaber an, indem Sie Root-Benutzer auswählen und Ihre AWS-Konto E-Mail-Adresse eingeben. Geben Sie auf der nächsten Seite Ihr Passwort ein.

    Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Anmelden als Root-Benutzer im AWS-Anmeldung Benutzerhandbuch zu.

  2. Aktivieren Sie die Multi-Faktor-Authentifizierung (MFA) für Ihren Root-Benutzer.

    Anweisungen finden Sie im Benutzerhandbuch unter Aktivieren eines virtuellen MFA Geräts für Ihren AWS-Konto IAM Root-Benutzer (Konsole).

Erstellen eines Benutzers mit Administratorzugriff
  1. Aktivieren Sie IAM Identity Center.

    Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.

  2. Gewähren Sie einem Benutzer in IAM Identity Center Administratorzugriff.

    Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie unter Benutzerzugriff mit der Standardeinstellung konfigurieren IAM-Identity-Center-Verzeichnis im AWS IAM Identity Center Benutzerhandbuch.

Anmelden als Administratorbenutzer
Weiteren Benutzern Zugriff zuweisen
  1. Erstellen Sie in IAM Identity Center einen Berechtigungssatz, der der bewährten Methode zur Anwendung von Berechtigungen mit den geringsten Rechten folgt.

    Anweisungen hierzu finden Sie unter Berechtigungssatz erstellen im AWS IAM Identity Center Benutzerhandbuch.

  2. Weisen Sie Benutzer einer Gruppe zu und weisen Sie der Gruppe dann Single Sign-On-Zugriff zu.

    Eine genaue Anleitung finden Sie unter Gruppen hinzufügen im AWS IAM Identity Center Benutzerhandbuch.

Erteilen programmgesteuerten Zugriffs

Benutzer benötigen programmatischen Zugriff, wenn sie mit AWS außerhalb des interagieren möchten. AWS Management Console Die Art und Weise, wie programmatischer Zugriff gewährt wird, hängt vom Benutzertyp ab, der zugreift. AWS

Um Benutzern programmgesteuerten Zugriff zu gewähren, wählen Sie eine der folgenden Optionen.

Welcher Benutzer benötigt programmgesteuerten Zugriff? Bis Von

Mitarbeiteridentität

(In IAM Identity Center verwaltete Benutzer)

Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an AWS CLI AWS SDKs, oder AWS APIs zu signieren.

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

IAM Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder AWS APIs zu signieren. Folgen Sie den Anweisungen unter Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen im IAMBenutzerhandbuch.
IAM

(Nicht empfohlen)

Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder AWS APIs zu signieren.

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

Schritt 2: Richten Sie das AWS Command Line Interface (AWS CLI) ein

In diesem Schritt laden Sie den herunter und konfigurieren ihn für AWS CLI die Verwendung mit einem Managed Service für Apache Flink.

Anmerkung

Bei allen Erste-Schritte-Übungen in diesem Handbuch wird davon ausgegangen, dass Sie in Ihrem Konto Administrator-Anmeldeinformationen (adminuser) verwenden, um die Operationen auszuführen.

Anmerkung

Wenn Sie das bereits AWS CLI installiert haben, müssen Sie möglicherweise ein Upgrade durchführen, um die neuesten Funktionen zu erhalten. Weitere Informationen finden Sie unter Installieren der AWS Command Line Interface im AWS Command Line Interface -Benutzerhandbuch. Führen Sie den folgenden Befehl aus AWS CLI, um die Version von zu überprüfen:

aws --version

Für die Übungen in diesem Tutorial ist die folgende AWS CLI Version oder höher erforderlich:

aws-cli/1.16.63
Um das einzurichten AWS CLI
  1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface -Benutzerhandbuch:

  2. Fügen Sie der Datei ein benanntes Profil für den Administratorbenutzer AWS CLI config hinzu. Verwenden Sie dieses Profil beim Ausführen von AWS CLI -Befehlen. Weitere Informationen zu benannten Profilen finden Sie unter Benannte Profile im AWS Command Line Interface Benutzerhandbuch.

    [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region

    Eine Liste der verfügbaren AWS Regionen finden Sie unter Regionen und Endpunkte in der Allgemeine Amazon Web Services-Referenz.

    Anmerkung

    Der Beispielcode und die Befehle in diesem Tutorial verwenden die Region USA West (Oregon). Um eine andere Region zu verwenden, ändern Sie die Region im Code und in den Befehlen für dieses Tutorial in die Region, die Sie verwenden möchten.

  3. Überprüfen Sie die Einrichtung, indem Sie die folgenden Hilfebefehle in die Befehlszeile eingeben:

    aws help

Nachdem Sie ein AWS Konto eingerichtet haben AWS CLI, können Sie die nächste Übung ausprobieren, in der Sie eine Beispielanwendung konfigurieren und das end-to-end Setup testen.

Nächster Schritt

Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus

Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus

In dieser Übung erstellen Sie eine Anwendung von Managed Service für Apache Flink mit Datenströmen als Quelle und Senke.

Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie zwei Kinesis Data Streams (ExampleInputStream und ExampleOutputStream). Ihre Anwendung verwendet diese Streams für die Quell- und Ziel-Streams der Anwendung.

Sie können diese Streams mithilfe der Amazon-Kinesis-Konsole oder des folgenden AWS CLI -Befehls erstellen. Anweisungen für die Konsole finden Sie unter Erstellen und Aktualisieren von Datenströmen im Amazon Kinesis Data Streams Entwicklerhandbuch.

So erstellen Sie die Daten-Streams (AWS CLI)
  1. Verwenden Sie den folgenden Amazon Kinesis create-stream AWS CLI Kinesis-Befehl, um den ersten Stream (ExampleInputStream) zu erstellen.

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Um den zweiten Stream zu erstellen, den die Anwendung zum Schreiben der Ausgabe verwendet, führen Sie denselben Befehl aus und ändern den Stream-Namen in ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Im weiteren Verlauf des Tutorials führen Sie das stock.py-Skript zum Senden von Daten an die Anwendung aus.

    $ python stock.py

Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Klonen Sie das Remote-Repository, indem Sie den folgenden Befehl verwenden:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/GettingStarted_1_6 Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:

  • Eine Project Object Model (pom.xml) Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink .

  • Die BasicStreamingJob.java-Datei enthält diemain -Methode, die die Funktionalität der Anwendung definiert.

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Ihre Anwendung erstellt Quell- und Senkenkonnektoren für den Zugriff auf externe Ressourcen, indem ein StreamExecutionEnvironment-Objekt verwendet wird.

  • Die Anwendung erstellt Quell- und Senkenkonnektoren mit statischen Eigenschaften. Zum Verwenden dynamischer Anwendungseigenschaften verwenden Sie die Methoden createSourceFromApplicationProperties und createSinkFromApplicationProperties, um die Konnektoren zu erstellen. Diese Methoden lesen die Eigenschaften der Anwendung zum Konfigurieren der Konnektoren.

    Weitere Informationen zu Laufzeiteigenschaften finden Sie unter Verwenden Sie Laufzeiteigenschaften in Managed Service für Apache Flink.

Kompilieren Sie den Anwendungscode

In diesem Abschnitt verwenden Sie den Apache Maven-Compiler zum Erstellen des Java-Codes für die Anwendung. Hinweise zur Installation von Apache Maven und dem Java Development Kit (JDK) finden Sie unterVoraussetzungen für das Abschließen der Übungen.

Anmerkung

Zur Nutzung des Kinesis-Konnektors für Versionen von Apache Flink vor 1.11, müssen Sie den Quellcode für den Konnektor herunterladen und ihn erstellen. Einzelheiten dazu finden Sie in der Apache-Flink-Dokumentation.

Kompilieren des Anwendungscodes
  1. Um Ihren Anwendungscode zu verwenden, kompilieren Sie ihn und packen ihn in eine JAR Datei. Sie können Ihren Code auf zwei Arten kompilieren und packen:

    • Verwenden Sie das Befehlszeilen-Maven-Tool. Erstellen Sie Ihre JAR Datei, indem Sie den folgenden Befehl in dem Verzeichnis ausführen, das die pom.xml Datei enthält:

      mvn package
      Anmerkung

      Der Parameter -Dflink.version ist für Managed Service für Apache Flink Laufzeit Version 1.0.1 nicht erforderlich; er ist nur für Version 1.1.0 und höher erforderlich. Weitere Informationen finden Sie unter Geben Sie die Apache Flink-Version Ihrer Anwendung an.

    • Verwenden Sie Ihre Entwicklungsumgebung. Weitere Informationen finden Sie in der Dokumentation Ihrer Entwicklungsumgebung.

    Sie können Ihr Paket entweder als JAR Datei hochladen oder Sie können Ihr Paket komprimieren und als ZIP Datei hochladen. Wenn Sie Ihre Anwendung mit dem erstellen AWS CLI, geben Sie Ihren Codeinhaltstyp (JARoderZIP) an.

  2. Wenn während der Erstellung Fehler aufgetreten sind, überprüfen Sie, ob Ihre JAVA_HOME-Umgebungsvariable richtig eingestellt ist.

Wenn die Anwendung erfolgreich kompiliert wurde, wird die folgende Datei erstellt:

target/aws-kinesis-analytics-java-apps-1.0.jar

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt erstellen Sie einen Amazon Simple Storage Service (Amazon S3)-Bucket und laden Ihren Anwendungscode hoch.

So laden Sie den Anwendungscode hoch
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie Bucket erstellen aus.

  3. Geben Sie ka-app-code-<username> im Feld Bucket-Name ein. Fügen Sie dem Bucket-Namen ein Suffix hinzu, wie z. B. Ihren Benutzernamen, damit er global eindeutig ist. Wählen Sie Weiter.

  4. Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.

  5. Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.

  6. Wählen Sie Bucket erstellen aus.

  7. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  8. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der aws-kinesis-analytics-java-apps-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter.

  9. Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert. Wählen Sie Weiter.

  10. Lassen Sie im Schritt Eigenschaften festlegen die Einstellungen unverändert. Klicken Sie auf Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Sie können eine Anwendung von Managed Service für Apache Flink entweder über die Konsole oder AWS CLI erstellen und ausführen.

Anmerkung

Wenn Sie die Anwendung mithilfe der Konsole erstellen, werden Ihre AWS Identity and Access Management (IAM) und Amazon CloudWatch Logs-Ressourcen für Sie erstellt. Wenn Sie die Anwendung mithilfe von erstellen AWS CLI, erstellen Sie diese Ressourcen separat.

Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Geben Sie für Beschreibung den Text My java test app ein.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

      Anmerkung

      Managed Service für Apache Flink verwendet Apache Flink Version 1.8.2 oder 1.6.2.

    • Ändern Sie den Versions-Pulldown auf Apache Flink 1.6.

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert java-getting-started-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  6. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  7. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie sich dafür entscheiden, die CloudWatch Amazon-Protokollierung zu aktivieren, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Führen Sie die Anwendung aus.
  1. Wählen Sie auf der MyApplicationSeite die Option Ausführen aus. Bestätigen Sie die Aktion.

  2. Wenn die Anwendung ausgeführt wird, aktualisieren Sie die Seite. Die Konsole zeigt den Application graph (Anwendungs-Graph) an.

Beenden Sie die Anwendung

Wählen Sie auf der MyApplicationSeite Stopp aus. Bestätigen Sie die Aktion.

Aktualisieren der Anwendung

Mithilfe der Konsole können Sie Anwendungseinstellungen wie Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der Anwendung aktualisierenJAR. Sie können die Anwendung auch JAR aus dem Amazon S3 S3-Bucket neu laden, wenn Sie den Anwendungscode aktualisieren müssen.

Wählen Sie auf der MyApplicationSeite Configure aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf Aktualisieren.

Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)

In diesem Abschnitt verwenden Sie die, AWS CLI um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen. Managed Service for Apache Flink verwendet den kinesisanalyticsv2 AWS CLI Befehl, um Managed Service for Apache Flink-Anwendungen zu erstellen und mit ihnen zu interagieren.

Erstellen einer Berechtigungsrichtlinie

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die read-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die write-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie einer IAM Rolle hinzu (die Sie im nächsten Abschnitt erstellen). Wenn Managed Service für Apache Flink also die Rolle übernimmt, verfügt der Service über die erforderlichen Berechtigungen zum Lesen aus dem Quell-Stream und zum Schreiben in den Senken-Stream.

Verwenden Sie den folgenden Code zum Erstellen der AKReadSourceStreamWriteSinkStream-Berechtigungsrichtlinie. Ersetzen Sie username durch den Benutzernamen, den Sie verwendet haben, um den Amazon-S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (012345678901) durch Ihre Konto-ID.

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

step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie im IAMBenutzerhandbuch.

Anmerkung

Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK for Java verwenden. Managed Service for Apache Flink setzt automatisch die Anmeldedaten, die für SDK die für die IAM Dienstausführungsrolle erforderlich sind, ein, die Ihrer Anwendung zugeordnet ist. Es sind keine weiteren Schritte erforderlich.

Erstellen Sie eine IAM-Rolle

In diesem Abschnitt erstellen Sie eine IAM Rolle, von der die Anwendung Managed Service for Apache Flink annehmen kann, einen Quellstream zu lesen und in den Senkenstream zu schreiben.

Managed Service für Apache Flink kann ohne Berechtigungen nicht auf Ihren Stream zugreifen. Sie gewähren diese Berechtigungen über eine IAM Rolle. Jeder IAM Rolle sind zwei Richtlinien zugeordnet. Die Vertrauensrichtlinie erteilt Managed Service für Apache Flink die Berechtigung zum Übernehmen der Rolle und die Berechtigungsrichtlinie bestimmt, was Managed Service für Apache Flink nach Annahme der Rolle tun kann.

Sie können die Berechtigungsrichtlinie, die Sie im vorherigen Abschnitt erstellt haben, dieser Rolle anfügen.

So erstellen Sie eine IAM-Rolle
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus. Wählen Sie unter Select your use case (Wählen Sie Ihren Anwendungsfall aus) die Option Kinesis Analytics aus.

    Wählen Sie Weiter: Berechtigungen aus.

  4. Wählen Sie auf der Seite Attach permissions policies (Berechtigungsrichtlinien hinzufügen) Next: Review (Weiter: Überprüfen) aus. Sie fügen Berechtigungsrichtlinien an, nachdem Sie die Rolle erstellt haben.

  5. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen.

    Jetzt haben Sie eine neue IAM Rolle namens erstelltMF-stream-rw-role. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

  6. Fügen Sie die Berechtigungsrichtlinie der Rolle an.

    Anmerkung

    Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt erstellt haben, Erstellen einer Berechtigungsrichtlinie.

    1. Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.

    2. Wählen Sie Attach Policies (Richtlinien anfügen) aus.

    3. Geben Sie im Suchfeld AKReadSourceStreamWriteSinkStream (die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.

    4. Wählen Sie die AKReadSourceStreamWriteSinkStreamRichtlinie und anschließend Richtlinie anhängen aus.

Sie haben nun die Service-Ausführungsrolle erstellt, die Ihre Anwendung für den Zugriff auf Ressourcen verwendet. Notieren Sie sich die ARN der neuen Rolle.

step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter Erstellen einer IAM Rolle (Konsole) im IAMBenutzerhandbuch.

Erstellen Sie die Anwendung Managed Service für Apache Flink
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namencreate_request.json. Ersetzen Sie die Beispielrolle ARN durch die ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das ARN Bucket-Suffix (username) durch das Suffix, das Sie im vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (012345678901) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

    { "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. Führen Sie die CreateApplication-Aktion mit der vorherigen Anforderung zum Erstellen der Anwendung aus:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

Die Anwendung wird nun erstellt. Sie starten die Anwendung im nächsten Schritt.

Starten Sie die Anwendung

In diesem Abschnitt verwenden Sie die StartApplication-Aktion, um die Anwendung zu starten.

So starten Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Führen Sie die StartApplication-Aktion mit der vorherigen Anforderung zum Starten der Anwendung aus:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

Die Anwendung wird jetzt ausgeführt. Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Amazon-Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Beenden Sie die Anwendung

In diesem Abschnitt verwenden Sie die StopApplication-Aktion, um die Anwendung zu stoppen.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstop_request.json.

    { "ApplicationName": "test" }
  2. Führen Sie die StopApplication-Aktion mit der folgenden Anforderung zum Stoppen der Anwendung aus:

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unterAnwendungsprotokollierung in Managed Service für Apache Flink einrichten.

Aktualisieren Sie die Umgebungseigenschaften

In diesem Abschnitt verwenden Sie die UpdateApplication-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

So aktualisieren Sie die Umgebungseigenschaften für die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenupdate_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. Führen Sie die UpdateApplication-Aktion mit der vorherigen Anforderung aus, um die Umgebungseigenschaften zu aktualisieren:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Den Anwendungscode aktualisieren

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplication AWS CLI Aktion.

Um das zu verwenden AWS CLI, löschen Sie Ihr vorheriges Codepaket aus Ihrem Amazon S3 S3-Bucket, laden Sie die neue Version hoch und rufen Sie es aufUpdateApplication, wobei Sie denselben Amazon S3 S3-Bucket und Objektnamen angeben. Die Anwendung wird mit dem neuen Codepaket neu gestartet.

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namensuffix (<username>) mit dem Suffix, das Sie im Abschnitt ausgewählt haben. Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }

Schritt 4: Ressourcen AWS bereinigen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tutorial Erste Schritte erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung

  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie Konfigurieren aus.

  4. Wählen Sie im Abschnitt Snapshots die Option Deaktivieren und anschließend Aktualisieren aus.

  5. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams

  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket

  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen

  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen

  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiele früherer Versionen (Legacy) für Managed Service für Apache Flink

Dieser Abschnitt enthält Beispiele für das Erstellen und Arbeiten mit Anwendungen im Managed Service für Apache Flink. Sie enthalten Beispielcode und step-by-step Anweisungen, die Ihnen helfen, Managed Service für Apache Flink-Anwendungen zu erstellen und Ihre Ergebnisse zu testen.

Bevor Sie sich mit diesen Beispielen befassen, empfehlen wir Ihnen, zunächst Folgendes zu lesen:

Anmerkung

In diesen Beispielen wird vorausgesetzt, dass Sie die Region USA West (Oregon) (us-west-2) verwenden. Wenn Sie eine andere Region verwenden, aktualisieren Sie Ihren Anwendungscode, Ihre Befehle und IAM Rollen entsprechend.

DataStream APIBeispiele

Die folgenden Beispiele zeigen, wie Anwendungen mit dem Apache Flink DataStream API erstellt werden.

Beispiel: Taumelndes Fenster

In dieser Übung erstellen Sie eine Anwendung von Managed Service für Apache Flink, die Daten in einem rollierenden Fenster aggregiert. Die Aggregation ist in Flink standardmäßig aktiviert. Um sie deaktivieren, verwenden Sie Folgendes:

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

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Übung ab.

Erstellen Sie abhängige Ressourcen

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen:

  • Zwei Kinesis Data Streams (ExampleInputStream und ExampleOutputStream)

  • Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (ka-app-code-<username>)

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:

  • Data Streams erstellen und aktualisieren im Amazon Kinesis Data Streams Entwicklerleitfaden. Benennen Sie Ihren Data Stream ExampleInputStream und ExampleOutputStream.

  • Wie erstelle ich einen S3-Bucket? im Amazon Simple Storage Service Benutzerhandbuch. Geben Sie dem Amazon S3-Bucket einen global eindeutigen Namen, indem Sie Ihren Anmeldenamen anhängen, z. B. ka-app-code-<username>.

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Führen Sie das stock.pySkript aus:

    $ python stock.py

    Lassen Sie das Skript laufen, während Sie den Rest des Tutorials abschließen.

Laden Sie den Anwendungscode herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/TumblingWindow Verzeichnis .

Der Anwendungscode befindet sich in der TumblingWindowStreamingJob.java-Datei. Beachten Sie Folgendes zum Anwendungscode:

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Fügen Sie die folgende Importanweisung hinzu:

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  • Die Anwendung verwendet den timeWindow-Operator, um die Anzahl der Werte für jedes Aktionssymbol über ein rollierendes Fenster von 5 Sekunden zu ermitteln. Der folgende Code erstellt den Operator und sendet die aggregierten Daten an eine neue Kinesis Data Streams Senke:

    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());
Kompilieren Sie den Anwendungscode

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

  1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter Erfüllen Sie die erforderlichen Voraussetzungen im Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorial.

  2. Kompilieren Sie die Anwendung mit dem folgenden Befehl:

    mvn package -Dflink.version=1.15.3
    Anmerkung

    Der bereitgestellte Quellcode basiert auf Bibliotheken von Java 11.

Beim Kompilieren der Anwendung wird die JAR Anwendungsdatei (target/aws-kinesis-analytics-java-apps-1.0.jar) erstellt.

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in das Amazon S3-Bucket hoch, das Sie im Erstellen Sie abhängige Ressourcen Abschnitt erstellt haben.

  1. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  2. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der aws-kinesis-analytics-java-apps-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  3. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

      Anmerkung

      Managed Service für Apache Flink verwendet Apache Flink Version 1.15.2.

    • Belassen Sie den Versions-Pulldown bei Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert aws-kinesis-analytics-java-apps-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  5. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  6. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service for Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet. Dies ist nicht derselbe Protokollstream, den die Anwendung zum Senden von Ergebnissen verwendet.

Führen Sie die Anwendung aus.
  1. Wählen Sie auf der MyApplicationSeite die Option Ausführen aus. Lassen Sie die Option Ohne Snapshot ausführen aktiviert und bestätigen Sie die Aktion.

  2. Wenn die Anwendung ausgeführt wird, aktualisieren Sie die Seite. Die Konsole zeigt den Application graph (Anwendungs-Graph) an.

Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Bereinigen von AWS -Ressourcen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tumbling Window-Tutorial erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiel: Schiebefenster

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Übung ab.

Erstellen Sie abhängige Ressourcen

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen:

  • Zwei Kinesis-Datenströme (ExampleInputStream und ExampleOutputStream).

  • Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (ka-app-code-<username>)

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:

  • Data Streams erstellen und aktualisieren im Amazon Kinesis Data Streams Entwicklerleitfaden. Benennen Sie Ihre Data Streams ExampleInputStream und ExampleOutputStream.

  • Wie erstelle ich einen S3-Bucket? im Amazon Simple Storage Service Benutzerhandbuch. Geben Sie dem Amazon S3-Bucket einen global eindeutigen Namen, indem Sie Ihren Anmeldenamen anhängen, z. B. ka-app-code-<username>.

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Führen Sie das stock.pySkript aus:

    $ python stock.py

    Lassen Sie das Skript laufen, während Sie den Rest des Tutorials abschließen.

Laden Sie den Anwendungscode herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/SlidingWindow Verzeichnis .

Der Anwendungscode befindet sich in der SlidingWindowStreamingJobWithParallelism.java-Datei. Beachten Sie Folgendes zum Anwendungscode:

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Die Anwendung verwendet den timeWindow-Operator, um in einem 10-Sekunden-Fenster, das um 5 Sekunden verschoben wird, den Mindestwert für jedes Aktionssymbol zu ermitteln. Der folgende Code erstellt den Operator und sendet die aggregierten Daten an eine neue Kinesis Data Streams Senke:

  • Fügen Sie die folgende Importanweisung hinzu:

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  • Die Anwendung verwendet den timeWindow-Operator, um die Anzahl der Werte für jedes Aktionssymbol über ein rollierendes Fenster von 5 Sekunden zu ermitteln. Der folgende Code erstellt den Operator und sendet die aggregierten Daten an eine neue Kinesis Data Streams Senke:

    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());
Kompilieren Sie den Anwendungscode

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

  1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter Erfüllen Sie die erforderlichen Voraussetzungen im Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorial.

  2. Kompilieren Sie die Anwendung mit dem folgenden Befehl:

    mvn package -Dflink.version=1.15.3
    Anmerkung

    Der bereitgestellte Quellcode basiert auf Bibliotheken von Java 11.

Beim Kompilieren der Anwendung wird die JAR Anwendungsdatei (target/aws-kinesis-analytics-java-apps-1.0.jar) erstellt.

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Abschnitt Erstellen Sie abhängige Ressourcen erstellt haben.

  1. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie dann Upload.

  2. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der aws-kinesis-analytics-java-apps-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  3. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

    • Belassen Sie den Versions-Pulldown bei Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert aws-kinesis-analytics-java-apps-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  5. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  6. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie sich dafür entscheiden, die CloudWatch Amazon-Protokollierung zu aktivieren, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet. Dies ist nicht derselbe Protokollstream, den die Anwendung zum Senden von Ergebnissen verwendet.

Konfigurieren Sie die Anwendungsparallelität

Dieses Anwendungsbeispiel verwendet die parallele Ausführung von Aufgaben. Der folgende Anwendungscode legt die Parallelität des Operators min fest:

.setParallelism(3) // Set parallelism for the min operator

Die Anwendungsparallelität kann nicht größer sein als die bereitgestellte Parallelität, die den Standardwert 1 hat. Verwenden Sie die folgende Aktion, um die Parallelität Ihrer Anwendung zu erhöhen: AWS CLI

aws kinesisanalyticsv2 update-application --application-name MyApplication --current-application-version-id <VersionId> --application-configuration-update "{\"FlinkApplicationConfigurationUpdate\": { \"ParallelismConfigurationUpdate\": {\"ParallelismUpdate\": 5, \"ConfigurationTypeUpdate\": \"CUSTOM\" }}}"

Sie können die aktuelle Versions-ID der Anwendung mithilfe der Aktionen DescribeApplicationoder ListApplicationsabrufen.

Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Sie können die Messwerte für Managed Service for Apache Flink auf der CloudWatch Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Ressourcen bereinigen AWS

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Sliding Window-Lernprogramm erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Bereich Managed Service für Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiel: In einen Amazon S3 S3-Bucket schreiben

In dieser Übung erstellen Sie einen Managed Service für Apache Flink, der einen Kinesis Data Stream als Quelle und einen Amazon S3-Bucket als Senke hat. Mithilfe der Senke können Sie die Ausgabe der Anwendung in der Amazon S3-Konsole überprüfen.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Übung ab.

Erstellen Sie abhängige Ressourcen

Bevor Sie für diese Übung einen Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen:

  • Einen Kinesis Data Stream (ExampleInputStream).

  • Einen Amazon S3-Bucket zum Speichern des Codes und der Ausgabe der Anwendung (ka-app-code-<username>)

Anmerkung

Managed Service für Apache Flink kann keine Daten auf Amazon S3 schreiben, wenn die serverseitige Verschlüsselung auf Managed Service für Apache Flink aktiviert ist.

Sie können den Kinesis-Stream und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:

  • Data Streams erstellen und aktualisieren im Amazon Kinesis Data Streams Entwicklerleitfaden. Benennen Sie Ihren Data Stream ExampleInputStream.

  • Wie erstelle ich einen S3-Bucket? im Amazon Simple Storage Service Benutzerhandbuch. Geben Sie dem Amazon S3-Bucket einen global eindeutigen Namen, indem Sie Ihren Anmeldenamen anhängen, z. B. ka-app-code-<username>. Erstellen Sie zwei Ordner (code und data) im Amazon S3-Bucket.

Die Anwendung erstellt die folgenden CloudWatch Ressourcen, sofern sie noch nicht vorhanden sind:

  • Eine Protokollgruppe namens /AWS/KinesisAnalytics-java/MyApplication.

  • Einen Protokollstream mit dem Namen kinesis-analytics-log-stream.

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Führen Sie das stock.pySkript aus:

    $ python stock.py

    Lassen Sie das Skript laufen, während Sie den Rest des Tutorials abschließen.

Laden Sie den Anwendungscode herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/S3Sink Verzeichnis .

Der Anwendungscode befindet sich in der S3StreamingSinkJob.java-Datei. Beachten Sie Folgendes zum Anwendungscode:

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Sie müssen die folgende Import-Anweisung hinzufügen.

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
  • Die Anwendung verwendet eine Apache Flink S3-Senke, um auf Amazon S3 zu schreiben.

    Die Senke liest Nachrichten in einem rollierenden Fenster, kodiert Nachrichten in S3-Bucket-Objekte und sendet die codierten Objekte an die S3-Senke. Der folgende Code kodiert Objekte für das Senden an 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());
Anmerkung

Die Anwendung verwendet ein StreamingFileSink-Flink-Objekt, um in Amazon S3 zu schreiben. Weitere Informationen zu finden Sie StreamingFileSinkin der StreamingFileSink Apache Flink-Dokumentation.

Ändern Sie den Anwendungscode

In diesem Abschnitt ändern Sie den Anwendungscode, um die Ausgabe in Ihren Amazon S3-Bucket zu schreiben.

Aktualisieren Sie die folgende Zeile mit Ihrem Benutzernamen, um den Ausgabespeicherort der Anwendung anzugeben:

private static final String s3SinkPath = "s3a://ka-app-code-<username>/data";
Kompilieren Sie den Anwendungscode

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

  1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter Erfüllen Sie die erforderlichen Voraussetzungen im Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorial.

  2. Kompilieren Sie die Anwendung mit dem folgenden Befehl:

    mvn package -Dflink.version=1.15.3

Beim Kompilieren der Anwendung wird die JAR Anwendungsdatei (target/aws-kinesis-analytics-java-apps-1.0.jar) erstellt.

Anmerkung

Der bereitgestellte Quellcode basiert auf Bibliotheken aus Java 11.

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in das Amazon S3-Bucket hoch, das Sie im Erstellen Sie abhängige Ressourcen Abschnitt erstellt haben.

  1. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket, navigieren Sie zum Code-Ordner und wählen Sie Upload.

  2. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der aws-kinesis-analytics-java-apps-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  3. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

    • Belassen Sie den Versions-Pulldown bei Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

    Anmerkung

    Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

    • Belassen Sie die Version als Apache Flink Version 1.15.2 (empfohlene Version).

  6. Wählen Sie für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  7. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole einen Managed Service für Apache Flink erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf den Kinesis-Datenstream hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID. Ersetzen Sie <username> durch Ihren Benutzernamen.

    { "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" }, ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert code/aws-kinesis-analytics-java-apps-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  5. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  6. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service for Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet. Dies ist nicht derselbe Protokollstream, den die Anwendung zum Senden von Ergebnissen verwendet.

Führen Sie die Anwendung aus.
  1. Wählen Sie auf der MyApplicationSeite die Option Ausführen aus. Lassen Sie die Option Ohne Snapshot ausführen aktiviert und bestätigen Sie die Aktion.

  2. Wenn die Anwendung ausgeführt wird, aktualisieren Sie die Seite. Die Konsole zeigt den Application graph (Anwendungs-Graph) an.

Überprüfen Sie die Anwendungsausgabe

Öffnen Sie in der Amazon S3-Konsole den Ordner Daten in Ihrem S3-Bucket.

Nach einigen Minuten werden Objekte angezeigt, die aggregierte Daten aus der Anwendung enthalten.

Anmerkung

Die Aggregation ist in Flink standardmäßig aktiviert. Um sie deaktivieren, verwenden Sie Folgendes:

sink.producer.aggregation-enabled' = 'false'
Optional: Passen Sie Quelle und Senke an

In diesem Abschnitt passen Sie die Einstellungen für die Quell- und Senkenobjekte an.

Anmerkung

Nachdem Sie die in den folgenden Abschnitten beschriebenen Codeabschnitte geändert haben, gehen Sie wie folgt vor, um den Anwendungscode neu zu laden:

  • Wiederholen Sie die Schritte im Kompilieren Sie den Anwendungscode-Abschnitt, um den aktualisierten Anwendungscode zu kompilieren.

  • Wiederholen Sie die Schritte im Laden Sie den Apache Flink-Streaming-Java-Code hoch-Abschnitt, um den aktualisierten Anwendungscode hochzuladen.

  • Wählen Sie auf der Seite der Anwendung in der Konsole Konfigurieren und anschließend Aktualisieren aus, um den aktualisierten Anwendungscode erneut in Ihre Anwendung zu laden.

Konfigurieren Sie die Datenpartitionierung

In diesem Abschnitt konfigurieren Sie die Namen der Ordner, die die Streaming-Dateisenke im S3-Bucket erstellt. Dies geschieht, indem Sie der Streaming-Dateisenke einen Bucket-Assigner hinzufügen.

Gehen Sie wie folgt vor, um die im S3-Bucket erstellten Ordnernamen anzupassen:

  1. Fügen Sie am Anfang der S3StreamingSinkJob.java-Datei die folgenden Importanweisungen hinzu:

    import org.apache.flink.streaming.api.functions.sink.filesystem.rollingpolicies.DefaultRollingPolicy; import org.apache.flink.streaming.api.functions.sink.filesystem.bucketassigners.DateTimeBucketAssigner;
  2. Aktualisieren Sie die createS3SinkFromStaticConfig()-Methode im Code so, dass sie wie folgt aussieht:

    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; }

Im vorherigen Codebeispiel wird DateTimeBucketAssigner mit einem benutzerdefinierten Datumsformat verwendet, um Ordner im S3-Bucket zu erstellen. Der DateTimeBucketAssigner verwendet die aktuelle Systemzeit, um Bucket-Namen zu erstellen. Wenn Sie einen benutzerdefinierten Bucket-Assigner erstellen möchten, um die erstellten Ordnernamen weiter anzupassen, können Sie eine Klasse erstellen, die dies implementiert. BucketAssigner Sie implementieren Ihre benutzerdefinierte Logik mithilfe der Methode getBucketId.

Eine benutzerdefinierte Implementierung von BucketAssigner kann den Kontext-Parameter verwenden, um weitere Informationen zu einem Datensatz abzurufen und seinen Zielordner zu bestimmen.

Lesehäufigkeit konfigurieren

In diesem Abschnitt konfigurieren Sie die Häufigkeit von Lesevorgängen im Quellstream.

Der Kinesis Streams-Consumer liest standardmäßig fünfmal pro Sekunde aus dem Quell-Stream. Diese Häufigkeit führt zu Problemen, wenn mehr als ein Client aus dem Stream liest oder wenn die Anwendung erneut versuchen muss, einen Datensatz zu lesen. Sie können diese Probleme vermeiden, indem Sie die Lesehäufigkeit des Benutzers festlegen.

Um die Lesehäufigkeit des Kinesis-Consumers festzulegen, legen Sie die Einstellung SHARD_GETRECORDS_INTERVAL_MILLIS fest.

Im folgenden Codebeispiel wird die SHARD_GETRECORDS_INTERVAL_MILLIS-Einstellung auf eine Sekunde festgelegt:

kinesisConsumerConfig.setProperty(ConsumerConfigConstants.SHARD_GETRECORDS_INTERVAL_MILLIS, "1000");
Konfigurieren Sie die Schreibpufferung

In diesem Abschnitt konfigurieren Sie die Schreibfrequenz und andere Einstellungen der Senke.

Standardmäßig schreibt die Anwendung jede Minute in den Ziel-Bucket. Sie können dieses Intervall und andere Einstellungen ändern, indem Sie das DefaultRollingPolicy-Objekt konfigurieren.

Anmerkung

Die Apache Flink-Streaming-Dateisenke schreibt jedes Mal in ihren Ausgabe-Bucket, wenn die Anwendung einen Prüfpunkt erstellt. Die Anwendung erstellt standardmäßig jede Minute einen Prüfpunkt. Um das Schreibintervall der S3-Senke zu erhöhen, müssen Sie auch das Prüfpunkt-Intervall erhöhen.

Führen Sie zur Konfiguration des DefaultRollingPolicy-Objekts folgende Schritte aus:

  1. Erhöhen Sie die CheckpointInterval-Einstellung der Anwendung. Die folgende Eingabe für die UpdateApplicationAktion legt das Checkpoint-Intervall auf 10 Minuten fest:

    { "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "ConfigurationTypeUpdate" : "CUSTOM", "CheckpointIntervalUpdate": 600000 } } }, "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 5 }

    Geben Sie die aktuelle Anwendungsversion an, um den vorherigen Code zu verwenden. Sie können die Anwendungsversion mithilfe der ListApplicationsAktion abrufen.

  2. Fügen Sie am Anfang der S3StreamingSinkJob.java-Datei die folgende Importanweisung hinzu:

    import java.util.concurrent.TimeUnit;
  3. Aktualisieren Sie die createS3SinkFromStaticConfig-Methode in der S3StreamingSinkJob.java-Datei so, dass sie wie folgt aussieht:

    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; }

    Im vorherigen Codebeispiel wird die Häufigkeit von Schreibvorgängen in den Amazon S3-Bucket auf 8 Minuten festgelegt.

Weitere Informationen zur Konfiguration der Apache Flink-Streaming-Dateisenke finden Sie unter Reihencodierte Formate in der Apache Flink-Dokumentation.

AWS Ressourcen bereinigen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die Sie im Amazon S3 S3-Tutorial erstellt haben.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Bereich Managed Service für Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihren Kinesis-Datenstream
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Amazon S3 S3-Objekte und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Richtlinien aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Rollen aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie auf der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Tutorial: Verwenden einer Managed Service for Apache Flink-Anwendung zur Replikation von Daten von einem Thema in einem MSK Cluster zu einem anderen in einem VPC

Das folgende Tutorial zeigt, wie Sie ein Amazon VPC mit einem MSK Amazon-Cluster und zwei Themen erstellen und wie Sie eine Managed Service for Apache Flink-Anwendung erstellen, die aus einem MSK Amazon-Thema liest und in ein anderes schreibt.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Übung ab.

Erstellen Sie ein Amazon VPC mit einem MSK Amazon-Cluster

Folgen Sie dem MSK Tutorial Erste Schritte mit Amazon, um ein Beispiel VPC und einen MSK Amazon-Cluster für den Zugriff über eine Managed Service for Apache Flink-Anwendung zu erstellen.

Beachten Sie beim Abschluss des Tutorials Folgendes:

  • Wiederholen Sie in Schritt 3: Thema erstellen den Befehl kafka-topics.sh --create, um ein Zielthema mit dem Namen AWSKafkaTutorialTopicDestination zu erstellen:

    bin/kafka-topics.sh --create --zookeeper ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestination
  • Notieren Sie sich die Bootstrap-Serverliste für Ihren Cluster. Sie können die Liste der Bootstrap-Server mit dem folgenden Befehl abrufen (ersetzen) ClusterArn mit dem ARN Ihres MSK Clusters):

    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" }
  • Wenn Sie den Schritten in den Tutorials folgen, achten Sie darauf, die von Ihnen gewählte AWS Region in Ihrem Code, Ihren Befehlen und Konsoleneinträgen zu verwenden.

Erstellen Sie den Anwendungscode

In diesem Abschnitt laden Sie die JAR Anwendungsdatei herunter und kompilieren sie. Wir empfehlen die Verwendung von Java 11.

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Der Anwendungscode befindet sich in der amazon-kinesis-data-analytics-java-examples/KafkaConnectors/KafkaGettingStartedJob.java-Datei. Sie können den Code untersuchen, um sich mit der Struktur des Anwendungscodes von Managed Service für Apache Flink vertraut zu machen.

  4. Verwenden Sie entweder das Befehlszeilentool Maven oder Ihre bevorzugte Entwicklungsumgebung, um die Datei zu erstellen. JAR Um die JAR Datei mit dem Maven-Befehlszeilentool zu kompilieren, geben Sie Folgendes ein:

    mvn package -Dflink.version=1.15.3

    Wenn der Build erfolgreich ist, wird die folgende Datei erstellt:

    target/KafkaGettingStartedJob-1.0.jar
    Anmerkung

    Der bereitgestellte Quellcode basiert auf Bibliotheken von Java 11. Wenn Sie eine Entwicklungsumgebung verwenden,

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorial erstellt haben.

Anmerkung

Wenn Sie den Amazon S3-Bucket aus dem Tutorial Erste Schritte gelöscht haben, führen Sie den Schritt Laden Sie die JAR Anwendungscodedatei hoch erneut aus.

  1. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  2. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der KafkaGettingStartedJob-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  3. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink.

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink 1.15.2 aus.

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert KafkaGettingStartedJob-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

    Anmerkung

    Wenn Sie Anwendungsressourcen mithilfe der Konsole angeben (z. B. CloudWatch Logs oder AmazonVPC), ändert die Konsole Ihre Anwendungsausführungsrolle, um Berechtigungen für den Zugriff auf diese Ressourcen zu gewähren.

  4. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus. Geben Sie die folgenden Eigenschaften ein:

    Gruppen-ID Schlüssel Wert
    KafkaSource Thema 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.passwort changeit
    Anmerkung

    Das ssl.truststore.password für das Standardzertifikat ist „changeit“. Sie müssen diesen Wert nicht ändern, wenn Sie das Standardzertifikat verwenden.

    Wählen Sie erneut Gruppe hinzufügen. Geben Sie die folgenden Eigenschaften ein:

    Gruppen-ID Schlüssel Wert
    KafkaSink Thema 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.passwort changeit
    KafkaSink transaction.timeout.ms 1000

    Der Anwendungscode liest die oben genannten Anwendungseigenschaften, um die Quelle und Senke zu konfigurieren, die für die Interaktion mit Ihrem VPC und dem MSK Amazon-Cluster verwendet werden. Weitere Informationen zur Verwendung von Eigenschaften finden Sie unter Verwenden Sie Laufzeiteigenschaften in Managed Service für Apache Flink.

  5. Wählen Sie unter Snapshots die Option Deaktivieren aus. Dadurch wird es einfacher, die Anwendung zu aktualisieren, ohne ungültige Anwendungsstatusdaten zu laden.

  6. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  7. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  8. Wählen Sie im Abschnitt Virtual Private Cloud (VPC) die aus, VPC die Sie Ihrer Anwendung zuordnen möchten. Wählen Sie die zugehörigen Subnetze und Sicherheitsgruppen ausVPC, die die Anwendung für den Zugriff auf VPC Ressourcen verwenden soll.

  9. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet.

Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Testen der Anwendung

In diesem Abschnitt schreiben Sie Datensätze zum Quellthema. Die Anwendung liest Datensätze aus dem Quellthema und schreibt sie in das Zielthema. Sie überprüfen, ob die Anwendung funktioniert, indem Sie Datensätze in das Quellthema schreiben und Datensätze aus dem Zielthema lesen.

Um Datensätze zu den Themen zu schreiben und zu lesen, folgen Sie den Schritten in Schritt 6: Daten produzieren und verarbeiten im MSK Tutorial Erste Schritte mit Amazon.

Um aus dem Zielthema zu lesen, verwenden Sie in Ihrer zweiten Verbindung zum Cluster den Namen des Zielthemas anstelle des Quellthemas:

bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning

Wenn im Zielthema keine Datensätze angezeigt werden, lesen Sie den Abschnitt Auf Ressourcen in einem kann nicht zugegriffen werden VPC im Thema Problembehandlung bei Managed Service für Apache Flink.

Beispiel: Verwenden Sie einen EFO Verbraucher mit einem Kinesis-Datenstream

In dieser Übung erstellen Sie eine Managed Service for Apache Flink-Anwendung, die mithilfe eines Enhanced Fan-Out () EFO -Verbrauchers aus einem Kinesis-Datenstream liest. Wenn ein Kinesis-Verbraucher verwendetEFO, stellt ihm der Kinesis Data Streams-Dienst seine eigene dedizierte Bandbreite zur Verfügung, anstatt dass der Verbraucher die feste Bandbreite des Streams mit den anderen Verbrauchern teilt, die aus dem Stream lesen.

Weitere Informationen zur Verwendung EFO mit Kinesis Consumer finden Sie unter FLIP-128: Verbesserter Lüfterausgang für Kinesis-Verbraucher.

Die Anwendung, die Sie in diesem Beispiel erstellen, verwendet AWS Kinesis connector (flink-connector-kinesis) 1.15.3.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Übung ab.

Erstellen Sie abhängige Ressourcen

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen:

  • Zwei Kinesis Data Streams (ExampleInputStream und ExampleOutputStream)

  • Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (ka-app-code-<username>)

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:

  • Data Streams erstellen und aktualisieren im Amazon Kinesis Data Streams Entwicklerleitfaden. Benennen Sie Ihren Data Stream ExampleInputStream und ExampleOutputStream.

  • Wie erstelle ich einen S3-Bucket? im Amazon Simple Storage Service Benutzerhandbuch. Geben Sie dem Amazon S3-Bucket einen global eindeutigen Namen, indem Sie Ihren Anmeldenamen anhängen, z. B. ka-app-code-<username>.

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Führen Sie das stock.pySkript aus:

    $ python stock.py

    Lassen Sie das Skript laufen, während Sie den Rest des Tutorials abschließen.

Laden Sie den Anwendungscode herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/EfoConsumer Verzeichnis .

Der Anwendungscode befindet sich in der EfoApplication.java-Datei. Beachten Sie Folgendes zum Anwendungscode:

  • Sie aktivieren den EFO Consumer, indem Sie die folgenden Parameter für den Kinesis-Consumer festlegen:

    • RECORD_ PUBLISHER _TYPE: Setzen Sie diesen Parameter auf, damit Ihre Anwendung einen EFO Consumer EFOfür den Zugriff auf die Kinesis Data Stream-Daten verwendet.

    • EFO_ CONSUMER _NAME: Setzen Sie diesen Parameter auf einen Zeichenkettenwert, der für die Nutzer dieses Streams eindeutig ist. Die Wiederverwendung eines Verbrauchernamens in demselben Kinesis Data Stream führt dazu, dass der vorherige Verbraucher, der diesen Namen verwendet hat, beendet wird.

  • Das folgende Codebeispiel zeigt, wie den Consumer-Konfigurationseigenschaften Werte zugewiesen werden, um einen EFO Consumer zum Lesen aus dem Quellstream zu verwenden:

    consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO"); consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
Kompilieren Sie den Anwendungscode

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

  1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter Erfüllen Sie die erforderlichen Voraussetzungen im Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorial.

  2. Kompilieren Sie die Anwendung mit dem folgenden Befehl:

    mvn package -Dflink.version=1.15.3
    Anmerkung

    Der bereitgestellte Quellcode basiert auf Bibliotheken von Java 11.

Beim Kompilieren der Anwendung wird die JAR Anwendungsdatei (target/aws-kinesis-analytics-java-apps-1.0.jar) erstellt.

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in das Amazon S3-Bucket hoch, das Sie im Erstellen Sie abhängige Ressourcen Abschnitt erstellt haben.

  1. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  2. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der aws-kinesis-analytics-java-apps-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  3. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

      Anmerkung

      Managed Service für Apache Flink verwendet Apache Flink Version 1.15.2.

    • Belassen Sie den Versions-Pulldown bei Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    Anmerkung

    Diese Berechtigungen gewähren der Anwendung die Möglichkeit, auf den EFO Verbraucher zuzugreifen.

    { "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:*" ] } ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert aws-kinesis-analytics-java-apps-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Wählen Sie unter Eigenschaften die Option Gruppe erstellen aus.

  5. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    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. Wählen Sie unter Eigenschaften die Option Gruppe erstellen aus.

  7. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    ProducerConfigProperties OUTPUT_STREAM ExampleOutputStream
    ProducerConfigProperties AWS_REGION us-west-2
    ProducerConfigProperties AggregationEnabled false
  8. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  9. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  10. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service for Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet. Dies ist nicht derselbe Protokollstream, den die Anwendung zum Senden von Ergebnissen verwendet.

Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Sie können die Messwerte von Managed Service for Apache Flink auf der CloudWatch Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Sie können auch in der Kinesis Data Streams-Konsole im erweiterten Fan-Out-Tab des Datenstreams nach dem Namen Ihres Verbrauchers suchen () basic-efo-flink-app.

Ressourcen bereinigen AWS

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im efo-Windows-Tutorial erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen von Amazon-S3-Objekten und -Buckets
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiel: An Firehose schreiben

In dieser Übung erstellen Sie eine Managed Service for Apache Flink-Anwendung, die einen Kinesis-Datenstream als Quelle und einen Firehose-Stream als Senke hat. Mithilfe der Senke können Sie die Ausgabe der Anwendung in einem Amazon-S3-Bucket überprüfen.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Übung ab.

Erstellen Sie abhängige Ressourcen

Bevor Sie für diese Übung einen Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen:

  • Einen Kinesis Data Stream (ExampleInputStream)

  • Ein Firehose-Stream, in den die Anwendung die Ausgabe schreibt (ExampleDeliveryStream).

  • Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (ka-app-code-<username>)

Sie können den Kinesis-Stream, die Amazon S3 S3-Buckets und den Firehose-Stream mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:

  • Data Streams erstellen und aktualisieren im Amazon Kinesis Data Streams Entwicklerleitfaden. Benennen Sie Ihren Data Stream ExampleInputStream.

  • Einen Amazon Kinesis Data Firehose Delivery Stream erstellen im Amazon Data Firehose Developer Guide. Nennen Sie Ihren Firehose-StreamExampleDeliveryStream. Wenn Sie den Firehose-Stream erstellen, erstellen Sie auch das S3-Ziel und IAM die Rolle des Firehose-Streams.

  • Wie erstelle ich einen S3-Bucket? im Amazon Simple Storage Service-Benutzerhandbuch. Geben Sie dem Amazon S3-Bucket einen global eindeutigen Namen, indem Sie Ihren Anmeldenamen anhängen, z. B. ka-app-code-<username>.

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Führen Sie das stock.pySkript aus:

    $ python stock.py

    Lassen Sie das Skript laufen, während Sie den Rest des Tutorials abschließen.

Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/FirehoseSink Verzeichnis .

Der Anwendungscode befindet sich in der FirehoseSinkStreamingJob.java-Datei. Beachten Sie Folgendes zum Anwendungscode:

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Die Anwendung verwendet eine Firehose-Senke, um Daten in einen Firehose-Stream zu schreiben. Das folgende Snippet erstellt die Firehose-Senke:

    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(); }
Kompilieren Sie den Anwendungscode

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

  1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter Erfüllen Sie die erforderlichen Voraussetzungen im Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink Tutorial.

  2. Um den Kinesis-Konnektor für die folgende Anwendung verwenden zu können, müssen Sie Apache Maven herunterladen, erstellen und installieren. Weitere Informationen finden Sie unter Verwenden des Apache Flink Kinesis Streams Connectors mit früheren Apache Flink-Versionen.

  3. Kompilieren Sie die Anwendung mit dem folgenden Befehl:

    mvn package -Dflink.version=1.15.3
    Anmerkung

    Der bereitgestellte Quellcode basiert auf Bibliotheken von Java 11.

Beim Kompilieren der Anwendung wird die JAR Anwendungsdatei (target/aws-kinesis-analytics-java-apps-1.0.jar) erstellt.

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Abschnitt Erstellen Sie abhängige Ressourcen erstellt haben.

So laden Sie den Anwendungscode hoch
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie in der Konsole die Option ka-app-code -<username>Bucket und wählen Sie dann Upload aus.

  3. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der java-getting-started-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  4. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Sie können eine Anwendung von Managed Service für Apache Flink entweder über die Konsole oder AWS CLI erstellen und ausführen.

Anmerkung

Wenn Sie die Anwendung mithilfe der Konsole erstellen, werden Ihre AWS Identity and Access Management (IAM) und Amazon CloudWatch Logs-Ressourcen für Sie erstellt. Wenn Sie die Anwendung mithilfe von erstellen AWS CLI, erstellen Sie diese Ressourcen separat.

Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Geben Sie für Beschreibung den Text My java test app ein.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

      Anmerkung

      Managed Service für Apache Flink verwendet Apache Flink Version 1.15.2.

    • Belassen Sie den Versions-Pulldown bei Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie die Anwendung mithilfe der Konsole erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Die Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Bearbeiten Sie die IAM Richtlinie

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf den Kinesis-Datenstream und den Firehose-Stream hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie alle Instanzen des Beispielkontos IDs (012345678901) mit Ihrer Konto-ID.

    { "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" } ] }
Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert java-getting-started-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  5. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  6. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service for Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Beenden Sie die Anwendung

Wählen Sie auf der MyApplicationSeite Stopp aus. Bestätigen Sie die Aktion.

Aktualisieren der Anwendung

Mithilfe der Konsole können Sie Anwendungseinstellungen wie Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der Anwendung aktualisierenJAR.

Wählen Sie auf der MyApplicationSeite „Konfigurieren“ aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf Aktualisieren.

Anmerkung

Um den Code der Anwendung auf der Konsole zu aktualisieren, müssen Sie entweder den Objektnamen von ändernJAR, einen anderen S3-Bucket verwenden oder den AWS CLI wie im Den Anwendungscode aktualisieren Abschnitt beschrieben verwenden. Wenn sich der Dateiname oder der Bucket nicht ändert, wird der Anwendungscode nicht neu geladen, wenn Sie auf der Seite „Konfigurieren“ die Option „Aktualisieren“ wählen.

Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)

In diesem Abschnitt verwenden Sie die, AWS CLI um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen.

Erstellen einer Berechtigungsrichtlinie

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die read-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die write-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie einer IAM Rolle hinzu (die Sie im nächsten Abschnitt erstellen). Wenn Managed Service für Apache Flink also die Rolle übernimmt, verfügt der Service über die erforderlichen Berechtigungen zum Lesen aus dem Quell-Stream und zum Schreiben in den Senken-Stream.

Verwenden Sie den folgenden Code zum Erstellen der AKReadSourceStreamWriteSinkStream-Berechtigungsrichtlinie. Ersetzen username mit dem Benutzernamen, den Sie verwenden werden, um den Amazon S3 S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (012345678901) durch Ihre Konto-ID.

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

step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie im IAMBenutzerhandbuch.

Anmerkung

Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK for Java verwenden. Managed Service for Apache Flink setzt automatisch die Anmeldedaten, die für SDK die für die IAM Dienstausführungsrolle erforderlich sind, ein, die Ihrer Anwendung zugeordnet ist. Es sind keine weiteren Schritte erforderlich.

Erstellen Sie eine IAM-Rolle

In diesem Abschnitt erstellen Sie eine IAM Rolle, von der die Anwendung Managed Service for Apache Flink annehmen kann, einen Quellstream zu lesen und in den Senkenstream zu schreiben.

Managed Service für Apache Flink kann ohne Berechtigungen nicht auf Ihren Stream zugreifen. Sie gewähren diese Berechtigungen über eine IAM Rolle. Jeder IAM Rolle sind zwei Richtlinien zugeordnet. Die Vertrauensrichtlinie erteilt Managed Service für Apache Flink die Berechtigung zum Übernehmen der Rolle. Die Berechtigungsrichtlinie bestimmt, was Managed Service für Apache Flink nach Annahme der Rolle tun kann.

Sie können die Berechtigungsrichtlinie, die Sie im vorherigen Abschnitt erstellt haben, dieser Rolle anfügen.

So erstellen Sie eine IAM-Rolle
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus. Wählen Sie unter Select your use case (Wählen Sie Ihren Anwendungsfall aus) die Option Kinesis Analytics aus.

    Wählen Sie Weiter: Berechtigungen aus.

  4. Wählen Sie auf der Seite Attach permissions policies (Berechtigungsrichtlinien hinzufügen) Next: Review (Weiter: Überprüfen) aus. Sie fügen Berechtigungsrichtlinien an, nachdem Sie die Rolle erstellt haben.

  5. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen.

    Jetzt haben Sie eine neue IAM Rolle namens erstelltMF-stream-rw-role. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

  6. Fügen Sie die Berechtigungsrichtlinie der Rolle an.

    Anmerkung

    Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt erstellt haben, Erstellen einer Berechtigungsrichtlinie.

    1. Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.

    2. Wählen Sie Attach Policies (Richtlinien anfügen) aus.

    3. Geben Sie im Suchfeld AKReadSourceStreamWriteSinkStream (die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.

    4. Wählen Sie die AKReadSourceStreamWriteSinkStreamRichtlinie und anschließend Richtlinie anhängen aus.

Sie haben nun die Service-Ausführungsrolle erstellt, die Ihre Anwendung für den Zugriff auf Ressourcen verwenden wird. Notieren Sie sich die ARN der neuen Rolle.

step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter Erstellen einer IAM Rolle (Konsole) im IAMBenutzerhandbuch.

Erstellen Sie die Anwendung Managed Service für Apache Flink
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namencreate_request.json. Ersetzen Sie die Beispielrolle ARN durch die ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das ARN Bucket-Suffix durch das Suffix, das Sie im Erstellen Sie abhängige Ressourcen Abschnitt (ka-app-code-<username>.) ausgewählt haben Ersetzen Sie die Beispielkonto-ID (012345678901) in der Rolle „Dienstausführung“ durch Ihre Konto-ID.

    { "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. Führen Sie die CreateApplication-Aktion mit der vorherigen Anforderung zum Erstellen der Anwendung aus:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

Die Anwendung wird nun erstellt. Sie starten die Anwendung im nächsten Schritt.

Starten Sie die Anwendung

In diesem Abschnitt verwenden Sie die StartApplication-Aktion, um die Anwendung zu starten.

So starten Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Führen Sie die StartApplication-Aktion mit der vorherigen Anforderung zum Starten der Anwendung aus:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

Die Anwendung wird jetzt ausgeführt. Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Amazon-Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Beenden Sie die Anwendung

In diesem Abschnitt verwenden Sie die StopApplication-Aktion, um die Anwendung zu stoppen.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstop_request.json.

    { "ApplicationName": "test" }
  2. Führen Sie die StopApplication-Aktion mit der folgenden Anforderung zum Stoppen der Anwendung aus:

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unterAnwendungsprotokollierung in Managed Service für Apache Flink einrichten.

Den Anwendungscode aktualisieren

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplication AWS CLI Aktion.

Um das zu verwenden AWS CLI, löschen Sie Ihr vorheriges Codepaket aus Ihrem Amazon S3 S3-Bucket, laden Sie die neue Version hoch und rufen Sie es aufUpdateApplication, wobei Sie denselben Amazon S3 S3-Bucket und Objektnamen angeben.

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namensuffix (<usernameAktualisieren Sie das Bucket-Namensuffix () mit dem Erstellen Sie abhängige Ressourcen Suffix, das Sie im Abschnitt ausgewählt haben.

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Bereinigen von AWS -Ressourcen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tutorial Erste Schritte erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Bereich Managed Service für Apache Flink die Option. MyApplication

  3. Wählen Sie Konfigurieren aus.

  4. Wählen Sie im Abschnitt Snapshots die Option Deaktivieren und anschließend Aktualisieren aus.

  5. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie den Löschvorgang.

Löschen Sie Ihren Kinesis-Datenstream
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

Lösche deinen Firehose-Stream
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen ExampleDeliveryStreamSie im Firehose-Bedienfeld.

  3. Wählen Sie auf der ExampleDeliveryStreamSeite Delete Firehose stream und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

  4. Wenn Sie einen Amazon S3 S3-Bucket für das Ziel Ihres Firehose-Streams erstellt haben, löschen Sie auch diesen Bucket.

Löschen Sie Ihre Ressourcen IAM
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wenn Sie eine neue Richtlinie für Ihren Firehose-Stream erstellt haben, löschen Sie auch diese Richtlinie.

  7. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  8. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  9. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

  10. Wenn Sie eine neue Rolle für Ihren Firehose-Stream erstellt haben, löschen Sie auch diese Rolle.

Löschen Sie Ihre Ressourcen CloudWatch
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiel: Aus einem Kinesis-Stream in einem anderen Konto lesen

Dieses Beispiel zeigt, wie Sie eine Managed Service für Apache Flink-Anwendung erstellen, die Daten aus einem Kinesis Stream in einem anderen Konto liest. In diesem Beispiel verwenden Sie ein Konto für den Kinesis-Quellstream und ein zweites Konto für die Anwendung Managed Service für Apache Flink und den Senk-Kinesis-Stream.

Voraussetzungen
  • In diesem Tutorial ändern Sie das Erste Schritte-Beispiel, um Daten aus einem Kinesis Stream in einem anderen Konto zu lesen. Schließen Sie das Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Tutorial ab, bevor Sie fortfahren.

  • Sie benötigen zwei AWS Konten, um dieses Tutorial abzuschließen: eines für den Quell-Stream und eines für die Anwendung und den Senk-Stream. Verwenden Sie das AWS Konto, das Sie für das Tutorial Erste Schritte verwendet haben, für die Anwendung und den Sink-Stream. Verwenden Sie ein anderes AWS -Konto für den Quellstream.

Aufstellen

Sie greifen mithilfe von benannten Profilen auf Ihre beiden AWS Konten zu. Ändern Sie Ihre AWS Anmeldeinformationen und Konfigurationsdateien so, dass sie zwei Profile enthalten, die die Regions- und Verbindungsinformationen für Ihre beiden Konten enthalten.

Die folgende Beispieldatei mit Anmeldeinformationen enthält zwei benannte Profile, ka-source-stream-account-profile und ka-sink-stream-account-profile. Verwenden Sie das Konto, das Sie für das Tutorial Erste Schritte verwendet haben, für das Senken-Stream-Konto.

[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

Die folgende Beispielkonfigurationsdatei enthält die gleichen benannten Profile mit Regions- und Ausgabeformatinformationen.

[profile ka-source-stream-account-profile] region=us-west-2 output=json [profile ka-sink-stream-account-profile] region=us-west-2 output=json
Anmerkung

In diesem Tutorial wird das ka-sink-stream-account-profile nicht verwendet. Es ist als Beispiel dafür enthalten, wie Sie mithilfe von Profilen auf zwei verschiedene AWS Konten zugreifen können.

Weitere Informationen zur Verwendung von benannten Profilen mit dem AWS CLI finden Sie in der AWS Command Line InterfaceDokumentation unter Benannte Profile.

Kinesis-Quellstream erstellen

In diesem Abschnitt erstellen Sie den Kinesis Stream im Quellkonto.

Geben Sie den folgenden Befehl ein, um den Kinesis Stream zu erstellen, den die Anwendung für die Eingabe verwendet. Beachten Sie, dass der --profile-Parameter angibt, welches Kontoprofil verwendet werden soll.

$ aws kinesis create-stream \ --stream-name SourceAccountExampleInputStream \ --shard-count 1 \ --profile ka-source-stream-account-profile
IAMRollen und Richtlinien erstellen und aktualisieren

Um den objektübergreifenden AWS Zugriff auf Objekte zu ermöglichen, erstellen Sie eine IAM Rolle und eine Richtlinie im Quellkonto. Anschließend ändern Sie die IAM Richtlinie im Senkenkonto. Informationen zum Erstellen von IAM Rollen und Richtlinien finden Sie in den folgenden Themen im AWS Identity and Access Management Benutzerhandbuch:

Rollen und Richtlinien für Sink-Accounts
  1. Bearbeiten Sie die Richtlinie kinesis-analytics-service-MyApplication-us-west-2 aus dem Tutorial Erste Schritte. Mit dieser Richtlinie kann die Rolle im Quellkonto übernommen werden, um den Quellstream zu lesen.

    Anmerkung

    Wenn Sie die Konsole verwenden, um Ihre Anwendung zu erstellen, erstellt die Konsole eine Richtlinie mit dem Namen kinesis-analytics-service-<application name>-<application region> und eine Rolle namens kinesisanalytics-<application name>-<application region>.

    Fügen Sie der Richtlinie den unten hervorgehobenen Abschnitt hinzu. Ersetzen Sie die Beispielkonto-ID (SOURCE01234567) durch die ID des Kontos, das Sie für den Quellstream verwenden werden.

    { "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. Öffnen Sie die kinesis-analytics-MyApplication-us-west-2 Rolle und notieren Sie sich ihren Amazon-Ressourcennamen (ARN). Sie brauchen diesen im nächsten Abschnitt. Die Rolle ARN sieht wie folgt aus.

    arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2
Rollen und Richtlinien des Quellkontos
  1. Erstellen Sie eine Richtlinie im Quellkonto mit dem Namen KA-Source-Stream-Policy. Verwenden Sie Folgendes JSON für die Richtlinie. Ersetzen Sie die Beispielkontonummer durch die Kontonummer des Quellkontos.

    { "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. Erstellen Sie eine Rolle in dem Quellkonto namens MF-Source-Stream-Role. Gehen Sie wie folgt vor, um die Rolle mithilfe des Managed Flink-Anwendungsfalls zu erstellen:

    1. Wählen Sie in der IAM Management Console die Option Create Role aus.

    2. Wählen Sie auf der Seite Rolle erstellen AWS -Service aus. Wählen Sie in der Serviceliste Kinesis aus.

    3. Wählen Sie im Abschnitt Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.

    4. Wählen Sie Weiter: Berechtigungen aus.

    5. Fügen Sie die KA-Source-Stream-Policy-Berechtigungsrichtlinie hinzu, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter: Tags aus.

    6. Wählen Sie Weiter: Prüfen aus.

    7. Benennen Sie die Rolle KA-Source-Stream-Role. Ihre Anwendung verwendet diese Rolle für den Zugriff auf den Quellstream.

  3. Fügen Sie das kinesis-analytics-MyApplication-us-west-2 ARN From-the-Sink-Konto zur Vertrauensstellung der KA-Source-Stream-Role Rolle im Quellkonto hinzu:

    1. Öffnen Sie das KA-Source-Stream-Role in der IAM Konsole.

    2. Wählen Sie die Registerkarte Trust Relationships.

    3. Wählen Sie Edit Trust Relationship (Vertrauensstellungen bearbeiten).

    4. Verwenden Sie den folgenden Code für die Vertrauensstellung. Ersetzen Sie die Beispielkonto-ID (SINK012345678) durch Ihre Sink-Konto-ID.

      { "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" } ] }
Aktualisieren Sie das Python-Skript

In diesem Abschnitt aktualisieren Sie das Python-Skript, das Beispieldaten generiert, um das Quellkontoprofil zu verwenden.

Aktualisieren Sie das stock.py-Skript mit den folgenden hervorgehobenen Änderungen.

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")
Aktualisieren Sie die Java-Anwendung

In diesem Abschnitt aktualisieren Sie den Java-Anwendungscode, sodass er beim Lesen aus dem Quellstream die Rolle des Quellkontos übernimmt.

Führen Sie die folgenden Änderungen an der Datei BasicStreamingJob.java durch. Ersetzen Sie die Beispiel-Quellkontonummer (SOURCE01234567) durch Ihre Quellkontonummer.

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"); } }
Erstellen Sie die Anwendung, laden Sie sie hoch und führen Sie sie aus

Um die Anwendung zu aktualisieren und auszuführen, führen Sie Folgendes aus:

  1. Erstellen Sie die Anwendung erneut, indem Sie folgenden Befehl im Verzeichnis mit der Datei pom.xml ausführen.

    mvn package -Dflink.version=1.15.3
  2. Löschen Sie die vorherige JAR Datei aus Ihrem Amazon Simple Storage Service (Amazon S3) -Bucket und laden Sie dann die neue aws-kinesis-analytics-java-apps-1.0.jar Datei in den S3-Bucket hoch.

  3. Wählen Sie auf der Seite der Anwendung in der Managed Service for Apache Flink-Konsole die Optionen Configure, Update aus, um die JAR Anwendungsdatei neu zu laden.

  4. Führen Sie das stock.py-Skript aus, um Daten an den Quellstream zu senden.

    python stock.py

Die Anwendung liest jetzt Daten aus dem Kinesis Stream in dem anderen Konto.

Sie können überprüfen, ob die Anwendung funktioniert, indem Sie die PutRecords.Bytes-Metrik des ExampleOutputStream-Streams überprüfen. Wenn im Ausgabestrom Aktivität vorhanden ist, funktioniert die Anwendung ordnungsgemäß.

Tutorial: Einen benutzerdefinierten Truststore mit Amazon verwenden MSK

Aktuelle Datenquelle APIs

Wenn Sie die aktuelle Datenquelle verwendenAPIs, kann Ihre Anwendung das hier beschriebene Amazon MSK Config Provider-Hilfsprogramm nutzen. Dadurch kann Ihre KafkaSource Funktion auf Ihren Keystore und Truststore für Mutual TLS in Amazon S3 zugreifen.

... // 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 + "}"); ...

Weitere Informationen und einen Walkthrough finden Sie hier.

Vermächtnis SourceFunction APIs

Wenn Sie die Legacy-Version verwenden SourceFunction APIs, verwendet Ihre Anwendung benutzerdefinierte Serialisierungs- und Deserialisierungsschemas, die die open Methode zum Laden des benutzerdefinierten Truststores überschreiben. Dadurch steht der Truststore der Anwendung zur Verfügung, nachdem die Anwendung Threads neu gestartet oder ersetzt hat.

Der benutzerdefinierte Truststore wird mithilfe des folgenden Codes abgerufen und gespeichert:

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); } }
Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Übung ab.

Das folgende Tutorial zeigt, wie eine sichere Verbindung (Verschlüsselung bei der Übertragung) zu einem Kafka-Cluster hergestellt wird, der Serverzertifikate verwendet, die von einer benutzerdefinierten, privaten oder sogar selbst gehosteten Zertifizierungsstelle (CA) ausgestellt wurden.

Um einen Kafka-Client sicher mit einem Kafka-Cluster TLS zu verbinden, muss der Kafka-Client (wie die Flink-Beispielanwendung) der gesamten Vertrauenskette vertrauen, die durch die Serverzertifikate des Kafka-Clusters dargestellt wird (von der ausstellenden CA bis zur Root-Level-CA). Als Beispiel für einen benutzerdefinierten Truststore verwenden wir einen MSK Amazon-Cluster mit aktivierter Mutual TLS (MTLS) Authentication. Dies bedeutet, dass die MSK Clusterknoten Serverzertifikate verwenden, die von einer AWS Certificate Manager Private Certificate Authority (ACMPrivate CA) ausgestellt wurden, die für Ihr Konto und Ihre Region privat ist und daher vom Standard-Truststore der Java Virtual Machine (JVM), die die Flink-Anwendung ausführt, nicht vertrauenswürdig ist.

Anmerkung
  • Ein Keystore wird verwendet, um private Schlüssel und Identitätszertifikate zu speichern, die eine Anwendung sowohl dem Server als auch dem Client zur Überprüfung vorlegen sollte.

  • Ein Truststore wird verwendet, um Zertifikate von zertifizierten Stellen (CA) zu speichern, die das vom Server in einer Verbindung vorgelegte Zertifikat verifizieren. SSL

Sie können die in diesem Tutorial beschriebene Technik auch für Interaktionen zwischen einer Managed Service für Apache Flink-Anwendung und anderen Apache Kafka-Quellen verwenden, z. B.:

Erstellen Sie einen VPC mit einem MSK Amazon-Cluster

Folgen Sie dem MSK Tutorial Erste Schritte mit Amazon, um ein Beispiel VPC und einen MSK Amazon-Cluster für den Zugriff über eine Managed Service for Apache Flink-Anwendung zu erstellen.

Wenn Sie das Tutorial abgeschlossen haben, gehen Sie auch folgendermaßen vor:

  • Wiederholen Sie in Schritt 3: Thema erstellen den Befehl kafka-topics.sh --create, um ein Zielthema mit dem Namen AWS KafkaTutorialTopicDestination zu erstellen:

    bin/kafka-topics.sh --create --bootstrap-server ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestination
    Anmerkung

    Wenn der kafka-topics.sh-Befehl eine ZooKeeperClientTimeoutException zurückgibt, stellen Sie sicher, dass die Sicherheitsgruppe des Kafka-Clusters über eine Regel für eingehenden Datenverkehr verfügt, die den gesamten Datenverkehr von der privaten IP-Adresse der Client-Instance zulässt.

  • Notieren Sie sich die Bootstrap-Serverliste für Ihren Cluster. Sie können die Liste der Bootstrap-Server mit dem folgenden Befehl abrufen (ersetzen) ClusterArn mit dem ARN Ihres MSK Clusters):

    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" }
  • Wenn Sie die Schritte in diesem Tutorial und den Tutorials zu den Voraussetzungen ausführen, achten Sie darauf, dass Sie Ihre gewählte AWS Region in Ihrem Code, Ihren Befehlen und Konsoleneinträgen verwenden.

Erstellen Sie einen benutzerdefinierten Truststore und wenden Sie ihn auf Ihren Cluster an

In diesem Abschnitt erstellen Sie eine benutzerdefinierte Zertifizierungsstelle (CA), verwenden sie, um einen benutzerdefinierten Truststore zu generieren, und wenden ihn auf Ihren MSK Cluster an.

Folgen Sie dem Tutorial zur Client-Authentifizierung im Amazon Managed Streaming für Apache Kafka Entwicklerhandbuch, um Ihren benutzerdefinierten Truststore zu erstellen und anzuwenden.

Erstellen Sie den Anwendungscode

In diesem Abschnitt laden Sie die JAR Anwendungsdatei herunter und kompilieren sie.

Der Java-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Der Anwendungscode befindet sich in amazon-kinesis-data-analytics-java-examples/CustomKeystore. Sie können den Code untersuchen, um sich mit der Struktur des Managed Service für Apache Flink-Codes vertraut zu machen.

  4. Verwenden Sie entweder das Befehlszeilen-Maven-Tool oder Ihre bevorzugte Entwicklungsumgebung, um die JAR Datei zu erstellen. Um die JAR Datei mit dem Maven-Tool in der Befehlszeile zu kompilieren, geben Sie Folgendes ein:

    mvn package -Dflink.version=1.15.3

    Wenn der Build erfolgreich ist, wird die folgende Datei erstellt:

    target/flink-app-1.0-SNAPSHOT.jar
    Anmerkung

    Der bereitgestellte Quellcode basiert auf Bibliotheken von Java 11.

Laden Sie den Apache Flink-Streaming-Java-Code hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Tutorial: Erste Schritte mit dem DataStream API integrierten Managed Service für Apache Flink-Tutorial erstellt haben.

Anmerkung

Wenn Sie den Amazon S3-Bucket aus dem Tutorial Erste Schritte gelöscht haben, führen Sie den Schritt Laden Sie die JAR Anwendungscodedatei hoch erneut aus.

  1. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  2. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der flink-app-1.0-SNAPSHOT.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  3. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink 1.15.2 aus.

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole einen Managed Service für Apache Flink erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert flink-app-1.0-SNAPSHOT.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

    Anmerkung

    Wenn Sie Anwendungsressourcen mithilfe der Konsole angeben (z. B. Protokolle oder aVPC), ändert die Konsole Ihre Anwendungsausführungsrolle, sodass Sie Zugriff auf diese Ressourcen erhalten.

  4. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus. Geben Sie die folgenden Eigenschaften ein:

    Gruppen-ID Schlüssel Wert
    KafkaSource Thema 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.passwort changeit
    Anmerkung

    Das ssl.truststore.password für das Standardzertifikat ist „changeit“. Sie müssen diesen Wert nicht ändern, wenn Sie das Standardzertifikat verwenden.

    Wählen Sie erneut Gruppe hinzufügen. Geben Sie die folgenden Eigenschaften ein:

    Gruppen-ID Schlüssel Wert
    KafkaSink Thema 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.passwort changeit
    KafkaSink transaction.timeout.ms 1000

    Der Anwendungscode liest die oben genannten Anwendungseigenschaften, um die Quelle und Senke zu konfigurieren, die für die Interaktion mit Ihrem VPC und dem MSK Amazon-Cluster verwendet werden. Weitere Informationen zur Verwendung von Eigenschaften finden Sie unter Verwenden Sie Laufzeiteigenschaften in Managed Service für Apache Flink.

  5. Wählen Sie unter Snapshots die Option Deaktivieren aus. Dadurch wird es einfacher, die Anwendung zu aktualisieren, ohne ungültige Anwendungsstatusdaten zu laden.

  6. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  7. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  8. Wählen Sie im Abschnitt Virtual Private Cloud (VPC) die aus, VPC die Sie Ihrer Anwendung zuordnen möchten. Wählen Sie die zugehörigen Subnetze und Sicherheitsgruppen ausVPC, die die Anwendung für den Zugriff auf VPC Ressourcen verwenden soll.

  9. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet.

Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Testen der Anwendung

In diesem Abschnitt schreiben Sie Datensätze zum Quellthema. Die Anwendung liest Datensätze aus dem Quellthema und schreibt sie in das Zielthema. Sie überprüfen, ob die Anwendung funktioniert, indem Sie Datensätze in das Quellthema schreiben und Datensätze aus dem Zielthema lesen.

Um Datensätze zu den Themen zu schreiben und zu lesen, folgen Sie den Schritten in Schritt 6: Daten produzieren und verarbeiten im MSK Tutorial Erste Schritte mit Amazon.

Um aus dem Zielthema zu lesen, verwenden Sie in Ihrer zweiten Verbindung zum Cluster den Namen des Zielthemas anstelle des Quellthemas:

bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning

Wenn im Zielthema keine Datensätze angezeigt werden, lesen Sie den Abschnitt Auf Ressourcen in einem kann nicht zugegriffen werden VPC im Thema Problembehandlung bei Managed Service für Apache Flink.

Python-Beispiele

Die folgenden Beispiele zeigen, wie Sie Anwendungen mit Python mit der Apache Flink Table API erstellen.

Beispiel: Ein Tumbling-Fenster in Python erstellen

In dieser Übung erstellen Sie eine Anwendung von Python Managed Service für Apache Flink, die Daten mithilfe eines rollierenden Fensters aggregiert.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit Python in Managed Service für Apache Flink-Übung ab.

Erstellen Sie abhängige Ressourcen

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen:

  • Zwei Kinesis Data Streams (ExampleInputStream und ExampleOutputStream)

  • Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (ka-app-code-<username>)

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:

  • Data Streams erstellen und aktualisieren im Amazon Kinesis Data Streams Entwicklerleitfaden. Benennen Sie Ihre Data Streams ExampleInputStream und ExampleOutputStream.

  • Wie erstelle ich einen S3-Bucket? im Amazon Simple Storage Service Benutzerhandbuch. Geben Sie dem Amazon S3-Bucket einen global eindeutigen Namen, indem Sie Ihren Anmeldenamen anhängen, z. B. ka-app-code-<username>.

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

Anmerkung

Das Python-Skript in diesem Abschnitt verwendet die AWS CLI. Sie müssen Ihren so konfigurieren AWS CLI , dass er Ihre Kontoanmeldeinformationen und Ihre Standardregion verwendet. Geben Sie Folgendes ein AWS CLI, um Ihre zu konfigurieren:

aws configure
  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Führen Sie das stock.pySkript aus:

    $ python stock.py

    Lassen Sie das Skript laufen, während Sie den Rest des Tutorials abschließen.

Laden Sie den Anwendungscode herunter und überprüfen Sie ihn

Der Python-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/python/TumblingWindow Verzeichnis .

Der Anwendungscode befindet sich in der tumbling-windows.py-Datei. Beachten Sie Folgendes zum Anwendungscode:

  • Die Anwendung verwendet eine Kinesis-Tabellenquelle zum Lesen aus dem Quell-Stream. Der folgende Ausschnitt ruft die create_table-Funktion zum Erstellen der Kinesis-Tabellenquelle auf:

    table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )

    Die create_table Funktion verwendet einen SQL Befehl, um eine Tabelle zu erstellen, die von der Streaming-Quelle unterstützt wird:

    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)
  • Die Anwendung verwendet den Tumble-Operator, um Datensätze innerhalb eines bestimmten rollierenden Fensters zu aggregieren und die aggregierten Datensätze als Tabellenobjekt zurückzugeben:

    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")
  • Die Anwendung verwendet den Kinesis Flink-Konnektor aus flink-sql-connector-kinesis-1.15.2.jar.

Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Erstellen Sie abhängige Ressourcen-Abschnitt erstellt haben.

  1. Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien tumbling-windows.py und flink-sql-connector-kinesis-1.15.2.jar zu komprimieren. Benennen Sie das Archiv myapp.zip.

  2. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  3. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der myapp.zipDatei, die Sie im vorherigen Schritt erstellt haben.

  4. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

      Anmerkung

      Managed Service für Apache Flink verwendet Apache Flink Version 1.15.2.

    • Belassen Sie den Versions-Pulldown bei Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert myapp.zip ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.

  5. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Wählen Sie Save (Speichern) aus.

  6. Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus.

  7. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus. Geben Sie für Gruppen-ID kinesis.analytics.flink.run.options ein. Diese spezielle Eigenschaftsgruppe teilt Ihrer Anwendung mit, wo sich ihre Coderessourcen befinden. Weitere Informationen finden Sie unter Geben Sie Ihre Codedateien an.

  9. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    kinesis.analytics.flink.run.options python tumbling-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis-1.15.2.jar
  10. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  11. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  12. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service for Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet. Dies ist nicht derselbe Protokollstream, den die Anwendung zum Senden von Ergebnissen verwendet.

Bearbeiten Sie die Richtlinie IAM

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Ressourcen bereinigen AWS

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tumbling Window-Tutorial erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiel: Erstellen eines Schiebefensters in Python

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit Python in Managed Service für Apache Flink-Übung ab.

Erstellen Sie abhängige Ressourcen

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen:

  • Zwei Kinesis Data Streams (ExampleInputStream und ExampleOutputStream)

  • Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (ka-app-code-<username>)

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:

  • Data Streams erstellen und aktualisieren im Amazon Kinesis Data Streams Entwicklerleitfaden. Benennen Sie Ihre Data Streams ExampleInputStream und ExampleOutputStream.

  • Wie erstelle ich einen S3-Bucket? im Amazon Simple Storage Service Benutzerhandbuch. Geben Sie dem Amazon S3-Bucket einen global eindeutigen Namen, indem Sie Ihren Anmeldenamen anhängen, z. B. ka-app-code-<username>.

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

Anmerkung

Das Python-Skript in diesem Abschnitt verwendet die AWS CLI. Sie müssen Ihren so konfigurieren AWS CLI , dass er Ihre Kontoanmeldeinformationen und Ihre Standardregion verwendet. Geben Sie Folgendes ein AWS CLI, um Ihre zu konfigurieren:

aws configure
  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Führen Sie das stock.pySkript aus:

    $ python stock.py

    Lassen Sie das Skript laufen, während Sie den Rest des Tutorials abschließen.

Laden Sie den Anwendungscode herunter und überprüfen Sie ihn

Der Python-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/python/SlidingWindow Verzeichnis .

Der Anwendungscode befindet sich in der sliding-windows.py-Datei. Beachten Sie Folgendes zum Anwendungscode:

  • Die Anwendung verwendet eine Kinesis-Tabellenquelle zum Lesen aus dem Quell-Stream. Der folgende Ausschnitt ruft die create_input_table-Funktion zum Erstellen der Kinesis-Tabellenquelle auf:

    table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )

    Die create_input_table Funktion verwendet einen SQL Befehl, um eine Tabelle zu erstellen, die von der Streaming-Quelle unterstützt wird:

    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) }
  • Die Anwendung verwendet den Slide-Operator, um Datensätze innerhalb eines bestimmten gleitenden Fensters zu aggregieren und die aggregierten Datensätze als Tabellenobjekt zurückzugeben:

    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") )
  • Die Anwendung verwendet den Kinesis Flink-Anschluss aus der flink-sql-connector-kinesis-1.15.2.jar-Datei.

Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Erstellen Sie abhängige Ressourcen-Abschnitt erstellt haben.

In diesem Abschnitt wird beschrieben, wie Sie Ihre Python-Anwendung verpacken.

  1. Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien sliding-windows.py und flink-sql-connector-kinesis-1.15.2.jar zu komprimieren. Benennen Sie das Archiv myapp.zip.

  2. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  3. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der myapp.zipDatei, die Sie im vorherigen Schritt erstellt haben.

  4. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

      Anmerkung

      Managed Service für Apache Flink verwendet Apache Flink Version 1.15.2.

    • Belassen Sie den Versions-Pulldown bei Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert myapp.zip ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.

  5. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Wählen Sie Save (Speichern) aus.

  6. Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus.

  7. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus. Geben Sie für Gruppen-ID kinesis.analytics.flink.run.options ein. Diese spezielle Eigenschaftsgruppe teilt Ihrer Anwendung mit, wo sich ihre Coderessourcen befinden. Weitere Informationen finden Sie unter Geben Sie Ihre Codedateien an.

  9. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    kinesis.analytics.flink.run.options python sliding-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis_1.15.2.jar
  10. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  11. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  12. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service for Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet. Dies ist nicht derselbe Protokollstream, den die Anwendung zum Senden von Ergebnissen verwendet.

Bearbeiten Sie die Richtlinie IAM

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Ressourcen bereinigen AWS

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Sliding Window-Lernprogramm erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiel: Streaming-Daten in Python an Amazon S3 senden

In dieser Übung erstellen Sie eine Anwendung von Python Managed Service für Apache Flink, die Daten an eine Amazon Simple Storage Service-Senke streamt.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Tutorial: Erste Schritte mit Python in Managed Service für Apache Flink-Übung ab.

Erstellen Sie abhängige Ressourcen

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen:

  • Einen Kinesis Data Stream (ExampleInputStream)

  • Einen Amazon S3-Bucket zum Speichern des Codes und der Ausgabe der Anwendung (ka-app-code-<username>)

Anmerkung

Managed Service für Apache Flink kann keine Daten auf Amazon S3 schreiben, wenn die serverseitige Verschlüsselung auf Managed Service für Apache Flink aktiviert ist.

Sie können den Kinesis-Stream und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:

Schreiben Sie Beispieldatensätze in den Eingabestream

In diesem Abschnitt verwenden Sie ein Python-Skript zum Schreiben von Datensätzen in den Stream für die zu verarbeitende Anwendung.

Anmerkung

Dieser Abschnitt erfordert AWS SDK for Python (Boto).

Anmerkung

Das Python-Skript in diesem Abschnitt verwendet die AWS CLI. Sie müssen Ihren so konfigurieren AWS CLI , dass er Ihre Kontoanmeldeinformationen und Ihre Standardregion verwendet. Geben Sie Folgendes ein AWS CLI, um Ihre zu konfigurieren:

aws configure
  1. Erstellen Sie eine Datei stock.py mit dem folgenden Inhalt:

    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. Führen Sie das stock.pySkript aus:

    $ python stock.py

    Lassen Sie das Skript laufen, während Sie den Rest des Tutorials abschließen.

Laden Sie den Anwendungscode herunter und überprüfen Sie ihn

Der Python-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/python/S3Sink Verzeichnis .

Der Anwendungscode befindet sich in der streaming-file-sink.py-Datei. Beachten Sie Folgendes zum Anwendungscode:

  • Die Anwendung verwendet eine Kinesis-Tabellenquelle zum Lesen aus dem Quell-Stream. Der folgende Ausschnitt ruft die create_source_table-Funktion zum Erstellen der Kinesis-Tabellenquelle auf:

    table_env.execute_sql( create_source_table(input_table_name, input_stream, input_region, stream_initpos) )

    Die create_source_table Funktion verwendet einen SQL Befehl, um eine Tabelle zu erstellen, die von der Streaming-Quelle unterstützt wird

    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'))
  • Die Anwendung verwendet den filesystem-Konnektor zum Senden von Datensätzen an einen Amazon-S3-Bucket:

    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)
  • Die Anwendung verwendet den Kinesis Flink-Anschluss aus der flink-sql-connector-kinesis-1.15.2.jar-Datei.

Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Erstellen Sie abhängige Ressourcen-Abschnitt erstellt haben.

  1. Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien streaming-file-sink.py und flink-sql-connector-kinesis-1.15.2.jar zu komprimieren. Benennen Sie das Archiv myapp.zip.

  2. Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -<username>Bucket und wählen Sie Upload.

  3. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der myapp.zipDatei, die Sie im vorherigen Schritt erstellt haben.

  4. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Wählen Sie für Laufzeit die Option Apache Flink aus.

      Anmerkung

      Managed Service für Apache Flink verwendet Apache Flink Version 1.15.2.

    • Belassen Sie den Versions-Pulldown bei Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Konfigurieren Sie die Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert myapp.zip ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.

  5. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Wählen Sie Save (Speichern) aus.

  6. Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus. Geben Sie für Gruppen-ID kinesis.analytics.flink.run.options ein. Diese spezielle Eigenschaftsgruppe teilt Ihrer Anwendung mit, wo sich ihre Coderessourcen befinden. Weitere Informationen finden Sie unter Geben Sie Ihre Codedateien an.

  7. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:

    Gruppen-ID Schlüssel Wert
    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. Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus. Geben Sie für Gruppen-ID sink.config.0 ein. Diese spezielle Eigenschaftsgruppe teilt Ihrer Anwendung mit, wo sich ihre Coderessourcen befinden. Weitere Informationen finden Sie unter Geben Sie Ihre Codedateien an.

  9. Geben Sie die folgenden Anwendungseigenschaften und Werte ein: (ersetzen bucket-name mit dem tatsächlichen Namen Ihres Amazon S3 S3-Buckets.)

    Gruppen-ID Schlüssel Wert
    sink.config.0 output.bucket.name bucket-name
  10. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  11. Für die CloudWatch Protokollierung aktivieren Sie das Kontrollkästchen Aktivieren.

  12. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie die CloudWatch Protokollierung aktivieren möchten, erstellt Managed Service for Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Dieser Protokollstream wird zur Überwachung der Anwendung verwendet. Dies ist nicht derselbe Protokollstream, den die Anwendung zum Senden von Ergebnissen verwendet.

Bearbeiten Sie die Richtlinie IAM

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf die Kinesis-Datenstreams hinzuzufügen.

  1. Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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>/*" ] } ] }
Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Ressourcen bereinigen AWS

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Sliding Window-Lernprogramm erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihren Kinesis-Datenstream
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Amazon S3 S3-Objekte und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Scala-Beispiele

In den folgenden Beispielen wird die Erstellung von Anwendungen über Scala mit Apache Flink gezeigt.

Beispiel: Erstellen eines Tumbling-Fensters in Scala

Anmerkung

Ab Version 1.15 ist Flink Scala-frei. Anwendungen können jetzt Java API von jeder Scala-Version aus verwenden. Flink verwendet Scala intern immer noch in einigen Schlüsselkomponenten, macht Scala jedoch nicht im Benutzercode-Classloader verfügbar. Aus diesem Grund müssen Benutzer Scala-Abhängigkeiten zu ihren Jar-Archiven hinzufügen.

Weitere Informationen zu den Scala-Änderungen in Flink 1.15 finden Sie unter Scalafrei in One Fifteen.

In dieser Übung erstellen Sie eine einfache Streaming-Anwendung, die Scala 3.2.0 und Flinks Java verwendet. DataStream API Die Anwendung liest Daten aus dem Kinesis Stream, aggregiert sie mithilfe von gleitenden Fenstern und schreibt die Ergebnisse in den Kinesis-Ausgabestream.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Übung Erste Schritte (Scala) ab.

Laden Sie den Anwendungscode herunter und untersuchen Sie ihn

Der Python-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/scala/TumblingWindow Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:

  • Eine build.sbt-Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.

  • Die BasicStreamingJob.scala-Datei enthält die Hauptmethode, die die Funktionalität der Anwendung definiert.

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }

    Die Anwendung verwendet auch eine Kinesis-Senke, um in den Ergebnisstream zu schreiben. Der folgende Codeausschnitt erstellt die Kinesis-Senke:

    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 }
  • Die Anwendung verwendet den Fensteroperator, um die Anzahl der Werte für jedes Aktionssymbol über ein rollierendes Fenster von 5 Sekunden zu ermitteln. Der folgende Code erstellt den Operator und sendet die aggregierten Daten an eine neue Kinesis Data Streams Senke:

    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)
  • Die Anwendung erstellt Quell- und Senken-Konnektoren, um mithilfe eines StreamExecutionEnvironment Objekts auf externe Ressourcen zuzugreifen.

  • Die Anwendung erstellt Quell- und Senkenkonnektoren mit dynamischen Anwendungseigenschaften. Die Laufzeiteigenschaften der Anwendung werden gelesen, um die Konnektoren zu konfigurieren. Weitere Informationen zu Laufzeiteigenschaften finden Sie unter Laufzeiteigenschaften.

Kompilieren Sie den Anwendungscode und laden Sie ihn hoch

In diesem Abschnitt kompilieren Sie Ihren Anwendungscode und laden ihn in einen Amazon-S3-Bucket hoch.

Kompilieren des Anwendungscodes

Verwenden Sie das SBTBuild-Tool, um den Scala-Code für die Anwendung zu erstellen. Informationen zur Installation SBT finden Sie unter SBT mit CS-Setup installieren. Sie müssen auch das Java Development Kit (JDK) installieren. Siehe Voraussetzungen für das Fertigstellen der Übungen.

  1. Um Ihren Anwendungscode zu verwenden, kompilieren Sie ihn und packen ihn in eine JAR Datei. Sie können Ihren Code kompilieren und verpacken mitSBT:

    sbt assembly
  2. Wenn die Anwendung erfolgreich kompiliert wurde, wird die folgende Datei erstellt:

    target/scala-3.2.0/tumbling-window-scala-1.0.jar
Hochladen des Apache Flink-Streaming-Scala-Codes

In diesem Abschnitt erstellen Sie einen Amazon S3-Bucket und laden Ihren Anwendungscode hoch.

  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie Bucket erstellen aus

  3. Geben Sie ka-app-code-<username> im Feld Bucket-Name ein. Fügen Sie dem Bucket-Namen ein Suffix hinzu, wie z. B. Ihren Benutzernamen, damit er global eindeutig ist. Wählen Sie Weiter.

  4. Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.

  5. Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.

  6. Wählen Sie Bucket erstellen aus.

  7. Wählen Sie den Bucket ka-app-code-<username> und dann Hochladen aus.

  8. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der tumbling-window-scala-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  9. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung (Konsole) und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Geben Sie für Beschreibung den Text My Scala test app ein.

    • Wählen Sie als Laufzeit Apache Flink aus.

    • Belassen Sie die Version als Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Konfigurieren Sie die Anwendung

Verwenden Sie das folgende Verfahren, um die Anwendung zu konfigurieren.

Konfigurieren der Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert tumbling-window-scala-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.

  5. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Wählen Sie Save (Speichern) aus.

  6. Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus.

  7. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  9. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  10. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie sich dafür entscheiden, die CloudWatch Amazon-Protokollierung zu aktivieren, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Bearbeiten Sie die Richtlinie IAM

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf den Amazon S3 S3-Bucket hinzuzufügen.

Um die IAM Richtlinie zu bearbeiten, um S3-Bucket-Berechtigungen hinzuzufügen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Stoppen Sie die Anwendung

Um die Anwendung zu beenden, wählen Sie auf der MyApplicationSeite Stopp aus. Bestätigen Sie die Aktion.

Erstellen Sie die Anwendung und führen Sie sie aus (CLI)

In diesem Abschnitt verwenden Sie die, AWS Command Line Interface um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen. Verwenden Sie den AWS CLI Befehl kinesisanalyticsv2, um Managed Service für Apache Flink-Anwendungen zu erstellen und mit ihnen zu interagieren.

Erstellen einer Berechtigungsrichtlinie
Anmerkung

Sie müssen eine Berechtigungsrichtlinie und eine Rolle für Ihre Anwendung erstellen. Wenn Sie diese IAM Ressourcen nicht erstellen, kann Ihre Anwendung nicht auf ihre Daten und Protokollstreams zugreifen.

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die Lese-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die Schreib-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie einer IAM Rolle hinzu (die Sie im nächsten Abschnitt erstellen). Wenn Managed Service für Apache Flink also die Rolle übernimmt, verfügt der Service über die erforderlichen Berechtigungen zum Lesen aus dem Quell-Stream und zum Schreiben in den Senken-Stream.

Verwenden Sie den folgenden Code zum Erstellen der AKReadSourceStreamWriteSinkStream-Berechtigungsrichtlinie. Ersetzen Sie username durch den Benutzernamen, den Sie verwendet haben, um den Amazon-S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (012345678901) durch Ihre Konto-ID. Die MF-stream-rw-role-Serviceausführungsrolle sollte auf die kundenspezifische Rolle zugeschnitten sein.

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

step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie im IAMBenutzerhandbuch.

Erstellen Sie eine IAM-Rolle

In diesem Abschnitt erstellen Sie eine IAM Rolle, von der die Anwendung Managed Service for Apache Flink annehmen kann, einen Quellstream zu lesen und in den Sink-Stream zu schreiben.

Managed Service für Apache Flink kann ohne Berechtigungen nicht auf Ihren Stream zugreifen. Sie gewähren diese Berechtigungen über eine IAM Rolle. Jeder IAM Rolle sind zwei Richtlinien zugeordnet. Die Vertrauensrichtlinie erteilt Managed Service für Apache Flink die Berechtigung zum Übernehmen der Rolle und die Berechtigungsrichtlinie bestimmt, was Managed Service für Apache Flink nach Annahme der Rolle tun kann.

Sie können die Berechtigungsrichtlinie, die Sie im vorherigen Abschnitt erstellt haben, dieser Rolle anfügen.

So erstellen Sie eine IAM-Rolle
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Rollen und dann Rolle erstellen.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus

  4. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus.

  5. Wählen Sie unter Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.

  6. Wählen Sie Weiter: Berechtigungen aus.

  7. Wählen Sie auf der Seite Attach permissions policies (Berechtigungsrichtlinien hinzufügen) Next: Review (Weiter: Überprüfen) aus. Sie fügen Berechtigungsrichtlinien an, nachdem Sie die Rolle erstellt haben.

  8. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen.

    Jetzt haben Sie eine neue IAM Rolle namens erstelltMF-stream-rw-role. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle

  9. Fügen Sie die Berechtigungsrichtlinie der Rolle an.

    Anmerkung

    Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt, Erstellen einer Berechtigungsrichtlinie, erstellt haben.

    1. Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.

    2. Wählen Sie Attach Policies (Richtlinien anfügen) aus.

    3. Geben Sie im Suchfeld AKReadSourceStreamWriteSinkStream (die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.

    4. Wählen Sie die AKReadSourceStreamWriteSinkStream-Richtlinie und wählen Sie Richtlinie anhängen aus.

Sie haben nun die Service-Ausführungsrolle erstellt, die Ihre Anwendung für den Zugriff auf Ressourcen verwendet. Notieren Sie sich die ARN der neuen Rolle.

step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter Erstellen einer IAM Rolle (Konsole) im IAMBenutzerhandbuch.

Erstellen der Anwendung

Speichern Sie den folgenden JSON Code in einer Datei mit dem Namencreate_request.json. Ersetzen Sie die Beispielrolle ARN durch die ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das ARN Bucket-Suffix (Benutzername) durch das Suffix, das Sie im vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (012345678901) in der Service-Ausführungsrolle mit Ihrer Konto-ID. Das ServiceExecutionRole sollte die IAM Benutzerrolle enthalten, die Sie im vorherigen Abschnitt erstellt haben.

"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" } ] }

Führen Sie das CreateApplicationmit der folgenden Anfrage aus, um die Anwendung zu erstellen:

aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

Die Anwendung wird nun erstellt. Sie starten die Anwendung im nächsten Schritt.

Starten Sie die Anwendung

In diesem Abschnitt verwenden Sie die StartApplicationAktion, um die Anwendung zu starten.

So starten Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstart_request.json.

    { "ApplicationName": "tumbling_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Führen Sie die StartApplication-Aktion mit der vorherigen Anforderung zum Starten der Anwendung aus:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

Die Anwendung wird jetzt ausgeführt. Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Amazon-Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Beenden Sie die Anwendung

In diesem Abschnitt verwenden Sie die StopApplicationAktion, um die Anwendung zu beenden.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstop_request.json.

    { "ApplicationName": "tumbling_window" }
  2. Führen Sie die StopApplication-Aktion mit der vorherigen Anforderung zum Stoppen der Anwendung aus:

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unter Anwendungsprotokollierung einrichten.

Aktualisieren Sie die Umgebungseigenschaften

In diesem Abschnitt verwenden Sie die UpdateApplicationAktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

So aktualisieren Sie die Umgebungseigenschaften für die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen. update_properties_request.json

    {"ApplicationName": "tumbling_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }
  2. Führen Sie die UpdateApplication-Aktion mit der vorherigen Anforderung aus, um die Umgebungseigenschaften zu aktualisieren:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Den Anwendungscode aktualisieren

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplicationCLIAktion.

Anmerkung

Um eine neue Version des Anwendungscodes mit demselben Dateinamen zu laden, müssen Sie die neue Objektversion angeben. Weitere Informationen zur Verwendung von Amazon S3-Objektversionen finden Sie unter Versionsverwaltung aktivieren oder deaktivieren.

Um das zu verwenden AWS CLI, löschen Sie Ihr vorheriges Codepaket aus Ihrem Amazon S3 S3-Bucket, laden Sie die neue Version hoch und rufen Sie UpdateApplication auf. Geben Sie dabei denselben Amazon S3 S3-Bucket und Objektnamen sowie die neue Objektversion an. Die Anwendung wird mit dem neuen Codepaket neu gestartet.

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namenssuffix (<username>) mit dem Suffix, das Sie im Abschnitt Erstellen Sie abhängige Ressourcen ausgewählt haben.

{ "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" } } } } }
AWS Ressourcen bereinigen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tumbling Window-Lernprogramm erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiel: Erstellen eines Schiebefensters in Scala

Anmerkung

Ab Version 1.15 ist Flink Scala-frei. Anwendungen können jetzt Java API von jeder Scala-Version aus verwenden. Flink verwendet Scala intern immer noch in einigen Schlüsselkomponenten, macht Scala jedoch nicht im Benutzercode-Classloader verfügbar. Aus diesem Grund müssen Benutzer Scala-Abhängigkeiten zu ihren Jar-Archiven hinzufügen.

Weitere Informationen zu den Scala-Änderungen in Flink 1.15 finden Sie unter Scalafrei in One Fifteen.

In dieser Übung erstellen Sie eine einfache Streaming-Anwendung, die Scala 3.2.0 und Flinks Java verwendet. DataStream API Die Anwendung liest Daten aus dem Kinesis Stream, aggregiert sie mithilfe von gleitenden Fenstern und schreibt die Ergebnisse in den Kinesis-Ausgabestream.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Übung Erste Schritte (Scala) ab.

Laden Sie den Anwendungscode herunter und untersuchen Sie ihn

Der Python-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/scala/SlidingWindow Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:

  • Eine build.sbt-Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.

  • Die BasicStreamingJob.scala-Datei enthält die Hauptmethode, die die Funktionalität der Anwendung definiert.

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }

    Die Anwendung verwendet auch eine Kinesis-Senke, um in den Ergebnisstream zu schreiben. Der folgende Codeausschnitt erstellt die Kinesis-Senke:

    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 }
  • Die Anwendung verwendet den Fensteroperator, um die Anzahl der Werte für jedes Aktionssymbol über ein 10-Sekunden-Fenster, das um 5 Sekunden gleitet, zu ermitteln. Der folgende Code erstellt den Operator und sendet die aggregierten Daten an eine neue Kinesis Data Streams Senke:

    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)
  • Die Anwendung erstellt Quell- und Senken-Konnektoren, um mithilfe eines StreamExecutionEnvironment Objekts auf externe Ressourcen zuzugreifen.

  • Die Anwendung erstellt Quell- und Senkenkonnektoren mit dynamischen Anwendungseigenschaften. Die Laufzeiteigenschaften der Anwendung werden gelesen, um die Konnektoren zu konfigurieren. Weitere Informationen zu Laufzeiteigenschaften finden Sie unter Laufzeiteigenschaften.

Kompilieren Sie den Anwendungscode und laden Sie ihn hoch

In diesem Abschnitt kompilieren Sie Ihren Anwendungscode und laden ihn in einen Amazon-S3-Bucket hoch.

Kompilieren des Anwendungscodes

Verwenden Sie das SBTBuild-Tool, um den Scala-Code für die Anwendung zu erstellen. Informationen zur Installation SBT finden Sie unter SBT mit CS-Setup installieren. Sie müssen auch das Java Development Kit (JDK) installieren. Siehe Voraussetzungen für das Fertigstellen der Übungen.

  1. Um Ihren Anwendungscode zu verwenden, kompilieren Sie ihn und packen ihn in eine JAR Datei. Sie können Ihren Code kompilieren und verpacken mitSBT:

    sbt assembly
  2. Wenn die Anwendung erfolgreich kompiliert wurde, wird die folgende Datei erstellt:

    target/scala-3.2.0/sliding-window-scala-1.0.jar
Hochladen des Apache Flink-Streaming-Scala-Codes

In diesem Abschnitt erstellen Sie einen Amazon S3-Bucket und laden Ihren Anwendungscode hoch.

  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie Bucket erstellen aus

  3. Geben Sie ka-app-code-<username> im Feld Bucket-Name ein. Fügen Sie dem Bucket-Namen ein Suffix hinzu, wie z. B. Ihren Benutzernamen, damit er global eindeutig ist. Wählen Sie Weiter.

  4. Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.

  5. Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.

  6. Wählen Sie Bucket erstellen aus.

  7. Wählen Sie den Bucket ka-app-code-<username> und dann Hochladen aus.

  8. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der sliding-window-scala-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  9. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung (Konsole) und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Geben Sie für Beschreibung den Text My Scala test app ein.

    • Wählen Sie als Laufzeit Apache Flink aus.

    • Belassen Sie die Version als Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Konfigurieren Sie die Anwendung

Verwenden Sie das folgende Verfahren, um die Anwendung zu konfigurieren.

Konfigurieren der Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert sliding-window-scala-1.0.jar. ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.

  5. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Wählen Sie Save (Speichern) aus.

  6. Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus.

  7. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  9. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  10. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie sich dafür entscheiden, die CloudWatch Amazon-Protokollierung zu aktivieren, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Bearbeiten Sie die Richtlinie IAM

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf den Amazon S3 S3-Bucket hinzuzufügen.

Um die IAM Richtlinie zu bearbeiten, um S3-Bucket-Berechtigungen hinzuzufügen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Stoppen Sie die Anwendung

Um die Anwendung zu beenden, wählen Sie auf der MyApplicationSeite Stopp aus. Bestätigen Sie die Aktion.

Erstellen Sie die Anwendung und führen Sie sie aus (CLI)

In diesem Abschnitt verwenden Sie die, AWS Command Line Interface um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen. Verwenden Sie den AWS CLI Befehl kinesisanalyticsv2, um Managed Service für Apache Flink-Anwendungen zu erstellen und mit ihnen zu interagieren.

Erstellen einer Berechtigungsrichtlinie
Anmerkung

Sie müssen eine Berechtigungsrichtlinie und eine Rolle für Ihre Anwendung erstellen. Wenn Sie diese IAM Ressourcen nicht erstellen, kann Ihre Anwendung nicht auf ihre Daten und Protokollstreams zugreifen.

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die Lese-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die Schreib-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie einer IAM Rolle hinzu (die Sie im nächsten Abschnitt erstellen). Wenn Managed Service für Apache Flink also die Rolle übernimmt, verfügt der Service über die erforderlichen Berechtigungen zum Lesen aus dem Quell-Stream und zum Schreiben in den Senken-Stream.

Verwenden Sie den folgenden Code zum Erstellen der AKReadSourceStreamWriteSinkStream-Berechtigungsrichtlinie. Ersetzen Sie username durch den Benutzernamen, den Sie verwendet haben, um den Amazon-S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (012345678901) durch Ihre Konto-ID.

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

step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie im IAMBenutzerhandbuch.

Erstellen Sie eine IAM-Rolle

In diesem Abschnitt erstellen Sie eine IAM Rolle, von der die Anwendung Managed Service for Apache Flink annehmen kann, einen Quellstream zu lesen und in den Sink-Stream zu schreiben.

Managed Service für Apache Flink kann ohne Berechtigungen nicht auf Ihren Stream zugreifen. Sie gewähren diese Berechtigungen über eine IAM Rolle. Jeder IAM Rolle sind zwei Richtlinien zugeordnet. Die Vertrauensrichtlinie erteilt Managed Service für Apache Flink die Berechtigung zum Übernehmen der Rolle und die Berechtigungsrichtlinie bestimmt, was Managed Service für Apache Flink nach Annahme der Rolle tun kann.

Sie können die Berechtigungsrichtlinie, die Sie im vorherigen Abschnitt erstellt haben, dieser Rolle anfügen.

So erstellen Sie eine IAM-Rolle
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Rollen und dann Rolle erstellen.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus

  4. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus.

  5. Wählen Sie unter Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.

  6. Wählen Sie Weiter: Berechtigungen aus.

  7. Wählen Sie auf der Seite Attach permissions policies (Berechtigungsrichtlinien hinzufügen) Next: Review (Weiter: Überprüfen) aus. Sie fügen Berechtigungsrichtlinien an, nachdem Sie die Rolle erstellt haben.

  8. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen.

    Jetzt haben Sie eine neue IAM Rolle namens erstelltMF-stream-rw-role. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle

  9. Fügen Sie die Berechtigungsrichtlinie der Rolle an.

    Anmerkung

    Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt, Erstellen einer Berechtigungsrichtlinie, erstellt haben.

    1. Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.

    2. Wählen Sie Attach Policies (Richtlinien anfügen) aus.

    3. Geben Sie im Suchfeld AKReadSourceStreamWriteSinkStream (die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.

    4. Wählen Sie die AKReadSourceStreamWriteSinkStream-Richtlinie und wählen Sie Richtlinie anhängen aus.

Sie haben nun die Service-Ausführungsrolle erstellt, die Ihre Anwendung für den Zugriff auf Ressourcen verwendet. Notieren Sie sich die ARN der neuen Rolle.

step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter Erstellen einer IAM Rolle (Konsole) im IAMBenutzerhandbuch.

Erstellen der Anwendung

Speichern Sie den folgenden JSON Code in einer Datei mit dem Namencreate_request.json. Ersetzen Sie die Beispielrolle ARN durch die ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das ARN Bucket-Suffix (Benutzername) durch das Suffix, das Sie im vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (012345678901) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

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

Führen Sie das CreateApplicationmit der folgenden Anfrage aus, um die Anwendung zu erstellen:

aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

Die Anwendung wird nun erstellt. Sie starten die Anwendung im nächsten Schritt.

Starten Sie die Anwendung

In diesem Abschnitt verwenden Sie die StartApplicationAktion, um die Anwendung zu starten.

So starten Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstart_request.json.

    { "ApplicationName": "sliding_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Führen Sie die StartApplication-Aktion mit der vorherigen Anforderung zum Starten der Anwendung aus:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

Die Anwendung wird jetzt ausgeführt. Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Amazon-Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Beenden Sie die Anwendung

In diesem Abschnitt verwenden Sie die StopApplicationAktion, um die Anwendung zu beenden.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstop_request.json.

    { "ApplicationName": "sliding_window" }
  2. Führen Sie die StopApplication-Aktion mit der vorherigen Anforderung zum Stoppen der Anwendung aus:

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unter Anwendungsprotokollierung einrichten.

Aktualisieren Sie die Umgebungseigenschaften

In diesem Abschnitt verwenden Sie die UpdateApplicationAktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

So aktualisieren Sie die Umgebungseigenschaften für die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen. update_properties_request.json

    {"ApplicationName": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }
  2. Führen Sie die UpdateApplication-Aktion mit der vorherigen Anforderung aus, um die Umgebungseigenschaften zu aktualisieren:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Den Anwendungscode aktualisieren

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplicationCLIAktion.

Anmerkung

Um eine neue Version des Anwendungscodes mit demselben Dateinamen zu laden, müssen Sie die neue Objektversion angeben. Weitere Informationen zur Verwendung von Amazon S3-Objektversionen finden Sie unter Versionsverwaltung aktivieren oder deaktivieren.

Um das zu verwenden AWS CLI, löschen Sie Ihr vorheriges Codepaket aus Ihrem Amazon S3 S3-Bucket, laden Sie die neue Version hoch und rufen Sie UpdateApplication auf. Geben Sie dabei denselben Amazon S3 S3-Bucket und Objektnamen sowie die neue Objektversion an. Die Anwendung wird mit dem neuen Codepaket neu gestartet.

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namenssuffix (<username>) mit dem Suffix, das Sie im Abschnitt Erstellen Sie abhängige Ressourcen ausgewählt haben.

{ "ApplicationName": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
AWS Ressourcen bereinigen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tutorial mit Schiebefenster erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.

Beispiel: Streaming-Daten in Scala an Amazon S3 senden

Anmerkung

Ab Version 1.15 ist Flink Scala-frei. Anwendungen können jetzt Java API von jeder Scala-Version aus verwenden. Flink verwendet Scala intern immer noch in einigen Schlüsselkomponenten, macht Scala jedoch nicht im Benutzercode-Classloader verfügbar. Aus diesem Grund müssen Benutzer Scala-Abhängigkeiten zu ihren Jar-Archiven hinzufügen.

Weitere Informationen zu den Scala-Änderungen in Flink 1.15 finden Sie unter Scalafrei in One Fifteen.

In dieser Übung erstellen Sie eine einfache Streaming-Anwendung, die Scala 3.2.0 und Flinks Java verwendet. DataStream API Die Anwendung liest Daten aus dem Kinesis Stream, aggregiert sie mithilfe von gleitenden Fenstern und schreibt die Ergebnisse in S3.

Anmerkung

Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die Übung Erste Schritte (Scala) ab. Sie müssen nur einen zusätzlichen Ordner data/ im Amazon S3 S3-Bucket erstellen ka-app-code-<username>.

Laden Sie den Anwendungscode herunter und untersuchen Sie ihn

Der Python-Anwendungscode für dieses Beispiel ist verfügbar unter GitHub. Zum Herunterladen des Anwendungscodes gehen Sie wie folgt vor:

  1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren.

  2. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Navigieren Sie zum amazon-kinesis-data-analytics-java-examples/scala/S3Sink Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:

  • Eine build.sbt-Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.

  • Die BasicStreamingJob.scala-Datei enthält die Hauptmethode, die die Funktionalität der Anwendung definiert.

  • Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

    private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }

    Die Anwendung verwendet auch a StreamingFileSink , um in einen Amazon S3 S3-Bucket zu schreiben: `

    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() }
  • Die Anwendung erstellt Quell- und Senken-Konnektoren, um mithilfe eines StreamExecutionEnvironment Objekts auf externe Ressourcen zuzugreifen.

  • Die Anwendung erstellt Quell- und Senkenkonnektoren mit dynamischen Anwendungseigenschaften. Die Laufzeiteigenschaften der Anwendung werden gelesen, um die Konnektoren zu konfigurieren. Weitere Informationen zu Laufzeiteigenschaften finden Sie unter Laufzeiteigenschaften.

Kompilieren Sie den Anwendungscode und laden Sie ihn hoch

In diesem Abschnitt kompilieren Sie Ihren Anwendungscode und laden ihn in einen Amazon-S3-Bucket hoch.

Kompilieren des Anwendungscodes

Verwenden Sie das SBTBuild-Tool, um den Scala-Code für die Anwendung zu erstellen. Informationen zur Installation SBT finden Sie unter SBT mit CS-Setup installieren. Sie müssen auch das Java Development Kit (JDK) installieren. Siehe Voraussetzungen für das Fertigstellen der Übungen.

  1. Um Ihren Anwendungscode zu verwenden, kompilieren Sie ihn und packen ihn in eine JAR Datei. Sie können Ihren Code kompilieren und verpacken mitSBT:

    sbt assembly
  2. Wenn die Anwendung erfolgreich kompiliert wurde, wird die folgende Datei erstellt:

    target/scala-3.2.0/s3-sink-scala-1.0.jar
Hochladen des Apache Flink-Streaming-Scala-Codes

In diesem Abschnitt erstellen Sie einen Amazon S3-Bucket und laden Ihren Anwendungscode hoch.

  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie Bucket erstellen aus

  3. Geben Sie ka-app-code-<username> im Feld Bucket-Name ein. Fügen Sie dem Bucket-Namen ein Suffix hinzu, wie z. B. Ihren Benutzernamen, damit er global eindeutig ist. Wählen Sie Weiter.

  4. Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.

  5. Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.

  6. Wählen Sie Bucket erstellen aus.

  7. Wählen Sie den Bucket ka-app-code-<username> und dann Hochladen aus.

  8. Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der s3-sink-scala-1.0.jarDatei, die Sie im vorherigen Schritt erstellt haben.

  9. Sie müssen keine der Einstellungen für das Objekt ändern. Wählen Sie daher Hochladen.

Ihr Anwendungscode ist jetzt in einem Amazon-S3-Bucket gespeichert, in dem Ihre Anwendung darauf zugreifen kann.

Erstellen Sie die Anwendung (Konsole) und führen Sie sie aus

Befolgen Sie diese Schritte, um die Anwendung über die Konsole zu erstellen, zu konfigurieren, zu aktualisieren und auszuführen.

Erstellen der Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink

  2. Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.

  3. Geben Sie auf der Seite Managed Service für Apache Flink – Anwendung erstellen die Anwendungsdetails wie folgt ein:

    • Geben Sie als Anwendungsname ein MyApplication.

    • Geben Sie für Beschreibung den Text My java test app ein.

    • Wählen Sie als Laufzeit Apache Flink aus.

    • Belassen Sie die Version als Apache Flink Version 1.15.2 (empfohlene Version).

  4. Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM kinesis-analytics-MyApplication-us-west-2

  5. Wählen Sie Create application aus.

Anmerkung

Wenn Sie mithilfe der Konsole eine Managed Service for Apache Flink-Anwendung erstellen, haben Sie die Möglichkeit, eine IAM Rolle und Richtlinie für Ihre Anwendung erstellen zu lassen. Ihre Anwendung verwendet diese Rolle und Richtlinie für den Zugriff auf ihre abhängigen Ressourcen. Diese IAM Ressourcen werden anhand Ihres Anwendungsnamens und Ihrer Region wie folgt benannt:

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

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

Konfigurieren Sie die Anwendung

Verwenden Sie das folgende Verfahren, um die Anwendung zu konfigurieren.

Konfigurieren der Anwendung
  1. Wählen Sie auf der MyApplicationSeite Configure aus.

  2. Klicken Sie auf der Seite Configure application (Anwendung konfigurieren) auf die Option Code location (Codespeicherort):

    • Geben Sie für Amazon-S3-Bucket ka-app-code-<username> ein.

    • Geben Sie als Pfad zum Amazon-S3-Objekt den Wert s3-sink-scala-1.0.jar ein.

  3. Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren auskinesis-analytics-MyApplication-us-west-2.

  4. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.

  5. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Wählen Sie Save (Speichern) aus.

  6. Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.

  7. Geben Sie Folgendes ein:

    Gruppen-ID Schlüssel Wert
    ProducerConfigProperties s3.sink.path s3a://ka-app-code-<user-name>/data
  8. Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.

  9. Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.

  10. Wählen Sie Aktualisieren.

Anmerkung

Wenn Sie sich dafür entscheiden, die CloudWatch Amazon-Protokollierung zu aktivieren, erstellt Managed Service für Apache Flink eine Protokollgruppe und einen Protokollstream für Sie. Die Namen dieser Ressourcen lauten wie folgt:

  • Protokollgruppe: /aws/kinesis-analytics/MyApplication

  • Protokollstream: kinesis-analytics-log-stream

Bearbeiten Sie die Richtlinie IAM

Bearbeiten Sie die IAM Richtlinie, um Berechtigungen für den Zugriff auf den Amazon S3 S3-Bucket hinzuzufügen.

Um die IAM Richtlinie zu bearbeiten, um S3-Bucket-Berechtigungen hinzuzufügen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie Policies (Richtlinien). Wählen Sie die kinesis-analytics-service-MyApplication-us-west-2-Richtlinie aus, die die Konsole im vorherigen Abschnitt für Sie erstellt hat.

  3. Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.

  4. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie das Beispielkonto IDs (012345678901) durch Ihre Konto-ID.

    { "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" } ] }
Führen Sie die Anwendung aus.

Das Flink-Jobdiagramm kann angezeigt werden, indem Sie die Anwendung ausführen, das Apache Flink-Dashboard öffnen und den gewünschten Flink-Job auswählen.

Stoppen Sie die Anwendung

Um die Anwendung zu beenden, wählen Sie auf der MyApplicationSeite Stopp aus. Bestätigen Sie die Aktion.

Erstellen Sie die Anwendung und führen Sie sie aus (CLI)

In diesem Abschnitt verwenden Sie die, AWS Command Line Interface um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen. Verwenden Sie den AWS CLI Befehl kinesisanalyticsv2, um Managed Service für Apache Flink-Anwendungen zu erstellen und mit ihnen zu interagieren.

Erstellen einer Berechtigungsrichtlinie
Anmerkung

Sie müssen eine Berechtigungsrichtlinie und eine Rolle für Ihre Anwendung erstellen. Wenn Sie diese IAM Ressourcen nicht erstellen, kann Ihre Anwendung nicht auf ihre Daten und Protokollstreams zugreifen.

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die Lese-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die Schreib-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie einer IAM Rolle hinzu (die Sie im nächsten Abschnitt erstellen). Wenn Managed Service für Apache Flink also die Rolle übernimmt, verfügt der Service über die erforderlichen Berechtigungen zum Lesen aus dem Quell-Stream und zum Schreiben in den Senken-Stream.

Verwenden Sie den folgenden Code zum Erstellen der AKReadSourceStreamWriteSinkStream-Berechtigungsrichtlinie. Ersetzen Sie username durch den Benutzernamen, den Sie verwendet haben, um den Amazon-S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (012345678901) durch Ihre Konto-ID.

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

step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie im IAMBenutzerhandbuch.

Erstellen Sie eine IAM-Rolle

In diesem Abschnitt erstellen Sie eine IAM Rolle, von der die Anwendung Managed Service for Apache Flink annehmen kann, einen Quellstream zu lesen und in den Sink-Stream zu schreiben.

Managed Service für Apache Flink kann ohne Berechtigungen nicht auf Ihren Stream zugreifen. Sie gewähren diese Berechtigungen über eine IAM Rolle. Jeder IAM Rolle sind zwei Richtlinien zugeordnet. Die Vertrauensrichtlinie erteilt Managed Service für Apache Flink die Berechtigung zum Übernehmen der Rolle und die Berechtigungsrichtlinie bestimmt, was Managed Service für Apache Flink nach Annahme der Rolle tun kann.

Sie können die Berechtigungsrichtlinie, die Sie im vorherigen Abschnitt erstellt haben, dieser Rolle anfügen.

So erstellen Sie eine IAM-Rolle
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Rollen und dann Rolle erstellen.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus

  4. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus.

  5. Wählen Sie unter Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.

  6. Wählen Sie Weiter: Berechtigungen aus.

  7. Wählen Sie auf der Seite Attach permissions policies (Berechtigungsrichtlinien hinzufügen) Next: Review (Weiter: Überprüfen) aus. Sie fügen Berechtigungsrichtlinien an, nachdem Sie die Rolle erstellt haben.

  8. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen.

    Jetzt haben Sie eine neue IAM Rolle namens erstelltMF-stream-rw-role. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle

  9. Fügen Sie die Berechtigungsrichtlinie der Rolle an.

    Anmerkung

    Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt, Erstellen einer Berechtigungsrichtlinie, erstellt haben.

    1. Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.

    2. Wählen Sie Attach Policies (Richtlinien anfügen) aus.

    3. Geben Sie im Suchfeld AKReadSourceStreamWriteSinkStream (die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.

    4. Wählen Sie die AKReadSourceStreamWriteSinkStream-Richtlinie und wählen Sie Richtlinie anhängen aus.

Sie haben nun die Service-Ausführungsrolle erstellt, die Ihre Anwendung für den Zugriff auf Ressourcen verwendet. Notieren Sie sich die ARN der neuen Rolle.

step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter Erstellen einer IAM Rolle (Konsole) im IAMBenutzerhandbuch.

Erstellen der Anwendung

Speichern Sie den folgenden JSON Code in einer Datei mit dem Namencreate_request.json. Ersetzen Sie die Beispielrolle ARN durch die ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das ARN Bucket-Suffix (Benutzername) durch das Suffix, das Sie im vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (012345678901) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

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

Führen Sie das CreateApplicationmit der folgenden Anfrage aus, um die Anwendung zu erstellen:

aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

Die Anwendung wird nun erstellt. Sie starten die Anwendung im nächsten Schritt.

Starten Sie die Anwendung

In diesem Abschnitt verwenden Sie die StartApplicationAktion, um die Anwendung zu starten.

So starten Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstart_request.json.

    {{ "ApplicationName": "s3_sink", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Führen Sie die StartApplication-Aktion mit der vorherigen Anforderung zum Starten der Anwendung aus:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

Die Anwendung wird jetzt ausgeführt. Sie können die Kennzahlen Managed Service for Apache Flink auf der CloudWatch Amazon-Konsole überprüfen, um sicherzustellen, dass die Anwendung funktioniert.

Beenden Sie die Anwendung

In diesem Abschnitt verwenden Sie die StopApplicationAktion, um die Anwendung zu beenden.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namenstop_request.json.

    { "ApplicationName": "s3_sink" }
  2. Führen Sie die StopApplication-Aktion mit der vorherigen Anforderung zum Stoppen der Anwendung aus:

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unter Anwendungsprotokollierung einrichten.

Aktualisieren Sie die Umgebungseigenschaften

In diesem Abschnitt verwenden Sie die UpdateApplicationAktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

So aktualisieren Sie die Umgebungseigenschaften für die Anwendung
  1. Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen. update_properties_request.json

    {"ApplicationName": "s3_sink", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } } }
  2. Führen Sie die UpdateApplication-Aktion mit der vorherigen Anforderung aus, um die Umgebungseigenschaften zu aktualisieren:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Den Anwendungscode aktualisieren

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplicationCLIAktion.

Anmerkung

Um eine neue Version des Anwendungscodes mit demselben Dateinamen zu laden, müssen Sie die neue Objektversion angeben. Weitere Informationen zur Verwendung von Amazon S3-Objektversionen finden Sie unter Versionsverwaltung aktivieren oder deaktivieren.

Um das zu verwenden AWS CLI, löschen Sie Ihr vorheriges Codepaket aus Ihrem Amazon S3 S3-Bucket, laden Sie die neue Version hoch und rufen Sie UpdateApplication auf. Geben Sie dabei denselben Amazon S3 S3-Bucket und Objektnamen sowie die neue Objektversion an. Die Anwendung wird mit dem neuen Codepaket neu gestartet.

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namenssuffix (<username>) mit dem Suffix, das Sie im Abschnitt Erstellen Sie abhängige Ressourcen ausgewählt haben.

{ "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" } } } } }
AWS Ressourcen bereinigen

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tumbling Window-Tutorial erstellt wurden.

Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
  1. Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com

  2. wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication

  3. Wählen Sie auf der Seite der Anwendung die Option Löschen aus und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihre Kinesis-Datenstreams
  1. Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.

  2. Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.

  3. Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.

  4. Wählen Sie auf der Kinesis-Streams-Seite die ExampleOutputStream, wählen Sie Aktionen, wählen Sie Löschen und bestätigen Sie dann den Löschvorgang.

Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
  1. Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie ka-app-code -<username> Eimer.

  3. Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.

Löschen Sie Ihre IAM Ressourcen
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie in der Navigationsleiste Policies aus.

  3. Geben Sie in der Filtersteuerung Kinesis ein.

  4. Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.

  5. Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.

  6. Wählen Sie in der Navigationsleiste Roles (Rollen) aus.

  7. Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.

  8. Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.

CloudWatch Löschen Sie Ihre Ressourcen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie in der Navigationsleiste Protokolle aus.

  3. Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.

  4. Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.