

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.

# Unterstützte und veraltete Apache Flink-Versionen
<a name="release-version-list"></a>

Dieses Thema enthält Informationen zu den unterstützten Versionen von Apache Flink in Managed Service for Apache Flink. In diesem Thema sind auch die unterstützten Apache Flink-Funktionen in jeder Version aufgeführt.

**Anmerkung**  
Wenn Sie eine veraltete Version von Apache Flink verwenden, empfehlen wir Ihnen, Ihre Anwendung mithilfe der [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md) Funktion in Managed Service für Apache Flink auf die neueste unterstützte Flink-Version zu aktualisieren.


| Apache Flink-Version | Status — Amazon Managed Service für Apache Flink | Status — Apache Flink-Gemeinschaft | Link | Hinweis | 
| --- | --- | --- | --- | --- | 
| 2.2.0 | Unterstützt | Unterstützt | [Amazon Managed Service für Apache Flink 2.2](flink-2-2.md) | Dies ist eine Hauptversion mit grundlegenden Änderungen. Sehen Sie nach[Wichtige Änderungen und veraltete Versionen](flink-2-2.md#flink-2-2-breaking-changes), bevor Sie fortfahren. | 
| 1.20.0 | Unterstützt | Unterstützt | [Amazon Managed Service für Apache Flink 1.20](flink-1-20.md) |  | 
| 1.19.1 | Unterstützt | Unterstützt | [Amazon Managed Service für Apache Flink 1.19](flink-1-19.md) |  | 
| 1.18.1 | Unterstützt | Nicht unterstützt | [Amazon Managed Service für Apache Flink 1.18](flink-1-18.md) |  | 
| 1.15.2 | Unterstützt | Nicht unterstützt | [Amazon Managed Service für Apache Flink 1.15](flink-1-15-2.md) |  | 
| 1.13.1 | Abwertend | Nicht unterstützt | [Erste Schritte: Flink 1.13.2](earlier.md#getting-started-1-13) | Der Support für diese Version in Amazon Managed Service für Apache Flink endet am 16. Oktober 2025. | 
| 1.11.1 | Veraltet | Nicht unterstützt | [Informationen zu früheren Versionen für Managed Service for Apache Flink](earlier.md)(Diese Version wird ab Februar 2025 nicht mehr unterstützt) |  Wir planen, die Unterstützung für die Apache Flink-Versionen 1.6, 1.8 und 1.11 in Amazon Managed Service für Apache Flink einzustellen. Ab dem 14. Juli 2025 werden wir Anwendungen, die diese Versionen verwenden, in den Status READY versetzen. Ab dem 28. Juli 2025 können Sie keine Anwendungen mehr starten, die diese Versionen verwenden. Wir empfehlen Ihnen, Ihre Anwendungen jetzt sofort auf Flink Version 1.20 zu aktualisieren, indem Sie die Funktion für direkte Versionsupgrades in Amazon Managed Service für Apache Flink verwenden. Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md).  | 
| 1.8.2 | Veraltet | Nicht unterstützt | [Informationen zu früheren Versionen für Managed Service for Apache Flink](earlier.md)(Diese Version wird ab Februar 2025 nicht mehr unterstützt) |  Wir planen, die Unterstützung für die Apache Flink-Versionen 1.6, 1.8 und 1.11 in Amazon Managed Service für Apache Flink einzustellen. Ab dem 14. Juli 2025 werden wir Anwendungen, die diese Versionen verwenden, in den Status READY versetzen. Ab dem 28. Juli 2025 können Sie keine Anwendungen mehr starten, die diese Versionen verwenden. Wir empfehlen Ihnen, Ihre Anwendungen jetzt sofort auf Flink Version 1.20 zu aktualisieren, indem Sie die Funktion für direkte Versionsupgrades in Amazon Managed Service für Apache Flink verwenden. Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md). | 
| 1.6.2 | Veraltet | Nicht unterstützt | [Informationen zu früheren Versionen für Managed Service for Apache Flink](earlier.md)(Diese Version wird ab Februar 2025 nicht mehr unterstützt) |  Wir planen, die Unterstützung für die Apache Flink-Versionen 1.6, 1.8 und 1.11 in Amazon Managed Service für Apache Flink einzustellen. Ab dem 14. Juli 2025 werden wir Anwendungen, die diese Versionen verwenden, in den Status READY versetzen. Ab dem 28. Juli 2025 können Sie keine Anwendungen mehr starten, die diese Versionen verwenden. Wir empfehlen Ihnen, Ihre Anwendungen jetzt sofort auf Flink Version 1.20 zu aktualisieren, indem Sie die Funktion für direkte Versionsupgrades in Amazon Managed Service für Apache Flink verwenden. Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md).  | 

**Topics**
+ [Amazon Managed Service für Apache Flink 2.2](flink-2-2.md)
+ [Amazon Managed Service für Apache Flink 1.20](flink-1-20.md)
+ [Amazon Managed Service für Apache Flink 1.19](flink-1-19.md)
+ [Amazon Managed Service für Apache Flink 1.18](flink-1-18.md)
+ [Amazon Managed Service für Apache Flink 1.15](flink-1-15-2.md)
+ [Informationen zu früheren Versionen für Managed Service for Apache Flink](earlier.md)

# Amazon Managed Service für Apache Flink 2.2
<a name="flink-2-2"></a>

Amazon Managed Service für Apache Flink unterstützt jetzt Apache Flink Version 2.2. Dies ist das erste Hauptversions-Upgrade für den Service. Auf dieser Seite werden die in Flink 2.2 eingeführten Funktionen sowie wichtige Überlegungen zum Upgrade von Flink 1.x behandelt.

**Anmerkung**  
Flink 2.2 führt bahnbrechende Änderungen ein, die eine sorgfältige Planung erfordern. Lesen Sie die vollständige Liste der wichtigsten Änderungen und veralteten Versionen weiter unten und [Leitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades](state-compatibility.md) vor dem Upgrade von 1.x.

## Was ist neu in Amazon Managed Service für Apache Flink 2.2
<a name="flink-2-2-whats-new"></a>

Amazon Managed Service für Apache Flink 2.2 führt Verhaltensänderungen ein, die bestehende Anwendungen beim Upgrade beeinträchtigen können. Lesen Sie diese zusammen mit den Änderungen an der Flink-API im nächsten Abschnitt sorgfältig durch.

