Erstellen und Ausführen der Anwendung (CLI) - Managed Service für Apache Flink

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

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

Erstellen und Ausführen der Anwendung (CLI)

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

Erstellen einer Berechtigungsrichtlinie

Anmerkung

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

Zuerst erstellen Sie eine Berechtigungsrichtlinie mit zwei Anweisungen: eine, die Berechtigungen für die Lese-Aktion auf den Quell-Stream zulässt, und eine andere, die Berechtigungen für die Schreib-Aktionen auf den Senken-Stream zulässt. Anschließend fügen Sie die Richtlinie 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) mit Ihrer Konto-ID.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/getting-started-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }

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

Eine IAM-Richtlinie erstellen

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 die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Rollen und dann Rolle erstellen.

  3. Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option AWS -Service aus

  4. Wählen Sie unter Choose the service that will use this role (Wählen Sie den Service aus, der diese Rolle verwendet) die Option Kinesis aus.

  5. Wählen Sie unter Wählen Sie Ihren Anwendungsfall aus die Option Managed Service für Apache Flink aus.

  6. Wählen Sie Weiter: Berechtigungen aus.

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

  8. Geben Sie auf der Seite Create role (Rolle erstellen) den Text MF-stream-rw-role für Role name (Rollenname) ein. Wählen Sie Rolle erstellen 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

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

    Anmerkung

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

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

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

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

    4. Wählen Sie die AKReadSourceStreamWriteSinkStream-Richtlinie und wählen Sie Richtlinie anhängen aus.

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

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

Erstellen der Anwendung

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 CreateApplicationmit 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

In diesem Abschnitt verwenden Sie die StartApplicationAktion, um die Anwendung zu starten.

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

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

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

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

Stoppen Sie die Anwendung

In diesem Abschnitt verwenden Sie die StopApplicationAktion, um die Anwendung zu beenden.

So stoppen Sie die Anwendung
  1. Speichern Sie den folgenden JSON-Code in eine Datei mit dem Namen stop_request.json.

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

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

Die Anwendung wird nun gestoppt.

Fügen Sie eine CloudWatch Protokollierungsoption hinzu

Sie können den verwenden AWS CLI , um Ihrer Anwendung einen CloudWatch Amazon-Protokollstream hinzuzufügen. Informationen zur Verwendung von CloudWatch Logs mit Ihrer Anwendung finden Sie unter Anwendungsprotokollierung einrichten.

Aktualisieren Sie die Umgebungseigenschaften

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

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

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

Den Anwendungscode aktualisieren

Wenn Sie Ihren Anwendungscode mit einer neuen Version Ihres Codepakets aktualisieren müssen, verwenden Sie die UpdateApplicationCLI-Aktion.

Anmerkung

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

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

Die folgende Beispielanforderung für die UpdateApplication-Aktion lädt den Anwendungscode neu und startet die Anwendung neu. Aktualisieren Sie die CurrentApplicationVersionId auf die aktuelle Anwendungsversion. Sie können die aktuelle Anwendungsversion mithilfe der Aktionen ListApplications oder DescribeApplication überprüfen. Aktualisieren Sie das Bucket-Namenssuffix (<username>) mit dem Suffix, das Sie im Abschnitt Erstellen Sie abhängige Ressourcen 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" } } } } }