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.
Dieses Thema enthält die folgenden Abschnitte:
- Verwenden des Apache Flink Kinesis Streams Connectors mit früheren Apache Flink-Versionen
- Anwendungen mit Apache Flink 1.8.2 erstellen
- Erstellen von Anwendungen mit Apache Flink 1.6.2
- Anwendungen aktualisieren
- Verfügbare Konnektoren in Apache Flink 1.6.2 und 1.8.2
- Erste Schritte: Flink 1.13.2
- Erste Schritte: Flink 1.11.1 — veraltet
- Erste Schritte: Flink 1.8.2 — veraltet
- Erste Schritte: Flink 1.6.2 — veraltet
- Beispiele früherer Versionen (Legacy) für Managed Service für Apache Flink
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
Gehen Sie wie folgt vor, um den Quellcode von Apache Flink Version 1.8.2 herunterzuladen und zu installieren:
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
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
Dekomprimieren Sie den Apache Flink-Quellcode:
tar -xvf flink-1.8.2-src.tgz
Wechseln Sie in das Apache Flink-Quellcodeverzeichnis:
cd flink-1.8.2
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.
Informationen zu den im Apache Flink 1.6.2-Framework verfügbaren Konnektoren finden Sie unter Konnektoren (1.6.2)
in der Apache Flink-Dokumentation (1.6.2) . Informationen zu den im Apache Flink 1.8.2-Framework verfügbaren Konnektoren finden Sie unter Konnektoren (1.8.2)
in der Apache Flink-Dokumentation (1.8.2) .
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.
Themen
- Komponenten einer Managed Service für Apache Flink-Anwendung
- Voraussetzungen für das Abschließen der Übungen
- Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer
- Nächster Schritt
- Schritt 2: Richten Sie das AWS Command Line Interface (AWS CLI) ein
- Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus
- Schritt 4: Ressourcen AWS bereinigen
- Schritt 5: Nächste Schritte
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
Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.
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/
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
-
Melden Sie sich AWS Management Console
als 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.
-
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
-
Aktivieren Sie IAM Identity Center.
Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.
-
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
-
Um sich mit Ihrem IAM Identity Center-Benutzer anzumelden, verwenden Sie die Anmeldung, URL die an Ihre E-Mail-Adresse gesendet wurde, als Sie den IAM Identity Center-Benutzer erstellt haben.
Hilfe bei der Anmeldung mit einem IAM Identity Center-Benutzer finden Sie im AWS-Anmeldung Benutzerhandbuch unter Anmeldung beim AWS Zugangsportal.
Weiteren Benutzern Zugriff zuweisen
-
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.
-
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
-
Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface -Benutzerhandbuch:
-
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.
-
Ü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.
Dieser Abschnitt enthält die folgenden Schritte:
- Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Nächster Schritt
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)
-
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
-
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)
-
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'))
-
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:
-
Klonen Sie das Remote-Repository, indem Sie den folgenden Befehl verwenden:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
-
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 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
undcreateSinkFromApplicationProperties
, 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
-
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.
-
-
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie Bucket erstellen aus.
-
Geben Sie
ka-app-code-
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.<username>
-
Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.
-
Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.
-
Wählen Sie Bucket erstellen aus.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
aws-kinesis-analytics-java-apps-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter. -
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.
Themen
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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.
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
aws-kinesis-analytics-java-apps-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Geben Sie Folgendes ein:
Gruppen-ID Schlüssel Wert ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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
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) (username
) durch Ihre Konto-ID.012345678901
{ "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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.
-
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.
-
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.
-
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 erstellt
MF-stream-rw-role
. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle. -
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.
-
Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.
-
Wählen Sie Attach Policies (Richtlinien anfügen) aus.
-
Geben Sie im Suchfeld
AKReadSourceStreamWriteSinkStream
(die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein. -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
create_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 vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (username
) in der Service-Ausführungsrolle mit Ihrer Konto-ID.012345678901
{ "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" } } ] } } } -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen.
start_request.json
{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
stop_request.json
.{ "ApplicationName": "test" }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
update_properties_request.json
.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
-
Wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
-
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
-
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
-
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie ka-app-code -
<username>
Eimer. -
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie in der Navigationsleiste Policies aus.
-
Geben Sie in der Filtersteuerung Kinesis ein.
-
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
-
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
-
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
-
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
-
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Wählen Sie in der Navigationsleiste Protokolle aus.
-
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
-
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Nächster Schritt
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.
Themen
- Komponenten einer Managed Service für Apache Flink-Anwendung
- Voraussetzungen für das Abschließen der Übungen
- Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer
- Schritt 2: Einrichten der AWS Command Line Interface (AWS CLI)
- Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus
- Schritt 4: Ressourcen AWS bereinigen
- Schritt 5: Nächste Schritte
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
Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.
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/
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
-
Melden Sie sich AWS Management Console
als 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.
-
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
-
Aktivieren Sie IAM Identity Center.
Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.
-
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
-
Um sich mit Ihrem IAM Identity Center-Benutzer anzumelden, verwenden Sie die Anmeldung, URL die an Ihre E-Mail-Adresse gesendet wurde, als Sie den IAM Identity Center-Benutzer erstellt haben.
Hilfe bei der Anmeldung mit einem IAM Identity Center-Benutzer finden Sie im AWS-Anmeldung Benutzerhandbuch unter Anmeldung beim AWS Zugangsportal.
Weiteren Benutzern Zugriff zuweisen
-
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.
-
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
-
Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface -Benutzerhandbuch:
-
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.
-
Ü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.
Dieser Abschnitt enthält die folgenden Schritte:
- Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Nächster Schritt
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)
-
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
-
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)
-
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"))
-
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:
-
Klonen Sie das Remote-Repository, indem Sie den folgenden Befehl verwenden:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
-
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 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
undcreateSinkFromApplicationProperties
, 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
-
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.
-
-
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie Bucket erstellen aus.
-
Geben Sie
ka-app-code-
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.<username>
-
Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.
-
Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.
-
Wählen Sie Bucket erstellen aus.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
aws-kinesis-analytics-java-apps-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter. -
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.
Themen
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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.
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
aws-kinesis-analytics-java-apps-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Geben Sie unter Eigenschaften für Gruppen-ID den Text
ProducerConfigProperties
ein. -
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
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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
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) (username
) durch Ihre Konto-ID.012345678901
{ "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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.
-
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.
-
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.
-
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 erstellt
MF-stream-rw-role
. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle. -
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.
-
Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.
-
Wählen Sie Attach Policies (Richtlinien anfügen) aus.
-
Geben Sie im Suchfeld
AKReadSourceStreamWriteSinkStream
(die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein. -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
create_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 vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (username
) in der Service-Ausführungsrolle mit Ihrer Konto-ID.012345678901
{ "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" } } ] } } } -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
stop_request.json
.{ "ApplicationName": "test" }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
update_properties_request.json
.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
-
Wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
-
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
-
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
-
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie ka-app-code -
<username>
Eimer. -
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
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
Wählen Sie in der Navigationsleiste Policies aus.
-
Geben Sie in der Filtersteuerung Kinesis ein.
-
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
-
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
-
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
-
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
-
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Wählen Sie in der Navigationsleiste Protokolle aus.
-
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
-
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Nächster Schritt
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.
Themen
- Komponenten der Anwendung Managed Service für Apache Flink
- Voraussetzungen für das Abschließen der Übungen
- Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer
- Schritt 2: Richten Sie das AWS Command Line Interface (AWS CLI) ein
- Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus
- Schritt 4: Ressourcen AWS bereinigen
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:
-
Java-Entwicklungskit (JDK) Version 8.
Stellen Sie die JAVA_HOME
Umgebungsvariable so ein, dass sie auf Ihren JDK Installationsort verweist. -
Um den Apache Flink Kinesis Connector in diesem Tutorial verwenden zu können, müssen Sie Apache Flink herunterladen und installieren. Details hierzu finden Sie unter Verwenden des Apache Flink Kinesis Streams Connectors mit früheren Apache Flink-Versionen.
-
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
Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.
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/
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
-
Melden Sie sich AWS Management Console
als 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.
-
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
-
Aktivieren Sie IAM Identity Center.
Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.
-
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
-
Um sich mit Ihrem IAM Identity Center-Benutzer anzumelden, verwenden Sie die Anmeldung, URL die an Ihre E-Mail-Adresse gesendet wurde, als Sie den IAM Identity Center-Benutzer erstellt haben.
Hilfe bei der Anmeldung mit einem IAM Identity Center-Benutzer finden Sie im AWS-Anmeldung Benutzerhandbuch unter Anmeldung beim AWS Zugangsportal.
Weiteren Benutzern Zugriff zuweisen
-
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.
-
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
-
Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface -Benutzerhandbuch:
-
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.
-
Ü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.
Dieser Abschnitt enthält die folgenden Schritte:
- Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Nächster Schritt
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)
-
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
-
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)
-
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"))
-
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:
-
Klonen Sie das Remote-Repository, indem Sie den folgenden Befehl verwenden:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
-
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 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
undcreateSinkFromApplicationProperties
, 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
-
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.
-
-
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie Bucket erstellen aus.
-
Geben Sie
ka-app-code-
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.<username>
-
Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.
-
Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.
-
Wählen Sie Bucket erstellen aus.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
aws-kinesis-analytics-java-apps-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter. -
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.
Themen
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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.
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
aws-kinesis-analytics-java-apps-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
-
Wählen Sie auf der MyApplicationSeite die Option Ausführen aus. Bestätigen Sie die Aktion.
-
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
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) (username
) durch Ihre Konto-ID.012345678901
{ "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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.
-
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.
-
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.
-
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 erstellt
MF-stream-rw-role
. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle. -
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.
-
Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.
-
Wählen Sie Attach Policies (Richtlinien anfügen) aus.
-
Geben Sie im Suchfeld
AKReadSourceStreamWriteSinkStream
(die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein. -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
create_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 vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (username
) in der Service-Ausführungsrolle mit Ihrer Konto-ID.012345678901
{ "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" } } ] } } } -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
stop_request.json
.{ "ApplicationName": "test" }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
update_properties_request.json
.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
-
Wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
-
Wählen Sie Konfigurieren aus.
-
Wählen Sie im Abschnitt Snapshots die Option Deaktivieren und anschließend Aktualisieren aus.
-
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
-
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
-
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie ka-app-code -
<username>
Eimer. -
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie in der Navigationsleiste Policies aus.
-
Geben Sie in der Filtersteuerung Kinesis ein.
-
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
-
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
-
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
-
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
-
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Wählen Sie in der Navigationsleiste Protokolle aus.
-
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
-
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.
Themen
- Komponenten einer Managed Service für Apache Flink-Anwendung
- Voraussetzungen für das Abschließen der Übungen
- Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer
- Schritt 2: Richten Sie das AWS Command Line Interface (AWS CLI) ein
- Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus
- Schritt 4: Ressourcen AWS bereinigen
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
Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.
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/
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
-
Melden Sie sich AWS Management Console
als 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.
-
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
-
Aktivieren Sie IAM Identity Center.
Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.
-
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
-
Um sich mit Ihrem IAM Identity Center-Benutzer anzumelden, verwenden Sie die Anmeldung, URL die an Ihre E-Mail-Adresse gesendet wurde, als Sie den IAM Identity Center-Benutzer erstellt haben.
Hilfe bei der Anmeldung mit einem IAM Identity Center-Benutzer finden Sie im AWS-Anmeldung Benutzerhandbuch unter Anmeldung beim AWS Zugangsportal.
Weiteren Benutzern Zugriff zuweisen
-
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.
-
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
-
Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im AWS Command Line Interface -Benutzerhandbuch:
-
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.
-
Ü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.
Dieser Abschnitt enthält die folgenden Schritte:
- Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
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)
-
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
-
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)
-
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"))
-
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:
Klonen Sie das Remote-Repository, indem Sie den folgenden Befehl verwenden:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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
undcreateSinkFromApplicationProperties
, 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
-
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.
-
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie Bucket erstellen aus.
-
Geben Sie
ka-app-code-
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.<username>
-
Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.
-
Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.
-
Wählen Sie Bucket erstellen aus.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
aws-kinesis-analytics-java-apps-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter. -
Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert. Wählen Sie Weiter.
-
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.
Themen
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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.
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
java-getting-started-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
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
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
-
Wählen Sie auf der MyApplicationSeite die Option Ausführen aus. Bestätigen Sie die Aktion.
-
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
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) (username
) durch Ihre Konto-ID.012345678901
{ "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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.
-
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.
-
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.
-
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 erstellt
MF-stream-rw-role
. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle. -
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.
-
Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.
-
Wählen Sie Attach Policies (Richtlinien anfügen) aus.
-
Geben Sie im Suchfeld
AKReadSourceStreamWriteSinkStream
(die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein. -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
create_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 vorherigen Abschnitt ausgewählt haben. Ersetzen Sie die beispielhafte Konto-ID (username
) in der Service-Ausführungsrolle mit Ihrer Konto-ID.012345678901
{ "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" } } ] } } } -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
stop_request.json
.{ "ApplicationName": "test" }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
update_properties_request.json
.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
Wählen Sie Konfigurieren aus.
Wählen Sie im Abschnitt Snapshots die Option Deaktivieren und anschließend Aktualisieren aus.
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
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
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Themen
- Beispiel: Taumelndes Fenster
- Beispiel: Schiebefenster
- Beispiel: In einen Amazon S3 S3-Bucket schreiben
- 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
- Beispiel: Verwenden Sie einen EFO Verbraucher mit einem Kinesis-Datenstream
- Beispiel: An Firehose schreiben
- Beispiel: Aus einem Kinesis-Stream in einem anderen Konto lesen
- Tutorial: Einen benutzerdefinierten Truststore mit Amazon verwenden MSK
Beispiel: Taumelndes Fenster
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Thema enthält die folgenden Abschnitte:
- Erstellen Sie abhängige Ressourcen
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Anwendungscode herunter und untersuchen Sie ihn
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Bereinigen von AWS -Ressourcen
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
undExampleOutputStream
)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
undExampleOutputStream
.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)
-
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'))
-
Führen Sie das
stock.py
Skript 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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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:
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.
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.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
aws-kinesis-analytics-java-apps-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
aws-kinesis-analytics-java-apps-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
-
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.
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Beispiel: Schiebefenster
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Thema enthält die folgenden Abschnitte:
- Erstellen Sie abhängige Ressourcen
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Anwendungscode herunter und untersuchen Sie ihn
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Ressourcen bereinigen AWS
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
undExampleOutputStream
).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
undExampleOutputStream
.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)
-
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"))
-
Führen Sie das
stock.py
Skript 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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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:
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.
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.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie dann Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
aws-kinesis-analytics-java-apps-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
aws-kinesis-analytics-java-apps-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
Wählen Sie im Bereich Managed Service für Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
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.
Dieses Thema enthält die folgenden Abschnitte:
- Erstellen Sie abhängige Ressourcen
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Anwendungscode herunter und untersuchen Sie ihn
- Ändern Sie den Anwendungscode
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Überprüfen Sie die Anwendungsausgabe
- Optional: Passen Sie Quelle und Senke an
- AWS Ressourcen bereinigen
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-
. Erstellen Sie zwei Ordner (<username>
code
unddata
) 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)
-
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'))
-
Führen Sie das
stock.py
Skript 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:
-
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. -
Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
-
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 StreamingFileSinkStreamingFileSink
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:
-
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.
-
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.
-
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. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
aws-kinesis-analytics-java-apps-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. -
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
code/aws-kinesis-analytics-java-apps-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
-
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.
-
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.
Dieser Abschnitt umfasst die folgenden Abschnitte:
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:
-
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;
-
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. BucketAssignergetBucketId
.
Eine benutzerdefinierte Implementierung von BucketAssigner
kann den Kontext
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:
-
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.
-
Fügen Sie am Anfang der
S3StreamingSinkJob.java
-Datei die folgende Importanweisung hinzu:import java.util.concurrent.TimeUnit;
-
Aktualisieren Sie die
createS3SinkFromStaticConfig
-Methode in derS3StreamingSinkJob.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
AWS Ressourcen bereinigen
Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die Sie im Amazon S3 S3-Tutorial erstellt haben.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Bereich Managed Service für Apache Flink die Option. MyApplication
-
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
-
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
-
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie ka-app-code -
<username>
Eimer. -
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie in der Navigationsleiste Richtlinien aus.
-
Geben Sie in der Filtersteuerung Kinesis ein.
-
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
-
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
-
Wählen Sie in der Navigationsleiste Rollen aus.
-
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
-
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Wählen Sie auf der Navigationsleiste Protokolle aus.
-
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
-
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
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Tutorial enthält die folgenden Abschnitte:
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 NamenAWSKafkaTutorialTopicDestination
zu erstellen:bin/kafka-topics.sh --create --zookeeper
ZooKeeperConnectionString
--replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestinationNotieren 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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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.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.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
KafkaGettingStartedJob-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink.
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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.
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
KafkaGettingStartedJob-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-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.
-
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.
-
Wählen Sie unter Snapshots die Option Deaktivieren aus. Dadurch wird es einfacher, die Anwendung zu aktualisieren, ohne ungültige Anwendungsstatusdaten zu laden.
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
-
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
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Thema enthält die folgenden Abschnitte:
- Erstellen Sie abhängige Ressourcen
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Anwendungscode herunter und untersuchen Sie ihn
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Ressourcen bereinigen AWS
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
undExampleOutputStream
)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
undExampleOutputStream
.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)
-
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'))
-
Führen Sie das
stock.py
Skript 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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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:
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.
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.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
aws-kinesis-analytics-java-apps-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
aws-kinesis-analytics-java-apps-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Wählen Sie unter Eigenschaften die Option Gruppe erstellen aus.
-
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
-
Wählen Sie unter Eigenschaften die Option Gruppe erstellen aus.
-
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
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Beispiel: An Firehose schreiben
Anmerkung
Aktuelle Beispiele finden Sie unter. Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen
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.
Dieser Abschnitt enthält die folgenden Schritte:
- Erstellen Sie abhängige Ressourcen
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn
- Kompilieren Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Bereinigen von AWS -Ressourcen
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-Stream
ExampleDeliveryStream
. 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)
-
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'))
-
Führen Sie das
stock.py
Skript 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:
Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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:
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.
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.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Wählen Sie in der Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie dann Upload aus. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
java-getting-started-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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.
Themen
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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
java-getting-started-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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) (
) durch Ihre Konto-ID.012345678901
{ "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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.
-
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.
-
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.
-
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 erstellt
MF-stream-rw-role
. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle. -
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.
-
Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.
-
Wählen Sie Attach Policies (Richtlinien anfügen) aus.
-
Geben Sie im Suchfeld
AKReadSourceStreamWriteSinkStream
(die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein. -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
create_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-
.) ausgewählt haben Ersetzen Sie die Beispielkonto-ID (<username>
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" } } } } -
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
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
-
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
stop_request.json
.{ "ApplicationName": "test" }
-
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 (<username
Aktualisieren 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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
Wählen Sie im Bereich Managed Service für Apache Flink die Option. MyApplication
Wählen Sie Konfigurieren aus.
Wählen Sie im Abschnitt Snapshots die Option Deaktivieren und anschließend Aktualisieren aus.
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
Lösche deinen Firehose-Stream
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen ExampleDeliveryStreamSie im Firehose-Bedienfeld.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.Wählen Sie Löschen und geben Sie dann den Bucketnamen ein, um das Löschen zu bestätigen.
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wenn Sie eine neue Richtlinie für Ihren Firehose-Stream erstellt haben, löschen Sie auch diese Richtlinie.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
Wenn Sie eine neue Rolle für Ihren Firehose-Stream erstellt haben, löschen Sie auch diese Rolle.
Löschen Sie Ihre Ressourcen CloudWatch
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Beispiel: Aus einem Kinesis-Stream in einem anderen Konto lesen
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Thema enthält die folgenden Abschnitte:
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
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-
und eine Rolle namens<application name>
-<application region>
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" ] } ] }Ö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
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" } ] }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:Wählen Sie in der IAM Management Console die Option Create Role aus.
Wählen Sie auf der Seite Rolle erstellen AWS -Service aus. Wählen Sie in der Serviceliste Kinesis aus.
Wählen Sie im Abschnitt Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.
Wählen Sie Weiter: Berechtigungen aus.
Fügen Sie die
KA-Source-Stream-Policy
-Berechtigungsrichtlinie hinzu, die Sie im vorherigen Schritt erstellt haben. Wählen Sie Weiter: Tags aus.Wählen Sie Weiter: Prüfen aus.
Benennen Sie die Rolle
KA-Source-Stream-Role
. Ihre Anwendung verwendet diese Rolle für den Zugriff auf den Quellstream.
Fügen Sie das
kinesis-analytics-MyApplication-us-west-2
ARN From-the-Sink-Konto zur Vertrauensstellung derKA-Source-Stream-Role
Rolle im Quellkonto hinzu:Öffnen Sie das
KA-Source-Stream-Role
in der IAM Konsole.Wählen Sie die Registerkarte Trust Relationships.
Wählen Sie Edit Trust Relationship (Vertrauensstellungen bearbeiten).
Verwenden Sie den folgenden Code für die Vertrauensstellung. Ersetzen Sie die Beispielkonto-ID (
) durch Ihre Sink-Konto-ID.SINK012345678
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
:role/service-role/kinesis-analytics-MyApplication-us-west-2" }, "Action": "sts:AssumeRole" } ] }SINK012345678
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:
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
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.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.
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
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
Aktuelle Datenquelle APIs
Wenn Sie die aktuelle Datenquelle verwendenAPIs, kann Ihre Anwendung das hier
... // 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.:
Ein benutzerdefinierter Apache Kafka-Cluster, der in AWS (Amazon EC2 oder Amazon EKS
) gehostet wird Ein Confluent-Kafka-Cluster, gehostet
in AWS Ein lokaler Kafka-Cluster, auf den über oder zugegriffen wird AWS Direct Connect
VPN
Dieses Tutorial enthält die folgenden Abschnitte:
- Erstellen Sie einen VPC mit einem MSK Amazon-Cluster
- Erstellen Sie einen benutzerdefinierten Truststore und wenden Sie ihn auf Ihren Cluster an
- Erstellen Sie den Anwendungscode
- Laden Sie den Apache Flink-Streaming-Java-Code hoch
- Erstellen der Anwendung
- Konfigurieren Sie die Anwendung
- Führen Sie die Anwendung aus.
- Testen der Anwendung
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 NamenAWS KafkaTutorialTopicDestination
zu erstellen:bin/kafka-topics.sh --create --bootstrap-server
ZooKeeperConnectionString
--replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestinationAnmerkung
Wenn der
kafka-topics.sh
-Befehl eineZooKeeperClientTimeoutException
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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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.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.
-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
flink-app-1.0-SNAPSHOT.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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.
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
flink-app-1.0-SNAPSHOT.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-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.
-
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.
-
Wählen Sie unter Snapshots die Option Deaktivieren aus. Dadurch wird es einfacher, die Anwendung zu aktualisieren, ohne ungültige Anwendungsstatusdaten zu laden.
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
-
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.
Themen
Beispiel: Ein Tumbling-Fenster in Python erstellen
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Thema enthält die folgenden Abschnitte:
- Erstellen Sie abhängige Ressourcen
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Anwendungscode herunter und überprüfen Sie ihn
- Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Ressourcen bereinigen AWS
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
undExampleOutputStream
)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
undExampleOutputStream
.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
-
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'))
-
Führen Sie das
stock.py
Skript 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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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.
Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien
tumbling-windows.py
undflink-sql-connector-kinesis-1.15.2.jar
zu komprimieren. Benennen Sie das Archivmyapp.zip
.-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
myapp.zip
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
myapp.zip
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.
-
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.
Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus.
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
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.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
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Beispiel: Erstellen eines Schiebefensters in Python
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Thema enthält die folgenden Abschnitte:
- Erstellen Sie abhängige Ressourcen
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Anwendungscode herunter und überprüfen Sie ihn
- Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Ressourcen bereinigen AWS
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
undExampleOutputStream
)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
undExampleOutputStream
.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
-
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'))
-
Führen Sie das
stock.py
Skript 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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
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.
Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien
sliding-windows.py
undflink-sql-connector-kinesis-1.15.2.jar
zu komprimieren. Benennen Sie das Archivmyapp.zip
.-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
myapp.zip
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
myapp.zip
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.
-
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.
Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus.
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
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.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
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Beispiel: Streaming-Daten in Python an Amazon S3 senden
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Thema enthält die folgenden Abschnitte:
- Erstellen Sie abhängige Ressourcen
- Schreiben Sie Beispieldatensätze in den Eingabestream
- Laden Sie den Anwendungscode herunter und überprüfen Sie ihn
- Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch
- Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus
- Ressourcen bereinigen AWS
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:
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>
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
-
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'))
-
Führen Sie das
stock.py
Skript 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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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 wirdimport 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.
Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien
streaming-file-sink.py
und flink-sql-connector-kinesis-1.15.2.jarzu komprimieren. Benennen Sie das Archiv myapp.zip
.-
Wählen Sie in der Amazon S3 S3-Konsole die Option ka-app-code -
<username>
Bucket und wählen Sie Upload. -
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
myapp.zip
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
myapp.zip
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.
-
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.
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.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
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.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
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Für die CloudWatch Protokollierung aktivieren Sie das Kontrollkästchen Aktivieren.
-
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.
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
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.
Themen
Beispiel: Erstellen eines Tumbling-Fensters in Scala
Anmerkung
Aktuelle Beispiele finden Sie unter. Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen
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.
Dieses Thema enthält die folgenden Abschnitte:
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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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 SBT
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
-
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.
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie Bucket erstellen aus
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.Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.
Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.
Wählen Sie Bucket erstellen aus.
Wählen Sie den Bucket
ka-app-code-<username>
und dann Hochladen aus.-
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
tumbling-window-scala-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
tumbling-window-scala-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.
-
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.
Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus.
Geben Sie Folgendes ein:
Gruppen-ID Schlüssel Wert ProducerConfigProperties
output.stream.name
ExampleOutputStream
ProducerConfigProperties
aws.region
us-west-2
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie im Navigationsbereich Rollen und dann Rolle erstellen.
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 Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.
Wählen Sie Weiter: Berechtigungen aus.
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.
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 erstellt
MF-stream-rw-role
. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die RolleFü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.
Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.
Wählen Sie Attach Policies (Richtlinien anfügen) aus.
Geben Sie im Suchfeld
AKReadSourceStreamWriteSinkStream
(die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.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
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
start_request.json
.{ "ApplicationName": "tumbling_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
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
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
stop_request.json
.{ "ApplicationName": "tumbling_window" }
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
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" } } ] } } }
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Beispiel: Erstellen eines Schiebefensters in Scala
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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.
Dieses Thema enthält die folgenden Abschnitte:
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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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 SBT
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
-
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.
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie Bucket erstellen aus
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.Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.
Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.
Wählen Sie Bucket erstellen aus.
Wählen Sie den Bucket
ka-app-code-<username>
und dann Hochladen aus.-
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
sliding-window-scala-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
sliding-window-scala-1.0.jar.
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.
-
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.
Wählen Sie unter Eigenschaften erneut Gruppe hinzufügen aus.
Geben Sie Folgendes ein:
Gruppen-ID Schlüssel Wert ProducerConfigProperties
output.stream.name
ExampleOutputStream
ProducerConfigProperties
aws.region
us-west-2
-
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie im Navigationsbereich Rollen und dann Rolle erstellen.
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 Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.
Wählen Sie Weiter: Berechtigungen aus.
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.
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 erstellt
MF-stream-rw-role
. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die RolleFü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.
Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.
Wählen Sie Attach Policies (Richtlinien anfügen) aus.
Geben Sie im Suchfeld
AKReadSourceStreamWriteSinkStream
(die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.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
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
start_request.json
.{ "ApplicationName": "sliding_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
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
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
stop_request.json
.{ "ApplicationName": "sliding_window" }
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
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" } } ] } } }
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.
Beispiel: Streaming-Daten in Scala an Amazon S3 senden
Anmerkung
Aktuelle Beispiele finden Sie unterBeispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen.
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>.
Dieses Thema enthält die folgenden Abschnitte:
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:
Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Git installieren
. Klonen Sie das Remote-Repository mit dem folgenden Befehl:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
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 SBT
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
-
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.
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie Bucket erstellen aus
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.Lassen Sie im Schritt Optionen konfigurieren die Einstellungen unverändert und klicken Sie auf Weiter.
Lassen Sie im Schritt Berechtigungen festlegen die Einstellungen unverändert und klicken Sie auf Weiter.
Wählen Sie Bucket erstellen aus.
Wählen Sie den Bucket
ka-app-code-<username>
und dann Hochladen aus.-
Klicken Sie im Schritt Auswählen von Dateien auf Hinzufügen von Dateien. Navigieren Sie zu der
s3-sink-scala-1.0.jar
Datei, die Sie im vorherigen Schritt erstellt haben. 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
Öffnen Sie die Managed Service for Apache Flink-Konsole unter https://console.aws.amazon.com /flink
-
Wählen Sie im Dashboard Managed Service für Apache Flink die Option Analyseanwendung erstellen aus.
-
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).
-
-
Wählen Sie für Zugriffsberechtigungen die Option Rolle erstellen/aktualisieren. IAM
kinesis-analytics-MyApplication-us-west-2
-
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
-
Wählen Sie auf der MyApplicationSeite Configure aus.
-
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-
ein.<username>
-
Geben Sie als Pfad zum Amazon-S3-Objekt den Wert
s3-sink-scala-1.0.jar
ein.
-
-
Wählen Sie unter Zugriff auf Anwendungsressourcen für Zugriffsberechtigungen die Option IAMRolle erstellen/aktualisieren aus
kinesis-analytics-MyApplication-us-west-2
. -
Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.
-
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.
-
Wählen Sie unter Eigenschaften die Option Gruppe hinzufügen aus.
-
Geben Sie Folgendes ein:
Gruppen-ID Schlüssel Wert ProducerConfigProperties
s3.sink.path
s3a://ka-app-code-
<user-name>
/data -
Stellen Sie unter Überwachung sicher, dass die Ebene der Überwachungsmetriken auf Anwendung eingestellt ist.
-
Wählen Sie für die CloudWatch Protokollierung das Kontrollkästchen Aktivieren aus.
-
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. -
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. -
Wählen Sie auf der Seite Summary (Übersicht) die Option Edit policy (Richtlinie bearbeiten) aus. Wählen Sie die JSONRegisterkarte.
-
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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie im Navigationsbereich Rollen und dann Rolle erstellen.
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 Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.
Wählen Sie Weiter: Berechtigungen aus.
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.
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 erstellt
MF-stream-rw-role
. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die RolleFü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.
Wählen Sie auf der Seite Summary (Übersicht) die Registerkarte Permissions (Berechtigungen) aus.
Wählen Sie Attach Policies (Richtlinien anfügen) aus.
Geben Sie im Suchfeld
AKReadSourceStreamWriteSinkStream
(die Richtlinie, die Sie im vorhergehenden Abschnitt erstellt haben) ein.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
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
start_request.json
.{{ "ApplicationName": "s3_sink", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
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
Speichern Sie den folgenden JSON Code in einer Datei mit dem Namen
stop_request.json
.{ "ApplicationName": "s3_sink" }
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
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" } } ] } } }
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.
Dieses Thema enthält die folgenden Abschnitte:
Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
Öffnen Sie die Managed Service for Apache Flink-Konsole unter /flink https://console.aws.amazon.com
wählen Sie im Bereich Managed Service for Apache Flink die Option. MyApplication
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
Öffnen Sie die Kinesis-Konsole unter https://console.aws.amazon.com/kinesis.
Wählen Sie im Bereich Kinesis Data Streams die Option ExampleInputStream.
Wählen Sie auf der ExampleInputStreamSeite Delete Kinesis Stream aus und bestätigen Sie dann den Löschvorgang.
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
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. Wählen Sie ka-app-code -
<username>
Eimer.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
Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/
. Wählen Sie in der Navigationsleiste Policies aus.
Geben Sie in der Filtersteuerung Kinesis ein.
Wählen Sie die Richtlinie kinesis-analytics-service- MyApplication -us-west-2.
Klicken Sie auf Richtlinienaktionen und anschließend auf Löschen.
Wählen Sie in der Navigationsleiste Roles (Rollen) aus.
Wählen Sie die Rolle kinesis-analytics- MyApplication -us-west-2.
Wählen Sie dann Rolle löschen und bestätigen Sie das Löschen.
CloudWatch Löschen Sie Ihre Ressourcen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie in der Navigationsleiste Protokolle aus.
Wählen Sie die Gruppe/aws/kinesis-analytics/MyApplicationlog aus.
Wählen Sie dann Protokollgruppe löschen und bestätigen Sie das Löschen.