diff --git a/awscli/customizations/utils.py b/awscli/customizations/utils.py index fd135a8714a2..4bb901b0d8f6 100644 --- a/awscli/customizations/utils.py +++ b/awscli/customizations/utils.py @@ -21,6 +21,7 @@ import xml from botocore.exceptions import ClientError +from botocore.loaders import Loader from awscli.customizations.exceptions import ParamValidationError @@ -208,12 +209,15 @@ def uni_print(statement, out_file=None): def get_policy_arn_suffix(region): """Method to return region value as expected by policy arn""" region_string = region.lower() - if region_string.startswith("cn-"): - return "aws-cn" - elif region_string.startswith("us-gov"): - return "aws-us-gov" - else: - return "aws" + loader = Loader() + partitions_data = loader.load_data('partitions') + + for partition in partitions_data['partitions']: + region_regex = partition['regionRegex'] + if re.match(region_regex, region_string): + return partition['id'] + + return "aws" def get_shape_doc_overview(shape): diff --git a/tests/unit/customizations/test_utils.py b/tests/unit/customizations/test_utils.py index f6c5a2bed071..1ce5bcc7179e 100644 --- a/tests/unit/customizations/test_utils.py +++ b/tests/unit/customizations/test_utils.py @@ -259,6 +259,9 @@ def test_get_policy_arn_suffix(self): self.assertEqual( "aws-us-gov", utils.get_policy_arn_suffix("us-gov-west-1") ) + self.assertEqual( + "aws-eusc", utils.get_policy_arn_suffix("eusc-de-east-1") + ) self.assertEqual("aws", utils.get_policy_arn_suffix("ca-central-1")) self.assertEqual("aws", utils.get_policy_arn_suffix("us-east-1")) self.assertEqual("aws", utils.get_policy_arn_suffix("sa-east-1"))