@@ -2,6 +2,7 @@ import { RegionInfo } from "@aws-sdk/types";
2
2
3
3
import { getResolvedHostname } from "./getResolvedHostname" ;
4
4
import { getResolvedPartition } from "./getResolvedPartition" ;
5
+ import { isFipsRegion } from "./isFipsRegion" ;
5
6
import { PartitionHash } from "./PartitionHash" ;
6
7
import { RegionHash } from "./RegionHash" ;
7
8
@@ -17,17 +18,32 @@ export const getRegionInfo = (
17
18
) : RegionInfo => {
18
19
const partition = getResolvedPartition ( region , { partitionHash } ) ;
19
20
const resolvedRegion = partitionHash [ partition ] ?. endpoint ?? region ;
21
+
22
+ const hostname = getResolvedHostname ( resolvedRegion , {
23
+ signingService,
24
+ regionHostname : regionHash [ resolvedRegion ] ?. hostname ,
25
+ partitionHostname : partitionHash [ partition ] ?. hostname ,
26
+ } ) ;
27
+
28
+ let signingRegion : string | undefined ;
29
+ if ( regionHash [ resolvedRegion ] ?. signingRegion ) {
30
+ signingRegion = regionHash [ resolvedRegion ] . signingRegion ;
31
+ } else if ( isFipsRegion ( region ) ) {
32
+ const regionRegex = partitionHash [ partition ] . regionRegex
33
+ . replace ( "\\\\" , "\\" )
34
+ . replace ( / ^ \^ / g, "" )
35
+ . replace ( / \$ $ / g, "" ) ;
36
+ const regionRegexmatchArray = hostname . match ( regionRegex ) ;
37
+ if ( regionRegexmatchArray ) {
38
+ signingRegion = regionRegexmatchArray [ 0 ] ;
39
+ }
40
+ }
41
+
20
42
return {
21
43
partition,
22
44
signingService,
23
- hostname : getResolvedHostname ( resolvedRegion , {
24
- signingService,
25
- regionHostname : regionHash [ resolvedRegion ] ?. hostname ,
26
- partitionHostname : partitionHash [ partition ] ?. hostname ,
27
- } ) ,
28
- ...( regionHash [ resolvedRegion ] ?. signingRegion && {
29
- signingRegion : regionHash [ resolvedRegion ] . signingRegion ,
30
- } ) ,
45
+ hostname,
46
+ ...( signingRegion && { signingRegion } ) ,
31
47
...( regionHash [ resolvedRegion ] ?. signingService && {
32
48
signingService : regionHash [ resolvedRegion ] . signingService ,
33
49
} ) ,
0 commit comments