You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by da...@apache.org on 2022/08/16 10:40:33 UTC

[flink] branch release-1.15 updated: [FLINK-28978][kinesis] Update AWS Regions validation to allow for future AWS regions

This is an automated email from the ASF dual-hosted git repository.

dannycranmer pushed a commit to branch release-1.15
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.15 by this push:
     new c90d0d537e6 [FLINK-28978][kinesis] Update AWS Regions validation to allow for future AWS regions
c90d0d537e6 is described below

commit c90d0d537e662c2c0db1ff497a87da6a55b03bc4
Author: Hong Teoh <li...@amazon.com>
AuthorDate: Tue Aug 16 00:11:56 2022 +0100

    [FLINK-28978][kinesis] Update AWS Regions validation to allow for future AWS regions
---
 .../java/org/apache/flink/connector/aws/util/AWSGeneralUtil.java | 4 +++-
 .../org/apache/flink/connector/aws/util/AWSGeneralUtilTest.java  | 9 +++++++--
 .../apache/flink/streaming/connectors/kinesis/util/AWSUtil.java  | 9 ++-------
 .../flink/streaming/connectors/kinesis/util/AWSUtilTest.java     | 8 +++++++-
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/flink-connectors/flink-connector-aws-base/src/main/java/org/apache/flink/connector/aws/util/AWSGeneralUtil.java b/flink-connectors/flink-connector-aws-base/src/main/java/org/apache/flink/connector/aws/util/AWSGeneralUtil.java
index d70b438aa4f..e1d7f982835 100644
--- a/flink-connectors/flink-connector-aws-base/src/main/java/org/apache/flink/connector/aws/util/AWSGeneralUtil.java
+++ b/flink-connectors/flink-connector-aws-base/src/main/java/org/apache/flink/connector/aws/util/AWSGeneralUtil.java
@@ -48,6 +48,7 @@ import java.time.Duration;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
+import java.util.regex.Pattern;
 
 /** Some general utilities specific to Amazon Web Service. */
 @Internal
@@ -313,7 +314,8 @@ public class AWSGeneralUtil {
      * @return true if the supplied region is valid, false otherwise
      */
     public static boolean isValidRegion(Region region) {
-        return Region.regions().contains(region);
+        return Pattern.matches(
+                "^[a-z]+-([a-z]+[-]{0,1}[a-z]+-([0-9]|global)|global)$", region.id());
     }
 
     /**
diff --git a/flink-connectors/flink-connector-aws-base/src/test/java/org/apache/flink/connector/aws/util/AWSGeneralUtilTest.java b/flink-connectors/flink-connector-aws-base/src/test/java/org/apache/flink/connector/aws/util/AWSGeneralUtilTest.java
index 1edab3529ff..f320256617d 100644
--- a/flink-connectors/flink-connector-aws-base/src/test/java/org/apache/flink/connector/aws/util/AWSGeneralUtilTest.java
+++ b/flink-connectors/flink-connector-aws-base/src/test/java/org/apache/flink/connector/aws/util/AWSGeneralUtilTest.java
@@ -55,8 +55,8 @@ import static org.apache.flink.connector.aws.config.AWSConfigConstants.Credentia
 import static org.apache.flink.connector.aws.config.AWSConfigConstants.roleArn;
 import static org.apache.flink.connector.aws.config.AWSConfigConstants.roleSessionName;
 import static org.apache.flink.connector.aws.config.AWSConfigConstants.webIdentityTokenFile;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
@@ -696,11 +696,16 @@ public class AWSGeneralUtilTest {
     @Test
     public void testValidRegion() {
         assertTrue(AWSGeneralUtil.isValidRegion(Region.of("us-east-1")));
+        assertTrue(AWSGeneralUtil.isValidRegion(Region.of("us-gov-west-1")));
+        assertTrue(AWSGeneralUtil.isValidRegion(Region.of("us-isob-east-1")));
+        assertTrue(AWSGeneralUtil.isValidRegion(Region.of("aws-global")));
+        assertTrue(AWSGeneralUtil.isValidRegion(Region.of("aws-iso-global")));
+        assertTrue(AWSGeneralUtil.isValidRegion(Region.of("aws-iso-b-global")));
     }
 
     @Test
     public void testInvalidRegion() {
-        assertFalse(AWSGeneralUtil.isValidRegion(Region.of("ur-east-1")));
+        assertThat(AWSGeneralUtil.isValidRegion(Region.of("unstructured-string"))).isFalse();
     }
 
     @Test
diff --git a/flink-connectors/flink-connector-kinesis/src/main/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtil.java b/flink-connectors/flink-connector-kinesis/src/main/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtil.java
index 44741efc1a2..40f6e64e19b 100644
--- a/flink-connectors/flink-connector-kinesis/src/main/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtil.java
+++ b/flink-connectors/flink-connector-kinesis/src/main/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtil.java
@@ -38,7 +38,6 @@ import com.amazonaws.auth.SystemPropertiesCredentialsProvider;
 import com.amazonaws.auth.WebIdentityTokenCredentialsProvider;
 import com.amazonaws.auth.profile.ProfileCredentialsProvider;
 import com.amazonaws.client.builder.AwsClientBuilder;
-import com.amazonaws.regions.Regions;
 import com.amazonaws.services.kinesis.AmazonKinesis;
 import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder;
 import com.amazonaws.services.securitytoken.AWSSecurityTokenService;
@@ -55,6 +54,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
+import java.util.regex.Pattern;
 
 import static org.apache.flink.streaming.connectors.kinesis.model.SentinelSequenceNumber.SENTINEL_AT_TIMESTAMP_SEQUENCE_NUM;
 import static org.apache.flink.streaming.connectors.kinesis.model.SentinelSequenceNumber.SENTINEL_LATEST_SEQUENCE_NUM;
@@ -216,12 +216,7 @@ public class AWSUtil {
      * @return true if the supplied region ID is valid, false otherwise
      */
     public static boolean isValidRegion(String region) {
-        try {
-            Regions.fromName(region.toLowerCase());
-        } catch (IllegalArgumentException e) {
-            return false;
-        }
-        return true;
+        return Pattern.matches("^[a-z]+-([a-z]+[-]{0,1}[a-z]+-([0-9]|global)|global)$", region);
     }
 
     /** The prefix used for properties that should be applied to {@link ClientConfiguration}. */
diff --git a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtilTest.java b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtilTest.java
index 94733304b28..b5e9ee2fa55 100644
--- a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtilTest.java
+++ b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/util/AWSUtilTest.java
@@ -167,11 +167,17 @@ public class AWSUtilTest {
     @Test
     public void testValidRegion() {
         assertTrue(AWSUtil.isValidRegion("us-east-1"));
+        assertTrue(AWSUtil.isValidRegion("us-east-1"));
+        assertTrue(AWSUtil.isValidRegion("us-gov-west-1"));
+        assertTrue(AWSUtil.isValidRegion("us-isob-east-1"));
+        assertTrue(AWSUtil.isValidRegion("aws-global"));
+        assertTrue(AWSUtil.isValidRegion("aws-iso-global"));
+        assertTrue(AWSUtil.isValidRegion("aws-iso-b-global"));
     }
 
     @Test
     public void testInvalidRegion() {
-        assertFalse(AWSUtil.isValidRegion("ur-east-1"));
+        assertFalse(AWSUtil.isValidRegion("invalid-region"));
     }
 
     @Test