Aktualisieren der Java-Anwendungen - 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.

Aktualisieren der Java-Anwendungen

Gehen Sie wie folgt vor, um Java-Anwendungen zu aktualisieren:

Wenn die Anwendung flink-connector-kinesis verwendet:

Der Kinesis-Konnektor verwendet Shading, um einige Abhängigkeiten, einschließlich der AWS SDK, in das Connector-JAR zu packen. Gehen Sie wie folgt vor, um die AWS SDK Version zu aktualisieren, um diese schattierten Klassen zu ersetzen:

Maven
  1. Fügen Sie den Kinesis-Konnektor und die erforderlichen AWS SDK Module als Projektabhängigkeiten hinzu.

  2. Konfigurieren von maven-shade-plugin:

    1. Fügen Sie einen Filter hinzu, um schattierte AWS SDK Klassen auszuschließen, wenn der Inhalt der Kinesis-Connector-Jar kopiert wird.

    2. Fügen Sie eine Relokationsregel hinzu, um aktualisierte AWS SDK Klassen in das Paket zu verschieben, was vom Kinesis-Connector erwartet wird.

    pom.xml

    <project> ... <dependencies> ... <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kinesis</artifactId> <version>1.15.4</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>kinesis</artifactId> <version>2.20.144</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>netty-nio-client</artifactId> <version>2.20.144</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>sts</artifactId> <version>2.20.144</version> </dependency> ... </dependencies> ... <build> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> ... <filters> ... <filter> <artifact>org.apache.flink:flink-connector-kinesis</artifact> <excludes> <exclude>org/apache/flink/kinesis/shaded/software/amazon/awssdk/**</exclude> <exclude>org/apache/flink/kinesis/shaded/org/reactivestreams/**</exclude> <exclude>org/apache/flink/kinesis/shaded/io/netty/**</exclude> <exclude>org/apache/flink/kinesis/shaded/com/typesafe/netty/**</exclude> </excludes> </filter> ... </filters> <relocations> ... <relocation> <pattern>software.amazon.awssdk</pattern> <shadedPattern>org.apache.flink.kinesis.shaded.software.amazon.awssdk</shadedPattern> </relocation> <relocation> <pattern>org.reactivestreams</pattern> <shadedPattern>org.apache.flink.kinesis.shaded.org.reactivestreams</shadedPattern> </relocation> <relocation> <pattern>io.netty</pattern> <shadedPattern>org.apache.flink.kinesis.shaded.io.netty</shadedPattern> </relocation> <relocation> <pattern>com.typesafe.netty</pattern> <shadedPattern>org.apache.flink.kinesis.shaded.com.typesafe.netty</shadedPattern> </relocation> ... </relocations> ... </configuration> </execution> </executions> </plugin> ... </plugins> ... </build> </project>
Gradle
  1. Fügen Sie den Kinesis-Konnektor und die erforderlichen AWS SDK Module als Projektabhängigkeiten hinzu.

  2. shadowJar Konfiguration anpassen:

    1. Schließt schattierte AWS SDK Klassen aus, wenn der Inhalt der Kinesis-Connector-Jar kopiert wird.

    2. Verschieben Sie aktualisierte AWS SDK Klassen in ein Paket, das vom Kinesis-Connector erwartet wird.

    build.gradle

    ... dependencies { ... flinkShadowJar("org.apache.flink:flink-connector-kinesis:1.15.4") flinkShadowJar("software.amazon.awssdk:kinesis:2.20.144") flinkShadowJar("software.amazon.awssdk:sts:2.20.144") flinkShadowJar("software.amazon.awssdk:netty-nio-client:2.20.144") ... } ... shadowJar { configurations = [project.configurations.flinkShadowJar] exclude("software/amazon/kinesis/shaded/software/amazon/awssdk/**/*") exclude("org/apache/flink/kinesis/shaded/org/reactivestreams/**/*.class") exclude("org/apache/flink/kinesis/shaded/io/netty/**/*.class") exclude("org/apache/flink/kinesis/shaded/com/typesafe/netty/**/*.class") relocate("software.amazon.awssdk", "org.apache.flink.kinesis.shaded.software.amazon.awssdk") relocate("org.reactivestreams", "org.apache.flink.kinesis.shaded.org.reactivestreams") relocate("io.netty", "org.apache.flink.kinesis.shaded.io.netty") relocate("com.typesafe.netty", "org.apache.flink.kinesis.shaded.com.typesafe.netty") } ...

Wenn die Anwendung einen anderen betroffenen Konnektor verwendet:

Um die Version zu aktualisieren, sollte die AWS SDK Version in der SDK Build-Konfiguration des Projekts durchgesetzt werden.

Maven

Fügen Sie dem Abschnitt zur Abhängigkeitsverwaltung der pom.xml Datei eine AWS SDK Stückliste (BOM) hinzu, um die SDK Version für das Projekt durchzusetzen.

pom.xml

<project> ... <dependencyManagement> <dependencies> ... <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.20.144</version> <scope>import</scope> <type>pom</type> </dependency> ... </dependencies> </dependencyManagement> ... </project>
Gradle

Fügen Sie der AWS SDK Stückliste (BOM) eine Plattformabhängigkeit hinzu, um die SDK Version für das Projekt durchzusetzen. Dies erfordert Gradle 5.0 oder neuer:

build.gradle

... dependencies { ... flinkShadowJar(platform("software.amazon.awssdk:bom:2.20.144")) ... } ...