diff --git a/.changes/next-release/bugfix-DLMEMR-23837.json b/.changes/next-release/bugfix-DLMEMR-23837.json new file mode 100644 index 000000000000..6fb8ad975663 --- /dev/null +++ b/.changes/next-release/bugfix-DLMEMR-23837.json @@ -0,0 +1,5 @@ +{ + "type": "bugfix", + "category": "DLM, EMR", + "description": "Dynamically load AWS partition information using partitions.json instead of hardcoded region mappings. Affects ``dlm create-default-role``, ``emr create-default-roles``, and ``emr-containers update-role-trust-policy`` commands." +} diff --git a/awscli/customizations/utils.py b/awscli/customizations/utils.py index c5055418c4c3..982bd9581064 100644 --- a/awscli/customizations/utils.py +++ b/awscli/customizations/utils.py @@ -18,6 +18,8 @@ import sys from botocore.exceptions import ClientError +from botocore.loaders import Loader +from botocore.endpoint_provider import RuleSetStandardLibary from awscli.utils import create_nested_client @@ -221,10 +223,8 @@ 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') + rule_lib = RuleSetStandardLibary(partitions_data) + partition_result = rule_lib.aws_partition(region.lower()) + return partition_result['name'] diff --git a/tests/unit/customizations/test_utils.py b/tests/unit/customizations/test_utils.py index 8b003361e090..19925af564aa 100644 --- a/tests/unit/customizations/test_utils.py +++ b/tests/unit/customizations/test_utils.py @@ -267,3 +267,4 @@ def test_get_policy_arn_suffix(self): self.assertEqual("aws", utils.get_policy_arn_suffix("us-east-1")) self.assertEqual("aws", utils.get_policy_arn_suffix("sa-east-1")) self.assertEqual("aws", utils.get_policy_arn_suffix("ap-south-1")) + self.assertEqual("aws-eusc", utils.get_policy_arn_suffix("eusc-de-east-1"))