Skip to content

Commit 87369f0

Browse files
authored
[ResourceGroupsTaggingAPI] Fix incorrect ARNs for EC2 (getmoto#9491)
1 parent 1ea05b4 commit 87369f0

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

moto/resourcegroupstaggingapi/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,8 +684,10 @@ def format_tag_keys(
684684
tags = format_tags(self.ec2_backend.tags.get(resource.id, {}))
685685
if not tags or not tag_filter(tags):
686686
continue
687+
resource_type_part = resource_type.split(":", 1)[1]
688+
resource_arn = f"arn:{self.partition}:ec2:{self.region_name}:{self.account_id}:{resource_type_part}/{resource.id}"
687689
yield {
688-
"ResourceARN": f"arn:{self.partition}:ec2:{self.region_name}:{self.account_id}:{resource_type}/{resource.id}",
690+
"ResourceARN": resource_arn,
689691
"Tags": tags,
690692
}
691693

tests/test_resourcegroupstaggingapi/test_resourcegroupstaggingapi.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,19 +379,22 @@ def test_get_resources_ec2():
379379
# 1 Entry for AMI
380380
resp = rtapi.get_resources(ResourceTypeFilters=["ec2:image"])
381381
assert len(resp["ResourceTagMappingList"]) == 1
382-
assert "image/" in resp["ResourceTagMappingList"][0]["ResourceARN"]
382+
expected_arn = f"arn:aws:ec2:eu-central-1:{ACCOUNT_ID}:image/{image_id}"
383+
assert resp["ResourceTagMappingList"][0]["ResourceARN"] == expected_arn
383384

384385
# As were iterating the same data, this rules out that the test above was a fluke
385386
resp = rtapi.get_resources(ResourceTypeFilters=["ec2:instance"])
386387
assert len(resp["ResourceTagMappingList"]) == 1
387-
assert "instance/" in resp["ResourceTagMappingList"][0]["ResourceARN"]
388+
expected_arn = f"arn:aws:ec2:eu-central-1:{ACCOUNT_ID}:instance/{instance_id}"
389+
assert resp["ResourceTagMappingList"][0]["ResourceARN"] == expected_arn
388390

389391
# Basic test of tag filters
390392
resp = rtapi.get_resources(
391393
TagFilters=[{"Key": "MY_TAG1", "Values": ["MY_VALUE1", "some_other_value"]}]
392394
)
393395
assert len(resp["ResourceTagMappingList"]) == 1
394-
assert "instance/" in resp["ResourceTagMappingList"][0]["ResourceARN"]
396+
expected_arn = f"arn:aws:ec2:eu-central-1:{ACCOUNT_ID}:instance/{instance_id}"
397+
assert resp["ResourceTagMappingList"][0]["ResourceARN"] == expected_arn
395398

396399

397400
@mock_aws

0 commit comments

Comments
 (0)