Java 애플리케이션 업데이트 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려졌습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Java 애플리케이션 업데이트

아래 절차에 따라 Java 애플리케이션을 업데이트하십시오.

애플리케이션은 flink-connector-kinesis을 사용하는 경우:

Kinesis 커넥터는 셰이딩을 사용하여 를 비롯한 일부 종속성을 커넥터 jar에 패키징합니다. AWS SDK AWS SDK버전을 업데이트하려면 다음 절차를 사용하여 이러한 셰이딩된 클래스를 교체하십시오.

Maven
  1. Kinesis 커넥터와 필수 AWS SDK 모듈을 프로젝트 종속성으로 추가합니다.

  2. 구성 maven-shade-plugin:

    1. Kinesis 커넥터 jar의 콘텐츠를 복사할 때 음영 처리된 AWS SDK 클래스를 제외하는 필터를 추가합니다.

    2. Kinesis 커넥터에서 예상하는 재배치 규칙을 추가하여 업데이트된 AWS SDK 클래스를 패키지로 이동합니다.

    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. Kinesis 커넥터와 필수 AWS SDK 모듈을 프로젝트 종속성으로 추가합니다.

  2. 구성 조정 shadowJar :

    1. Kinesis 커넥터 jar의 콘텐츠를 복사할 때는 음영 처리된 AWS SDK 클래스를 제외하십시오.

    2. 업데이트된 AWS SDK 클래스를 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") } ...

애플리케이션이 영향을 받는 다른 커넥터를 사용하는 경우.

AWS SDK버전을 업데이트하려면 프로젝트 빌드 SDK 구성에 버전을 적용해야 합니다.

Maven

프로젝트의 SDK 버전을 적용하려면 pom.xml 파일의 종속성 관리 섹션에 AWS SDK BOM (BOM) 을 추가합니다.

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

AWS SDKBOM (BOM) 에 플랫폼 종속성을 추가하여 프로젝트에 SDK 버전을 적용하세요. 이를 위해서는 Gradle 5.0 이상이 필요합니다.

build.gradle

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