

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
<a name="earlier"></a>

**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 haben im Juni 2024 und Oktober 2024 über diese Änderung informiert und werden nun den Support für diese Versionen in Amazon Managed Service für Apache Flink einstellen.  
Am 14. Juli 2025 beenden wir Ihre Anwendungen und versetzen sie in den Status BEREIT. Sie können Ihre Anwendungen zu diesem Zeitpunkt neu starten und Ihre Anwendungen weiterhin wie gewohnt verwenden, vorbehaltlich der Servicebeschränkungen.
Ab dem 28. Juli 2025 deaktivieren wir die Möglichkeit, Ihre Anwendungen zu STARTEN. Ab diesem Zeitpunkt können Sie Ihre Flink-Anwendungen der Version 1.6 nicht mehr starten oder bedienen.
Wir empfehlen Ihnen, alle vorhandenen Anwendungen, die Apache Flink Version 1.6, 1.8 oder 1.11 verwenden, sofort auf Apache Flink Version 1.20 zu aktualisieren. Dies ist die neueste unterstützte Flink-Version. Sie können Ihre Anwendungen mithilfe der Funktion für direkte Versionsupgrades in Amazon Managed Service für Apache Flink aktualisieren. Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md).  
Wenn Sie weitere Fragen oder Bedenken haben, können Sie sich an uns wenden. [AWS Support](https://aws.amazon.com/support)

**Anmerkung**  
Apache Flink Version **1.13** wird seit über drei Jahren nicht mehr von der Apache Flink-Community unterstützt. Wir planen nun, den Support für diese Version in Amazon Managed Service für Apache Flink am **16. Oktober 2025 einzustellen**. Nach diesem Datum können Sie keine Anwendungen mehr mit Apache Flink Version 1.13 in Amazon Managed Service für Apache Flink erstellen, starten oder ausführen.  
Sie können Ihre Anwendungen mithilfe der Funktion für direkte Versionsupgrades in Managed Service für Apache Flink statusmäßig aktualisieren. Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md).

Version **1.15.2** wird von Managed Service für Apache Flink unterstützt, von der Apache Flink-Community jedoch nicht mehr unterstützt.

