Skip to content

Commit 84649b8

Browse files
authored
fix(region-info): EMR service principal incorrect in China (#20014)
Fixes #19867. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
1 parent ec06f48 commit 84649b8

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

packages/@aws-cdk/region-info/lib/default.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ export class Default {
106106
case 'ec2':
107107
return partitional;
108108

109+
case 'elasticmapreduce':
110+
return region.startsWith('cn-')
111+
? partitional
112+
: universal;
113+
109114
// Services with a universal principal across all regions/partitions (the default case)
110115
default:
111116
return universal;

packages/@aws-cdk/region-info/test/default.test.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,28 @@ describe('servicePrincipal', () => {
5353
expect(Default.servicePrincipal('codedeploy', cnRegion, 'amazonaws.com.cn')).toBe(`codedeploy.${cnRegion}.amazonaws.com.cn`);
5454
});
5555
}
56-
5756
});
5857

5958

6059
describe('spot-check some service principals', () => {
6160
test('ssm', () => {
62-
expect(Default.servicePrincipal('ssm.amazonaws.com', 'us-east-1', 'x')).toBe('ssm.amazonaws.com');
63-
expect(Default.servicePrincipal('ssm.amazonaws.com', 'eu-north-1', 'x')).toBe('ssm.amazonaws.com');
64-
expect(Default.servicePrincipal('ssm.amazonaws.com', 'ap-east-1', 'x')).toBe('ssm.ap-east-1.amazonaws.com');
65-
expect(Default.servicePrincipal('ssm.amazonaws.com', 'eu-south-1', 'x')).toBe('ssm.eu-south-1.amazonaws.com');
61+
expectServicePrincipals('ssm.amazonaws.com', {
62+
'us-east-1': 'ssm.amazonaws.com',
63+
'eu-north-1': 'ssm.amazonaws.com',
64+
'ap-east-1': 'ssm.ap-east-1.amazonaws.com',
65+
'eu-south-1': 'ssm.eu-south-1.amazonaws.com',
66+
});
6667
});
68+
69+
test('EMR', () => {
70+
expectServicePrincipals('elasticmapreduce.amazonaws.com', {
71+
'us-east-1': 'elasticmapreduce.amazonaws.com',
72+
'cn-north-1': 'elasticmapreduce.EXTENSION', // amazonaws.com.cn in China
73+
'us-iso-east-1': 'elasticmapreduce.amazonaws.com',
74+
});
75+
});
76+
77+
function expectServicePrincipals(principal: string, regionMap: Record<string, string>) {
78+
expect(Object.fromEntries(Object.keys(regionMap).map(reg => [reg, Default.servicePrincipal(principal, reg, 'EXTENSION')]))).toEqual(regionMap);
79+
}
6780
});

0 commit comments

Comments
 (0)