**Handhabung der programmatischen Konfiguration**
+ MSF Flink 2.2 meldet jetzt eine Ausnahme, wenn Kunden versuchen, Konfigurationen, die von MSF nicht unterstützt werden, über oder ähnliches zu ändern. `env.getConfig().set()` APIs Siehe [Eigenschaften der programmatischen Flink-Konfiguration](programmatic-configuration.md).
+ [Kunden können weiterhin über Support-Tickets die Änderung bestimmter Konfigurationen beantragen (siehe Modifizierbare Einstellungen)](https://docs.aws.amazon.com/managed-flink/latest/java/reference-modifiable-settings.html)

**Entfernung von Metriken**
+ Die `fullRestarts` Metrik wurde in Flink 2.2 entfernt. Verwenden Sie stattdessen die `numRestarts` Metrik.
+ Die `bytesRequestedPerFetch` Metrik für den KDS-Anschluss wurde in der AWS Flink-Connector-Version 6.0.0 entfernt (nur die Connector-Version, die mit Flink 2.2 kompatibel ist).
+ Die `downtime` Metriken `uptime` und sind beide in Flink 2.2 als veraltet markiert und werden bald entfernt. Durch die neue `uptime` Metrik ersetzen. `runningTime` `downtime`Ersetzen Sie durch eine oder mehrere von `restartingTime``cancellingTime`, und`failingTime`.
+ Eine vollständige Liste der unterstützten [Metriken finden Sie auf der Seite Metriken und Dimensionen](https://docs.aws.amazon.com/managed-flink/latest/java/metrics-dimensions.html).

**IMDS-Anrufe ohne Anmeldeinformationen wurden blockiert**
+ Diese zulässigen Endpunkte werden von den AWS SDKs **DefaultCredentialsProvider**(`/latest/meta-data/iam/security-credentials/`) und **DefaultAwsRegionProviderChain**(`/latest/dynamic/instance-identity/document`) verwendet, um Anmeldeinformationen und Region für Ihre Anwendung automatisch zu konfigurieren.
+ Anwendungen, die AWS-SDK-Funktionen verwenden und auf IMDS-Aufrufe ohne Anmeldeinformationen angewiesen sind (wie`EC2MetadataUtils.getInstanceId()`,, oder`EC2MetadataUtils.getAvailabilityZone()`) `EC2MetadataUtils.getInstanceType()``EC2MetadataUtils.getLocalHostName()`, erhalten HTTP 4xx-Fehler, wenn sie versuchen, diese Aufrufe zu starten.
+ Wenn Ihre Anwendung IMDS-Metadaten oder andere Informationen außerhalb der erlaubten Pfade verwendet, sollten Sie Ihren Code so umgestalten, dass er stattdessen Umgebungsvariablen oder Anwendungskonfigurationen verwendet.

**Schreibgeschütztes Root-Dateisystem**
+ Um die Sicherheit zu verbessern, führt jede Abhängigkeit, die nicht `/tmp` das Standard-Flink-Arbeitsverzeichnis ist, zu:. `java.io.FileNotFoundException: /{path}/{filename} (Read-only file system)`
+ Dateisystemabhängigkeiten können direkt aus Ihrem Code oder indirekt aus Bibliotheken stammen, die in Ihren Abhängigkeiten enthalten sind. Überschreiben Sie direkte Dateisystemabhängigkeiten `/tmp/` in Ihrem Code. Verwenden Sie bei indirekten Dateisystemabhängigkeiten von Bibliotheken Überschreibungen der Bibliothekskonfiguration, um Dateisystemoperationen auf diese umzuleiten. `/tmp/`

## Wichtige Änderungen und veraltete Versionen
<a name="flink-2-2-breaking-changes"></a>

Im Folgenden finden Sie eine Zusammenfassung der wichtigsten Änderungen und veralteten Versionen, die in Managed Service for Apache Flink 2.2 eingeführt wurden. In den Versionshinweisen zu [Apache Flink 2.0 finden Sie die vollständigen Versionshinweise](https://nightlies.apache.org/flink/flink-docs-stable/release-notes/flink-2.0/) zu Apache Flink 2.0, in denen diese wichtigen Änderungen eingeführt werden.

**DataSet API wurde entfernt**
+ Die veraltete DataSet API für die Stapelverarbeitung wurde in Flink 2.0\$1 vollständig entfernt. Die gesamte Batch-Verarbeitung muss jetzt die einheitliche DataStream API verwenden.
+ Anwendungen, die die DataSet API verwenden, müssen vor dem Upgrade auf die DataStream API migriert werden. Informationen zur Konvertierung finden Sie im [Apache DataSet Flink-Migrationsleitfaden DataStream](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/dataset_migration/)

**Java 11 und Python 3.8 wurden entfernt**
+ Die Unterstützung für Java 11 wurde vollständig entfernt; Java 17 ist die standardmäßige und empfohlene Laufzeit.
+ Die Unterstützung für Python 3.8 wurde entfernt; Python 3.12 ist jetzt die Standardeinstellung.

**Ältere Connector-Klassen wurden entfernt**
+ Die alten Versionen `SourceFunction` und `SinkFunction` Schnittstellen wurden durch die neuen vereinheitlichten Versionen Source (FLIP-27) und Sink (FLIP-143) ersetzt, die eine bessere Unterstützung für bounded/unbounded Dualität APIs, eine verbesserte Checkpoint-Koordination und ein übersichtlicheres Programmiermodell bieten.
+ Verwenden Sie für Kinesis Data Streams `KinesisStreamsSource` und `KinesisStreamsSink` von`flink-connector-aws-kinesis-streams:6.0.0-2.0`.

**Die Scala-API wurde entfernt**
+ Die Flink Scala-API wurde entfernt. Die Java-API von Flink ist jetzt die einzige unterstützte API für JVM-basierte Anwendungen.
+ Wenn Ihre Anwendung in Scala geschrieben ist, können Sie weiterhin die Java-API von Flink aus dem Scala-Code verwenden. Die wichtigste Änderung besteht darin, dass die Scala-spezifischen Wrapper und impliziten Konvertierungen nicht mehr verfügbar sind. Einzelheiten zur [Aktualisierung Ihrer Scala-Anwendungen finden Sie unter Upgraden von Anwendungen und Flink-Versionen](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/upgrading/).

**Überlegungen zur staatlichen Kompatibilität**
+ Ein Upgrade des Kryo-Serializers von Version 2.24 auf 5.6 kann zu Kompatibilitätsproblemen mit dem Status führen.
+ POJOs Bei Sammlungen (`HashMap`,,`HashSet`) kann es zu `ArrayList` Problemen mit der Statuskompatibilität kommen.
+ Die Avro- und Protobuf-Serialisierung ist davon nicht betroffen.
+ Eine detaillierte Bewertung [Leitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades](state-compatibility.md) zur Bewertung des Risikoniveaus Ihrer Anwendung finden Sie unter.

## Die Funktionen von Apache Flink 2.2 werden unterstützt
<a name="flink-2-2-supported-features"></a>

**Laufzeit- und Sprachunterstützung**


****  

| Feature | Description | Dokumentation | 
| --- | --- | --- | 
| Java 17-Laufzeit | Java 17 ist jetzt die standardmäßige und empfohlene Runtime; die Unterstützung für Java 11 wurde entfernt. | [Java-Kompatibilität](https://nightlies.apache.org/flink/flink-docs-stable/zh/docs/deployment/java_compatibility/) | 
| Support für Python 3.12 | Python 3.12 wird jetzt unterstützt; Python 3.8-Unterstützung wurde entfernt. | [PyFlink Dokumentation](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/python/overview/) | 

**Staatliches Management und Leistung**


****  

| Feature | Description | Dokumentation | 
| --- | --- | --- | 
| RocksDB 8.10.0 | Verbesserte I/O Leistung mit dem RocksDB-Upgrade. | [Staatliche Backends](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/state/state_backends/) | 
| Verbesserungen der Serialisierung | Spezielle Serialisierer für Map, List, Set; Kryo wurde von 2.24 auf 5.6 aktualisiert. | [Geben Sie Serialisierung ein](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/fault-tolerance/serialization/types_serialization/) | 

**Funktionen der SQL- und Tabellen-API**


****  

| Feature | Description | Dokumentation | 
| --- | --- | --- | 
| VARIANT-Datentyp | Native Unterstützung für halbstrukturierte Daten (JSON) ohne wiederholtes Parsen von Zeichenketten. | [Datentypen](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/types/) | 
| Delta-Join | Reduziert die Statusanforderungen für Streaming-Joins, indem nur die neueste Version jedes Schlüssels verwaltet wird. Erfordert eine vom Kunden verwaltete Infrastruktur (z. B. Apache Fluss). | [Joins](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/queries/joins/) | 
| StreamingMultiJoinOperator | Führt Multiway-Joins mit einem einzigen Operator aus, wodurch Zwischenmaterialisierungen vermieden werden. | [FLIP-516](https://cwiki.apache.org/confluence/display/FLINK/FLIP-516) | 
| ProcessTableFunction (PTF) | Ermöglicht zustandsbehaftete, ereignisgesteuerte Logik direkt in SQL mit Status und Timern pro Schlüssel. | [Benutzerdefinierte Funktionen](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/functions/udfs/) | 
| ML\$1PREDICT-Funktion | Rufen Sie registrierte ML-Modelle für streaming/batch Tabellen direkt aus SQL auf. Erfordert, dass der Kunde eine ModelProvider Implementierung bündelt (z. B.flink-model-openai). ModelProvider Bibliotheken werden nicht von Managed Service für Apache Flink ausgeliefert. | [ML Predict](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/queries/model-inference/) | 
| Modell DDL | Definieren Sie ML-Modelle mithilfe von CREATE MODEL-Anweisungen als erstklassige Katalogobjekte. | [CREATE-Anweisungen](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/create/#create-model) | 
| Vektor-Suche | Die Flink SQL API unterstützt die Suche nach Vektordatenbanken. Derzeit ist keine VectorSearchTableSource Open-Source-Implementierung verfügbar. Kunden müssen ihre eigene Implementierung bereitstellen. | [Flink SQL](https://nightlies.apache.org/flink/flink-docs-stable/release-notes/flink-2.2/#support-vector_search-in-flink-sql) | 

**DataStream API-Funktionen**


****  

| Feature | Description | Dokumentation | 
| --- | --- | --- | 
| FLIP-27-Quell-API | Neue einheitliche Quellschnittstelle, die die alte ersetzt. SourceFunction | [Sources (Quellen)](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/sources/) | 
| FLIP-143 Sink API | Neue einheitliche Sink-Schnittstelle, die die alte ersetzt. SinkFunction | [Senken](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/sinks/) | 
| Asynchrones Python DataStream | Blockierungsfreie I/O Operationen in der DataStream Python-API unter Verwendung von AsyncFunction. | [Asynchrone I/O](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/python/datastream/operators/async_io/) | 

## Verfügbarkeit von Anschlüssen
<a name="flink-2-2-connectors"></a>

Wenn Sie auf Flink 2.2 aktualisieren, müssen Sie auch Ihre Connector-Abhängigkeiten auf Versionen aktualisieren, die mit der Flink 2.2-Runtime kompatibel sind. Flink-Konnektoren werden unabhängig von der Flink-Laufzeit veröffentlicht, und es gibt noch nicht für alle Steckverbinder eine Flink 2.2-kompatible Version. Die folgende Tabelle fasst die Verfügbarkeit häufig verwendeter Konnektoren in Amazon Managed Service für Apache Flink zusammen:


**Verfügbarkeit von Konnektoren für Flink 2.2**  

| Konnektor | Flink 1.20 Version | Flink 2.0\$1 Ausführung | Hinweise | 
| --- | --- | --- | --- | 
| Apache Kafka | flink-connector-kafka 3.4.0-1.20 | flink-connector-kafka 4,0,0-2,0 | Empfohlen für Flink 2.2 | 
| Kinesis Data Streams (Quelle) | flink-connector-kinesis 5.0.0-1.20 | flink-connector-aws-kinesis-streamt 6.0.0-2.0 | Empfohlen für Flink 2.2 | 
| Kinesis Data Streams (Senke) | flink-connector-aws-kinesis-Streams 5.1.0-1.20 | flink-connector-aws-kinesis-streamt 6.0.0-2.0 | Empfohlen für Flink 2.2 | 
| Amazon Data Firehose | flink-connector-aws-kinesis-Firehose 5.1.0-1.20 | flink-connector-aws-kinesis-Feuerwehrschlauch 6.0.0-2.0 | Kompatibel mit Flink 2.0 | 
| Amazon DynamoDB | flink-connector-dynamodb 5.1.0-1.20 | flink-connector-dynamodb 6,0,0-2,0 | Kompatibel mit Flink 2.0 | 
| Amazon SQS | flink-connector-sqs 5.1.0-1.20 | flink-connector-sqs 6,0,0-2,0 | Kompatibel mit Flink 2.0 | 
| FileSystem (S3, HDFS) | Im Lieferumfang von Flink enthalten | Im Paket mit Flink | In die Flink-Distribution integriert — immer verfügbar | 
| JDBC | flink-connector-jdbc 3.3.0-1.20 | Noch nicht für 2.x veröffentlicht | Keine Flink 2.x-kompatible Version verfügbar | 
| OpenSearch | flink-connector-opensearch 1.2.0-1.19 | Noch nicht für 2.x veröffentlicht | Keine Flink 2.x-kompatible Version verfügbar | 
| Elasticsearch | Nur Legacy-Anschluss | Noch nicht für 2.x veröffentlicht | Erwägen Sie eine Migration zum Connector OpenSearch  | 
| Amazon Managed Service für Prometheus | flink-connector-prometheus 1.0.0-1.20 | Noch nicht für 2.x veröffentlicht | Keine Flink 2.x-kompatible Version verfügbar | 
+ Wenn Ihre Anwendung von einem Connector abhängt, für den es noch keine Flink 2.x-Version gibt, haben Sie zwei Möglichkeiten: Warten Sie, bis der Connector eine kompatible Version veröffentlicht, oder prüfen Sie, ob Sie ihn durch eine Alternative ersetzen können (z. B. mithilfe des JDBC-Katalogs oder einer benutzerdefinierten Senke).
+ Achten Sie bei der Aktualisierung von Konnektorversionen auf Änderungen der Artefaktnamen — einige Konnektoren wurden zwischen den Hauptversionen umbenannt (z. B. wurde der Firehose-Connector `flink-connector-aws-firehose` in einigen Zwischenversionen von `flink-connector-aws-kinesis-firehose` zu geändert).
+ In der [Dokumentation zum Amazon Managed Service for Apache Flink Connector finden](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html) Sie immer die genauen Namen und Versionen der Artefakte, die in Ihrer Ziel-Runtime unterstützt werden.

## Nicht unterstützte und experimentelle Funktionen
<a name="flink-2-2-unsupported"></a>

Die folgenden Funktionen werden in Amazon Managed Service für Apache Flink 2.2 nicht unterstützt:
+ **Materialisierte Tabellen**: Kontinuierlich verwaltete, abfragbare Tabellen-Snapshots.
+ **Benutzerdefinierte Telemetrieänderungen**: Benutzerdefinierte Metrik-Reporter und Telemetriekonfigurationen.
+ **ForSt State-Backend**: Disaggregierter Statusspeicher (experimentell in Open Source).
+ **Java 21**: Experimentelle Unterstützung in Open Source, nicht unterstützt in Managed Service für Apache Flink.

## Bekannte Probleme
<a name="flink-2-2-known-issues"></a>

**Amazon Managed Service für Apache Flink Studio**

Flink 2.2 in Amazon Managed Service für Apache Flink unterstützt keine Studio-Anwendungen. Weitere Informationen finden Sie unter [Ein Studio-Notizbuch erstellen](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Kinesis-Anschluss EFO**
+ Anwendungen, die den in Connector v5.0.0 und v6.0.0 eingeführten Pfad `KinesisStreamsSource` with EFO (Enhanced Fan-Out/ SubscribeToShard) verwenden, können fehlschlagen, wenn Kinesis-Streams reshardiert werden. Dies ist ein bekanntes Problem in der Community. Weitere Informationen finden Sie unter [FLINK-37648](https://issues.apache.org/jira/browse/FLINK-37648).
+ Bei Anwendungen, die den in den Konnektoren v5.0.0 und v6.0.0 eingeführten Pfad `KinesisStreamsSource` with EFO (Enhanced Fan-Out/ SubscribeToShard) zusammen verwenden, `KinesisStreamsSink` kann es zu Deadlocks kommen, wenn die Flink-Anwendung unter Gegendruck steht, was zu einem vollständigen Stopp der Datenverarbeitung in einer oder mehreren führt. TaskManagers Ein erzwungener Stop-Vorgang und ein Startvorgang der Anwendung sind erforderlich, um die Anwendung wiederherzustellen. Dies ist ein Unterfall des in der Community bekannten Problems. Weitere Informationen finden Sie unter [FLINK-34071](https://issues.apache.org/jira/browse/FLINK-34071).

## Verbessern Sie das Erlebnis
<a name="flink-2-2-upgrade"></a>

Amazon Managed Service für Apache Flink unterstützt direkte Versions-Upgrades, die Ihre Anwendungskonfiguration, Protokolle, Metriken, Tags und — falls Status und Binärdateien kompatibel sind — Ihren Anwendungsstatus beibehalten. Anweisungen finden Sie unter. step-by-step [Upgrade auf Flink 2.2: Vollständige Anleitung](flink-2-2-upgrade-guide.md)

Hinweise zur Bewertung des Kompatibilitätsrisikos und zum Umgang mit inkompatiblen Zuständen bei Upgrades finden Sie unter[Leitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades](state-compatibility.md).

## Nächste Schritte
<a name="flink-2-2-next-steps"></a>
+ Neu bei Flink 2.2? Eine ausführliche Dokumentation zu Apache Flink 2.2 finden Sie in der [Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-2.2/) 2.2-Dokumentation.
+ Sie planen ein Upgrade? Siehe [Upgrade auf Flink 2.2: Vollständige Anleitung](flink-2-2-upgrade-guide.md)
+ Bedenken hinsichtlich der staatlichen Kompatibilität? Siehe [Leitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades](state-compatibility.md)

Bei Fragen oder Problemen wenden Sie sich an den Support [Fehlerbehebung bei Managed Service für Apache Flink](troubleshooting.md) oder wenden Sie sich an den AWS Support.

# Amazon Managed Service für Apache Flink 1.20
<a name="flink-1-20"></a>

Managed Service für Apache Flink unterstützt jetzt Apache Flink Version 1.20.0. In diesem Abschnitt werden die wichtigsten neuen Funktionen und Änderungen vorgestellt, die mit der Unterstützung von Apache Flink 1.20.0 durch Managed Service for Apache Flink eingeführt wurden. Apache Flink 1.20 wird voraussichtlich die letzte Version der Version 1.x und eine Flink Long-Term Support (LTS) -Version sein. Weitere Informationen finden Sie unter [FLIP-458: Langfristiger Support für die endgültige Version von Apache Flink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-458%3A+Long-Term+Support+for+the+Final+Release+of+Apache+Flink+1.x+Line) 1.x Line.

**Anmerkung**  
Wenn Sie eine frühere unterstützte Version von Apache Flink verwenden und Ihre vorhandenen Anwendungen auf Apache Flink 1.20.0 aktualisieren möchten, können Sie dazu direkte Apache Flink-Versionsupgrades verwenden. Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md). Mit direkten Versionsupgrades behalten Sie die Rückverfolgbarkeit von Anwendungen anhand eines einzigen ARN für alle Apache Flink-Versionen, einschließlich Snapshots, Logs, Metriken, Tags, Flink-Konfigurationen und mehr. 

## Unterstützte Features
<a name="flink-1-20-0-supported-features"></a>

Apache Flink 1.20.0 führt Verbesserungen im SQL- APIs, im und im Flink-Dashboard ein. DataStream APIs


**Unterstützte Funktionen und zugehörige Dokumentation**  

| Unterstützte Features | Description | Referenz zur Apache Flink-Dokumentation  | 
| --- | --- | --- | 
| Klausel DISTRIBUTED BY hinzufügen | Viele SQL-Engines machen die Konzepte von PartitioningBucketing, oder verfügbarClustering. Flink 1.20 führt das Konzept von Bucketing to Flink ein.  | [FLIP-376: Klausel DISTRIBUTED BY hinzugefügt](https://cwiki.apache.org/confluence/display/FLINK/FLIP-376%3A+Add+DISTRIBUTED+BY+clause) | 
| DataStream API: Support vollständige Partitionsverarbeitung  | Flink 1.20 bietet integrierte Unterstützung für Aggregationen von Streams ohne Schlüssel über die API. FullPartitionWindow  | [FLIP-380: Support die vollständige Partitionsverarbeitung ohne Schlüssel DataStream](https://cwiki.apache.org/confluence/display/FLINK/FLIP-380%3A+Support+Full+Partition+Processing+On+Non-keyed+DataStream) | 
| Zeigen Sie den Wert für Datenverzerrungen im Flink-Dashboard an | Das Flink 1.20-Dashboard zeigt jetzt Informationen zur Datenverzerrung an. Jeder Operator auf der Flink-Jobgraph-Benutzeroberfläche zeigt einen zusätzlichen Wert für Datenverzerrungen an.  | [FLIP-418: Zeigt den Wert für Datenverzerrungen im Flink-Dashboard an](https://cwiki.apache.org/confluence/display/FLINK/FLIP-418%3A+Show+data+skew+score+on+Flink+Dashboard) | 

[Die Versionsdokumentation zu Apache Flink 1.20.0 finden Sie unter Apache Flink Documentation v1.20.0.](https://nightlies.apache.org/flink/flink-docs-stable/) [Die Versionshinweise zu Flink 1.20 finden Sie unter Versionshinweise — Flink 1.20](https://nightlies.apache.org/flink/flink-docs-release-1.20/release-notes/flink-1.20/)

## Komponenten
<a name="flink-1-20-0-components"></a>


**Komponenten von Flink 1.20**  

| Komponente | Version | 
| --- | --- | 
| Java  | 11 (empfohlen) | 
| Python |  3.11  | 
| Kinesis Data Analytics Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| Konnektoren | Informationen zu verfügbaren Konnektoren finden Sie unter [Apache Flink-Konnektoren](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html). | 
| [Apache Beam (nur Beam-Anwendungen)](https://aws.amazon.com/developer/language/python/) |  Es gibt keinen kompatiblen Apache Flink Runner für Flink 1.20. Weitere Informationen finden Sie unter [Flink-Versionskompatibilität](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Bekannte Probleme
<a name="flink-1-20-0-known-issues"></a>

**Apache Beam**

Derzeit gibt es in Apache Beam keinen kompatiblen Apache Flink Runner für Flink 1.20. [Weitere Informationen finden Sie unter Flink-Versionskompatibilität.](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility)

**Amazon Managed Service für Apache Flink Studio**

Amazon Managed Service for Apache Flink Studio verwendet Apache Zeppelin-Notebooks, um eine zentrale Benutzeroberfläche für die Entwicklung, das Debuggen von Code und die Ausführung von Apache Flink-Stream-Verarbeitungsanwendungen bereitzustellen. Für den Flink Interpreter von Zeppelin ist ein Upgrade erforderlich, um die Unterstützung von Flink 1.20 zu aktivieren. Diese Arbeit ist mit der Zeppelin-Community geplant. Wir werden diese Hinweise aktualisieren, sobald diese Arbeiten abgeschlossen sind. Sie können Flink 1.15 weiterhin mit Amazon Managed Service für Apache Flink Studio verwenden. Weitere Informationen finden Sie unter [Ein Studio-Notizbuch erstellen](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Rückportierte Fehlerkorrekturen**

Amazon Managed Service for Apache Flink portiert Korrekturen aus der Flink-Community für kritische Probleme zurück. Im Folgenden finden Sie eine Liste der Bugfixes, die wir zurückportiert haben:


**Rückportierte Fehlerkorrekturen**  

| Apache Flink JIRA-Link | Description | 
| --- | --- | 
| [FLINK-35886](https://issues.apache.org/jira/browse/FLINK-35886) | Mit diesem Fix wird ein Problem behoben, das dazu führte, dass Zeitüberschreitungen beim Leerlauf von Wasserzeichen falsch verbucht wurden, wenn eine Unteraufgabe gesperrt oder blockiert wurde. | 

# Amazon Managed Service für Apache Flink 1.19
<a name="flink-1-19"></a>

Managed Service für Apache Flink unterstützt jetzt Apache Flink Version 1.19.1. In diesem Abschnitt werden die wichtigsten neuen Funktionen und Änderungen vorgestellt, die mit der Unterstützung von Apache Flink 1.19.1 durch Managed Service for Apache Flink eingeführt wurden.

**Anmerkung**  
Wenn Sie eine frühere unterstützte Version von Apache Flink verwenden und Ihre vorhandenen Anwendungen auf Apache Flink 1.19.1 aktualisieren möchten, können Sie dazu direkte Apache Flink-Versionsupgrades verwenden. Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md). Mit direkten Versionsupgrades behalten Sie die Rückverfolgbarkeit von Anwendungen anhand eines einzigen ARN für alle Apache Flink-Versionen, einschließlich Snapshots, Logs, Metriken, Tags, Flink-Konfigurationen und mehr. 

## Unterstützte Features
<a name="flink-1-19-1-supported-features"></a>

Apache Flink 1.19.1 führt Verbesserungen in der SQL-API ein, wie z. B. benannte Parameter, benutzerdefinierte Quellparallelität und unterschiedliche Status für verschiedene Flink-Operatoren. TTLs 


**Unterstützte Funktionen und zugehörige Dokumentation**  

| Unterstützte Features | Description | Referenz zur Apache Flink-Dokumentation  | 
| --- | --- | --- | 
| SQL-API: Support Konfiguration verschiedener Zustände TTLs mithilfe eines SQL-Hints | Benutzer können jetzt State-TTL für reguläre Stream-Joins und Gruppenaggregate konfigurieren.  | [FLIP-373: Konfiguration verschiedener Zustände TTLs mithilfe eines SQL-Hints](https://cwiki.apache.org/confluence/display/FLINK/FLIP-373%3A+Support+Configuring+Different+State+TTLs+using+SQL+Hint) | 
| SQL-API: Support benannte Parameter für Funktionen und Aufrufprozeduren | Benutzer können jetzt benannte Parameter in Funktionen verwenden, anstatt sich auf die Reihenfolge der Parameter zu verlassen.  | [FLIP-378: Support benannte Parameter für Funktionen und Aufrufprozeduren](https://cwiki.apache.org/confluence/display/FLINK/FLIP-387%3A+Support+named+parameters+for+functions+and+call+procedures) | 
| SQL-API: Einstellung der Parallelität für SQL-Quellen | Benutzer können jetzt Parallelität für SQL-Quellen angeben. | [FLIP-367: Support das Einstellen der Parallelität für Quellen Table/SQL ](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=263429150) | 
| SQL API: Support des Sitzungsfensters TVF | Benutzer können jetzt Tabellenwertfunktionen im Sitzungsfenster verwenden.  | [FLINK-24024: Unterstützungssitzung Window TVF](https://issues.apache.org/jira/browse/FLINK-24024) | 
| SQL-API: Die Fenster-TVF-Aggregation unterstützt Changelog-Eingaben | Benutzer können jetzt Fensteraggregation für Changelog-Eingaben durchführen.  | [FLINK-20281: Die Fensteraggregation unterstützt die Eingabe von Changelog-Streams](https://issues.apache.org/jira/browse/FLINK-20281) | 
|  Support Sie Python 3.11  | Flink unterstützt jetzt Python 3.11, was im Vergleich zu Python 3.10 10-60% schneller ist. Weitere Informationen finden Sie unter [Was ist neu in Python 3.11](https://docs.python.org/3/whatsnew/3.11.html#summary-release-highlights). | [FLINK-33030: Unterstützung für Python 3.11 hinzufügen](https://issues.apache.org/jira/browse/FLINK-33030) | 
| Stellen Sie Metriken für TwoPhaseCommitting Sink bereit | Benutzer können Statistiken über den Status von Committern in zwei Phasen der Committer-Senken einsehen. | [FLIP-371: Stellen Sie den Initialisierungskontext für die Committer-Erstellung bereit in TwoPhaseCommittingSink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-371%3A+Provide+initialization+context+for+Committer+creation+in+TwoPhaseCommittingSink) | 
|  Trace-Reporter für Job-Neustart und Checkpointing  | Benutzer können nun die Traces rund um die Dauer von Checkpoints und die Wiederherstellungstrends überwachen. In Amazon Managed Service für Apache Flink aktivieren wir standardmäßig Slf4j-Trace-Reporter, sodass Benutzer Checkpoint- und Job-Traces anhand von Anwendungsprotokollen überwachen können. CloudWatch  | [FLIP-384: Führen Sie es ein TraceReporter und verwenden Sie es, um Checkpoint- und Wiederherstellungs-Traces zu erstellen](https://cwiki.apache.org/confluence/display/FLINK/FLIP-384%3A+Introduce+TraceReporter+and+use+it+to+create+checkpointing+and+recovery+traces) | 

**Anmerkung**  
[Sie können sich für die folgenden Funktionen entscheiden, indem Sie eine Support-Anfrage einreichen:](https://console.aws.amazon.com/support/home#/)


**Opt-in-Funktionen und zugehörige Dokumentation**  

| Opt-in-Funktionen | Description | Referenz zur Apache Flink-Dokumentation  | 
| --- | --- | --- | 
| Support bei Verwendung eines größeren Checkpoint-Intervalls, wenn die Quelle Backlog verarbeitet | Dies ist eine optionale Funktion, da Benutzer die Konfiguration an ihre spezifischen Jobanforderungen anpassen müssen. | [FLIP-309: Support bei Verwendung eines größeren Checkpoint-Intervalls, wenn die Quelle Backlog verarbeitet](https://cwiki.apache.org/confluence/display/FLINK/FLIP-309%3A+Support+using+larger+checkpointing+interval+when+source+is+processing+backlog) | 
| Leiten Sie System.out und System.err zu Java-Protokollen um | Dies ist eine Opt-in-Funktion. Bei Amazon Managed Service für Apache Flink besteht das Standardverhalten darin, die Ausgabe von System.out und System.err zu ignorieren, da die beste Vorgehensweise in der Produktion darin besteht, den nativen Java-Logger zu verwenden. | [FLIP-390: Das Unterstützungssystem ist ausgefallen und es wird ein Fehler angezeigt, der zu LOG umgeleitet oder verworfen wird](https://cwiki.apache.org/confluence/display/FLINK/FLIP-390%3A+Support+System+out+and+err+to+be+redirected+to+LOG+or+discarded) | 

[Die Versionsdokumentation zu Apache Flink 1.19.1 finden Sie unter Apache Flink Documentation v1.19.1.](https://nightlies.apache.org/flink/flink-docs-stable/)

## Änderungen in Amazon Managed Service für Apache Flink 1.19.1
<a name="flink-1-19-1-known-issues"></a>

**Logging Trace Reporter ist standardmäßig aktiviert**

Apache Flink 1.19.1 führte Checkpoint- und Recovery Traces ein, sodass Benutzer Probleme mit Checkpoint und Job Recovery besser debuggen können. In Amazon Managed Service für Apache Flink werden diese Traces im CloudWatch Protokollstream protokolliert, sodass Benutzer die für die Auftragsinitialisierung aufgewendete Zeit aufschlüsseln und die historische Größe von Checkpoints aufzeichnen können.

**Die Standardstrategie für einen Neustart ist jetzt exponentielle Verzögerung**

In Apache Flink 1.19.1 gibt es erhebliche Verbesserungen an der Neustartstrategie mit exponentieller Verzögerung. In Amazon Managed Service für Apache Flink ab Flink 1.19.1 verwenden Flink-Jobs standardmäßig die Neustartstrategie mit exponentieller Verzögerung. Das bedeutet, dass Benutzerjobs nach vorübergehenden Fehlern schneller wiederhergestellt werden, externe Systeme jedoch nicht überlastet werden, wenn die Jobs weiterhin neu gestartet werden.

**Fehlerkorrekturen wurden zurückportiert**

Amazon Managed Service for Apache Flink portiert Korrekturen aus der Flink-Community für kritische Probleme zurück. Das bedeutet, dass sich die Laufzeit von der Version Apache Flink 1.19.1 unterscheidet. Im Folgenden finden Sie eine Liste der Bugfixes, die wir zurückportiert haben:


**Rückportierte Fehlerkorrekturen**  

| Apache Flink JIRA-Link | Description | 
| --- | --- | 
| [FLINK-35531](https://issues.apache.org/jira/browse/FLINK-35531) | Dieser Fix behebt den in 1.17.0 eingeführten Leistungsrückgang, der zu langsameren Schreibvorgängen auf HDFS führt. | 
| [FLINK-35157](https://issues.apache.org/jira/browse/FLINK-35157) | Dieser Fix behebt das Problem, dass Flink-Jobs nicht mehr funktionieren, wenn Quellen mit Wasserzeichenausrichtung auf abgeschlossene Unteraufgaben stoßen. | 
| [FLINK-34252](https://issues.apache.org/jira/browse/FLINK-34252) | Dieser Fix behebt das Problem bei der Generierung von Wasserzeichen, das zu einem fehlerhaften IDLE-Wasserzeichenstatus führt. | 
| [FLINK-34252](https://issues.apache.org/jira/browse/FLINK-34252) | Mit diesem Fix wird der Leistungsrückgang bei der Generierung von Wasserzeichen behoben, indem die Anzahl von Systemaufrufen reduziert wird. | 
| [FLINK-33936](https://issues.apache.org/jira/browse/FLINK-33936) | Dieser Fix behebt das Problem mit doppelten Datensätzen bei der Mini-Batch-Aggregation in der Tabellen-API. | 
| [FLINK-35498](https://issues.apache.org/jira/browse/FLINK-35498) | Dieser Fix behebt das Problem mit Argumentnamenkonflikten bei der Definition benannter Parameter in der Tabellen-API. UDFs | 
| [FLINK-33192](https://issues.apache.org/jira/browse/FLINK-33192) | Mit diesem Fix wird das Problem behoben, dass bei Fensteroperatoren aufgrund einer unsachgemäßen Timer-Bereinigung ein Speicherverlust aufgetreten ist. | 
| [FLINK-35069](https://issues.apache.org/jira/browse/FLINK-35069) | Dieser Fix behebt das Problem, dass ein Flink-Job hängen bleibt und am Ende eines Fensters einen Timer auslöst. | 
| [FLINK-35832](https://issues.apache.org/jira/browse/FLINK-35832) | Mit diesem Fix wird das Problem behoben, wenn IFNULL falsche Ergebnisse zurückgibt. | 
| [FLINK-35886](https://issues.apache.org/jira/browse/FLINK-35886) | Mit diesem Fix wird das Problem behoben, dass Aufgaben, bei denen ein Gegendruck entsteht, als inaktiv betrachtet werden. | 

## Komponenten
<a name="flink-1-19-1-components"></a>


****  

| Komponente | Version | 
| --- | --- | 
| Java  | 11 (empfohlen) | 
| Python |  3.11  | 
| Kinesis Data Analytics Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| Konnektoren | Informationen zu verfügbaren Konnektoren finden Sie unter [Apache Flink-Konnektoren](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html). | 
| [Apache Beam (nur Beam-Anwendungen)](https://aws.amazon.com/developer/language/python/) |  Ab Version 2.61.0. Weitere Informationen finden Sie unter [Flink-Versionskompatibilität](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Bekannte Probleme
<a name="flink-1-19-other-issues"></a>

**Amazon Managed Service für Apache Flink Studio**

Studio verwendet Apache Zeppelin-Notebooks, um die Entwicklung, das Debuggen von Code und die Ausführung von Apache Flink-Stream-Verarbeitungsanwendungen über eine einzige Benutzeroberfläche zu ermöglichen. Für den Flink Interpreter von Zeppelin ist ein Upgrade erforderlich, um die Unterstützung von Flink 1.19 zu aktivieren. Diese Arbeit ist mit der Zeppelin-Community geplant und wir werden diese Hinweise aktualisieren, sobald sie abgeschlossen sind. Sie können Flink 1.15 weiterhin mit Amazon Managed Service für Apache Flink Studio verwenden. Weitere Informationen finden Sie unter [Ein Studio-Notizbuch erstellen](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

# Amazon Managed Service für Apache Flink 1.18
<a name="flink-1-18"></a>

 Managed Service für Apache Flink unterstützt jetzt Apache Flink Version 1.18.1. Erfahren Sie mehr über die wichtigsten neuen Funktionen und Änderungen, die mit der Unterstützung von Apache Flink 1.18.1 durch Managed Service for Apache Flink eingeführt wurden.

**Anmerkung**  
Wenn Sie eine frühere unterstützte Version von Apache Flink verwenden und Ihre vorhandenen Anwendungen auf Apache Flink 1.18.1 aktualisieren möchten, können Sie dazu direkte Apache Flink-Versionsupgrades verwenden. Mit direkten Versionsupgrades behalten Sie die Rückverfolgbarkeit von Anwendungen anhand eines einzigen ARN für alle Apache Flink-Versionen, einschließlich Snapshots, Logs, Metriken, Tags, Flink-Konfigurationen und mehr. Sie können diese Funktion in jedem beliebigen Bundesstaat verwenden. `RUNNING` `READY` Weitere Informationen finden Sie unter [Verwenden Sie direkte Versionsupgrades für Apache Flink](how-in-place-version-upgrades.md). 


**Unterstützte Funktionen mit Referenzen zur Apache Flink-Dokumentation**  

| Unterstützte Funktionen | Description | Referenz zur Apache Flink-Dokumentation  | 
| --- | --- | --- | 
| Opensearch-Konnektor | Dieser Anschluss enthält eine Spüle, die at-least-once Garantien bietet. | [github: Opensearch-Konnektor](https://github.com/apache/flink-connector-opensearch/blob/main/docs/content/docs/connectors/datastream/opensearch.md) | 
| Amazon DynamoDB DynamoDB-Konnektor | Dieser Anschluss enthält eine Senke, die Garantien bietet at-least-once. | [Amazon DynamoDB-Senke](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/dynamodb/) | 
| MongoDB-Anschluss | Dieser Konnektor umfasst eine Quelle und eine Senke, die at-least-once Garantien bieten. | [MongoDB-Konnektor](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/mongodb/) | 
| Entkoppeln Sie Hive mit Flink Planner |  Sie können den Hive-Dialekt direkt ohne zusätzlichen JAR-Swapping verwenden.  | [FLINK-26603: Entkoppeln Sie Hive mit dem Flink-Planer](https://issues.apache.org/jira/browse/FLINK-26603) | 
| Deaktiviere WAL in DBWrite BatchWrapper Rocks standardmäßig |  Dies bietet schnellere Wiederherstellungszeiten.  | [FLINK-32326: WAL in Rocks standardmäßig deaktivieren DBWrite BatchWrapper ](https://issues.apache.org/jira/browse/FLINK-32326) | 
|  Verbessern Sie die Leistung der Wasserzeichen-Aggregation, wenn Sie die Wasserzeichenausrichtung aktivieren  |  Verbessert die Leistung der Wasserzeichen-Aggregation, wenn die Wasserzeichenausrichtung aktiviert wird, und fügt den entsprechenden Benchmark hinzu.  | [FLINK-32524: Leistung der Wasserzeichen-Aggregation](https://issues.apache.org/jira/browse/FLINK-32420) | 
| Machen Sie die Ausrichtung von Wasserzeichen bereit für den Produktionseinsatz | Beseitigt das Risiko einer Überlastung großer Aufträge JobManager | [FLINK-32548: Bereitet die Ausrichtung der Wasserzeichen vor](https://issues.apache.org/jira/browse/FLINK-32548) | 
|  Konfigurierbar für RateLimitingStratey Async Sink  |  RateLimitingStrategy ermöglicht es Ihnen, die Entscheidung darüber zu konfigurieren, was, wann und in welchem Umfang skaliert werden soll.  | [FLIP-242: Führen Sie konfigurierbar RateLimitingStrategy für Async Sink ein](https://cwiki.apache.org/confluence/display/FLINK/FLIP-242%3A+Introduce+configurable+RateLimitingStrategy+for+Async+Sink) | 
|  Tabellen- und Spaltenstatistiken in großen Mengen abrufen  | Verbesserte Abfrageleistung. | [FLIP-247: Massenabruf von Tabellen- und Spaltenstatistiken für bestimmte Partitionen](https://cwiki.apache.org/confluence/display/FLINK/FLIP-247%3A+Bulk+fetch+of+table+and+column+statistics+for+given+partitions) | 

[Die Dokumentation zur Veröffentlichung von Apache Flink 1.18.1 finden Sie in der Ankündigung der Veröffentlichung von Apache Flink 1.18.1.](https://flink.apache.org/2024/01/19/apache-flink-1.18.1-release-announcement/)

## Änderungen in Amazon Managed Service für Apache Flink mit Apache Flink 1.18
<a name="flink-1-15-2-known-issues"></a>

**Akka wurde durch Pekko ersetzt**

 Apache Flink ersetzte Akka in Apache Flink 1.18 durch Pekko. Diese Änderung wird in Managed Service für Apache Flink ab Apache Flink 1.18.1 und höher vollständig unterstützt. Sie müssen Ihre Anwendungen aufgrund dieser Änderung nicht ändern. Weitere Informationen finden Sie unter [FLINK-32468: Ersetzen](https://issues.apache.org/jira/browse/FLINK-32468) Sie Akka durch Pekko.

**Support PyFlink Runtime-Ausführung im Thread-Modus**

Diese Apache Flink-Änderung führt einen neuen Ausführungsmodus für das Pyflink Runtime-Framework ein, den Prozessmodus. Der Prozessmodus kann jetzt benutzerdefinierte Python-Funktionen im selben Thread ausführen, anstatt in einem separaten Prozess.

**Rückportierte Fehlerkorrekturen**

Amazon Managed Service for Apache Flink portiert Korrekturen aus der Flink-Community für kritische Probleme zurück. Das bedeutet, dass sich die Laufzeit von der Version Apache Flink 1.18.1 unterscheidet. Im Folgenden finden Sie eine Liste der Bugfixes, die wir zurückportiert haben:


**Rückportierte Fehlerkorrekturen**  

| Apache Flink JIRA-Link | Description | 
| --- | --- | 
| [FLINK-33863](https://issues.apache.org/jira/browse/FLINK-33863) | Mit diesem Fix wird das Problem behoben, dass eine Statuswiederherstellung für komprimierte Snapshots fehlschlägt. | 
| [FLINK-34063](https://issues.apache.org/jira/browse/FLINK-34063) | Dieser Fix behebt das Problem, dass Quell-Operatoren Splits verlieren, wenn die Snapshot-Komprimierung aktiviert ist. Apache Flink bietet optionale Komprimierung (Standardeinstellung: aus) für alle Checkpoints und Savepoints. Apache Flink identifizierte einen Fehler in Flink 1.18.1, bei dem der Operatorstatus nicht korrekt wiederhergestellt werden konnte, wenn die Snapshot-Komprimierung aktiviert war. Dies könnte entweder zu Datenverlust oder zur Unfähigkeit der Wiederherstellung vom Checkpoint aus führen.  | 
| [FLINK-35069](https://issues.apache.org/jira/browse/FLINK-35069) | Dieser Fix behebt das Problem, dass ein Flink-Job hängen bleibt und am Ende eines Fensters einen Timer auslöst.  | 
| [FLINK-35097](https://issues.apache.org/jira/browse/FLINK-35097) | Mit diesem Fix wird das Problem doppelter Datensätze in einem Tabellen-API-Dateisystem-Konnektor im Rohformat behoben.  | 
| [FLINK-34379](https://issues.apache.org/jira/browse/FLINK-34379) | Mit diesem Fix wird das Problem behoben, das OutOfMemoryError bei der Aktivierung der dynamischen Tabellenfilterung auftritt.  | 
| [FLINK-28693](https://issues.apache.org/jira/browse/FLINK-28693) | Mit diesem Fix wird das Problem behoben, dass die Tabellen-API kein Diagramm generieren kann, wenn das Wasserzeichen einen ColumnBy-Ausdruck enthält.  | 
| [FLINK-35217](https://issues.apache.org/jira/browse/FLINK-35217) | Dieser Fix behebt das Problem eines beschädigten Checkpoints während eines bestimmten Fehlermodus bei einem Flink-Job.  | 

## Komponenten
<a name="flink-1-15-2-components"></a>


****  

| Komponente | Version | 
| --- | --- | 
| Java  | 11 (empfohlen) | 
| Scala |  Seit Version 1.15 ist Flink SCALA-agnostisch. Als Referenz wurde MSF Flink 1.18 gegen Scala 3.3 (LTS) verifiziert.  | 
| Verwalteter Dienst für Apache Flink Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| [AWS Kinesis Connector (flink-connector-kinesis) [Quelle]](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kinesis/4.2.0-1.18) | 4.2.0-1.18 | 
| [AWS Kinesis-Anschluss (flink-connector-kinesis) [Senke]](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-aws-kinesis-streams/4.2.0-1.18) | 4.2.0-1.18 | 
| [Apache Beam (nur Beam-Anwendungen)](https://aws.amazon.com/developer/language/python/) |  Ab Version 2.57.0. Weitere Informationen finden Sie unter [Flink-Versionskompatibilität](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Bekannte Probleme
<a name="flink-1-18-known-issues"></a>

**Amazon Managed Service für Apache Flink Studio**

Studio verwendet Apache Zeppelin-Notebooks, um die Entwicklung, das Debuggen von Code und die Ausführung von Apache Flink-Stream-Verarbeitungsanwendungen über eine einzige Benutzeroberfläche zu ermöglichen. Für den Flink Interpreter von Zeppelin ist ein Upgrade erforderlich, um die Unterstützung von Flink 1.18 zu aktivieren. Diese Arbeit ist mit der Zeppelin-Community geplant und wir werden diese Hinweise aktualisieren, sobald sie abgeschlossen sind. Sie können Flink 1.15 weiterhin mit Amazon Managed Service für Apache Flink Studio verwenden. Weitere Informationen finden Sie unter [Ein Studio-Notizbuch erstellen](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Falsches Leerlaufen des Wasserzeichens, wenn die Unteraufgabe mit einem Gegendruck belastet wird**

Es gibt ein bekanntes Problem bei der Generierung von Wasserzeichen, wenn eine Unteraufgabe unter Druck gesetzt wird. Dieses Problem wurde ab Flink 1.19 und höher behoben. Dies kann sich in einem Anstieg der Anzahl verspäteter Datensätze zeigen, wenn ein Flink-Job-Diagramm unter Druck gesetzt wird. Wir empfehlen Ihnen, auf die neueste Flink-Version zu aktualisieren, um diesen Fix zu installieren. Weitere Informationen finden Sie unter [Fehlerhafte Abrechnung des Leerlaufzeitlimits für Wasserzeichen, wenn die Unteraufgabe im Hintergrund steht/blockiert](https://issues.apache.org/jira/browse/FLINK-35886) ist.

# Amazon Managed Service für Apache Flink 1.15
<a name="flink-1-15-2"></a>

 Managed Service für Apache Flink unterstützt die folgenden neuen Funktionen in Apache 1.15.2: 


****  

| Feature | Description | Apache-FLIP-Referenz  | 
| --- | --- | --- | 
| Asynchrone Senke  | Ein AWS unterstütztes Framework für die Erstellung asynchroner Ziele, das es Entwicklern ermöglicht, benutzerdefinierte AWS Konnektoren mit weniger als der Hälfte des bisherigen Aufwands zu erstellen. Weitere Informationen finden Sie unter [Die generische asynchrone Basissenke](https://flink.apache.org/2022/05/06/async-sink-base.html). | [FLIP-171: Asynchrone Senke](https://cwiki.apache.org/confluence/display/FLINK/FLIP-171%3A+Async+Sink). | 
| Kinesis Data Firehose Senke  | AWS hat mithilfe des Async-Frameworks einen neuen Amazon Kinesis Firehose Sink beigesteuert.  | [Amazon Kinesis Data Firehose Senke](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/connectors/datastream/firehose/). | 
| Anhalten mit Savepoint  | Anhalten mit Savepoint sorgt für einen sauberen Anhaltevorgang und unterstützt vor allem die Exakt-einmal-Semantik für Kunden, die sich darauf verlassen. | [FLIP-34: Terminate/Suspend Job bei](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103090212) Savepoint. | 
| Scala-Entkopplung  | Benutzer können die Java-API jetzt von jeder Scala-Version aus nutzen, einschließlich Scala 3. Kunden müssen die Scala-Standardbibliothek ihrer Wahl in ihren Scala-Anwendungen bündeln.  | [FLIP-28: Langfristiges Ziel, flink-table Scala-frei zu machen](https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free). | 
| Scala | Siehe Scala-Entkopplung oben  | [FLIP-28: Langfristiges Ziel, flink-table Scala-frei zu machen](https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free). | 
| Einheitliche Konnektor-Metriken | Flink hat [Standardmetriken](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/ops/metrics/) für Aufträge, Aufgaben und Operatoren definiert. Managed Service für Apache Flink wird weiterhin Senken- und Quell-Metriken unterstützen und in 1.15 numRestarts parallel zu fullRestarts für Verfügbarkeitsmetriken einführen.  | [FLIP-33: Konnektor-Metriken standardisieren](https://cwiki.apache.org/confluence/display/FLINK/FLIP-33%3A+Standardize+Connector+Metrics) und [FLIP-179: Standardisierte Operator-Metriken verfügbar machen](https://cwiki.apache.org/confluence/display/FLINK/FLIP-179%3A+Expose+Standardized+Operator+Metrics). | 
| Checkpointing von abgeschlossenen Aufgaben  | Dieses Feature ist in Flink 1.15 standardmäßig aktiviert und ermöglicht es, weiterhin Checkpoints durchzuführen, auch wenn Teile des Auftragsdiagramms die Verarbeitung aller Daten abgeschlossen haben, was passieren kann, wenn er gebundene (Batch-)Quellen enthält.  | [FLIP-147: Checkpoints nach Abschluss von Aufgaben unterstützen](https://cwiki.apache.org/confluence/display/FLINK/FLIP-147%3A+Support+Checkpoints+After+Tasks+Finished).  | 

## Änderungen in Amazon Managed Service für Apache Flink mit Apache Flink 1.15
<a name="flink-1-15-2-changes"></a>

**Studio-Notebooks**

Managed Service für Apache Flink Studio unterstützt jetzt Apache Flink 1.15. Managed Service für Apache Flink Studio nutzt Apache-Zeppelin-Notebooks, um eine zentrale Benutzeroberfläche für die Entwicklung, das Debuggen von Code und die Ausführung von Apache-Flink-Streamverarbeitungsanwendungen bereitzustellen. Weitere Informationen über Managed Service für Apache Flink Studio und die ersten Schritte finden Sie unter [Verwenden Sie ein Studio-Notebook mit Managed Service für Apache Flink](how-notebook.md).

**EFO-Konnektor**

Stellen Sie beim Upgrade auf Managed Service für Apache Flink Version 1.15 sicher, dass Sie den neuesten EFO-Konnektor verwenden, d. h. eine beliebige Version 1.15.3 oder neuer. Weitere Informationen zu den Gründen finden Sie unter [FLINK-29324](https://issues.apache.org/jira/browse/FLINK-29324 ).

**Scala-Entkopplung **

Ab Flink 1.15.2 müssen Sie die Scala-Standardbibliothek Ihrer Wahl in Ihren Scala-Anwendungen bündeln. 

**Kinesis Data Firehose Senke **

Stellen Sie beim Upgrade auf Managed Service für Apache Flink Version 1.15 sicher, dass Sie die neueste [Amazon Kinesis Data Firehose Senke](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/connectors/datastream/firehose/) verwenden.

**Kafka-Konnektoren **

Stellen Sie beim Upgrade auf Amazon Managed Service for Apache Flink for Apache Flink Version 1.15 sicher, dass Sie den neuesten Kafka-Connector verwenden. APIs Apache Flink ist veraltet [FlinkKafkaConsumer](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-consumer)und [FlinkKafkaProducer](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-producer)diese APIs für die Kafka-Senke können sich nicht auf Kafka für Flink 1.15 festlegen. Stellen Sie sicher, dass Sie [KafkaSource](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-source)und [KafkaSink](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-sink)verwenden. 

## Komponenten
<a name="flink-1-15-2-components"></a>


****  

| Komponente | Version | 
| --- | --- | 
| Java  | 11 (empfohlen) | 
| Scala | 2.12 | 
| Verwalteter Dienst für Apache Flink Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| [AWS Kinesis-Anschluss () flink-connector-kinesis](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kinesis/1.15.4) | 1.15.4 | 
| [Apache Beam (nur Beam-Anwendungen)](https://aws.amazon.com/developer/language/python/) | 2.33.0, mit Jackson-Version 2.12.2 | 

## Bekannte Probleme
<a name="flink-1-15-known-issues"></a>

**Kafka Commit beim Checkpointing schlägt nach einem Neustart des Brokers wiederholt fehl**

Es gibt ein bekanntes Open-Source-Apache Flink-Problem mit dem Apache Kafka-Konnektor in Flink Version 1.15, das durch einen kritischen Open-Source-Fehler im Kafka-Client 2.8.1 verursacht wurde. Weitere Informationen finden Sie unter [Kafka Commit on Checkpointing schlägt nach einem Neustart des Brokers wiederholt fehl und kann die Verbindung zum Gruppenkoordinator nach einer](https://issues.apache.org/jira/browse/FLINK-28060) Ausnahme [nicht KafkaConsumer wiederherstellen](https://issues.apache.org/jira/browse/KAFKA-13840). commitOffsetAsync 

Um dieses Problem zu vermeiden, empfehlen wir, Apache Flink 1.18 oder höher in Amazon Managed Service für Apache Flink zu verwenden.

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