**Topics**
+ [Verwenden des Apache Flink Kinesis Streams Connectors mit früheren Apache Flink-Versionen](#how-creating-apps-building-kinesis)
+ [Erstellen von Anwendungen mit Apache Flink 1.8.2](#earlier-buildingapps-1_8)
+ [Erstellen von Anwendungen mit Apache Flink 1.6.2](#earlier-buildingapps-1_6)
+ [Anwendungen aktualisieren](#earlier-upgrading)
+ [Verfügbare Konnektoren in Apache Flink 1.6.2 und 1.8.2](#earlier-connectors)
+ [Erste Schritte: Flink 1.13.2](#getting-started-1-13)
+ [Erste Schritte: Flink 1.11.1 — veraltet](#earlier-gs-1_11)
+ [Erste Schritte: Flink 1.8.2 — veraltet](#earlier-gs-1_8)
+ [Erste Schritte: Flink 1.6.2 — veraltet](#earlier-gs-1_6)
+ [Beispiele früherer Versionen (Legacy) für Managed Service für Apache Flink](#legacy-examples)

## Verwenden des Apache Flink Kinesis Streams Connectors mit früheren Apache Flink-Versionen
<a name="how-creating-apps-building-kinesis"></a>

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 Konnektor mit [ KPL-Version 0.14.0](https://mvnrepository.com/artifact/com.amazonaws/amazon-kinesis-producer/0.14.0) oder höher erstellen. 

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

1. Stellen Sie sicher, dass Sie [Apache Maven](https://maven.apache.org/) installiert haben und dass Ihre `JAVA_HOME` Umgebungsvariable auf ein JDK und nicht auf eine JRE verweist. Sie können Ihre Apache Maven-Installation mit dem folgenden Befehl testen:

   ```
   mvn -version
   ```

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

1. Dekomprimieren Sie den Apache Flink-Quellcode:

   ```
   tar -xvf flink-1.8.2-src.tgz
   ```

1. Wechseln Sie in das Apache Flink-Quellcodeverzeichnis:

   ```
   cd flink-1.8.2
   ```

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

## Erstellen von Anwendungen mit Apache Flink 1.8.2
<a name="earlier-buildingapps-1_8"></a>

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](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/blob/master/GettingStarted_1_8/pom.xml).

Informationen zum Erstellen und Verwenden von Anwendungscode für eine Managed Service für Apache Flink-Anwendung finden Sie unter [Erstellen einer Anwendung](how-creating-apps.md).

## Erstellen von Anwendungen mit Apache Flink 1.6.2
<a name="earlier-buildingapps-1_6"></a>

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](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/blob/master/GettingStarted_1_6/pom.xml).

Informationen zum Erstellen und Verwenden von Anwendungscode für eine Managed Service für Apache Flink-Anwendung finden Sie unter [Erstellen einer Anwendung](how-creating-apps.md).

## Anwendungen aktualisieren
<a name="earlier-upgrading"></a>

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, CloudFormation oder dem. AWS-Managementkonsole Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md). 

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
<a name="earlier-connectors"></a>

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)](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/) in der [Apache Flink-Dokumentation (1.6.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.6/).
+ Informationen zu den im Apache Flink 1.8.2-Framework verfügbaren Konnektoren finden Sie unter [Konnektoren (1.8.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/connectors/) in der [Apache Flink-Dokumentation (1.8.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.8/).

## Erste Schritte: Flink 1.13.2
<a name="getting-started-1-13"></a>

In diesem Abschnitt werden Ihnen die grundlegenden Konzepte von Managed Service für Apache Flink und die DataStream API vorgestellt. 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. 

**Topics**
+ [Komponenten einer Managed Service für Apache Flink-Anwendung](#getting-started-components-1-13)
+ [Voraussetzungen für das Abschließen der Übungen](#setting-up-prerequisites-1-13)
+ [Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer](#earlier-gs-1_13-setting-up)
+ [Nächster Schritt](#earlier-gs-1_13-setup-awscli)
+ [Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein](#setup-awscli-1-13)
+ [Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus](#get-started-exercise-1-13)
+ [Schritt 4: Ressourcen bereinigen AWS](#getting-started-cleanup-1-13)
+ [Schritt 5: Nächste Schritte](#getting-started-next-steps-1-13)

### Komponenten einer Managed Service für Apache Flink-Anwendung
<a name="getting-started-components-1-13"></a>

Um Daten zu verarbeiten, verwendet Ihre Managed Service for 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](how-sources.md).
+ **Operatoren:** Die Anwendung verarbeitet Daten mithilfe eines oder mehrerer *Operatoren*. Ein Operator kann Daten transformieren, anreichern oder aggregieren. Weitere Informationen finden Sie unter [Betreiber](how-operators.md).
+ **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](how-sinks.md).

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
<a name="setting-up-prerequisites-1-13"></a>

Zur Durchführung der Schritte in dieser Anleitung benötigen Sie Folgendes:
+ [Java Development Kit (JDK) version 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). Legen Sie die `JAVA_HOME` Umgebungsvariable so fest, dass sie auf Ihren JDK-Installationsspeicherort weist.
+ Wir empfehlen die Verwendung einer Entwicklungsumgebung (wie [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) oder [IntelliJ Idea](https://www.jetbrains.com/idea/)), um Ihre Anwendung zu entwickeln und zu kompilieren.
+ [Git-Client](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben.
+ [Apache Maven-Compiler-Plugin](https://maven.apache.org/plugins/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](setting-up.md).

### Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer
<a name="earlier-gs-1_13-setting-up"></a>

#### Melde dich an für ein AWS-Konto
<a name="sign-up-for-aws"></a>

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

**Um sich für eine anzumelden AWS-Konto**

1. Öffnen Sie [https://portal.aws.amazon.com/billing/die Anmeldung.](https://portal.aws.amazon.com/billing/signup)

1. Folgen Sie den Online-Anweisungen.

   Während der Anmeldung erhalten Sie einen Telefonanruf oder eine Textnachricht und müssen einen Verifizierungscode über die Telefontasten eingeben.

   Wenn Sie sich für eine anmelden AWS-Konto, *Root-Benutzer des AWS-Kontos*wird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Benutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um [Aufgaben auszuführen, die Root-Benutzerzugriff erfordern](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

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/](https://aws.amazon.com/)gehst und **Mein Konto** auswählst.

#### Erstellen eines Benutzers mit Administratorzugriff
<a name="create-an-admin"></a>

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

**Sichern Sie Ihre Root-Benutzer des AWS-Kontos**

1.  Melden Sie sich [AWS-Managementkonsole](https://console.aws.amazon.com/)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](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) im *AWS-Anmeldung -Benutzerhandbuch* zu.

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

   Anweisungen finden Sie unter [Aktivieren eines virtuellen MFA-Geräts für Ihren AWS-Konto Root-Benutzer (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) im *IAM-Benutzerhandbuch*.

**Erstellen eines Benutzers mit Administratorzugriff**

1. Aktivieren Sie das IAM Identity Center.

   Anweisungen finden Sie unter [Aktivieren AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

1. Gewähren Sie einem Administratorbenutzer im IAM Identity Center Benutzerzugriff.

   *Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie IAM-Identity-Center-Verzeichnis im Benutzerhandbuch unter [Benutzerzugriff mit der Standardeinstellung konfigurieren](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html).AWS IAM Identity Center *

**Anmelden als Administratorbenutzer**
+ Um sich mit Ihrem IAM-Identity-Center-Benutzer anzumelden, verwenden Sie die Anmelde-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 Access-Portal](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html).

**Weiteren Benutzern Zugriff zuweisen**

1. Erstellen Sie im IAM-Identity-Center einen Berechtigungssatz, der den bewährten Vorgehensweisen für die Anwendung von geringsten Berechtigungen folgt.

   Anweisungen hierzu finden Sie unter [ Berechtigungssatz erstellen](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

1. 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](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

#### Erteilen programmgesteuerten Zugriffs
<a name="setting-up-access-gs-13"></a>

Benutzer benötigen programmatischen Zugriff, wenn sie mit AWS außerhalb des interagieren möchten. AWS-Managementkonsole 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 | 
| --- | --- | --- | 
| IAM | (Empfohlen) Verwenden Sie Konsolenanmeldeinformationen als temporäre Anmeldeinformationen, um programmatische Anfragen an AWS CLI AWS SDKs, oder zu signieren. AWS APIs |  Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 
|  Mitarbeiteridentität (Benutzer, die in IAM Identity Center verwaltet werden)  | Verwenden Sie temporäre 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 
| IAM | Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs | Folgen Sie den Anweisungen unter [Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) im IAM-Benutzerhandbuch. | 
| IAM | (Nicht empfohlen)Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs |  Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 

#### Nächster Schritt
<a name="earlier-gs-1_13-setting-up-next-step-2"></a>

[Richten Sie das AWS Command Line Interface ()AWS CLI ein](#earlier-gs-1_13-setup-awscli)

### Nächster Schritt
<a name="earlier-gs-1_13-setup-awscli"></a>

[Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein](#setup-awscli-1-13)

### Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein
<a name="setup-awscli-1-13"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) im *AWS Command Line Interface -Benutzerhandbuch*. Führen Sie den folgenden Befehl aus AWS CLI, um die Version von zu überprüfen:  

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

```
aws-cli/1.16.63
```

**Um das einzurichten AWS CLI**

1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im *AWS Command Line Interface -Benutzerhandbuch*: 
   + [Installieren des AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Konfigurieren von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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.

1. Ü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
<a name="setup-awscli-next-step-3-1-13"></a>

[Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus](#get-started-exercise-1-13)

### Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus
<a name="get-started-exercise-1-13"></a>

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

**Topics**
+ [Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams](#get-started-exercise-1-1-13)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#get-started-exercise-2-1-13)
+ [Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn](#get-started-exercise-5-1-13)
+ [Kompilieren Sie den Anwendungscode](#get-started-exercise-5.5-1-13)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#get-started-exercise-6-1-13)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#get-started-exercise-7-1-13)
+ [Nächster Schritt](#get-started-exercise-next-step-4-1-13)

#### Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams
<a name="get-started-exercise-1-1-13"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerhandbuch*. 

**So erstellen Sie die Daten-Streams (AWS CLI)**

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

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

1. 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
<a name="get-started-exercise-2-1-13"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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

   ```
       import datetime
       import json
       import random
       import boto3
       STREAM_NAME = "ExampleInputStream"
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. 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
<a name="get-started-exercise-5-1-13"></a>

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

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

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Navigieren Sie zum `amazon-kinesis-data-analytics-java-examples/GettingStarted` Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:
+ Eine [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.
+ Die `BasicStreamingJob.java`-Datei enthält die `main`-Methode, die die Funktionalität der Anwendung definiert.
+ Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Ihre Anwendung erstellt Quell- und Senkenkonnektoren für den Zugriff auf externe Ressourcen, indem ein `StreamExecutionEnvironment`-Objekt verwendet wird. 
+ Die Anwendung erstellt Quell- und Senkenkonnektoren mit statischen Eigenschaften. Zum Verwenden dynamischer Anwendungseigenschaften verwenden Sie die Methoden `createSourceFromApplicationProperties` und `createSinkFromApplicationProperties`, um die Konnektoren zu erstellen. Diese Methoden lesen die Eigenschaften der Anwendung zum Konfigurieren der Konnektoren.

  Weitere Informationen zu Laufzeiteigenschaften finden Sie unter [Verwenden Sie Laufzeiteigenschaften](how-properties.md).

#### Kompilieren Sie den Anwendungscode
<a name="get-started-exercise-5.5-1-13"></a>

In diesem Abschnitt verwenden Sie den Apache Maven-Compiler zum Erstellen des Java-Codes für die Anwendung. Weitere Informationen zum Installieren von Apache Maven und des Java Development Kit (JDK) finden Sie unter [Erfüllen Sie die Voraussetzungen für das Abschließen der Übungen](getting-started.md#setting-up-prerequisites).

**Kompilieren des Anwendungscodes**

1. Zum Verwenden Ihres Anwendungscodes kompilieren und packen Sie 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 als JAR-Datei hochladen oder komprimieren und als ZIP-Datei hochladen. Wenn Sie Ihre Anwendung mit dem erstellen AWS CLI, geben Sie Ihren Codeinhaltstyp (JAR oder ZIP) an.

1. 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
<a name="get-started-exercise-6-1-13"></a>

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

**So laden Sie den Anwendungscode hoch**

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. 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** aus.

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

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

1. 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** aus.

1. 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
<a name="get-started-exercise-7-1-13"></a>

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.

**Topics**
+ [Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)](#get-started-exercise-7-console-1-13)
+ [Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)](#get-started-exercise-7-cli-1-13)

##### Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)
<a name="get-started-exercise-7-console-1-13"></a>

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

##### Erstellen Sie die Anwendung
<a name="get-started-exercise-7-console-create-1-13"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="get-started-exercise-7-console-iam-1-13"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="get-started-exercise-7-console-configure-1-13"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **aws-kinesis-analytics-java-apps-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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.
<a name="get-started-exercise-7-console-run-1-13"></a>

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
<a name="get-started-exercise-7-console-stop-1-13"></a>

Wählen Sie auf der **MyApplication**Seite **Stopp** aus. Bestätigen Sie die Aktion.

##### Aktualisieren der Anwendung
<a name="get-started-exercise-7-console-update-1-13"></a>

Mithilfe der Konsole können Sie Anwendungseinstellungen wie beispielsweise Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der JAR-Anwendungsdatei aktualisieren. Außerdem können Sie die JAR-Anwendungsdatei erneut aus dem Amazon-S3-Bucket laden, wenn Sie den Anwendungscode aktualisieren müssen.

Wählen Sie auf der **MyApplication**Seite **Configure** aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf **Aktualisieren**.

##### Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)
<a name="get-started-exercise-7-cli-1-13"></a>

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
<a name="get-started-exercise-7-cli-policy-1-13"></a>

**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 an eine IAM-Rolle (die Sie im nächsten Abschnitt erstellen) an. 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.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) im *IAM-Benutzerhandbuch*.

**Anmerkung**  
Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK für Java verwenden. Managed Service für Apache Flink setzt die vom SDK benötigten Anmeldeinformationen automatisch auf die der IAM-Rolle für die Dienstausführung, die mit Ihrer Anwendung verknüpft ist. Es sind keine weiteren Schritte erforderlich.

##### Erstellen einer IAM-Rolle
<a name="get-started-exercise-7-cli-role-1-13"></a>

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Anwendung von Managed Service für Apache Flink annehmen kann, um einen Quell-Stream zu lesen und in den Senken-Stream zu schreiben.

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

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

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

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

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

1. 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** aus.

   Jetzt haben Sie eine neue IAM-Rolle mit dem Namen `MF-stream-rw-role` erstellt. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

1. 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](#get-started-exercise-7-cli-policy-1-13).

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

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

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

   1. 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 den ARN der neuen Rolle.

 step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter [Erstellen einer IAM-Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) im *IAM-Benutzerhandbuch*.

##### Erstellen Sie die Anwendung Managed Service für Apache Flink
<a name="get-started-exercise-7-cli-create-1-13"></a>

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `create_request.json`. Ersetzen Sie den Beispiel-Rollen-ARN durch den ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das Bucket-ARN-Suffix (`username`) mit dem Suffix, das Sie im vorherigen Abschnitt gewählt haben. Ersetzen Sie die beispielhafte Konto-ID (`012345678901`) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_15",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)-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
<a name="get-started-exercise-7-cli-start-1-13"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-Aktion, um die Anwendung zu starten.

**So starten Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-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
<a name="get-started-exercise-7-cli-stop-1-13"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-Aktion, um die Anwendung zu stoppen.

**So stoppen Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-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
<a name="get-started-exercise-7-cli-cw-1-13"></a>

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 in Managed Service für Apache Flink einrichten](cloudwatch-logs.md).

##### Umgebungseigenschaften aktualisieren
<a name="get-started-exercise-7-cli-update-env-1-13"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

**So aktualisieren Sie die Umgebungseigenschaften für die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-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
<a name="get-started-exercise-7-cli-update-code-1-13"></a>

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

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 [Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams](get-started-exercise.md#get-started-exercise-1) Abschnitt ausgewählt haben.

```
{
    "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
<a name="get-started-exercise-next-step-4-1-13"></a>

[Schritt 4: Ressourcen bereinigen AWS](#getting-started-cleanup-1-13)

### Schritt 4: Ressourcen bereinigen AWS
<a name="getting-started-cleanup-1-13"></a>

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

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#getting-started-cleanup-app-1-13)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#getting-started-cleanup-stream-1-13)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#getting-started-cleanup-s3-1-13)
+ [Löschen Sie Ihre IAM-Ressourcen](#getting-started-cleanup-iam-1-13)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#getting-started-cleanup-cw-1-13)
+ [Nächster Schritt](#getting-started-cleanup-next-step-5-1-13)

#### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="getting-started-cleanup-app-1-13"></a>

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

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

1. 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
<a name="getting-started-cleanup-stream-1-13"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="getting-started-cleanup-s3-1-13"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="getting-started-cleanup-iam-1-13"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

#### CloudWatch Löschen Sie Ihre Ressourcen
<a name="getting-started-cleanup-cw-1-13"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Nächster Schritt
<a name="getting-started-cleanup-next-step-5-1-13"></a>

[Schritt 5: Nächste Schritte](#getting-started-next-steps-1-13)

### Schritt 5: Nächste Schritte
<a name="getting-started-next-steps-1-13"></a>

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](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-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 Streaming-ETL-Beispiel, das eine reale Anwendung demonstriert, die analytische Operationen mit simulierten Taxidaten aus New York 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](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-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](https://amazonmsk-labs.workshop.aws/en/mskkdaflinklab.html)**: 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](https://catalog.workshops.aws/managed-flink):** 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](https://ci.apache.org/projects/flink/flink-docs-master/learn-flink/):** Offizielle Apache Flink-Einführungsschulung, die 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
<a name="earlier-gs-1_11"></a>

**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 am **5. November 2024 in Amazon Managed Service für Apache Flink als veraltet zu erklären**. 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 für Apache Flink statusmäßig aktualisieren. Weitere Informationen finden Sie unter. [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md)

Dieses Thema enthält eine Version des [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) Tutorials, die Apache Flink 1.11.1 verwendet.

In diesem Abschnitt werden Sie mit den grundlegenden Konzepten von Managed Service für Apache Flink und der API vertraut gemacht. DataStream 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. 

**Topics**
+ [Komponenten einer Managed Service für Apache Flink-Anwendung](#earlier-gs-1_11-components)
+ [Voraussetzungen für das Abschließen der Übungen](#earlier-gs-1_11-setting-up-prerequisites)
+ [Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer](#earlier-gs-1_11-setting-up)
+ [Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein](#earlier-gs-1_11-setup-awscli)
+ [Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus](#earlier-gs-1_11-get-started-exercise)
+ [Schritt 4: Ressourcen bereinigen AWS](#earlier-gs-1_11-cleanup)
+ [Schritt 5: Nächste Schritte](#earlier-gs-1_11-next-steps)

### Komponenten einer Managed Service für Apache Flink-Anwendung
<a name="earlier-gs-1_11-components"></a>

Um Daten zu verarbeiten, verwendet Ihre Managed Service for 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](how-sources.md).
+ **Operatoren:** Die Anwendung verarbeitet Daten mithilfe eines oder mehrerer *Operatoren*. Ein Operator kann Daten transformieren, anreichern oder aggregieren. Weitere Informationen finden Sie unter [Betreiber](how-operators.md).
+ **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](how-sinks.md).

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
<a name="earlier-gs-1_11-setting-up-prerequisites"></a>

Zur Durchführung der Schritte in dieser Anleitung benötigen Sie Folgendes:
+ [Java Development Kit (JDK) version 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). Legen Sie die `JAVA_HOME` Umgebungsvariable so fest, dass sie auf Ihren JDK-Installationsspeicherort weist.
+ Wir empfehlen die Verwendung einer Entwicklungsumgebung (wie [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) oder [IntelliJ Idea](https://www.jetbrains.com/idea/)), um Ihre Anwendung zu entwickeln und zu kompilieren.
+ [Git-Client](https://git-scm.com/book/en/v2/earlier-gs-1_11-Installing-Git). Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben.
+ [Apache Maven-Compiler-Plugin](https://maven.apache.org/plugins/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](setting-up.md).

### Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer
<a name="earlier-gs-1_11-setting-up"></a>

#### Melde dich an für ein AWS-Konto
<a name="sign-up-for-aws"></a>

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

**Um sich für eine anzumelden AWS-Konto**

1. Öffnen Sie [https://portal.aws.amazon.com/billing/die Anmeldung.](https://portal.aws.amazon.com/billing/signup)

1. Folgen Sie den Online-Anweisungen.

   Während der Anmeldung erhalten Sie einen Telefonanruf oder eine Textnachricht und müssen einen Verifizierungscode über die Telefontasten eingeben.

   Wenn Sie sich für eine anmelden AWS-Konto, *Root-Benutzer des AWS-Kontos*wird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Benutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um [Aufgaben auszuführen, die Root-Benutzerzugriff erfordern](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

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/](https://aws.amazon.com/)gehst und **Mein Konto** auswählst.

#### Erstellen eines Benutzers mit Administratorzugriff
<a name="create-an-admin"></a>

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

**Sichern Sie Ihre Root-Benutzer des AWS-Kontos**

1.  Melden Sie sich [AWS-Managementkonsole](https://console.aws.amazon.com/)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](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) im *AWS-Anmeldung -Benutzerhandbuch* zu.

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

   Anweisungen finden Sie unter [Aktivieren eines virtuellen MFA-Geräts für Ihren AWS-Konto Root-Benutzer (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) im *IAM-Benutzerhandbuch*.

**Erstellen eines Benutzers mit Administratorzugriff**

1. Aktivieren Sie das IAM Identity Center.

   Anweisungen finden Sie unter [Aktivieren AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

1. Gewähren Sie einem Administratorbenutzer im IAM Identity Center Benutzerzugriff.

   *Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie IAM-Identity-Center-Verzeichnis im Benutzerhandbuch unter [Benutzerzugriff mit der Standardeinstellung konfigurieren](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html).AWS IAM Identity Center *

**Anmelden als Administratorbenutzer**
+ Um sich mit Ihrem IAM-Identity-Center-Benutzer anzumelden, verwenden Sie die Anmelde-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 Access-Portal](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html).

**Weiteren Benutzern Zugriff zuweisen**

1. Erstellen Sie im IAM-Identity-Center einen Berechtigungssatz, der den bewährten Vorgehensweisen für die Anwendung von geringsten Berechtigungen folgt.

   Anweisungen hierzu finden Sie unter [ Berechtigungssatz erstellen](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

1. 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](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

#### Erteilen programmgesteuerten Zugriffs
<a name="setting-up-access-gs-11"></a>

Benutzer benötigen programmatischen Zugriff, wenn sie mit AWS außerhalb des interagieren möchten. AWS-Managementkonsole 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 | 
| --- | --- | --- | 
| IAM | (Empfohlen) Verwenden Sie Konsolenanmeldeinformationen als temporäre Anmeldeinformationen, um programmatische Anfragen an AWS CLI AWS SDKs, oder zu signieren. AWS APIs |  Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 
|  Mitarbeiteridentität (Benutzer, die in IAM Identity Center verwaltet werden)  | Verwenden Sie temporäre 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 
| IAM | Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs | Folgen Sie den Anweisungen unter [Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) im IAM-Benutzerhandbuch. | 
| IAM | (Nicht empfohlen)Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs |  Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 

#### Nächster Schritt
<a name="earlier-gs-1_11-setting-up-next-step-2"></a>

[Richten Sie das AWS Command Line Interface ()AWS CLI ein](#earlier-gs-1_11-setup-awscli)

### Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein
<a name="earlier-gs-1_11-setup-awscli"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) im *AWS Command Line Interface -Benutzerhandbuch*. Führen Sie den folgenden Befehl aus AWS CLI, um die Version von zu überprüfen:  

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

```
aws-cli/1.16.63
```

**Um das einzurichten AWS CLI**

1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im *AWS Command Line Interface -Benutzerhandbuch*: 
   + [Installieren des AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Konfigurieren von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-earlier-gs-1_11.html)

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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.

1. Ü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
<a name="earlier-gs-1_11-setup-awscli-next-step-3"></a>

[Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus](#earlier-gs-1_11-get-started-exercise)

### Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus
<a name="earlier-gs-1_11-get-started-exercise"></a>

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

**Topics**
+ [Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams](#earlier-gs-1_11-get-started-exercise-1)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#earlier-gs-1_11-get-started-exercise-2)
+ [Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn](#earlier-gs-1_11-get-started-exercise-5)
+ [Kompilieren Sie den Anwendungscode](#earlier-gs-1_11-get-started-exercise-5.5)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#earlier-gs-1_11-get-started-exercise-6)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#earlier-gs-1_11-get-started-exercise-7)
+ [Nächster Schritt](#earlier-gs-1_11-get-started-exercise-next-step-4)

#### Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams
<a name="earlier-gs-1_11-get-started-exercise-1"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerhandbuch*. 

**So erstellen Sie die Daten-Streams (AWS CLI)**

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

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

1. 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
<a name="earlier-gs-1_11-get-started-exercise-2"></a>

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 für Python (Boto)](https://aws.amazon.com/sdk-for-python/).

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

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. 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
<a name="earlier-gs-1_11-get-started-exercise-5"></a>

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

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

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Navigieren Sie zum `amazon-kinesis-data-analytics-java-examples/GettingStarted` Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:
+ Eine [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.
+ Die `BasicStreamingJob.java`-Datei enthält die `main`-Methode, die die Funktionalität der Anwendung definiert.
+ Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Ihre Anwendung erstellt Quell- und Senkenkonnektoren für den Zugriff auf externe Ressourcen, indem ein `StreamExecutionEnvironment`-Objekt verwendet wird. 
+ Die Anwendung erstellt Quell- und Senkenkonnektoren mit statischen Eigenschaften. Zum Verwenden dynamischer Anwendungseigenschaften verwenden Sie die Methoden `createSourceFromApplicationProperties` und `createSinkFromApplicationProperties`, um die Konnektoren zu erstellen. Diese Methoden lesen die Eigenschaften der Anwendung zum Konfigurieren der Konnektoren.

  Weitere Informationen zu Laufzeiteigenschaften finden Sie unter [Verwenden Sie Laufzeiteigenschaften](how-properties.md).

#### Kompilieren Sie den Anwendungscode
<a name="earlier-gs-1_11-get-started-exercise-5.5"></a>

In diesem Abschnitt verwenden Sie den Apache Maven-Compiler zum Erstellen des Java-Codes für die Anwendung. Weitere Informationen zum Installieren von Apache Maven und des Java Development Kit (JDK) finden Sie unter [Erfüllen Sie die Voraussetzungen für das Abschließen der Übungen](getting-started.md#setting-up-prerequisites).

**Kompilieren des Anwendungscodes**

1. Zum Verwenden Ihres Anwendungscodes kompilieren und packen Sie 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 als JAR-Datei hochladen oder komprimieren und als ZIP-Datei hochladen. Wenn Sie Ihre Anwendung mit dem erstellen AWS CLI, geben Sie Ihren Codeinhaltstyp (JAR oder ZIP) an.

1. 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
<a name="earlier-gs-1_11-get-started-exercise-6"></a>

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

**So laden Sie den Anwendungscode hoch**

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. 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** aus.

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

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

1. 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** aus.

1. 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
<a name="earlier-gs-1_11-get-started-exercise-7"></a>

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.

**Topics**
+ [Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)](#earlier-gs-1_11-get-started-exercise-7-console)
+ [Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)](#earlier-gs-1_11-get-started-exercise-7-cli)

##### Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)
<a name="earlier-gs-1_11-get-started-exercise-7-console"></a>

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

##### Erstellen der Anwendung
<a name="earlier-gs-1_11-get-started-exercise-7-console-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="earlier-gs-1_11-get-started-exercise-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="earlier-gs-1_11-get-started-exercise-7-console-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **aws-kinesis-analytics-java-apps-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

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

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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.
<a name="earlier-gs-1_11-get-started-exercise-7-console-run"></a>

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
<a name="earlier-gs-1_11-get-started-exercise-7-console-stop"></a>

Wählen Sie auf der **MyApplication**Seite **Stopp** aus. Bestätigen Sie die Aktion.

##### Aktualisieren der Anwendung
<a name="earlier-gs-1_11-get-started-exercise-7-console-update"></a>

Mithilfe der Konsole können Sie Anwendungseinstellungen wie beispielsweise Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der JAR-Anwendungsdatei aktualisieren. Außerdem können Sie die JAR-Anwendungsdatei erneut aus dem Amazon-S3-Bucket laden, wenn Sie den Anwendungscode aktualisieren müssen.

Wählen Sie auf der **MyApplication**Seite **Configure** aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf **Aktualisieren**.

##### Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)
<a name="earlier-gs-1_11-get-started-exercise-7-cli"></a>

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
<a name="earlier-gs-1_11-get-started-exercise-7-cli-policy"></a>

**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 an eine IAM-Rolle (die Sie im nächsten Abschnitt erstellen) an. 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.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) im *IAM-Benutzerhandbuch*.

**Anmerkung**  
Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK für Java verwenden. Managed Service für Apache Flink setzt die vom SDK benötigten Anmeldeinformationen automatisch auf die der IAM-Rolle für die Dienstausführung, die mit Ihrer Anwendung verknüpft ist. Es sind keine weiteren Schritte erforderlich.

##### Erstellen einer IAM-Rolle
<a name="earlier-gs-1_11-get-started-exercise-7-cli-role"></a>

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Anwendung von Managed Service für Apache Flink annehmen kann, um einen Quell-Stream zu lesen und in den Senken-Stream zu schreiben.

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

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

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

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

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

1. 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** aus.

   Jetzt haben Sie eine neue IAM-Rolle mit dem Namen `MF-stream-rw-role` erstellt. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

1. 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](#earlier-gs-1_11-get-started-exercise-7-cli-policy).

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

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

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

   1. 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 den ARN der neuen Rolle.

 step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter [Erstellen einer IAM-Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) im *IAM-Benutzerhandbuch*.

##### Erstellen Sie die Anwendung Managed Service für Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-7-cli-create"></a>

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `create_request.json`. Ersetzen Sie den Beispiel-Rollen-ARN durch den ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das Bucket-ARN-Suffix (`username`) mit dem Suffix, das Sie im vorherigen Abschnitt gewählt haben. Ersetzen Sie die beispielhafte Konto-ID (`012345678901`) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_11",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)-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
<a name="earlier-gs-1_11-get-started-exercise-7-cli-start"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-Aktion, um die Anwendung zu starten.

**So starten Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-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
<a name="earlier-gs-1_11-get-started-exercise-7-cli-stop"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-Aktion, um die Anwendung zu stoppen.

**So stoppen Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `stop_request.json`.

   ```
   {
       "ApplicationName": "test"
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-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
<a name="earlier-gs-1_11-get-started-exercise-7-cli-cw"></a>

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 in Managed Service für Apache Flink einrichten](cloudwatch-logs.md).

##### Aktualisieren Sie die Umgebungseigenschaften
<a name="earlier-gs-1_11-get-started-exercise-7-cli-update-env"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

**So aktualisieren Sie die Umgebungseigenschaften für die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-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
<a name="earlier-gs-1_11-get-started-exercise-7-cli-update-code"></a>

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

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 [Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams](#earlier-gs-1_11-get-started-exercise-1) Abschnitt ausgewählt haben.

```
{
    "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
<a name="earlier-gs-1_11-get-started-exercise-next-step-4"></a>

[Schritt 4: Ressourcen bereinigen AWS](#earlier-gs-1_11-cleanup)

### Schritt 4: Ressourcen bereinigen AWS
<a name="earlier-gs-1_11-cleanup"></a>

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

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#earlier-gs-1_11-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#earlier-gs-1_11-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#earlier-gs-1_11-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#earlier-gs-1_11-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#earlier-gs-1_11-cleanup-cw)
+ [Nächster Schritt](#earlier-gs-1_11-cleanup-next-step-5)

#### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="earlier-gs-1_11-cleanup-app"></a>

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

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

1. 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
<a name="earlier-gs-1_11-cleanup-stream"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="earlier-gs-1_11-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="earlier-gs-1_11-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

#### CloudWatch Löschen Sie Ihre Ressourcen
<a name="earlier-gs-1_11-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Nächster Schritt
<a name="earlier-gs-1_11-cleanup-next-step-5"></a>

[Schritt 5: Nächste Schritte](#earlier-gs-1_11-next-steps)

### Schritt 5: Nächste Schritte
<a name="earlier-gs-1_11-next-steps"></a>

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](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-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 Streaming-ETL-Beispiel, das eine reale Anwendung demonstriert, die analytische Operationen mit simulierten Taxidaten aus New York 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](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-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](https://amazonmsk-labs.workshop.aws/en/mskkdaflinklab.html)**: 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](https://catalog.workshops.aws/managed-flink):** 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](https://ci.apache.org/projects/flink/flink-docs-master/learn-flink/):** Offizielle Apache Flink-Einführungsschulung, die 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](https://github.com/apache/flink/tree/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples):** Eine GitHub Sammlung mit einer Vielzahl von Apache Flink-Anwendungsbeispielen. 

## Erste Schritte: Flink 1.8.2 — veraltet
<a name="earlier-gs-1_8"></a>

**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 am **5. November 2024 in Amazon Managed Service für Apache Flink als veraltet zu erklären**. 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 für Apache Flink statusmäßig aktualisieren. Weitere Informationen finden Sie unter. [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md)

Dieses Thema enthält eine Version des [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) Tutorials, die Apache Flink 1.8.2 verwendet.

**Topics**
+ [Komponenten der Anwendung Managed Service für Apache Flink](#getting-started-components)
+ [Voraussetzungen für das Abschließen der Übungen](#su-1_8-prerequisites)
+ [Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer](#earlier-gs-1_8-setting-up)
+ [Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein](#su-1_8-awscli)
+ [Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus](#earlier-gs-1_8-exercise)
+ [Schritt 4: Ressourcen bereinigen AWS](#earlier-gs-1_8-cleanup)

### Komponenten der Anwendung Managed Service für Apache Flink
<a name="getting-started-components"></a>

Um Daten zu verarbeiten, verwendet Ihre Managed Service for 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](how-sources.md).
+ **Operatoren:** Die Anwendung verarbeitet Daten mithilfe eines oder mehrerer *Operatoren*. Ein Operator kann Daten transformieren, anreichern oder aggregieren. Weitere Informationen finden Sie unter [Betreiber](how-operators.md).
+ **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](how-sinks.md).

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
<a name="su-1_8-prerequisites"></a>

Zur Durchführung der Schritte in dieser Anleitung benötigen Sie Folgendes:
+ [Java Development Kit (JDK), Version 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Legen Sie die `JAVA_HOME` Umgebungsvariable so fest, dass sie auf Ihren JDK-Installationsspeicherort weist.
+ 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](#how-creating-apps-building-kinesis).
+ Wir empfehlen die Verwendung einer Entwicklungsumgebung (wie [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) oder [IntelliJ Idea](https://www.jetbrains.com/idea/)), um Ihre Anwendung zu entwickeln und zu kompilieren.
+ [Git-Client](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben.
+ [Apache Maven-Compiler-Plugin](https://maven.apache.org/plugins/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](#earlier-gs-1_8-setting-up).

### Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer
<a name="earlier-gs-1_8-setting-up"></a>

#### Melde dich an für ein AWS-Konto
<a name="sign-up-for-aws"></a>

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

**Um sich für eine anzumelden AWS-Konto**

1. Öffnen Sie [https://portal.aws.amazon.com/billing/die Anmeldung.](https://portal.aws.amazon.com/billing/signup)

1. Folgen Sie den Online-Anweisungen.

   Während der Anmeldung erhalten Sie einen Telefonanruf oder eine Textnachricht und müssen einen Verifizierungscode über die Telefontasten eingeben.

   Wenn Sie sich für eine anmelden AWS-Konto, *Root-Benutzer des AWS-Kontos*wird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Benutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um [Aufgaben auszuführen, die Root-Benutzerzugriff erfordern](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

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/](https://aws.amazon.com/)gehst und **Mein Konto** auswählst.

#### Erstellen eines Benutzers mit Administratorzugriff
<a name="create-an-admin"></a>

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

**Sichern Sie Ihre Root-Benutzer des AWS-Kontos**

1.  Melden Sie sich [AWS-Managementkonsole](https://console.aws.amazon.com/)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](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) im *AWS-Anmeldung -Benutzerhandbuch* zu.

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

   Anweisungen finden Sie unter [Aktivieren eines virtuellen MFA-Geräts für Ihren AWS-Konto Root-Benutzer (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) im *IAM-Benutzerhandbuch*.

**Erstellen eines Benutzers mit Administratorzugriff**

1. Aktivieren Sie das IAM Identity Center.

   Anweisungen finden Sie unter [Aktivieren AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

1. Gewähren Sie einem Administratorbenutzer im IAM Identity Center Benutzerzugriff.

   *Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie IAM-Identity-Center-Verzeichnis im Benutzerhandbuch unter [Benutzerzugriff mit der Standardeinstellung konfigurieren](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html).AWS IAM Identity Center *

**Anmelden als Administratorbenutzer**
+ Um sich mit Ihrem IAM-Identity-Center-Benutzer anzumelden, verwenden Sie die Anmelde-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 Access-Portal](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html).

**Weiteren Benutzern Zugriff zuweisen**

1. Erstellen Sie im IAM-Identity-Center einen Berechtigungssatz, der den bewährten Vorgehensweisen für die Anwendung von geringsten Berechtigungen folgt.

   Anweisungen hierzu finden Sie unter [ Berechtigungssatz erstellen](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

1. 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](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

#### Erteilen programmgesteuerten Zugriffs
<a name="setting-up-access-gs-8"></a>

Benutzer benötigen programmatischen Zugriff, wenn sie mit AWS außerhalb des interagieren möchten. AWS-Managementkonsole 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 | 
| --- | --- | --- | 
| IAM | (Empfohlen) Verwenden Sie Konsolenanmeldeinformationen als temporäre Anmeldeinformationen, um programmatische Anfragen an AWS CLI AWS SDKs, oder zu signieren. AWS APIs |  Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 
|  Mitarbeiteridentität (Benutzer, die in IAM Identity Center verwaltet werden)  | Verwenden Sie temporäre 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 
| IAM | Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs | Folgen Sie den Anweisungen unter [Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) im IAM-Benutzerhandbuch. | 
| IAM | (Nicht empfohlen)Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs |  Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 

### Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein
<a name="su-1_8-awscli"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) im *AWS Command Line Interface -Benutzerhandbuch*. Führen Sie den folgenden Befehl aus AWS CLI, um die Version von zu überprüfen:  

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

```
aws-cli/1.16.63
```

**Um das einzurichten AWS CLI**

1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im *AWS Command Line Interface -Benutzerhandbuch*: 
   + [Installieren des AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Konfigurieren von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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.

1. Ü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
<a name="su-1_8-awscli-next-step-3"></a>

[Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus](#earlier-gs-1_8-exercise)

### Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus
<a name="earlier-gs-1_8-exercise"></a>

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

**Topics**
+ [Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams](#earlier-gs-1_8-exercise-1)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#earlier-gs-1_8-exercise-2)
+ [Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn](#earlier-gs-1_8-exercise-5)
+ [Kompilieren Sie den Anwendungscode](#earlier-gs-1_8-exercise-5.5)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#earlier-gs-1_8-exercise-6)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#earlier-gs-1_8-exercise-7)
+ [Nächster Schritt](#earlier-gs-1_8-exercise-next-step-4)

#### Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams
<a name="earlier-gs-1_8-exercise-1"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerhandbuch*. 

**So erstellen Sie die Daten-Streams (AWS CLI)**

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

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

1. 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
<a name="earlier-gs-1_8-exercise-2"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. 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
<a name="earlier-gs-1_8-exercise-5"></a>

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

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

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Navigieren Sie zum `amazon-kinesis-data-analytics-java-examples/GettingStarted_1_8` Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:
+ Eine [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink.
+ Die `BasicStreamingJob.java`-Datei enthält die `main`-Methode, die die Funktionalität der Anwendung definiert.
+ Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Ihre Anwendung erstellt Quell- und Senkenkonnektoren für den Zugriff auf externe Ressourcen, indem ein `StreamExecutionEnvironment`-Objekt verwendet wird. 
+ Die Anwendung erstellt Quell- und Senkenkonnektoren mit statischen Eigenschaften. Zum Verwenden dynamischer Anwendungseigenschaften verwenden Sie die Methoden `createSourceFromApplicationProperties` und `createSinkFromApplicationProperties`, um die Konnektoren zu erstellen. Diese Methoden lesen die Eigenschaften der Anwendung zum Konfigurieren der Konnektoren.

  Weitere Informationen zu Laufzeiteigenschaften finden Sie unter [Verwenden Sie Laufzeiteigenschaften](how-properties.md).

#### Kompilieren Sie den Anwendungscode
<a name="earlier-gs-1_8-exercise-5.5"></a>

In diesem Abschnitt verwenden Sie den Apache Maven-Compiler zum Erstellen des Java-Codes für die Anwendung. Weitere Informationen zum Installieren von Apache Maven und des Java Development Kit (JDK) finden Sie unter [Voraussetzungen für das Abschließen der Übungen](#su-1_8-prerequisites).

**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](#how-creating-apps-building-kinesis).**

**Kompilieren des Anwendungscodes**

1. Zum Verwenden Ihres Anwendungscodes kompilieren und packen Sie 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 als JAR-Datei hochladen oder komprimieren und als ZIP-Datei hochladen. Wenn Sie Ihre Anwendung mit dem erstellen AWS CLI, geben Sie Ihren Codeinhaltstyp (JAR oder ZIP) an.

1. 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
<a name="earlier-gs-1_8-exercise-6"></a>

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

**So laden Sie den Anwendungscode hoch**

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. 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** aus.

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

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

1. 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** aus.

1. 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
<a name="earlier-gs-1_8-exercise-7"></a>

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.

**Topics**
+ [Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)](#earlier-gs-1_8-exercise-7-console)
+ [Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)](#earlier-gs-1_8-exercise-7-cli)

##### Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)
<a name="earlier-gs-1_8-exercise-7-console"></a>

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

##### Erstellen der Anwendung
<a name="earlier-gs-1_8-exercise-7-console-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="earlier-gs-1_8-exercise-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="earlier-gs-1_8-exercise-7-console-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **aws-kinesis-analytics-java-apps-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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.
<a name="earlier-gs-1_8-exercise-7-console-run"></a>

1. Wählen Sie auf der **MyApplication**Seite die Option **Ausführen** aus. Bestätigen Sie die Aktion.

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

##### Beenden Sie die Anwendung
<a name="earlier-gs-1_8-exercise-7-console-stop"></a>

Wählen Sie auf der **MyApplication**Seite **Stopp** aus. Bestätigen Sie die Aktion.

##### Aktualisieren der Anwendung
<a name="earlier-gs-1_8-exercise-7-console-update"></a>

Mithilfe der Konsole können Sie Anwendungseinstellungen wie beispielsweise Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der JAR-Anwendungsdatei aktualisieren. Außerdem können Sie die JAR-Anwendungsdatei erneut aus dem Amazon-S3-Bucket laden, wenn Sie den Anwendungscode aktualisieren müssen.

Wählen Sie auf der **MyApplication**Seite **Configure** aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf **Aktualisieren**.

##### Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)
<a name="earlier-gs-1_8-exercise-7-cli"></a>

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
<a name="earlier-gs-1_8-exercise-7-cli-policy"></a>

**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 an eine IAM-Rolle (die Sie im nächsten Abschnitt erstellen) an. 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.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) im *IAM-Benutzerhandbuch*.

**Anmerkung**  
Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK für Java verwenden. Managed Service für Apache Flink setzt die vom SDK benötigten Anmeldeinformationen automatisch auf die der IAM-Rolle für die Dienstausführung, die mit Ihrer Anwendung verknüpft ist. Es sind keine weiteren Schritte erforderlich.

##### Erstellen einer IAM-Rolle
<a name="earlier-gs-1_8-exercise-7-cli-role"></a>

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Anwendung von Managed Service für Apache Flink annehmen kann, um einen Quell-Stream zu lesen und in den Senken-Stream zu schreiben.

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

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

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

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

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

1. 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** aus.

   Jetzt haben Sie eine neue IAM-Rolle mit dem Namen `MF-stream-rw-role` erstellt. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

1. 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](#earlier-gs-1_8-exercise-7-cli-policy).

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

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

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

   1. 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 den ARN der neuen Rolle.

 step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter [Erstellen einer IAM-Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) im *IAM-Benutzerhandbuch*.

##### Erstellen Sie die Anwendung Managed Service für Apache Flink
<a name="earlier-gs-1_8-exercise-7-cli-create"></a>

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `create_request.json`. Ersetzen Sie den Beispiel-Rollen-ARN durch den ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das Bucket-ARN-Suffix (`username`) mit dem Suffix, das Sie im vorherigen Abschnitt gewählt haben. Ersetzen Sie die beispielhafte Konto-ID (`012345678901`) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_8",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)-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
<a name="earlier-gs-1_8-exercise-7-cli-start"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-Aktion, um die Anwendung zu starten.

**So starten Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-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
<a name="earlier-gs-1_8-exercise-7-cli-stop"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-Aktion, um die Anwendung zu stoppen.

**So stoppen Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-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
<a name="earlier-gs-1_8-exercise-7-cli-cw"></a>

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 in Managed Service für Apache Flink einrichten](cloudwatch-logs.md).

##### Aktualisieren Sie die Umgebungseigenschaften
<a name="earlier-gs-1_8-exercise-7-cli-update-env"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

**So aktualisieren Sie die Umgebungseigenschaften für die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-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
<a name="earlier-gs-1_8-exercise-7-cli-update-code"></a>

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

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 [Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams](#earlier-gs-1_8-exercise-1) Abschnitt ausgewählt haben.

```
{
    "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
<a name="earlier-gs-1_8-exercise-next-step-4"></a>

[Schritt 4: Ressourcen bereinigen AWS](#earlier-gs-1_8-cleanup)

### Schritt 4: Ressourcen bereinigen AWS
<a name="earlier-gs-1_8-cleanup"></a>

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

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#earlier-gs-1_8-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#earlier-gs-1_8-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#earlier-gs-1_8-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#earlier-gs-1_8-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#earlier-gs-1_8-cleanup-cw)

#### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="earlier-gs-1_8-cleanup-app"></a>

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

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

1. Wählen Sie **Konfigurieren** aus.

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

1. 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
<a name="earlier-gs-1_8-cleanup-stream"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="earlier-gs-1_8-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="earlier-gs-1_8-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

#### CloudWatch Löschen Sie Ihre Ressourcen
<a name="earlier-gs-1_8-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

## Erste Schritte: Flink 1.6.2 — veraltet
<a name="earlier-gs-1_6"></a>

**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 am **5. November 2024 in Amazon Managed Service für Apache Flink als veraltet zu erklären**. 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 für Apache Flink statusmäßig aktualisieren. Weitere Informationen finden Sie unter. [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md)

Dieses Thema enthält eine Version des [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) Tutorials, die Apache Flink 1.6.2 verwendet.

**Topics**
+ [Komponenten einer Managed Service für Apache Flink-Anwendung](#earlier-gs-1_6-components)
+ [Voraussetzungen für das Abschließen der Übungen](#su-1_6-prerequisites)
+ [Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer](#earlier-gs-1_6-setting-up)
+ [Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein](#su-1_6-awscli)
+ [Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus](#earlier-gs-1_6-exercise)
+ [Schritt 4: Ressourcen bereinigen AWS](#earlier-gs-1_6-cleanup)

### Komponenten einer Managed Service für Apache Flink-Anwendung
<a name="earlier-gs-1_6-components"></a>

Um Daten zu verarbeiten, verwendet Ihre Managed Service for 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](how-sources.md).
+ **Operatoren:** Die Anwendung verarbeitet Daten mithilfe eines oder mehrerer *Operatoren*. Ein Operator kann Daten transformieren, anreichern oder aggregieren. Weitere Informationen finden Sie unter [Betreiber](how-operators.md).
+ **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](how-sinks.md).

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
<a name="su-1_6-prerequisites"></a>

Zur Durchführung der Schritte in dieser Anleitung benötigen Sie Folgendes:
+ [Java Development Kit (JDK), Version 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Legen Sie die `JAVA_HOME` Umgebungsvariable so fest, dass sie auf Ihren JDK-Installationsspeicherort weist.
+ Wir empfehlen die Verwendung einer Entwicklungsumgebung (wie [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) oder [IntelliJ Idea](https://www.jetbrains.com/idea/)), um Ihre Anwendung zu entwickeln und zu kompilieren.
+ [Git-Client.](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben.
+ [Apache Maven-Compiler-Plugin](https://maven.apache.org/plugins/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](#earlier-gs-1_6-setting-up).

### Schritt 1: Richten Sie ein AWS Konto ein und erstellen Sie einen Administratorbenutzer
<a name="earlier-gs-1_6-setting-up"></a>

#### Melde dich an für ein AWS-Konto
<a name="sign-up-for-aws"></a>

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

**Um sich für eine anzumelden AWS-Konto**

1. Öffnen Sie [https://portal.aws.amazon.com/billing/die Anmeldung.](https://portal.aws.amazon.com/billing/signup)

1. Folgen Sie den Online-Anweisungen.

   Während der Anmeldung erhalten Sie einen Telefonanruf oder eine Textnachricht und müssen einen Verifizierungscode über die Telefontasten eingeben.

   Wenn Sie sich für eine anmelden AWS-Konto, *Root-Benutzer des AWS-Kontos*wird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Benutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um [Aufgaben auszuführen, die Root-Benutzerzugriff erfordern](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

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/](https://aws.amazon.com/)gehst und **Mein Konto** auswählst.

#### Erstellen eines Benutzers mit Administratorzugriff
<a name="create-an-admin"></a>

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

**Sichern Sie Ihre Root-Benutzer des AWS-Kontos**

1.  Melden Sie sich [AWS-Managementkonsole](https://console.aws.amazon.com/)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](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) im *AWS-Anmeldung -Benutzerhandbuch* zu.

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

   Anweisungen finden Sie unter [Aktivieren eines virtuellen MFA-Geräts für Ihren AWS-Konto Root-Benutzer (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) im *IAM-Benutzerhandbuch*.

**Erstellen eines Benutzers mit Administratorzugriff**

1. Aktivieren Sie das IAM Identity Center.

   Anweisungen finden Sie unter [Aktivieren AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

1. Gewähren Sie einem Administratorbenutzer im IAM Identity Center Benutzerzugriff.

   *Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie IAM-Identity-Center-Verzeichnis im Benutzerhandbuch unter [Benutzerzugriff mit der Standardeinstellung konfigurieren](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html).AWS IAM Identity Center *

**Anmelden als Administratorbenutzer**
+ Um sich mit Ihrem IAM-Identity-Center-Benutzer anzumelden, verwenden Sie die Anmelde-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 Access-Portal](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html).

**Weiteren Benutzern Zugriff zuweisen**

1. Erstellen Sie im IAM-Identity-Center einen Berechtigungssatz, der den bewährten Vorgehensweisen für die Anwendung von geringsten Berechtigungen folgt.

   Anweisungen hierzu finden Sie unter [ Berechtigungssatz erstellen](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

1. 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](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

#### Erteilen programmgesteuerten Zugriffs
<a name="setting-up-access-gs-6"></a>

Benutzer benötigen programmatischen Zugriff, wenn sie mit AWS außerhalb des interagieren möchten. AWS-Managementkonsole 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 | 
| --- | --- | --- | 
| IAM | (Empfohlen) Verwenden Sie Konsolenanmeldeinformationen als temporäre Anmeldeinformationen, um programmatische Anfragen an AWS CLI AWS SDKs, oder zu signieren. AWS APIs |  Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 
|  Mitarbeiteridentität (Benutzer, die in IAM Identity Center verwaltet werden)  | Verwenden Sie temporäre 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 
| IAM | Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs | Folgen Sie den Anweisungen unter [Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) im IAM-Benutzerhandbuch. | 
| IAM | (Nicht empfohlen)Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an das AWS CLI AWS SDKs, oder zu signieren. AWS APIs |  Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)  | 

### Schritt 2: Richten Sie das AWS Command Line Interface ()AWS CLI ein
<a name="su-1_6-awscli"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) im *AWS Command Line Interface -Benutzerhandbuch*. Führen Sie den folgenden Befehl aus AWS CLI, um die Version von zu überprüfen:  

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

```
aws-cli/1.16.63
```

**Um das einzurichten AWS CLI**

1. Herunterladen und Konfigurieren von AWS CLI. Eine Anleitung finden Sie unter den folgenden Themen im *AWS Command Line Interface -Benutzerhandbuch*: 
   + [Installieren des AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Konfigurieren von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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.

1. Ü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
<a name="su-1_6-next-step-3"></a>

[Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus](#earlier-gs-1_6-exercise)

### Schritt 3: Erstellen Sie eine Managed Service für Apache Flink-Anwendung und führen Sie sie aus
<a name="earlier-gs-1_6-exercise"></a>

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

**Topics**
+ [Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams](#earlier-gs-1_6-exercise-1)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#earlier-gs-1_6-exercise-2)
+ [Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn](#earlier-gs-1_6-exercise-5)
+ [Kompilieren Sie den Anwendungscode](#earlier-gs-1_6-exercise-5.5)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#earlier-gs-1_6-exercise-6)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#earlier-gs-1_6-exercise-7)

#### Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams
<a name="earlier-gs-1_6-exercise-1"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerhandbuch*. 

**So erstellen Sie die Daten-Streams (AWS CLI)**

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

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

1. 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
<a name="earlier-gs-1_6-exercise-2"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. 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
<a name="earlier-gs-1_6-exercise-5"></a>

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

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

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Navigieren Sie zum `amazon-kinesis-data-analytics-java-examples/GettingStarted_1_6` Verzeichnis .

Beachten Sie Folgendes zum Anwendungscode:
+ Eine [Project Object Model (pom.xml)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) Datei enthält Informationen über die Konfiguration und Abhängigkeiten der Anwendung, einschließlich der Bibliotheken des Managed Service für Apache Flink .
+ Die `BasicStreamingJob.java`-Datei enthält die`main` -Methode, die die Funktionalität der Anwendung definiert.
+ Die Anwendung verwendet eine Kinesis-Quelle zum Lesen aus dem Quell-Stream. Der folgende Codeausschnitt erstellt die Kinesis-Quelle:

  ```
  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName,
                  new SimpleStringSchema(), inputProperties));
  ```
+ Ihre Anwendung erstellt Quell- und Senkenkonnektoren für den Zugriff auf externe Ressourcen, indem ein `StreamExecutionEnvironment`-Objekt verwendet wird. 
+ Die Anwendung erstellt Quell- und Senkenkonnektoren mit statischen Eigenschaften. Zum Verwenden dynamischer Anwendungseigenschaften verwenden Sie die Methoden `createSourceFromApplicationProperties` und `createSinkFromApplicationProperties`, um die Konnektoren zu erstellen. Diese Methoden lesen die Eigenschaften der Anwendung zum Konfigurieren der Konnektoren.

  Weitere Informationen zu Laufzeiteigenschaften finden Sie unter [Verwenden Sie Laufzeiteigenschaften](how-properties.md).

#### Kompilieren Sie den Anwendungscode
<a name="earlier-gs-1_6-exercise-5.5"></a>

In diesem Abschnitt verwenden Sie den Apache Maven-Compiler zum Erstellen des Java-Codes für die Anwendung. Weitere Informationen zum Installieren von Apache Maven und des Java Development Kit (JDK) finden Sie unter [Voraussetzungen für das Abschließen der Übungen](#su-1_6-prerequisites).

**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](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/kinesis.html)**.

**Kompilieren des Anwendungscodes**

1. Zum Verwenden Ihres Anwendungscodes kompilieren und packen Sie 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](how-creating-apps.md#how-creating-apps-building-flink).
   + Verwenden Sie Ihre Entwicklungsumgebung. Weitere Informationen finden Sie in der Dokumentation Ihrer Entwicklungsumgebung.

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

1. 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
<a name="earlier-gs-1_6-exercise-6"></a>

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

**So laden Sie den Anwendungscode hoch**

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. 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** aus.

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

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

1. 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** aus.

1. Lassen Sie im Schritt **Berechtigungen festlegen** die Einstellungen unverändert. Wählen Sie **Weiter** aus.

1. Lassen Sie im Schritt **Eigenschaften festlegen** die Einstellungen unverändert. Klicken Sie auf **Upload**.

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
<a name="earlier-gs-1_6-exercise-7"></a>

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.

**Topics**
+ [Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)](#earlier-gs-1_6-exercise-7-console)
+ [Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)](#earlier-gs-1_6-exercise-7-cli)

##### Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)
<a name="earlier-gs-1_6-exercise-7-console"></a>

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

##### Erstellen der Anwendung
<a name="earlier-gs-1_6-exercise-7-console-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="earlier-gs-1_6-exercise-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="earlier-gs-1_6-exercise-7-console-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **java-getting-started-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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.
<a name="earlier-gs-1_6-exercise-7-console-run"></a>

1. Wählen Sie auf der **MyApplication**Seite die Option **Ausführen** aus. Bestätigen Sie die Aktion.

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

##### Beenden Sie die Anwendung
<a name="earlier-gs-1_6-exercise-7-console-stop"></a>

Wählen Sie auf der **MyApplication**Seite **Stopp** aus. Bestätigen Sie die Aktion.

##### Aktualisieren der Anwendung
<a name="earlier-gs-1_6-exercise-7-console-update"></a>

Mithilfe der Konsole können Sie Anwendungseinstellungen wie beispielsweise Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der JAR-Anwendungsdatei aktualisieren. Außerdem können Sie die JAR-Anwendungsdatei erneut aus dem Amazon-S3-Bucket laden, wenn Sie den Anwendungscode aktualisieren müssen.

Wählen Sie auf der **MyApplication**Seite **Configure** aus. Aktualisieren Sie die Anwendungseinstellungen und klicken Sie auf **Aktualisieren**.

##### Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)
<a name="earlier-gs-1_6-exercise-7-cli"></a>

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
<a name="earlier-gs-1_6-exercise-7-cli-policy"></a>

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 an eine IAM-Rolle (die Sie im nächsten Abschnitt erstellen) an. 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.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) im *IAM-Benutzerhandbuch*.

**Anmerkung**  
Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK für Java verwenden. Managed Service für Apache Flink setzt die vom SDK benötigten Anmeldeinformationen automatisch auf die der IAM-Rolle für die Dienstausführung, die mit Ihrer Anwendung verknüpft ist. Es sind keine weiteren Schritte erforderlich.

##### Erstellen einer IAM-Rolle
<a name="earlier-gs-1_6-exercise-7-cli-role"></a>

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Anwendung von Managed Service für Apache Flink annehmen kann, um einen Quell-Stream zu lesen und in den Senken-Stream zu schreiben.

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

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

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

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

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

1. 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** aus.

   Jetzt haben Sie eine neue IAM-Rolle mit dem Namen `MF-stream-rw-role` erstellt. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

1. 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](#earlier-gs-1_6-exercise-7-cli-policy).

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

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

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

   1. 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 den ARN der neuen Rolle.

 step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter [Erstellen einer IAM-Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) im *IAM-Benutzerhandbuch*.

##### Erstellen Sie die Anwendung Managed Service für Apache Flink
<a name="earlier-gs-1_6-exercise-7-cli-create"></a>

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `create_request.json`. Ersetzen Sie den Beispiel-Rollen-ARN durch den ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das Bucket-ARN-Suffix (`username`) mit dem Suffix, das Sie im vorherigen Abschnitt gewählt haben. Ersetzen Sie die beispielhafte Konto-ID (`012345678901`) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_6",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "java-getting-started-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           },
           "EnvironmentProperties":  { 
            "PropertyGroups": [ 
               { 
                  "PropertyGroupId": "ProducerConfigProperties",
                  "PropertyMap" : {
                       "flink.stream.initpos" : "LATEST",
                       "aws.region" : "us-west-2",
                       "AggregationEnabled" : "false"
                  }
               },
               { 
                  "PropertyGroupId": "ConsumerConfigProperties",
                  "PropertyMap" : {
                       "aws.region" : "us-west-2"
                  }
               }
            ]
         }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)-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
<a name="earlier-gs-1_6-exercise-7-cli-start"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-Aktion, um die Anwendung zu starten.

**So starten Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-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
<a name="earlier-gs-1_6-exercise-7-cli-stop"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-Aktion, um die Anwendung zu stoppen.

**So stoppen Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-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
<a name="earlier-gs-1_6-exercise-7-cli-cw"></a>

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 in Managed Service für Apache Flink einrichten](cloudwatch-logs.md).

##### Aktualisieren Sie die Umgebungseigenschaften
<a name="earlier-gs-1_6-exercise-7-cli-update-env"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

**So aktualisieren Sie die Umgebungseigenschaften für die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-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
<a name="earlier-gs-1_6-exercise-7-cli-update-code"></a>

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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 auf`UpdateApplication`, 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 [Erstellen Sie zwei Amazon Kinesis Kinesis-Datenstreams](#earlier-gs-1_6-exercise-1) 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"
                }
            }
        }
    }
}
```

### Schritt 4: Ressourcen bereinigen AWS
<a name="earlier-gs-1_6-cleanup"></a>

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

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#earlier-gs-1_6-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#earlier-gs-1_6-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#earlier-gs-1_6-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#earlier-gs-1_6-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#earlier-gs-1_6-cleanup-cw)

#### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="earlier-gs-1_6-cleanup-app"></a>

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

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

1. Wählen Sie **Konfigurieren** aus.

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

1. 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
<a name="earlier-gs-1_6-cleanup-stream"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="earlier-gs-1_6-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="earlier-gs-1_6-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

#### CloudWatch Löschen Sie Ihre Ressourcen
<a name="earlier-gs-1_6-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

1. 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
<a name="legacy-examples"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

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: 
+ [Funktionsweise](how-it-works.md)
+ [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md)

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

**Topics**
+ [DataStream API-Beispiele](#examples-datastream)
+ [Python-Beispiele](#examples-python)
+ [Scala-Beispiele](#examples-scala)

### DataStream API-Beispiele
<a name="examples-datastream"></a>

Die folgenden Beispiele zeigen, wie Anwendungen mithilfe der Apache DataStream Flink-API erstellt werden.

**Topics**
+ [Beispiel: Taumelndes Fenster](#examples-tumbling)
+ [Beispiel: Schiebefenster](#examples-sliding)
+ [Beispiel: In einen Amazon S3 S3-Bucket schreiben](#examples-s3)
+ [Tutorial: Verwenden einer Managed Service for Apache Flink-Anwendung, um Daten von einem Thema in einem MSK-Cluster zu einem anderen in einer VPC zu replizieren](#example-msk)
+ [Beispiel: Verwenden Sie einen EFO-Consumer mit einem Kinesis-Datenstream](#examples-efo)
+ [Beispiel: An Firehose schreiben](#get-started-exercise-fh)
+ [Beispiel: Aus einem Kinesis-Stream in einem anderen Konto lesen](#examples-cross)
+ [Tutorial: Einen benutzerdefinierten Truststore mit Amazon MSK verwenden](#example-keystore)

#### Beispiel: Taumelndes Fenster
<a name="examples-tumbling"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

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 der DataStream API in Managed Service für Apache Flink](getting-started.md)-Übung ab.

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#examples-tumbling-resources)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#examples-tumbling-write)
+ [Laden Sie den Anwendungscode herunter und untersuchen Sie ihn](#examples-tumbling-download)
+ [Kompilieren Sie den Anwendungscode](#examples-tumbling-compile)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#examples-tumbling-upload)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#examples-tumbling-create-run)
+ [Ressourcen bereinigen AWS](#examples-tumbling-cleanup)

##### Erstellen Sie abhängige Ressourcen
<a name="examples-tumbling-resources"></a>

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen: 
+ Zwei Kinesis Data Streams (`ExampleInputStream` und `ExampleOutputStream`)
+ Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (`ka-app-code-<username>`) 

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:
+ [Data Streams erstellen und aktualisieren](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerleitfaden*. Benennen Sie Ihren Data Stream **ExampleInputStream** und **ExampleOutputStream**.
+ [Wie erstelle ich einen S3-Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-tumbling-write"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. 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
<a name="examples-tumbling-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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
<a name="examples-tumbling-compile"></a>

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter [Erfüllen Sie die erforderlichen Voraussetzungen](getting-started.md#setting-up-prerequisites) im [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) Tutorial.

1. 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-Datei der Anwendung (`target/aws-kinesis-analytics-java-apps-1.0.jar`) erstellt.

##### Laden Sie den Apache Flink-Streaming-Java-Code hoch
<a name="examples-tumbling-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in das Amazon S3-Bucket hoch, das Sie im [Erstellen Sie abhängige Ressourcen](#examples-tumbling-resources) Abschnitt erstellt haben.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

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

1. 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
<a name="examples-tumbling-create-run"></a>

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

##### Erstellen der Anwendung
<a name="examples-tumbling-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="get-started-exercise-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="examples-tumbling-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **aws-kinesis-analytics-java-apps-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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.
<a name="examples-tumbling-run"></a>

1. Wählen Sie auf der **MyApplication**Seite die Option **Ausführen** aus. Lassen Sie die Option **Ohne Snapshot ausführen** aktiviert und bestätigen Sie die Aktion.

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

##### Ressourcen bereinigen AWS
<a name="examples-tumbling-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tumbling Window-Tutorial erstellt wurden.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-tumbling-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-tumbling-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#examples-tumbling-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-tumbling-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-tumbling-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-tumbling-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

1. wählen Sie im Bereich Managed Service for Apache Flink die Option. **MyApplication**

1. 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
<a name="examples-tumbling-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="examples-tumbling-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-tumbling-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-tumbling-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Beispiel: Schiebefenster
<a name="examples-sliding"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

**Anmerkung**  
Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md)-Übung ab.

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#examples-sliding-resources)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#examples-sliding-write)
+ [Laden Sie den Anwendungscode herunter und untersuchen Sie ihn](#examples-sliding-download)
+ [Kompilieren Sie den Anwendungscode](#examples-sliding-compile)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#examples-sliding-upload)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#examples-sliding-create-run)
+ [Ressourcen bereinigen AWS](#examples-sliding-cleanup)

##### Erstellen Sie abhängige Ressourcen
<a name="examples-sliding-resources"></a>

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen: 
+ Zwei Kinesis-Datenströme (`ExampleInputStream` und `ExampleOutputStream`).
+ Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (`ka-app-code-<username>`) 

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:
+ [Data Streams erstellen und aktualisieren](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerleitfaden*. Benennen Sie Ihre Data Streams **ExampleInputStream** und **ExampleOutputStream**.
+ [Wie erstelle ich einen S3-Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-sliding-write"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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

   ```
    
   import datetime
   import json
   import random
   import boto3
   
   STREAM_NAME = "ExampleInputStream"
   
   
   def get_data():
       return {
           "EVENT_TIME": datetime.datetime.now().isoformat(),
           "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]),
           "PRICE": round(random.random() * 100, 2),
       }
   
   
   def generate(stream_name, kinesis_client):
       while True:
           data = get_data()
           print(data)
           kinesis_client.put_record(
               StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey"
           )
   
   
   if __name__ == "__main__":
       generate(STREAM_NAME, boto3.client("kinesis"))
   ```

1. 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
<a name="examples-sliding-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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
<a name="examples-sliding-compile"></a>

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter [Erfüllen Sie die erforderlichen Voraussetzungen](getting-started.md#setting-up-prerequisites) im [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) Tutorial.

1. 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-Datei der Anwendung (`target/aws-kinesis-analytics-java-apps-1.0.jar`) erstellt.

##### Laden Sie den Apache Flink-Streaming-Java-Code hoch
<a name="examples-sliding-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Abschnitt [Erstellen Sie abhängige Ressourcen](#examples-sliding-resources) erstellt haben.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie dann **Upload** aus.

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

1. 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
<a name="examples-sliding-create-run"></a>

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

##### Erstellen der Anwendung
<a name="examples-sliding-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="get-started-exercise-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="examples-sliding-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **aws-kinesis-analytics-java-apps-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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
<a name="examples-sliding-parallelism"></a>

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 [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)oder [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)abrufen.

##### Führen Sie die Anwendung aus.
<a name="examples-sliding-run"></a>

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
<a name="examples-sliding-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Sliding Window-Lernprogramm erstellt wurden.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-sliding-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-sliding-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#examples-sliding-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-sliding-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-sliding-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-sliding-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

1. 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
<a name="examples-sliding-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="examples-sliding-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-sliding-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-sliding-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Beispiel: In einen Amazon S3 S3-Bucket schreiben
<a name="examples-s3"></a>

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 der DataStream API in Managed Service für Apache Flink](getting-started.md)-Übung ab.

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#examples-s3-resources)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#examples-s3-write)
+ [Laden Sie den Anwendungscode herunter und untersuchen Sie ihn](#examples-s3-download)
+ [Ändern Sie den Anwendungscode](#examples-s3-modify)
+ [Kompilieren Sie den Anwendungscode](#examples-s3-compile)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#examples-s3-upload)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#examples-s3-create-run)
+ [Überprüfen Sie die Anwendungsausgabe](#examples-s3-verify)
+ [Optional: Passen Sie Quelle und Senke an](#examples-s3-customize)
+ [AWS Ressourcen bereinigen](#examples-s3-cleanup)

##### Erstellen Sie abhängige Ressourcen
<a name="examples-s3-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerleitfaden*. Benennen Sie Ihren Data Stream **ExampleInputStream**.
+ [Wie erstelle ich einen S3-Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) im *Amazon Simple Storage Service Benutzerhandbuch*. Geben Sie dem Amazon S3-Bucket einen global eindeutigen Namen, indem Sie Ihren Anmeldenamen anhängen, z. B. **ka-app-code-*<username>***. Erstellen Sie zwei Ordner (**code** und **data**) im Amazon S3-Bucket.

Die Anwendung erstellt die folgenden CloudWatch Ressourcen, sofern sie noch nicht vorhanden sind:
+ Eine Protokollgruppe namens `/AWS/KinesisAnalytics-java/MyApplication`.
+ Einen Protokollstream mit dem Namen `kinesis-analytics-log-stream`.

##### Schreiben Sie Beispieldatensätze in den Eingabestream
<a name="examples-s3-write"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. 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
<a name="examples-s3-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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 [StreamingFileSink](https://nightlies.apache.org/flink/flink-docs-release-1.13/dev/connectors/streamfile_sink.html)in der `StreamingFileSink` [Apache Flink-Dokumentation](https://nightlies.apache.org/flink/flink-docs-release-1.13/).

##### Ändern Sie den Anwendungscode
<a name="examples-s3-modify"></a>

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
<a name="examples-s3-compile"></a>

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter [Erfüllen Sie die erforderlichen Voraussetzungen](getting-started.md#setting-up-prerequisites) im [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) Tutorial.

1. Kompilieren Sie die Anwendung mit dem folgenden Befehl: 

   ```
   mvn package -Dflink.version=1.15.3
   ```

Beim Kompilieren der Anwendung wird die JAR-Datei der Anwendung (`target/aws-kinesis-analytics-java-apps-1.0.jar`) erstellt.

**Anmerkung**  
Der bereitgestellte Quellcode basiert auf Bibliotheken von Java 11. 

##### Laden Sie den Apache Flink-Streaming-Java-Code hoch
<a name="examples-s3-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in das Amazon S3-Bucket hoch, das Sie im [Erstellen Sie abhängige RessourcenSchreiben Sie Beispieldatensätze in den Eingabestream](#examples-s3-resources) Abschnitt erstellt haben.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** aus, navigieren Sie zum **Code-Ordner** und wählen Sie **Upload**.

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

1. 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
<a name="examples-s3-create-run"></a>

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

##### Erstellen der Anwendung
<a name="examples-s3-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.
**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der 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)**.

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen eines Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="get-started-exercise-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf den Kinesis Data Stream.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

1. 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
<a name="examples-s3-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **code/aws-kinesis-analytics-java-apps-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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.
<a name="examples-s3-run"></a>

1. Wählen Sie auf der **MyApplication**Seite die Option **Ausführen** aus. Lassen Sie die Option **Ohne Snapshot ausführen** aktiviert und bestätigen Sie die Aktion.

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

##### Überprüfen Sie die Anwendungsausgabe
<a name="examples-s3-verify"></a>

Ö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
<a name="examples-s3-customize"></a>

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](#examples-s3-compile)-Abschnitt, um den aktualisierten Anwendungscode zu kompilieren.
Wiederholen Sie die Schritte im [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#examples-s3-upload)-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.

**Topics**
+ [Konfigurieren Sie die Datenpartitionierung](#examples-s3-configure-partition)
+ [Lesehäufigkeit konfigurieren](#examples-s3-configure-read)
+ [Konfigurieren Sie die Schreibpufferung](#examples-s3-configure-write)

##### Konfigurieren Sie die Datenpartitionierung
<a name="examples-s3-configure-partition"></a>

In diesem Abschnitt konfigurieren Sie die Namen der Ordner, die die Streaming-Dateisenke im S3-Bucket erstellt. Dies geschieht, indem Sie der Streaming-Dateisenke einen Bucket-Assigner hinzufügen.

Gehen Sie wie folgt vor, um die im S3-Bucket erstellten Ordnernamen anzupassen:

1. Fügen Sie am Anfang der `S3StreamingSinkJob.java`-Datei die folgenden Importanweisungen hinzu:

   ```
   import org.apache.flink.streaming.api.functions.sink.filesystem.rollingpolicies.DefaultRollingPolicy;
   import org.apache.flink.streaming.api.functions.sink.filesystem.bucketassigners.DateTimeBucketAssigner;
   ```

1. Aktualisieren Sie die `createS3SinkFromStaticConfig()`-Methode im Code so, dass sie wie folgt aussieht:

   ```
   private static StreamingFileSink<String> createS3SinkFromStaticConfig() {
   
       final StreamingFileSink<String> sink = StreamingFileSink
           .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
           .withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH"))
           .withRollingPolicy(DefaultRollingPolicy.create().build())
           .build();
       return sink;
   }
   ```

Im vorherigen Codebeispiel wird `DateTimeBucketAssigner` mit einem benutzerdefinierten Datumsformat verwendet, um Ordner im S3-Bucket zu erstellen. Der `DateTimeBucketAssigner` verwendet die aktuelle Systemzeit, um Bucket-Namen zu erstellen. Wenn Sie einen benutzerdefinierten Bucket-Assigner erstellen möchten, um die erstellten Ordnernamen weiter anzupassen, können Sie eine Klasse erstellen, die dies implementiert. [BucketAssigner](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/streaming/api/functions/sink/filesystem/BucketAssigner.html) Sie implementieren Ihre benutzerdefinierte Logik mithilfe der Methode `getBucketId`.

Eine benutzerdefinierte Implementierung von `BucketAssigner` kann den [Kontext](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/streaming/api/functions/sink/filesystem/BucketAssigner.Context.html)-Parameter verwenden, um weitere Informationen zu einem Datensatz abzurufen und seinen Zielordner zu bestimmen.

##### Lesehäufigkeit konfigurieren
<a name="examples-s3-configure-read"></a>

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
<a name="examples-s3-configure-write"></a>

In diesem Abschnitt konfigurieren Sie die Schreibfrequenz und andere Einstellungen der Senke.

Standardmäßig schreibt die Anwendung jede Minute in den Ziel-Bucket. Sie können dieses Intervall und andere Einstellungen ändern, indem Sie das `DefaultRollingPolicy`-Objekt konfigurieren.

**Anmerkung**  
Die Apache Flink-Streaming-Dateisenke schreibt jedes Mal in ihren Ausgabe-Bucket, wenn die Anwendung einen Prüfpunkt erstellt. Die Anwendung erstellt standardmäßig jede Minute einen Prüfpunkt. Um das Schreibintervall der S3-Senke zu erhöhen, müssen Sie auch das Prüfpunkt-Intervall erhöhen.

Führen Sie zur Konfiguration des `DefaultRollingPolicy`-Objekts folgende Schritte aus:

1. Erhöhen Sie die `CheckpointInterval`-Einstellung der Anwendung. Die folgende Eingabe für die [ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)Aktion 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 [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)Aktion abrufen.

1. Fügen Sie am Anfang der `S3StreamingSinkJob.java`-Datei die folgende Importanweisung hinzu:

   ```
   import java.util.concurrent.TimeUnit; 
   ```

1. Aktualisieren Sie die `createS3SinkFromStaticConfig`-Methode in der `S3StreamingSinkJob.java`-Datei so, dass sie wie folgt aussieht:

   ```
   private static StreamingFileSink<String> createS3SinkFromStaticConfig() {
   
           final StreamingFileSink<String> sink = StreamingFileSink
                   .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
                   .withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH"))
                   .withRollingPolicy(
                           DefaultRollingPolicy.create()
                               .withRolloverInterval(TimeUnit.MINUTES.toMillis(8))
                               .withInactivityInterval(TimeUnit.MINUTES.toMillis(5))
                               .withMaxPartSize(1024 * 1024 * 1024)
                               .build())
                   .build();
           return sink;
       }
   ```

   Im vorherigen Codebeispiel wird die Häufigkeit von Schreibvorgängen in den Amazon S3-Bucket auf 8 Minuten festgelegt.

Weitere Informationen zur Konfiguration der Apache Flink-Streaming-Dateisenke finden Sie unter [Reihencodierte Formate](https://nightlies.apache.org/flink/flink-docs-release-1.13/dev/connectors/streamfile_sink.html#row-encoded-formats) in der [Apache Flink-Dokumentation](https://nightlies.apache.org/flink/flink-docs-release-1.13/).

##### AWS Ressourcen bereinigen
<a name="examples-s3-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die Sie im Amazon S3 S3-Tutorial erstellt haben.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-s3-cleanup-app)
+ [Löschen Sie Ihren Kinesis-Datenstream](#examples-s3-cleanup-stream)
+ [Löschen Sie Ihre Amazon S3 S3-Objekte und Ihren Bucket](#examples-s3-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-s3-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-s3-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-s3-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

1. 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
<a name="examples-s3-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

##### Löschen Sie Ihre Amazon S3 S3-Objekte und Ihren Bucket
<a name="examples-s3-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-s3-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Richtlinien** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

1. Wählen Sie in der Navigationsleiste **Rollen** aus.

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-s3-cleanup-cw"></a>

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

1. Wählen Sie auf der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Tutorial: Verwenden einer Managed Service for Apache Flink-Anwendung, um Daten von einem Thema in einem MSK-Cluster zu einem anderen in einer VPC zu replizieren
<a name="example-msk"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter. [Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md)

Das folgende Tutorial zeigt, wie Sie eine Amazon VPC mit einem Amazon MSK-Cluster und zwei Themen erstellen und wie Sie eine Managed Service für Apache Flink-Anwendung erstellen, die aus einem Amazon MSK-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 der DataStream API in Managed Service für Apache Flink](getting-started.md)-Übung ab. 

**Topics**
+ [Erstellen einer Amazon VPC mit einem Amazon-MSK-Cluster](#example-msk-createcluster)
+ [Erstellen Sie den Anwendungscode](#example-msk-code)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#example-msk-upload)
+ [Erstellen der Anwendung](#example-msk-create)
+ [Konfigurieren Sie die Anwendung](#example-msk-configure)
+ [Führen Sie die Anwendung aus.](#example-msk-run)
+ [Testen der Anwendung](#example-msk-test)

##### Erstellen einer Amazon VPC mit einem Amazon-MSK-Cluster
<a name="example-msk-createcluster"></a>

Folgen Sie dem Tutorial [Erste Schritte mit Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html), um eine Beispiel-VPC und Amazon MSK-Cluster für den Zugriff über eine Managed Service für Apache Flink-Anwendung zu erstellen.

Beachten Sie beim Abschluss des Tutorials Folgendes:
+ Wiederholen Sie in [Schritt 3: Thema erstellen](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html) den Befehl `kafka-topics.sh --create`, um ein Zielthema mit dem Namen `AWSKafkaTutorialTopicDestination` zu erstellen:

  ```
  bin/kafka-topics.sh --create --zookeeper ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestination
  ```
+ Notieren Sie sich die Bootstrap-Serverliste für Ihren Cluster. Sie können die Liste der Bootstrap-Server mit dem folgenden Befehl abrufen (ersetzen Sie ihn durch *ClusterArn* den 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, dass Sie die von Ihnen gewählte AWS Region in Ihrem Code, Ihren Befehlen und Ihren Konsoleneinträgen verwenden.

##### Erstellen Sie den Anwendungscode
<a name="example-msk-code"></a>

In diesem Abschnitt laden Sie die Anwendungs-JAR-Datei herunter und kompilieren sie. Wir empfehlen die Verwendung von Java 11.

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

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

1. Verwenden Sie entweder das Befehlszeilentool Maven oder Ihre bevorzugte Entwicklungsumgebung, um die JAR-Datei zu erstellen. 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
<a name="example-msk-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) 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-Datei mit dem Anwendungscode hoch](get-started-exercise.md#get-started-exercise-6) erneut aus.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

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

1. 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
<a name="example-msk-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink..

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurieren Sie die Anwendung
<a name="example-msk-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **KafkaGettingStartedJob-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.
**Anmerkung**  
Wenn Sie Anwendungsressourcen mithilfe der Konsole angeben (z. B. CloudWatch Logs oder eine Amazon VPC), ändert die Konsole Ihre Anwendungsausführungsrolle, um die Berechtigung für den Zugriff auf diese Ressourcen zu gewähren.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus. Geben Sie die folgenden Eigenschaften ein:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)
**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:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

   Der Anwendungscode liest die oben genannten Anwendungseigenschaften, um die Quelle und Senke zu konfigurieren, die für die Interaktion mit Ihrer VPC und Ihrem Amazon MSK-Cluster verwendet werden. Weitere Informationen zur Verwendung von Eigenschaften finden Sie unter [Verwenden Sie Laufzeiteigenschaften](how-properties.md).

1. Wählen Sie unter **Snapshots** die Option **Deaktivieren** aus. Dadurch wird es einfacher, die Anwendung zu aktualisieren, ohne ungültige Anwendungsstatusdaten zu laden.

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

1. Wählen Sie für die **CloudWatch Protokollierung** das Kontrollkästchen **Aktivieren**.

1. Wählen Sie im Abschnitt **Virtual Private Cloud (VPC)** die VPC aus, die mit Ihrer Anwendung verknüpft werden soll. Wählen Sie die mit Ihrer VPC verknüpften Subnetze und Sicherheitsgruppe aus, die die Anwendung für den Zugriff auf VPC-Ressourcen verwenden soll.

1. Wählen Sie **Aktualisieren** aus.

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

##### Führen Sie die Anwendung aus.
<a name="example-msk-run"></a>

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
<a name="example-msk-test"></a>

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 aus den Themen zu schreiben und zu lesen, folgen Sie den Schritten in [Schritt 6: Daten produzieren und verwenden](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html) im Tutorial [Erste Schritte mit Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

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 einer VPC kann nicht zugegriffen werden](troubleshooting-symptoms.md#troubleshooting-rt-vpc) im Thema [Problembehandlung bei Managed Service für Apache Flink](troubleshooting.md).

#### Beispiel: Verwenden Sie einen EFO-Consumer mit einem Kinesis-Datenstream
<a name="examples-efo"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter. [Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md)

In dieser Übung erstellen Sie eine Managed Service for Apache Flink-Anwendung, die mithilfe eines [Enhanced Fan-Out (EFO](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html)) -Consumer aus einem Kinesis-Datenstream liest. Wenn ein Kinesis-Verbraucher EFO verwendet, stellt ihm der Kinesis Data Streams-Service 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 von EFO mit dem Kinesis Consumer finden Sie unter [ FLIP-128: Verbesserte Verteilung für Kinesis-Verbraucher](https://cwiki.apache.org/confluence/display/FLINK/FLIP-128%3A+Enhanced+Fan+Out+for+AWS+Kinesis+Consumers).

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 der DataStream API in Managed Service für Apache Flink](getting-started.md)-Übung ab.

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#examples-efo-resources)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#examples-efo-write)
+ [Laden Sie den Anwendungscode herunter und untersuchen Sie ihn](#examples-efo-download)
+ [Kompilieren Sie den Anwendungscode](#examples-efo-compile)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#examples-efo-upload)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#examples-efo-create-run)
+ [Ressourcen bereinigen AWS](#examples-efo-cleanup)

##### Erstellen Sie abhängige Ressourcen
<a name="examples-efo-resources"></a>

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen: 
+ Zwei Kinesis Data Streams (`ExampleInputStream` und `ExampleOutputStream`)
+ Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (`ka-app-code-<username>`) 

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:
+ [Data Streams erstellen und aktualisieren](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerleitfaden*. Benennen Sie Ihren Data Stream **ExampleInputStream** und **ExampleOutputStream**.
+ [Wie erstelle ich einen S3-Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-efo-write"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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

   ```
    
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. 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
<a name="examples-efo-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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\$1PUBLISHER\$1TYPE:** Setzen Sie diesen Parameter auf **EFO**, damit Ihre Anwendung einen EFO-Consumer für den Zugriff auf die Kinesis Data Stream-Daten verwendet. 
  + **EFO\$1CONSUMER\$1NAME:** Setzen Sie diesen Parameter auf einen Zeichenfolgenwert, der unter den Verbrauchern 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 Quell-Stream zu verwenden:

  ```
  consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO");
  consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
  ```

##### Kompilieren Sie den Anwendungscode
<a name="examples-efo-compile"></a>

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter [Erfüllen Sie die erforderlichen Voraussetzungen](getting-started.md#setting-up-prerequisites) im [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) Tutorial.

1. 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-Datei der Anwendung (`target/aws-kinesis-analytics-java-apps-1.0.jar`) erstellt.

##### Laden Sie den Apache Flink-Streaming-Java-Code hoch
<a name="examples-efo-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in das Amazon S3-Bucket hoch, das Sie im [Erstellen Sie abhängige Ressourcen](#examples-efo-resources) Abschnitt erstellt haben.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

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

1. 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
<a name="examples-efo-create-run"></a>

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

##### Erstellen der Anwendung
<a name="examples-efo-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="get-started-exercise-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

1. 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-Consumer zuzugreifen.

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="examples-efo-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **aws-kinesis-analytics-java-apps-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe erstellen** aus. 

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe erstellen** aus. 

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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.
<a name="examples-efo-run"></a>

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
<a name="examples-efo-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im efo-Windows-Tutorial erstellt wurden.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-efo-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-efo-cleanup-stream)
+ [Löschen von Amazon-S3-Objekten und -Buckets](#examples-efo-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-efo-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-efo-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-efo-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

1. wählen Sie im Bereich Managed Service for Apache Flink die Option. **MyApplication**

1. 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
<a name="examples-efo-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="examples-efo-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-efo-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-efo-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Beispiel: An Firehose schreiben
<a name="get-started-exercise-fh"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter. [Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md)

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 der DataStream API in Managed Service für Apache Flink](getting-started.md)-Übung ab.

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#get-started-exercise-fh-1)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#get-started-exercise-fh-2)
+ [Laden Sie den Apache Flink-Streaming-Java-Code herunter und untersuchen Sie ihn](#get-started-exercise-fh-5)
+ [Kompilieren Sie den Anwendungscode](#get-started-exercise-fh-5.5)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#get-started-exercise-fh-6)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#get-started-exercise-fh-7)
+ [Ressourcen bereinigen AWS](#getting-started-fh-cleanup)

##### Erstellen Sie abhängige Ressourcen
<a name="get-started-exercise-fh-1"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerleitfaden*. Benennen Sie Ihren Data Stream **ExampleInputStream**.
+ [Einen Amazon Kinesis Data Firehose Delivery Stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) 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 die **IAM-Rolle** des Firehose-Streams. 
+ [Wie erstelle ich einen S3-Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="get-started-exercise-fh-2"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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

   ```
    import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. 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
<a name="get-started-exercise-fh-5"></a>

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

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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
<a name="get-started-exercise-fh-5.5"></a>

Zum Kompilieren der Anwendung gehen Sie wie folgt vor:

1. Installieren Sie Java und Maven, wenn das noch nicht geschehen ist. Weitere Informationen finden Sie unter [Erfüllen Sie die erforderlichen Voraussetzungen](getting-started.md#setting-up-prerequisites) im [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md) Tutorial.

1. **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](#how-creating-apps-building-kinesis).**

1. 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-Datei der Anwendung (`target/aws-kinesis-analytics-java-apps-1.0.jar`) erstellt.

##### Laden Sie den Apache Flink-Streaming-Java-Code hoch
<a name="get-started-exercise-fh-6"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im Abschnitt [Erstellen Sie abhängige Ressourcen](#get-started-exercise-fh-1) erstellt haben.

**So laden Sie den Anwendungscode hoch**

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

1. Wählen Sie in der Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie dann **Upload** aus.

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

1. 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
<a name="get-started-exercise-fh-7"></a>

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.

**Topics**
+ [Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)](#get-started-exercise-fh-7-console)
+ [Erstellen Sie die Anwendung und führen Sie sie aus (AWS CLI)](#get-started-exercise-fh-7-cli)

##### Erstellen Sie die Anwendung und führen Sie sie aus (Konsole)
<a name="get-started-exercise-fh-7-console"></a>

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

##### Erstellen der Anwendung
<a name="get-started-exercise-fh-7-console-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen der Anwendung mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Bearbeiten Sie die IAM-Richtlinie
<a name="get-started-exercise-fh-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie, um Berechtigungen für den Zugriff auf den Kinesis-Datenstream und den Firehose-Stream hinzuzufügen.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

1. Fügen Sie den markierten Abschnitt der folgenden Beispielrichtlinie der Richtlinie hinzu. Ersetzen Sie alle Instanzen des Beispielkontos IDs (*012345678901*) durch Ihre Konto-ID.

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="get-started-exercise-fh-7-console-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **java-getting-started-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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.
<a name="get-started-exercise-fh-7-console-run"></a>

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
<a name="get-started-exercise-fh-7-console-stop"></a>

Wählen Sie auf der **MyApplication**Seite **Stopp** aus. Bestätigen Sie die Aktion.

##### Aktualisieren der Anwendung
<a name="get-started-exercise-fh-7-console-update"></a>

Mithilfe der Konsole können Sie Anwendungseinstellungen wie beispielsweise Anwendungseigenschaften, Überwachungseinstellungen und den Speicherort oder den Dateinamen der JAR-Anwendungsdatei aktualisieren. 

Wählen Sie auf der **MyApplication**Seite **Configure** 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 der JAR ändern, einen anderen S3-Bucket verwenden oder den AWS CLI wie im Abschnitt beschrieben verwenden. [Den Anwendungscode aktualisieren](#get-started-exercise-fh-7-cli-update-code) 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)
<a name="get-started-exercise-fh-7-cli"></a>

In diesem Abschnitt verwenden Sie die, AWS CLI um die Anwendung Managed Service for Apache Flink zu erstellen und auszuführen.

##### Erstellen einer Berechtigungsrichtlinie
<a name="get-started-exercise-fh-7-cli-policy"></a>

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 an eine IAM-Rolle (die Sie im nächsten Abschnitt erstellen) an. 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. *username*Ersetzen Sie es durch den Benutzernamen, den Sie verwenden werden, um den Amazon S3 S3-Bucket zum Speichern des Anwendungscodes zu erstellen. Ersetzen Sie die Konto-ID in den Amazon-Ressourcennamen (ARNs) (`012345678901`) durch Ihre Konto-ID.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) im *IAM-Benutzerhandbuch*.

**Anmerkung**  
Um auf andere Amazon-Services zuzugreifen, können Sie AWS SDK für Java verwenden. Managed Service für Apache Flink setzt die vom SDK benötigten Anmeldeinformationen automatisch auf die der IAM-Rolle für die Dienstausführung, die mit Ihrer Anwendung verknüpft ist. Es sind keine weiteren Schritte erforderlich.

##### Erstellen einer IAM-Rolle
<a name="get-started-exercise-fh-7-cli-role"></a>

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Anwendung von Managed Service für Apache Flink annehmen kann, um einen Quell-Stream zu lesen und in den Senken-Stream zu schreiben.

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

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

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

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

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

1. 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** aus.

   Jetzt haben Sie eine neue IAM-Rolle mit dem Namen `MF-stream-rw-role` erstellt. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle.

1. 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](#get-started-exercise-fh-7-cli-policy).

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

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

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

   1. 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 verwenden wird. Notieren Sie sich den ARN der neuen Rolle.

 step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter [Erstellen einer IAM-Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) im *IAM-Benutzerhandbuch*.

##### Erstellen Sie die Anwendung Managed Service für Apache Flink
<a name="get-started-exercise-fh-7-cli-create"></a>

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `create_request.json`. Ersetzen Sie den Beispiel-Rollen-ARN durch den ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das Bucket-ARN-Suffix mit dem Suffix, das Sie im [Erstellen Sie abhängige Ressourcen](#get-started-exercise-fh-1)-Abschnitt (`ka-app-code-<username>`) gewählt haben. Ersetzen Sie die beispielhafte Konto-ID (*012345678901*) in der Service-Ausführungsrolle mit Ihrer Konto-ID.

   ```
   {
       "ApplicationName": "test",
       "ApplicationDescription": "my java test app",
       "RuntimeEnvironment": "FLINK-1_15",
       "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
       "ApplicationConfiguration": {
           "ApplicationCodeConfiguration": {
               "CodeContent": {
                   "S3ContentLocation": {
                       "BucketARN": "arn:aws:s3:::ka-app-code-username",
                       "FileKey": "java-getting-started-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           }
         }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)-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
<a name="get-started-exercise-fh-7-cli-start"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-Aktion, um die Anwendung zu starten.

**So starten Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html)-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
<a name="get-started-exercise-fh-7-cli-stop"></a>

In diesem Abschnitt verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-Aktion, um die Anwendung zu stoppen.

**So stoppen Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `stop_request.json`.

   ```
   {
       "ApplicationName": "test"
   }
   ```

1. Führen Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html)-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
<a name="get-started-exercise-fh-7-cli-cw"></a>

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 in Managed Service für Apache Flink einrichten](cloudwatch-logs.md).

##### Den Anwendungscode aktualisieren
<a name="get-started-exercise-fh-7-cli-update-code"></a>

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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 auf`UpdateApplication`, 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* >) mit dem Suffix, das [Erstellen Sie abhängige Ressourcen](#get-started-exercise-fh-1) 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"
                }
            }
        }
    }
}
```

##### Ressourcen bereinigen AWS
<a name="getting-started-fh-cleanup"></a>

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

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#getting-started-fh-cleanup-app)
+ [Löschen Sie Ihren Kinesis-Datenstream](#getting-started-fh-cleanup-stream)
+ [Lösche deinen Firehose-Stream](#getting-started-fh-cleanup-fh)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#getting-started-fh-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#getting-started-fh-cleanup-iam)
+ [Löschen Sie Ihre Ressourcen CloudWatch](#getting-started-fh-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="getting-started-fh-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

1. Wählen Sie **Konfigurieren** aus.

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

1. 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
<a name="getting-started-fh-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

##### Lösche deinen Firehose-Stream
<a name="getting-started-fh-cleanup-fh"></a>

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

1. Wählen **ExampleDeliveryStream**Sie im Firehose-Bedienfeld.

1. Wählen Sie auf der **ExampleDeliveryStream**Seite **Delete Firehose stream** aus und bestätigen Sie dann den Löschvorgang.

##### Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket
<a name="getting-started-fh-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

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

1. 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 IAM-Ressourcen
<a name="getting-started-fh-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

1. Wenn Sie eine neue Richtlinie für Ihren Firehose-Stream erstellt haben, löschen Sie auch diese Richtlinie.

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

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

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

1. Wenn Sie eine neue Rolle für Ihren Firehose-Stream erstellt haben, löschen Sie auch diese Rolle.

##### Löschen Sie Ihre Ressourcen CloudWatch
<a name="getting-started-fh-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Beispiel: Aus einem Kinesis-Stream in einem anderen Konto lesen
<a name="examples-cross"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

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.

**Topics**
+ [Voraussetzungen](#examples-cross-prerequisites)
+ [Einrichtung](#examples-cross-setup)
+ [Kinesis-Quellstream erstellen](#examples-cross-streams)
+ [IAM-Rollen und -Richtlinien erstellen und aktualisieren](#examples-cross-iam)
+ [Aktualisieren Sie das Python-Skript](#examples-cross-python)
+ [Aktualisieren Sie die Java-Anwendung](#examples-cross-app)
+ [Erstellen Sie die Anwendung, laden Sie sie hoch und führen Sie sie aus](#examples-cross-run)

##### Voraussetzungen
<a name="examples-cross-prerequisites"></a>
+ 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 der DataStream API in Managed Service für Apache Flink](getting-started.md)-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.

##### Einrichtung
<a name="examples-cross-setup"></a>

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 benannter Profile mit dem AWS CLI finden Sie in der *AWS Command Line Interface*Dokumentation unter [Benannte Profile](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html).

##### Kinesis-Quellstream erstellen
<a name="examples-cross-streams"></a>

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

##### IAM-Rollen und -Richtlinien erstellen und aktualisieren
<a name="examples-cross-iam"></a>

Um den objektübergreifenden Zugriff auf Objekte zu ermöglichen, erstellen Sie eine IAM-Rolle und -Richtlinie im AWS Quellkonto. Anschließend ändern Sie die IAM-Richtlinie im Senkenkonto. Weitere Informationen zum Erstellen und Verwalten von IAM-Rollen und -Richtlinien finden Sie in den folgenden Themen im *AWS Identity and Access Management -Benutzerhandbuch*:
+ [Erstellen von IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)
+ [Erstellen von IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)

##### Rollen und Richtlinien für Sink-Accounts
<a name="examples-cross-iam-sink"></a>

1. Bearbeiten Sie die Richtlinie `kinesis-analytics-service-MyApplication-us-west-2` aus dem Tutorial Erste Schritte. Mit dieser Richtlinie kann die Rolle im Quellkonto übernommen werden, um den Quellstream zu lesen. 
**Anmerkung**  
Wenn Sie die Konsole verwenden, um Ihre Anwendung zu erstellen, erstellt die Konsole eine Richtlinie mit dem Namen `kinesis-analytics-service-<application name>-<application region>` und eine Rolle namens `kinesisanalytics-<application name>-<application region>`. 

   Fügen Sie der Richtlinie den unten hervorgehobenen Abschnitt hinzu. Ersetzen Sie die Beispielkonto-ID (*SOURCE01234567*) durch die ID des Kontos, das Sie für den Quellstream verwenden werden.

------
#### [ JSON ]

****  

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

------

1. Öffnen Sie die Rolle `kinesis-analytics-MyApplication-us-west-2` und notieren Sie sich ihren Amazon-Ressourcennamen (ARN). Sie brauchen diesen im nächsten Abschnitt. Der Rollen-ARN sieht wie folgt aus.

   ```
   arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2
   ```

##### Rollen und Richtlinien des Quellkontos
<a name="examples-cross-iam-source"></a>

1. Erstellen Sie eine Richtlinie im Quellkonto mit dem Namen `KA-Source-Stream-Policy`. Verwenden Sie die folgende JSON-Datei für die Richtlinie. Ersetzen Sie die Beispielkontonummer durch die Kontonummer des Quellkontos.

------
#### [ JSON ]

****  

   ```
   {
       "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:111122223333:stream/SourceAccountExampleInputStream"
           }
       ]
   }
   ```

------

1. Erstellen Sie eine Rolle in dem Quellkonto namens `MF-Source-Stream-Role`. Gehen Sie wie folgt vor, um die Rolle mithilfe des **Managed Flink**-Anwendungsfalls zu erstellen:

   1. Wählen Sie in der IAM-Managementkonsole die Option **Rolle erstellen** aus.

   1. Wählen Sie auf der Seite **Rolle erstellen** **AWS -Service** aus. Wählen Sie in der Serviceliste **Kinesis** aus.

   1. Wählen Sie im Abschnitt **Wählen Sie Ihren Anwendungsfall aus** die Option **Managed Service für Apache Flink** aus.

   1. Wählen Sie **Weiter: Berechtigungen** aus.

   1. Fügen Sie die `KA-Source-Stream-Policy`-Berechtigungsrichtlinie hinzu, die Sie im vorherigen Schritt erstellt haben. Wählen Sie **Weiter: Tags** aus.

   1. Wählen Sie **Weiter: Prüfen** aus.

   1. Benennen Sie die Rolle `KA-Source-Stream-Role`. Ihre Anwendung verwendet diese Rolle für den Zugriff auf den Quellstream.

1. Fügen Sie die ARN `kinesis-analytics-MyApplication-us-west-2` aus dem Senken-Konto zur Vertrauensstellung der `KA-Source-Stream-Role`-Rolle im Quellkonto hinzu:

   1. Öffnen Sie die `KA-Source-Stream-Role` in der IAM-Konsole.

   1. Wählen Sie die Registerkarte **Trust Relationships.**

   1. Wählen Sie **Edit Trust Relationship (Vertrauensstellungen bearbeiten)**.

   1. Verwenden Sie den folgenden Code für die Vertrauensstellung. Ersetzen Sie die Beispielkonto-ID (**SINK012345678**) durch Ihre Senk-Konto-ID.

------
#### [ JSON ]

****  

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

------

##### Aktualisieren Sie das Python-Skript
<a name="examples-cross-python"></a>

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
<a name="examples-cross-app"></a>

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
<a name="examples-cross-run"></a>

Um die Anwendung zu aktualisieren und auszuführen, führen Sie Folgendes aus:

1. Erstellen Sie die Anwendung erneut, indem Sie folgenden Befehl im Verzeichnis mit der Datei `pom.xml` ausführen.

   ```
   mvn package -Dflink.version=1.15.3
   ```

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

1. Wählen Sie auf der Seite der Anwendung in der Managed Service für Apache Flink-Konsole die Optionen **Konfigurieren**, **Aktualisieren** aus, um die JAR-Datei der Anwendung neu zu laden.

1. 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 MSK verwenden
<a name="example-keystore"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter. [Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md)

##### Aktuelle Datenquelle APIs
<a name="example-keystore-test-new"></a>

Wenn Sie die aktuelle Datenquelle verwenden APIs, kann Ihre Anwendung das [hier](https://github.com/aws-samples/msk-config-providers) beschriebene Amazon MSK Config Provider-Hilfsprogramm nutzen. Dadurch kann Ihre KafkaSource Funktion auf Ihren Keystore und Truststore für Mutual TLS in Amazon S3 zugreifen.

```
...
// define names of config providers:
builder.setProperty("config.providers", "secretsmanager,s3import");

// provide implementation classes for each provider:
builder.setProperty("config.providers.secretsmanager.class", "com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider");
builder.setProperty("config.providers.s3import.class", "com.amazonaws.kafka.config.providers.S3ImportConfigProvider");

String region = appProperties.get(Helpers.S3_BUCKET_REGION_KEY).toString();
String keystoreS3Bucket = appProperties.get(Helpers.KEYSTORE_S3_BUCKET_KEY).toString();
String keystoreS3Path = appProperties.get(Helpers.KEYSTORE_S3_PATH_KEY).toString();
String truststoreS3Bucket = appProperties.get(Helpers.TRUSTSTORE_S3_BUCKET_KEY).toString();
String truststoreS3Path = appProperties.get(Helpers.TRUSTSTORE_S3_PATH_KEY).toString();
String keystorePassSecret = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_KEY).toString();
String keystorePassSecretField = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_FIELD_KEY).toString();

// region, etc..
builder.setProperty("config.providers.s3import.param.region", region);

// properties
builder.setProperty("ssl.truststore.location", "${s3import:" + region + ":" + truststoreS3Bucket + "/" + truststoreS3Path + "}");
builder.setProperty("ssl.keystore.type", "PKCS12");
builder.setProperty("ssl.keystore.location", "${s3import:" + region + ":" + keystoreS3Bucket + "/" + keystoreS3Path + "}");
builder.setProperty("ssl.keystore.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}");
builder.setProperty("ssl.key.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}");
...
```

Weitere Informationen und einen Walkthrough finden Sie [hier](https://github.com/aws-samples/amazon-kinesisanalytics-examples/tree/master/CustomKeystoreWithConfigProviders). 

##### Vermächtnis SourceFunction APIs
<a name="example-keystore-legacy"></a>

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**  
Für Apache Flink muss der Truststore im[JKS-Format](https://en.wikipedia.org/wiki/Java_KeyStore) sein.

**Anmerkung**  
Um die erforderlichen Voraussetzungen für diese Übung einzurichten, schließen Sie zunächst die [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md)-Ü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 über TLS mit einem Kafka-Cluster 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 Amazon MSK-Cluster mit aktivierter Mutual TLS (MTLS) -Authentifizierung. Dies bedeutet, dass die MSK-Clusterknoten Serverzertifikate verwenden, die von einer AWS Certificate Manager Private Certificate Authority (ACM Private 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 SSL-Verbindung vorgelegte Zertifikat verifizieren.

 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](https://aws.amazon.com/eks/) EKS](https://aws.amazon.com/ec2/)) gehostet wird
+ Ein [Confluent-Kafka-Cluster](https://www.confluent.io), gehostet in AWS
+ Einem lokalen Kafka-Cluster, auf den über [AWS Direct Connect](https://aws.amazon.com/directconnect/) oder VPN zugegriffen wird

**Topics**
+ [Aktuelle Datenquelle APIs](#example-keystore-test-new)
+ [Vermächtnis SourceFunction APIs](#example-keystore-legacy)
+ [Erstellen Sie eine VPC mit einem Amazon MSK-Cluster](#example-keystore-createcluster)
+ [Erstellen Sie einen benutzerdefinierten Truststore und wenden Sie ihn auf Ihren Cluster an](#example-keystore-cert)
+ [Erstellen Sie den Anwendungscode](#example-keystore-code)
+ [Laden Sie den Apache Flink-Streaming-Java-Code hoch](#example-keystore-upload)
+ [Erstellen der Anwendung](#example-keystore-create)
+ [Konfigurieren Sie die Anwendung](#example-keystore-configure)
+ [Führen Sie die Anwendung aus.](#example-keystore-run)
+ [Testen der Anwendung](#example-keystore-test)

##### Erstellen Sie eine VPC mit einem Amazon MSK-Cluster
<a name="example-keystore-createcluster"></a>

Folgen Sie dem Tutorial [Erste Schritte mit Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html), um eine Beispiel-VPC und Amazon MSK-Cluster für den Zugriff über eine Managed Service für Apache Flink-Anwendung zu erstellen.

Wenn Sie das Tutorial abgeschlossen haben, gehen Sie auch folgendermaßen vor:
+ Wiederholen Sie in [Schritt 3: Thema erstellen](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html) den Befehl `kafka-topics.sh --create`, um ein Zielthema mit dem Namen `AWS KafkaTutorialTopicDestination` zu erstellen:

  ```
  bin/kafka-topics.sh --create --bootstrap-server ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestination
  ```
**Anmerkung**  
Wenn der `kafka-topics.sh`-Befehl eine `ZooKeeperClientTimeoutException` zurückgibt, stellen Sie sicher, dass die Sicherheitsgruppe des Kafka-Clusters über eine Regel für eingehenden Datenverkehr verfügt, die den gesamten Datenverkehr von der privaten IP-Adresse der Client-Instance zulässt.
+ Notieren Sie sich die Bootstrap-Serverliste für Ihren Cluster. Sie können die Liste der Bootstrap-Server mit dem folgenden Befehl abrufen (ersetzen Sie ihn durch *ClusterArn* den 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 in Ihrem Code, Ihren Befehlen und Ihren Konsoleneinträgen die von Ihnen gewählte AWS Region verwenden.

##### Erstellen Sie einen benutzerdefinierten Truststore und wenden Sie ihn auf Ihren Cluster an
<a name="example-keystore-cert"></a>

In diesem Abschnitt erstellen Sie eine benutzerdefinierte Zertifizierungsstelle (CA), verwenden sie, um einen benutzerdefinierten Truststore zu generieren, und wenden sie auf Ihren MSK-Cluster an.

Folgen Sie dem Tutorial zur [Client-Authentifizierung](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) im *Amazon Managed Streaming für Apache Kafka Entwicklerhandbuch*, um Ihren benutzerdefinierten Truststore zu erstellen und anzuwenden.

##### Erstellen Sie den Anwendungscode
<a name="example-keystore-code"></a>

In diesem Abschnitt laden Sie die JAR-Datei der Anwendung herunter und kompilieren sie.

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

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

1. Verwenden Sie entweder das Befehlszeilen-Maven-Tool oder Ihre bevorzugte Entwicklungsumgebung, um die JAR-Datei zu erstellen. Geben Sie Folgendes ein, um die JAR-Datei mit dem Befehlszeilen-Maven-Tool zu kompilieren:

   ```
   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
<a name="example-keystore-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im [Tutorial: Erste Schritte mit der DataStream API in Managed Service für Apache Flink](getting-started.md)-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-Datei mit dem Anwendungscode hoch](get-started-exercise.md#get-started-exercise-6) erneut aus.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

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

1. 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
<a name="example-keystore-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen eines Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurieren Sie die Anwendung
<a name="example-keystore-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **flink-app-1.0-SNAPSHOT.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.
**Anmerkung**  
Wenn Sie Anwendungsressourcen mithilfe der Konsole angeben (z. B. Protokolle oder eine VPC), ändert die Konsole Ihre Anwendungsausführungsrolle, um die Berechtigung für den Zugriff auf diese Ressourcen zu gewähren.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus. Geben Sie die folgenden Eigenschaften ein:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)
**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:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

   Der Anwendungscode liest die oben genannten Anwendungseigenschaften, um die Quelle und Senke zu konfigurieren, die für die Interaktion mit Ihrer VPC und Ihrem Amazon MSK-Cluster verwendet werden. Weitere Informationen zur Verwendung von Eigenschaften finden Sie unter [Verwenden Sie Laufzeiteigenschaften](how-properties.md).

1. Wählen Sie unter **Snapshots** die Option **Deaktivieren** aus. Dadurch wird es einfacher, die Anwendung zu aktualisieren, ohne ungültige Anwendungsstatusdaten zu laden.

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie im Abschnitt **Virtual Private Cloud (VPC)** die VPC aus, die mit Ihrer Anwendung verknüpft werden soll. Wählen Sie die mit Ihrer VPC verknüpften Subnetze und Sicherheitsgruppe aus, die die Anwendung für den Zugriff auf VPC-Ressourcen verwenden soll.

1. Wählen Sie **Aktualisieren** aus.

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

##### Führen Sie die Anwendung aus.
<a name="example-keystore-run"></a>

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
<a name="example-keystore-test"></a>

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 aus den Themen zu schreiben und zu lesen, folgen Sie den Schritten in [Schritt 6: Daten produzieren und verwenden](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html) im Tutorial [Erste Schritte mit Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

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 einer VPC kann nicht zugegriffen werden](troubleshooting-symptoms.md#troubleshooting-rt-vpc) im Thema [Problembehandlung bei Managed Service für Apache Flink](troubleshooting.md).

### Python-Beispiele
<a name="examples-python"></a>

In den folgenden Beispielen wird die Erstellung von Anwendungen über Python mit der Apache Flink Tabellen-API gezeigt.

**Topics**
+ [Beispiel: Ein Tumbling-Fenster in Python erstellen](#examples-python-tumbling)
+ [Beispiel: Ein Schiebefenster in Python erstellen](#examples-python-sliding)
+ [Beispiel: Streaming-Daten in Python an Amazon S3 senden](#examples-python-s3)

#### Beispiel: Ein Tumbling-Fenster in Python erstellen
<a name="examples-python-tumbling"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

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](gs-python.md)-Übung ab.

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#examples-python-tumbling-resources)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#examples-python-tumbling-write)
+ [Laden Sie den Anwendungscode herunter und überprüfen Sie ihn](#examples-python-tumbling-download)
+ [Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch](#examples-python-tumbling-upload)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#examples-python-tumbling-create-run)
+ [Ressourcen bereinigen AWS](#examples-python-tumbling-cleanup)

##### Erstellen Sie abhängige Ressourcen
<a name="examples-python-tumbling-resources"></a>

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen: 
+ Zwei Kinesis Data Streams (`ExampleInputStream` und `ExampleOutputStream`)
+ Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (`ka-app-code-<username>`) 

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:
+ [Data Streams erstellen und aktualisieren](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerleitfaden*. Benennen Sie Ihre Data Streams **ExampleInputStream** und **ExampleOutputStream**.
+ [Wie erstelle ich einen S3-Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-python-tumbling-write"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**Anmerkung**  
Das Python-Skript in diesem Abschnitt verwendet die AWS CLI. Sie müssen Ihren so konfigurieren AWS CLI , dass er Ihre Kontoanmeldeinformationen und Ihre Standardregion verwendet. Geben Sie Folgendes ein AWS CLI, um Ihre zu konfigurieren:  

```
aws configure
```

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

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. 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
<a name="examples-python-tumbling-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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 [https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2).

##### Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch
<a name="examples-python-tumbling-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im [Erstellen Sie abhängige Ressourcen](#examples-python-tumbling-resources)-Abschnitt erstellt haben.

1. Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien `tumbling-windows.py` und `flink-sql-connector-kinesis-1.15.2.jar` zu komprimieren. Benennen Sie das Archiv `myapp.zip`.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

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

1. 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
<a name="examples-python-tumbling-create-run"></a>

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

##### Erstellen der Anwendung
<a name="examples-python-tumbling-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus. 

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurieren Sie die Anwendung
<a name="examples-python-tumbling-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **myapp.zip** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus. 

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

   Wählen Sie **Speichern**.

1. Wählen Sie unter **Eigenschaften** erneut **Gruppe hinzufügen** aus. 

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

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](how-python-creating.md#how-python-creating-code).

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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 IAM-Richtlinie
<a name="examples-python-tumbling-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="examples-python-tumbling-run"></a>

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
<a name="examples-python-tumbling-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tumbling Window-Tutorial erstellt wurden.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-python-tumbling-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-python-tumbling-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#examples-python-tumbling-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-python-tumbling-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-python-tumbling-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-python-tumbling-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

1. wählen Sie im Bereich Managed Service for Apache Flink die Option. **MyApplication**

1. 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
<a name="examples-python-tumbling-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="examples-python-tumbling-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-python-tumbling-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-python-tumbling-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Beispiel: Ein Schiebefenster in Python erstellen
<a name="examples-python-sliding"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

**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](gs-python.md)-Übung ab.

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#examples-python-sliding-resources)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#examples-python-sliding-write)
+ [Laden Sie den Anwendungscode herunter und überprüfen Sie ihn](#examples-python-sliding-download)
+ [Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch](#examples-python-sliding-upload)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#examples-python-sliding-create-run)
+ [Ressourcen bereinigen AWS](#examples-python-sliding-cleanup)

##### Erstellen Sie abhängige Ressourcen
<a name="examples-python-sliding-resources"></a>

Bevor Sie für diese Übung eine Anwendung von Managed Service für Apache Flink erstellen, erstellen Sie die folgenden abhängigen Ressourcen: 
+ Zwei Kinesis Data Streams (`ExampleInputStream` und `ExampleOutputStream`)
+ Einen Amazon S3-Bucket zum Speichern des Codes der Anwendung (`ka-app-code-<username>`) 

Sie können die Kinesis Streams und den Amazon-S3-Bucket mithilfe der Konsole erstellen. Anweisungen zum Erstellen dieser Ressourcen finden Sie in den folgenden Themen:
+ [Data Streams erstellen und aktualisieren](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerleitfaden*. Benennen Sie Ihre Data Streams **ExampleInputStream** und **ExampleOutputStream**.
+ [Wie erstelle ich einen S3-Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-python-sliding-write"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**Anmerkung**  
Das Python-Skript in diesem Abschnitt verwendet die AWS CLI. Sie müssen Ihren so konfigurieren AWS CLI , dass er Ihre Kontoanmeldeinformationen und Ihre Standardregion verwendet. Geben Sie Folgendes ein AWS CLI, um Ihre zu konfigurieren:  

```
aws configure
```

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

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. 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
<a name="examples-python-sliding-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
   ```

1. 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](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2).

##### Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch
<a name="examples-python-sliding-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im [Erstellen Sie abhängige Ressourcen](#examples-python-sliding-resources)-Abschnitt erstellt haben.

In diesem Abschnitt wird beschrieben, wie Sie Ihre Python-Anwendung verpacken.

1. Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien `sliding-windows.py` und `flink-sql-connector-kinesis-1.15.2.jar` zu komprimieren. Benennen Sie das Archiv `myapp.zip`.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

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

1. 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
<a name="examples-python-sliding-create-run"></a>

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

##### Erstellen der Anwendung
<a name="examples-python-sliding-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus. 

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurieren Sie die Anwendung
<a name="examples-python-sliding-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **myapp.zip** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus. 

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

   Wählen Sie **Speichern**.

1. Wählen Sie unter **Eigenschaften** erneut **Gruppe hinzufügen** aus. 

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

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](how-python-creating.md#how-python-creating-code).

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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 IAM-Richtlinie
<a name="examples-python-sliding-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="examples-python-sliding-run"></a>

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
<a name="examples-python-sliding-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Sliding Window-Lernprogramm erstellt wurden.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-python-sliding-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-python-sliding-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#examples-python-sliding-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-python-sliding-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-python-sliding-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-python-sliding-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

1. wählen Sie im Bereich Managed Service for Apache Flink die Option. **MyApplication**

1. 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
<a name="examples-python-sliding-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="examples-python-sliding-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-python-sliding-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-python-sliding-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Beispiel: Streaming-Daten in Python an Amazon S3 senden
<a name="examples-python-s3"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

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](gs-python.md)-Übung ab.

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#examples-python-s3-resources)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#examples-python-s3-write)
+ [Laden Sie den Anwendungscode herunter und überprüfen Sie ihn](#examples-python-s3-download)
+ [Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch](#examples-python-s3-upload)
+ [Erstellen Sie die Anwendung Managed Service for Apache Flink und führen Sie sie aus](#examples-python-s3-create-run)
+ [Ressourcen bereinigen AWS](#examples-python-s3-cleanup)

##### Erstellen Sie abhängige Ressourcen
<a name="examples-python-s3-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) im *Amazon Kinesis Data Streams Entwicklerleitfaden*. Benennen Sie Ihren Data Stream **ExampleInputStream**.
+ [Wie erstelle ich einen S3-Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-python-s3-write"></a>

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 für Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**Anmerkung**  
Das Python-Skript in diesem Abschnitt verwendet die AWS CLI. Sie müssen Ihren so konfigurieren AWS CLI , dass er Ihre Kontoanmeldeinformationen und Ihre Standardregion verwendet. Geben Sie Folgendes ein AWS CLI, um Ihre zu konfigurieren:  

```
aws configure
```

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

   ```
       import datetime
       import json
       import random
       import boto3
   
       STREAM_NAME = "ExampleInputStream"
   
   
       def get_data():
           return {
               'event_time': datetime.datetime.now().isoformat(),
               'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
               'price': round(random.random() * 100, 2)}
   
   
       def generate(stream_name, kinesis_client):
           while True:
               data = get_data()
               print(data)
               kinesis_client.put_record(
                   StreamName=stream_name,
                   Data=json.dumps(data),
                   PartitionKey="partitionkey")
   
   
       if __name__ == '__main__':
           generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
   ```

1. 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
<a name="examples-python-s3-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. Navigieren Sie zum `amazon-kinesis-data-analytics-java-examples/python/S3Sink` Verzeichnis .

Der Anwendungscode befindet sich in der `streaming-file-sink.py`-Datei. Beachten Sie Folgendes zum Anwendungscode:
+ Die Anwendung verwendet eine Kinesis-Tabellenquelle zum Lesen aus dem Quell-Stream. Der folgende Ausschnitt ruft die `create_source_table`-Funktion zum Erstellen der Kinesis-Tabellenquelle auf:

  ```
  table_env.execute_sql(
          create_source_table(input_table_name, input_stream, input_region, stream_initpos)
      )
  ```

  Die `create_source_table`-Funktion verwendet einen SQL-Befehl, um eine Tabelle zu erstellen, die von der Streaming-Quelle unterstützt wird

  ```
  import datetime
      import json
      import random
      import boto3
  
      STREAM_NAME = "ExampleInputStream"
  
  
      def get_data():
          return {
              'event_time': datetime.datetime.now().isoformat(),
              'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']),
              'price': round(random.random() * 100, 2)}
  
  
      def generate(stream_name, kinesis_client):
          while True:
              data = get_data()
              print(data)
              kinesis_client.put_record(
                  StreamName=stream_name,
                  Data=json.dumps(data),
                  PartitionKey="partitionkey")
  
  
      if __name__ == '__main__':
          generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  ```
+ Die Anwendung verwendet den `filesystem`-Konnektor zum Senden von Datensätzen an einen Amazon-S3-Bucket:

  ```
  def create_sink_table(table_name, bucket_name):
      return """ CREATE TABLE {0} (
                  ticker VARCHAR(6),
                  price DOUBLE,
                  event_time VARCHAR(64)
                )
                PARTITIONED BY (ticker)
                WITH (
                    'connector'='filesystem',
                    'path'='s3a://{1}/',
                    'format'='json',
                    'sink.partition-commit.policy.kind'='success-file',
                    'sink.partition-commit.delay' = '1 min'
                ) """.format(table_name, bucket_name)
  ```
+ Die Anwendung verwendet den Kinesis Flink-Anschluss aus der [flink-sql-connector-kinesis-1.15.2.jar-Datei](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2).

##### Komprimieren Sie den Apache Flink-Streaming-Python-Code und laden Sie ihn hoch
<a name="examples-python-s3-upload"></a>

In diesem Abschnitt laden Sie Ihren Anwendungscode in den Amazon S3-Bucket hoch, den Sie im [Erstellen Sie abhängige Ressourcen](#examples-python-s3-resources)-Abschnitt erstellt haben.

1. Verwenden Sie Ihre bevorzugte Komprimierungsanwendung, um die Dateien `streaming-file-sink.py` und [flink-sql-connector-kinesis-1.15.2.jar](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2) zu komprimieren. Benennen Sie das Archiv `myapp.zip`.

1. Wählen Sie in der Amazon S3 S3-Konsole den *<username>* Bucket **ka-app-code-** und wählen Sie **Upload** aus.

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

1. 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
<a name="examples-python-s3-create-run"></a>

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

##### Erstellen der Anwendung
<a name="examples-python-s3-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus. 

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurieren Sie die Anwendung
<a name="examples-python-s3-configure"></a>

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **myapp.zip** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus.

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

   Wählen Sie **Speichern**.

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](how-python-creating.md#how-python-creating-code).

1. Geben Sie die folgenden Eigenschaften und Werte der Anwendung ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. 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](how-python-creating.md#how-python-creating-code).

1. Geben Sie die folgenden Anwendungseigenschaften und Werte ein: (*bucket-name*ersetzen Sie sie durch den tatsächlichen Namen Ihres Amazon S3 S3-Buckets.)    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

1. Für die **CloudWatch Protokollierung** **aktivieren Sie das Kontrollkästchen Aktivieren**.

1. Wählen Sie **Aktualisieren** aus.

**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 IAM-Richtlinie
<a name="examples-python-s3-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf die Kinesis-Datenströme.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="examples-python-s3-run"></a>

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
<a name="examples-python-s3-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Sliding Window-Lernprogramm erstellt wurden.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-python-s3-cleanup-app)
+ [Löschen Sie Ihren Kinesis-Datenstream](#examples-python-s3-cleanup-stream)
+ [Löschen Sie Ihre Amazon S3 S3-Objekte und Ihren Bucket](#examples-python-s3-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-python-s3-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-python-s3-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-python-s3-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

1. wählen Sie im Bereich Managed Service for Apache Flink die Option. **MyApplication**

1. 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
<a name="examples-python-s3-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

##### Löschen Sie Ihre Amazon S3 S3-Objekte und Ihren Bucket
<a name="examples-python-s3-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-python-s3-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-python-s3-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

### Scala-Beispiele
<a name="examples-scala"></a>

In den folgenden Beispielen wird die Erstellung von Anwendungen über Scala mit Apache Flink gezeigt.

**Topics**
+ [Beispiel: Erstellen eines Tumbling-Fensters in Scala](#examples-tumbling-scala)
+ [Beispiel: Erstellen eines Schiebefensters in Scala](#examples-sliding-scala)
+ [Beispiel: Streaming-Daten in Scala an Amazon S3 senden](#examples-s3sink-scala)

#### Beispiel: Erstellen eines Tumbling-Fensters in Scala
<a name="examples-tumbling-scala"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter. [Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md)

**Anmerkung**  
Ab Version 1.15 ist Flink Scala-frei. Anwendungen können jetzt die 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.](https://flink.apache.org/2022/02/22/scala-free.html)

In dieser Übung erstellen Sie eine einfache Streaming-Anwendung, die Scala 3.2.0 und die Java-API von Flink verwendet. DataStream 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)](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html) ab. 

**Topics**
+ [Laden Sie den Anwendungscode herunter und untersuchen Sie ihn](#examples-tumbling-scala-download)
+ [Kompilieren Sie den Anwendungscode und laden Sie ihn hoch](#examples-tumbling-scala-upload)
+ [Erstellen Sie die Anwendung (Konsole) und führen Sie sie aus](#scala-7)
+ [Erstellen und Ausführen der Anwendung (CLI)](#examples-tumbling-scala-create-run-cli)
+ [Den Anwendungscode aktualisieren](#examples-tumbling-scala-update-app-code)
+ [AWS Ressourcen bereinigen](#examples-tumbling-scala-cleanup)

##### Laden Sie den Anwendungscode herunter und untersuchen Sie ihn
<a name="examples-tumbling-scala-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Kompilieren Sie den Anwendungscode und laden Sie ihn hoch
<a name="examples-tumbling-scala-upload"></a>

In diesem Abschnitt kompilieren Sie Ihren Anwendungscode und laden ihn in einen Amazon-S3-Bucket hoch.

**Kompilieren des Anwendungscodes**

Verwenden Sie das [SBT](https://www.scala-sbt.org/)-Build-Tool, um den Scala-Code für die Anwendung zu erstellen. Informationen zur Installation von SBT finden Sie unter [Installieren von SBT mit CS-Setup](https://www.scala-sbt.org/download.html). Sie müssen auch das Java Development Kits (JDK) installieren. Siehe [Voraussetzungen für das Fertigstellen der Übungen](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Zum Verwenden Ihres Anwendungscodes kompilieren und packen Sie ihn in eine JAR-Datei. Sie können Ihren Code mit SBT kompilieren und verpacken:

   ```
   sbt assembly
   ```

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

   ```
   target/scala-3.2.0/tumbling-window-scala-1.0.jar
   ```

**Hochladen des Apache Flink-Streaming-Scala-Codes**

In diesem Abschnitt erstellen Sie einen Amazon S3-Bucket und laden Ihren Anwendungscode hoch.

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

1. Wählen Sie **Bucket erstellen** aus

1. 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** aus.

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

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. Wählen Sie den Bucket `ka-app-code-<username>` und dann **Hochladen** aus.

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

1. 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
<a name="scala-7"></a>

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

##### Erstellen der Anwendung
<a name="scala-7-console-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurieren Sie die Anwendung
<a name="scala-7-console-configure"></a>

Verwenden Sie das folgende Verfahren, um die Anwendung zu konfigurieren.

**Konfigurieren der Anwendung**

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **tumbling-window-scala-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus. 

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

   Wählen Sie **Speichern**.

1. Wählen Sie unter **Eigenschaften** erneut **Gruppe hinzufügen** aus. 

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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 IAM-Richtlinie
<a name="scala-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf den Amazon S3-Bucket.

**Um die IAM-Richtlinie zu bearbeiten, um S3-Bucket-Berechtigungen hinzuzufügen**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="scala-7-console-run"></a>

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
<a name="scala-7-console-stop"></a>

Um die Anwendung zu beenden, wählen Sie auf der **MyApplication**Seite **Stopp** aus. Bestätigen Sie die Aktion.

##### Erstellen und Ausführen der Anwendung (CLI)
<a name="examples-tumbling-scala-create-run-cli"></a>

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
<a name="examples-tumbling-scala-permissions"></a>

**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 an eine IAM-Rolle (die Sie im nächsten Abschnitt erstellen) an. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) im *IAM-Benutzerhandbuch*.

##### Erstellen einer IAM-Rolle
<a name="examples-tumbling-scala-iam-policy"></a>

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Anwendung von Managed Service für Apache Flink annehmen kann, um einen Quell-Stream zu lesen und in den Senken-Stream zu schreiben.

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

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

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationsbereich **Rollen** und dann **Rolle erstellen**.

1. Wählen Sie unter **Typ der vertrauenswürdigen Entität auswählen** die Option **AWS -Service** aus

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

1. Wählen Sie unter **Wählen Sie Ihren Anwendungsfall aus** die Option **Managed Service für Apache Flink** aus.

1. Wählen Sie **Weiter: Berechtigungen** aus.

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

1. 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** aus. 

    Jetzt haben Sie eine neue IAM-Rolle mit dem Namen `MF-stream-rw-role` erstellt. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle

1. Fügen Sie die Berechtigungsrichtlinie der Rolle an.
**Anmerkung**  
Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt, [Erstellen einer Berechtigungsrichtlinie](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy), erstellt haben.

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

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

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

   1. 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 den ARN der neuen Rolle.

 step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter [Erstellen einer IAM-Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) im *IAM-Benutzerhandbuch*.

##### Erstellen der Anwendung
<a name="examples-tumbling-scala-create-application-cli"></a>

Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `create_request.json`. Ersetzen Sie den Beispiel-Rollen-ARN durch den ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das Bucket-ARN-Suffix (username) mit dem Suffix, das Sie im vorherigen Abschnitt gewählt haben. Ersetzen Sie die beispielhafte Konto-ID (012345678901) in der Service-Ausführungsrolle mit Ihrer Konto-ID. Die `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 den [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)mit der folgenden Anforderung 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
<a name="examples-tumbling-scala-start"></a>

In diesem Abschnitt verwenden Sie die [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html)-Aktion, um die Anwendung zu starten.

**So starten Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `start_request.json`.

   ```
   {
       "ApplicationName": "tumbling_window",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. 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
<a name="examples-tumbling-scala-stop"></a>

In diesem Abschnitt verwenden Sie die [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html)-Aktion, um die Anwendung zu stoppen.

**So stoppen Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `stop_request.json`.

   ```
   {
      "ApplicationName": "tumbling_window"
   }
   ```

1. 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
<a name="examples-tumbling-scala-cw-option"></a>

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](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Aktualisieren Sie die Umgebungseigenschaften
<a name="examples-tumbling-scala-update-environment-properties"></a>

In diesem Abschnitt verwenden Sie die [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

**So aktualisieren Sie die Umgebungseigenschaften für die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. 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
<a name="examples-tumbling-scala-update-app-code"></a>

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

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](examples-gs-scala.md#examples-gs-scala-resources) 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
<a name="examples-tumbling-scala-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tumbling Window-Lernprogramm erstellt wurden.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-tumbling-scala-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-tumbling-scala-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#examples-tumbling-scala-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-tumbling-scala-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-tumbling-scala-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-tumbling-scala-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

1. wählen Sie im Bereich Managed Service for Apache Flink die Option. **MyApplication**

1. 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
<a name="examples-tumbling-scala-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="examples-tumbling-scala-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-tumbling-scala-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-tumbling-scala-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Beispiel: Erstellen eines Schiebefensters in Scala
<a name="examples-sliding-scala"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

**Anmerkung**  
Ab Version 1.15 ist Flink Scala-frei. Anwendungen können jetzt die 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.](https://flink.apache.org/2022/02/22/scala-free.html)

In dieser Übung erstellen Sie eine einfache Streaming-Anwendung, die Scala 3.2.0 und die Java-API von Flink verwendet. DataStream 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)](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html) ab. 

**Topics**
+ [Laden Sie den Anwendungscode herunter und untersuchen Sie ihn](#examples-sliding-scala-download)
+ [Kompilieren Sie den Anwendungscode und laden Sie ihn hoch](#examples-sliding-scala-upload)
+ [Erstellen Sie die Anwendung (Konsole) und führen Sie sie aus](#scala-7)
+ [Erstellen und Ausführen der Anwendung (CLI)](#examples-sliding-scala-create-run-cli)
+ [Den Anwendungscode aktualisieren](#examples-sliding-scala-update-app-code)
+ [AWS Ressourcen bereinigen](#examples-sliding-scala-cleanup)

##### Laden Sie den Anwendungscode herunter und untersuchen Sie ihn
<a name="examples-sliding-scala-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Kompilieren Sie den Anwendungscode und laden Sie ihn hoch
<a name="examples-sliding-scala-upload"></a>

In diesem Abschnitt kompilieren Sie Ihren Anwendungscode und laden ihn in einen Amazon-S3-Bucket hoch.

**Kompilieren des Anwendungscodes**

Verwenden Sie das [SBT](https://www.scala-sbt.org/)-Build-Tool, um den Scala-Code für die Anwendung zu erstellen. Informationen zur Installation von SBT finden Sie unter [Installieren von SBT mit CS-Setup](https://www.scala-sbt.org/download.html). Sie müssen auch das Java Development Kits (JDK) installieren. Siehe [Voraussetzungen für das Fertigstellen der Übungen](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Zum Verwenden Ihres Anwendungscodes kompilieren und packen Sie ihn in eine JAR-Datei. Sie können Ihren Code mit SBT kompilieren und verpacken:

   ```
   sbt assembly
   ```

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

   ```
   target/scala-3.2.0/sliding-window-scala-1.0.jar
   ```

**Hochladen des Apache Flink-Streaming-Scala-Codes**

In diesem Abschnitt erstellen Sie einen Amazon S3-Bucket und laden Ihren Anwendungscode hoch.

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

1. Wählen Sie **Bucket erstellen** aus

1. 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** aus.

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

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. Wählen Sie den Bucket `ka-app-code-<username>` und dann **Hochladen** aus.

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

1. 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
<a name="scala-7"></a>

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

##### Erstellen der Anwendung
<a name="scala-7-console-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurieren Sie die Anwendung
<a name="scala-7-console-configure"></a>

Verwenden Sie das folgende Verfahren, um die Anwendung zu konfigurieren.

**Konfigurieren der Anwendung**

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **sliding-window-scala-1.0.jar.** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus. 

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

   Wählen Sie **Speichern**.

1. Wählen Sie unter **Eigenschaften** erneut **Gruppe hinzufügen** aus. 

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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 IAM-Richtlinie
<a name="scala-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf den Amazon S3-Bucket.

**Um die IAM-Richtlinie zu bearbeiten, um S3-Bucket-Berechtigungen hinzuzufügen**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="scala-7-console-run"></a>

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
<a name="scala-7-console-stop"></a>

Um die Anwendung zu beenden, wählen Sie auf der **MyApplication**Seite **Stopp** aus. Bestätigen Sie die Aktion.

##### Erstellen und Ausführen der Anwendung (CLI)
<a name="examples-sliding-scala-create-run-cli"></a>

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
<a name="examples-sliding-scala-permissions"></a>

**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 an eine IAM-Rolle (die Sie im nächsten Abschnitt erstellen) an. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) im *IAM-Benutzerhandbuch*.

##### Erstellen einer IAM-Rolle
<a name="examples-sliding-scala-iam-policy"></a>

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Anwendung von Managed Service für Apache Flink annehmen kann, um einen Quell-Stream zu lesen und in den Senken-Stream zu schreiben.

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

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

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationsbereich **Rollen** und dann **Rolle erstellen**.

1. Wählen Sie unter **Typ der vertrauenswürdigen Entität auswählen** die Option **AWS -Service** aus

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

1. Wählen Sie unter **Wählen Sie Ihren Anwendungsfall aus** die Option **Managed Service für Apache Flink** aus.

1. Wählen Sie **Weiter: Berechtigungen** aus.

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

1. 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** aus. 

    Jetzt haben Sie eine neue IAM-Rolle mit dem Namen `MF-stream-rw-role` erstellt. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle

1. Fügen Sie die Berechtigungsrichtlinie der Rolle an.
**Anmerkung**  
Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt, [Erstellen einer Berechtigungsrichtlinie](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy), erstellt haben.

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

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

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

   1. 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 den ARN der neuen Rolle.

 step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter [Erstellen einer IAM-Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) im *IAM-Benutzerhandbuch*.

##### Erstellen der Anwendung
<a name="examples-sliding-scala-create-application-cli"></a>

Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `create_request.json`. Ersetzen Sie den Beispiel-Rollen-ARN durch den ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das Bucket-ARN-Suffix (username) mit dem Suffix, das Sie im vorherigen Abschnitt gewä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 den [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)mit der folgenden Anforderung 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
<a name="examples-sliding-scala-start"></a>

In diesem Abschnitt verwenden Sie die [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html)-Aktion, um die Anwendung zu starten.

**So starten Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `start_request.json`.

   ```
   {
       "ApplicationName": "sliding_window",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. 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
<a name="examples-sliding-scala-stop"></a>

In diesem Abschnitt verwenden Sie die [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html)-Aktion, um die Anwendung zu stoppen.

**So stoppen Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `stop_request.json`.

   ```
   {
      "ApplicationName": "sliding_window"
   }
   ```

1. 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
<a name="examples-sliding-scala-cw-option"></a>

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](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Aktualisieren Sie die Umgebungseigenschaften
<a name="examples-sliding-scala-update-environment-properties"></a>

In diesem Abschnitt verwenden Sie die [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

**So aktualisieren Sie die Umgebungseigenschaften für die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. 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
<a name="examples-sliding-scala-update-app-code"></a>

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

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](examples-gs-scala.md#examples-gs-scala-resources) 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
<a name="examples-sliding-scala-cleanup"></a>

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

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-sliding-scala-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-sliding-scala-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#examples-sliding-scala-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-sliding-scala-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-sliding-scala-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-sliding-scala-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

1. wählen Sie im Bereich Managed Service for Apache Flink die Option. **MyApplication**

1. 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
<a name="examples-sliding-scala-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="examples-sliding-scala-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-sliding-scala-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-sliding-scala-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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

#### Beispiel: Streaming-Daten in Scala an Amazon S3 senden
<a name="examples-s3sink-scala"></a>

**Anmerkung**  
Aktuelle Beispiele finden Sie unter[Beispiele für die Erstellung von und die Arbeit mit Managed Service für Apache Flink-Anwendungen](examples-collapsibles.md).

**Anmerkung**  
Ab Version 1.15 ist Flink Scala-frei. Anwendungen können jetzt die 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.](https://flink.apache.org/2022/02/22/scala-free.html)

In dieser Übung erstellen Sie eine einfache Streaming-Anwendung, die Scala 3.2.0 und die Java-API von Flink verwendet. DataStream 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)](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html) ab. Sie müssen nur einen zusätzlichen Ordner **data/** im Amazon S3 S3-Bucket erstellen *ka-app-code-*<username>. 

**Topics**
+ [Laden Sie den Anwendungscode herunter und untersuchen Sie ihn](#examples-s3sink-scala-download)
+ [Kompilieren Sie den Anwendungscode und laden Sie ihn hoch](#examples-s3sink-scala-upload)
+ [Erstellen Sie die Anwendung (Konsole) und führen Sie sie aus](#scala-7)
+ [Erstellen und Ausführen der Anwendung (CLI)](#examples-s3sink-scala-create-run-cli)
+ [Den Anwendungscode aktualisieren](#examples-s3sink-scala-update-app-code)
+ [AWS Ressourcen bereinigen](#examples-s3sink-scala-cleanup)

##### Laden Sie den Anwendungscode herunter und untersuchen Sie ihn
<a name="examples-s3sink-scala-download"></a>

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

1. Installieren Sie den Git-Client, wenn Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Klonen Sie das Remote-Repository mit dem folgenden Befehl:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Kompilieren Sie den Anwendungscode und laden Sie ihn hoch
<a name="examples-s3sink-scala-upload"></a>

In diesem Abschnitt kompilieren Sie Ihren Anwendungscode und laden ihn in einen Amazon-S3-Bucket hoch.

**Kompilieren des Anwendungscodes**

Verwenden Sie das [SBT](https://www.scala-sbt.org/)-Build-Tool, um den Scala-Code für die Anwendung zu erstellen. Informationen zur Installation von SBT finden Sie unter [Installieren von SBT mit CS-Setup](https://www.scala-sbt.org/download.html). Sie müssen auch das Java Development Kits (JDK) installieren. Siehe [Voraussetzungen für das Fertigstellen der Übungen](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Zum Verwenden Ihres Anwendungscodes kompilieren und packen Sie ihn in eine JAR-Datei. Sie können Ihren Code mit SBT kompilieren und verpacken:

   ```
   sbt assembly
   ```

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

   ```
   target/scala-3.2.0/s3-sink-scala-1.0.jar
   ```

**Hochladen des Apache Flink-Streaming-Scala-Codes**

In diesem Abschnitt erstellen Sie einen Amazon S3-Bucket und laden Ihren Anwendungscode hoch.

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

1. Wählen Sie **Bucket erstellen** aus

1. 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** aus.

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

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

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. Wählen Sie den Bucket `ka-app-code-<username>` und dann **Hochladen** aus.

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

1. 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
<a name="scala-7"></a>

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

##### Erstellen der Anwendung
<a name="scala-7-console-create"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

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

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

1. Wählen Sie für **Zugriffsberechtigungen** die Option **Erstellen / Aktualisieren Sie IAM-Rolle `kinesis-analytics-MyApplication-us-west-2`** aus.

1. Wählen Sie **Create application** aus.

**Anmerkung**  
Beim Erstellen einer Anwendung von Managed Service für Apache Flink mit der Konsole 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 unter Verwendung Ihres Anwendungsnamens und der Region wie folgt benannt:  
Richtlinie: `kinesis-analytics-service-MyApplication-us-west-2`
Rolle: `kinesisanalytics-MyApplication-us-west-2`

##### Konfigurieren Sie die Anwendung
<a name="scala-7-console-configure"></a>

Verwenden Sie das folgende Verfahren, um die Anwendung zu konfigurieren.

**Konfigurieren der Anwendung**

1. Wählen Sie auf der **MyApplication**Seite **Configure** aus.

1. Klicken Sie auf der Seite **Configure application (Anwendung konfigurieren)** auf die Option **Code location (Codespeicherort)**:
   + Geben Sie für **Amazon-S3-Bucket** **ka-app-code-*<username>*** ein.
   + Geben Sie als **Pfad zum Amazon-S3-Objekt** den Wert **s3-sink-scala-1.0.jar** ein.

1. Wählen Sie unter **Zugriff auf Anwendungsressourcen** für **Zugriffsberechtigungen** die Option **IAM-Rolle `kinesis-analytics-MyApplication-us-west-2` erstellen/aktualisieren** aus.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus. 

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

   Wählen Sie **Speichern**.

1. Wählen Sie unter **Eigenschaften** die Option **Gruppe hinzufügen** aus. 

1. Geben Sie Folgendes ein:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/earlier.html)

1. Stellen Sie unter **Überwachung** sicher, dass die **Ebene der Überwachungsmetriken** auf **Anwendung** eingestellt ist.

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

1. Wählen Sie **Aktualisieren** aus.

**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 IAM-Richtlinie
<a name="scala-7-console-iam"></a>

Bearbeiten Sie die IAM-Richtlinie zum Hinzufügen von Berechtigungen für den Zugriff auf den Amazon S3-Bucket.

**Um die IAM-Richtlinie zu bearbeiten, um S3-Bucket-Berechtigungen hinzuzufügen**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

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

1. Wählen Sie auf der Seite **Summary (Übersicht)** die Option **Edit policy (Richtlinie bearbeiten)** aus. Wählen Sie den Tab **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="scala-7-console-run"></a>

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
<a name="scala-7-console-stop"></a>

Um die Anwendung zu beenden, wählen Sie auf der **MyApplication**Seite **Stopp** aus. Bestätigen Sie die Aktion.

##### Erstellen und Ausführen der Anwendung (CLI)
<a name="examples-s3sink-scala-create-run-cli"></a>

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
<a name="examples-s3sink-scala-permissions"></a>

**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 an eine IAM-Rolle (die Sie im nächsten Abschnitt erstellen) an. 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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadCode",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::ka-app-code-username/getting-started-scala-1.0.jar"
            ]
        },
        {
            "Sid": "DescribeLogGroups",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:*"
            ]
        },
        {
            "Sid": "DescribeLogStreams",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
            ]
        },
        {
            "Sid": "PutLogEvents",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
            ]
        },
        {
            "Sid": "ReadInputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:123456789012:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:123456789012:stream/ExampleOutputStream"
        }
    ]
}
```

------

 step-by-stepAnweisungen zum Erstellen einer Berechtigungsrichtlinie finden Sie unter [Tutorial: Erstellen und Anhängen Ihrer ersten vom Kunden verwalteten Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) im *IAM-Benutzerhandbuch*.

##### Erstellen einer IAM-Rolle
<a name="examples-s3sink-scala-iam-policy"></a>

In diesem Abschnitt erstellen Sie eine IAM-Rolle, die die Anwendung von Managed Service für Apache Flink annehmen kann, um einen Quell-Stream zu lesen und in den Senken-Stream zu schreiben.

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

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

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationsbereich **Rollen** und dann **Rolle erstellen**.

1. Wählen Sie unter **Typ der vertrauenswürdigen Entität auswählen** die Option **AWS -Service** aus

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

1. Wählen Sie unter **Wählen Sie Ihren Anwendungsfall aus** die Option **Managed Service für Apache Flink** aus.

1. Wählen Sie **Weiter: Berechtigungen** aus.

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

1. 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** aus. 

    Jetzt haben Sie eine neue IAM-Rolle mit dem Namen `MF-stream-rw-role` erstellt. Im nächsten Schritt aktualisieren Sie die Vertrauens- und Berechtigungsrichtlinien für die Rolle

1. Fügen Sie die Berechtigungsrichtlinie der Rolle an.
**Anmerkung**  
Für diese Übung übernimmt Managed Service für Apache Flink diese Rolle sowohl für das Lesen von Daten aus einem Kinesis-Datenstrom (Quelle) als auch zum Schreiben der Ausgabedaten in einen anderen Kinesis-Datenstrom. Daher fügen Sie die Richtlinie an, die Sie im vorherigen Schritt, [Erstellen einer Berechtigungsrichtlinie](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy), erstellt haben.

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

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

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

   1. 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 den ARN der neuen Rolle.

 step-by-stepAnweisungen zum Erstellen einer Rolle finden Sie unter [Erstellen einer IAM-Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) im *IAM-Benutzerhandbuch*.

##### Erstellen der Anwendung
<a name="examples-s3sink-scala-create-application-cli"></a>

Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `create_request.json`. Ersetzen Sie den Beispiel-Rollen-ARN durch den ARN für die Rolle, die Sie zuvor erstellt haben. Ersetzen Sie das Bucket-ARN-Suffix (username) mit dem Suffix, das Sie im vorherigen Abschnitt gewä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 den [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)mit der folgenden Anforderung 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
<a name="examples-s3sink-scala-start"></a>

In diesem Abschnitt verwenden Sie die [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html)-Aktion, um die Anwendung zu starten.

**So starten Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `start_request.json`.

   ```
   {{
       "ApplicationName": "s3_sink",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. 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
<a name="examples-s3sink-scala-stop"></a>

In diesem Abschnitt verwenden Sie die [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html)-Aktion, um die Anwendung zu stoppen.

**So stoppen Sie die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen `stop_request.json`.

   ```
   {
      "ApplicationName": "s3_sink"
   }
   ```

1. 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
<a name="examples-s3sink-scala-cw-option"></a>

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](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Aktualisieren Sie die Umgebungseigenschaften
<a name="examples-s3sink-scala-update-environment-properties"></a>

In diesem Abschnitt verwenden Sie die [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)-Aktion, um die Umgebungseigenschaften für die Anwendung zu ändern, ohne den Anwendungscode neu kompilieren zu müssen. In diesem Beispiel ändern Sie die Region der Quell- und Ziel-Streams.

**So aktualisieren Sie die Umgebungseigenschaften für die Anwendung**

1. Speichern Sie den folgenden JSON-Code in eine 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. 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
<a name="examples-s3sink-scala-update-app-code"></a>

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

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](examples-gs-scala.md#examples-gs-scala-resources) 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
<a name="examples-s3sink-scala-cleanup"></a>

Dieser Abschnitt enthält Verfahren zum Bereinigen von AWS Ressourcen, die im Tumbling Window-Tutorial erstellt wurden.

**Topics**
+ [Löschen Sie Ihre Managed Service for Apache Flink-Anwendung](#examples-s3sink-scala-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-s3sink-scala-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#examples-s3sink-scala-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-s3sink-scala-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-s3sink-scala-cleanup-cw)

##### Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-s3sink-scala-cleanup-app"></a>

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon MSF-Konsole unter https://console.aws.amazon.com /flink.

1. wählen Sie im Bereich Managed Service for Apache Flink die Option. **MyApplication**

1. 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
<a name="examples-s3sink-scala-cleanup-stream"></a>

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

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

1. Wählen Sie auf der **ExampleInputStream**Seite **Delete Kinesis Stream** aus und bestätigen Sie dann den Löschvorgang.

1. 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
<a name="examples-s3sink-scala-cleanup-s3"></a>

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

1. Wählen Sie den ***<username>*Bucket ka-app-code -.**

1. 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
<a name="examples-s3sink-scala-cleanup-iam"></a>

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in der Navigationsleiste **Policies** aus.

1. Geben Sie in der Filtersteuerung **Kinesis** ein.

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

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

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

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

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

##### CloudWatch Löschen Sie Ihre Ressourcen
<a name="examples-s3sink-scala-cleanup-cw"></a>

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

1. Wählen Sie in der Navigationsleiste **Protokolle** aus.

1. Wählen Sie die Gruppe**/aws/kinesis-analytics/MyApplication**log aus.

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