Actualización de las aplicaciones Java - Managed Service para Apache Flink

Amazon Managed Service para Apache Flink Amazon (Amazon MSF) se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Actualización de las aplicaciones Java

Siga los procedimientos que se indican a continuación para actualizar las aplicaciones Java:

Si la aplicación utiliza flink-connector-kinesis:

El conector de Kinesis usa el sombreado para empaquetar algunas dependencias, incluido AWS SDK, en el archivo jar del conector. Para actualizar la versión de AWS SDK, realice el siguiente procedimiento para reemplazar estas clases sombreadas:

Maven
  1. Agregue el conector de Kinesis y los módulos de AWS SDK necesarios como dependencias del proyecto.

  2. Configure maven-shade-plugin:

    1. Añada un filtro para excluir las clases de AWS SDK sombreadas al copiar el contenido del archivo jar del conector de Kinesis.

    2. Añada una regla de reubicación para mover las clases de AWS SDK actualizadas al paquete, según lo previsto por el conector de Kinesis.

    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. Agregue el conector de Kinesis y los módulos de AWS SDK necesarios como dependencias del proyecto.

  2. Ajuste la configuración de ShadowJar:

    1. Excluya las clases de AWS SDK sombreadas al copiar el contenido del archivo jar del conector de Kinesis.

    2. Reubique las clases de AWS SDK actualizadas al paquete previsto por el conector de Kinesis.

    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") } ...

Si la aplicación utiliza otro conector afectado:

Para actualizar la versión de AWS SDK, se debe aplicar la versión del SDK en la configuración de compilación del proyecto.

Maven

Agregue la lista de materiales (BOM) de AWS SDK a la sección de administración de dependencias del archivo pom.xml para aplicar la versión del SDK del proyecto.

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

Agregue la dependencia de la plataforma en la lista de materiales (BOM) de AWS SDK para aplicar la versión del SDK del proyecto. Esto requiere Gradle 5.0 o una versión más reciente:

build.gradle

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