

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.

# Erste Schritte (Scala)
<a name="examples-gs-scala"></a>

**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 Sie 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 Managed Service for Apache Flink-Anwendung für Scala mit einem Kinesis-Stream als Quelle und Senke. 

**Topics**
+ [Erstellen Sie abhängige Ressourcen](#examples-gs-scala-resources)
+ [Schreiben Sie Beispieldatensätze in den Eingabestream](#examples-gs-scala-write)
+ [Laden Sie den Anwendungscode herunter und überprüfen Sie ihn](#examples-gs-scala-download)
+ [Kompilieren Sie den Anwendungscode und laden Sie ihn hoch](#examples-gs-scala-upload)
+ [Erstellen Sie die Anwendung (Konsole) und führen Sie sie aus](gs-scala-7.md)
+ [Erstellen und Ausführen der Anwendung (CLI)](examples-gs-scala-create-run-cli.md)
+ [AWS Ressourcen bereinigen](examples-gs-scala-cleanup.md)

## Erstellen Sie abhängige Ressourcen
<a name="examples-gs-scala-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 Streams für Eingaben und Ausgaben.
+ Einen Amazon S3-Bucket zum Speichern des Anwendungscodes (`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**.

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

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

    ```
    aws kinesis create-stream \
        --stream-name ExampleOutputStream \
        --shard-count 1 \
        --region us-west-2 \
        --profile adminuser
    ```
+ [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>***.

**Sonstige Ressourcen**

Wenn Sie Ihre Anwendung erstellen, erstellt Managed Service for Apache Flink die folgenden CloudWatch Amazon-Ressourcen, sofern sie noch nicht vorhanden sind:
+ Eine Protokollgruppe mit dem Namen `/AWS/KinesisAnalytics-java/MyApplication`
+ Einen Protokollstream mit dem Namen `kinesis-analytics-log-stream`

## Schreiben Sie Beispieldatensätze in den Eingabestream
<a name="examples-gs-scala-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-gs-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/GettingStarted` 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 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-gs-scala-upload"></a>

In diesem Abschnitt kompilieren Sie Ihren Anwendungscode und laden ihn in den Amazon-S3-Bucket hoch, den Sie im Abschnitt [Erstellen Sie abhängige Ressourcen](#examples-gs-scala-resources) erstellt haben.

**Kompilieren des Anwendungscodes**

In diesem Abschnitt 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/getting-started-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 `getting-started-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="gs-scala-7"></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="gs-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.
   + Behalten Sie die Version als **Apache** Flink Version 1.19.1 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`

## Konfigurieren Sie die Anwendung
<a name="gs-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 **getting-started-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/gs-scala-7.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/gs-scala-7.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="gs-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/getting-started-scala-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

## Führen Sie die Anwendung aus.
<a name="gs-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="gs-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-gs-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-gs-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*.

## Eine IAM-Richtlinie erstellen
<a name="examples-gs-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-gs-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": "getting_started",
    "ApplicationDescription": "Scala getting started application",
    "RuntimeEnvironment": "FLINK-1_19",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "getting-started-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-gs-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": "getting_started",
       "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.

## Stoppen 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": "getting_started",
          "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-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": "getting_started",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-<username>",
                    "FileKeyUpdate": "getting-started-scala-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

# AWS Ressourcen bereinigen
<a name="examples-gs-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-gs-scala-cleanup-app)
+ [Löschen Sie Ihre Kinesis-Datenstreams](#examples-gs-scala-cleanup-stream)
+ [Löschen Sie Ihr Amazon S3 S3-Objekt und Ihren Bucket](#examples-gs-scala-cleanup-s3)
+ [Löschen Sie Ihre IAM-Ressourcen](#examples-gs-scala-cleanup-iam)
+ [CloudWatch Löschen Sie Ihre Ressourcen](#examples-gs-scala-cleanup-cw)

## Löschen Sie Ihre Managed Service for Apache Flink-Anwendung
<a name="examples-gs-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-gs-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-gs-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-gs-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-gs-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.