From 3d10ae393d01d9653aed77fbe0d46b0a472f1457 Mon Sep 17 00:00:00 2001 From: Aayush Thapa Date: Thu, 21 Mar 2024 15:57:08 -0700 Subject: [PATCH 1/3] add case for future arn generation --- samtranslator/translator/arn_generator.py | 26 +++++++++++++---------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/samtranslator/translator/arn_generator.py b/samtranslator/translator/arn_generator.py index a9f6e0325..d882206c9 100644 --- a/samtranslator/translator/arn_generator.py +++ b/samtranslator/translator/arn_generator.py @@ -18,17 +18,21 @@ def _region_to_partition(region: str) -> str: # setting default partition to aws, this will be overwritten by checking the region below region_string = region.lower() if region_string.startswith("cn-"): - return "aws-cn" - if region_string.startswith("us-iso-"): - return "aws-iso" - if region_string.startswith("us-isob"): - return "aws-iso-b" - if region_string.startswith("us-gov"): - return "aws-us-gov" - if region_string.startswith("eu-isoe"): - return "aws-iso-e" - - return "aws" + partition = "aws-cn" + elif region_string.startswith("us-iso-"): + partition = "aws-iso" + elif region_string.startswith("us-isob"): + partition = "aws-iso-b" + elif region_string.startswith("us-gov"): + partition = "aws-us-gov" + elif region_string.startswith("eu-isoe"): + partition = "aws-iso-e" + elif "iso" in region_string: + partition = "{AWS::Partition}" + else: + partition = "aws" + + return partition class ArnGenerator: From 30bd5ed9594de93db679e64e80dfec6df5ca59ad Mon Sep 17 00:00:00 2001 From: Aayush Thapa Date: Tue, 26 Mar 2024 10:36:39 -0700 Subject: [PATCH 2/3] add tests + replace ifs --- samtranslator/translator/arn_generator.py | 31 +++++++++++------------ tests/translator/test_arn_generator.py | 10 +++++++- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/samtranslator/translator/arn_generator.py b/samtranslator/translator/arn_generator.py index d882206c9..733bae0eb 100644 --- a/samtranslator/translator/arn_generator.py +++ b/samtranslator/translator/arn_generator.py @@ -17,22 +17,21 @@ def _get_region_from_session() -> str: def _region_to_partition(region: str) -> str: # setting default partition to aws, this will be overwritten by checking the region below region_string = region.lower() - if region_string.startswith("cn-"): - partition = "aws-cn" - elif region_string.startswith("us-iso-"): - partition = "aws-iso" - elif region_string.startswith("us-isob"): - partition = "aws-iso-b" - elif region_string.startswith("us-gov"): - partition = "aws-us-gov" - elif region_string.startswith("eu-isoe"): - partition = "aws-iso-e" - elif "iso" in region_string: - partition = "{AWS::Partition}" - else: - partition = "aws" - - return partition + region_to_partition_map = { + "cn-": "aws-cn", + "us-iso-": "aws-iso", + "us-isob": "aws-iso-b", + "us-gov": "aws-us-gov", + "eu-isoe": "aws-iso-e", + } + for key, value in region_to_partition_map.items(): + if region_string.startswith(key): + return value + + if "iso" in region_string: + return "${AWS::Partition}" + + return "aws" class ArnGenerator: diff --git a/tests/translator/test_arn_generator.py b/tests/translator/test_arn_generator.py index ae2c1bf7f..d7187ccea 100644 --- a/tests/translator/test_arn_generator.py +++ b/tests/translator/test_arn_generator.py @@ -10,7 +10,15 @@ def setUp(self): ArnGenerator.BOTO_SESSION_REGION_NAME = None @parameterized.expand( - [("us-east-1", "aws"), ("cn-east-1", "aws-cn"), ("us-gov-west-1", "aws-us-gov"), ("US-EAST-1", "aws")] + [ + ("us-east-1", "aws"), + ("cn-east-1", "aws-cn"), + ("us-gov-west-1", "aws-us-gov"), + ("us-isob-east-1", "aws-iso-b"), + ("eu-isoe-west-1", "aws-iso-e"), + ("US-EAST-1", "aws"), + ("us-isof-east-1", "${AWS::Partition}"), + ] ) def test_get_partition_name(self, region, expected): actual = ArnGenerator.get_partition_name(region) From e562e1892aff9d314d33d16033ce0ef5cc949d0b Mon Sep 17 00:00:00 2001 From: Aayush Thapa Date: Tue, 26 Mar 2024 10:47:21 -0700 Subject: [PATCH 3/3] add comment --- samtranslator/translator/arn_generator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/samtranslator/translator/arn_generator.py b/samtranslator/translator/arn_generator.py index 733bae0eb..852c66c74 100644 --- a/samtranslator/translator/arn_generator.py +++ b/samtranslator/translator/arn_generator.py @@ -28,6 +28,7 @@ def _region_to_partition(region: str) -> str: if region_string.startswith(key): return value + # Using the ${AWS::Partition} placeholder so that we don't have to add new regions to the static list above if "iso" in region_string: return "${AWS::Partition}"