File tree Expand file tree Collapse file tree 2 files changed +37
-1
lines changed Expand file tree Collapse file tree 2 files changed +37
-1
lines changed Original file line number Diff line number Diff line change @@ -118,6 +118,37 @@ describe("MetricsListener", () => {
118
118
await expect ( listener . onCompleteInvocation ( ) ) . resolves . toEqual ( undefined ) ;
119
119
} ) ;
120
120
121
+ it ( "configures FIPS endpoint for GovCloud regions" , async ( ) => {
122
+ try {
123
+ process . env . AWS_REGION = "us-gov-west-1" ;
124
+ const secretsManagerModule = require ( "@aws-sdk/client-secrets-manager" ) ;
125
+ const secretsManagerSpy = jest . spyOn ( secretsManagerModule , "SecretsManager" ) ;
126
+
127
+ const kms = new MockKMS ( "kms-api-key-decrypted" ) ;
128
+ const listener = new MetricsListener ( kms as any , {
129
+ apiKey : "" ,
130
+ apiKeyKMS : "" ,
131
+ apiKeySecretARN : "api-key-secret-arn" ,
132
+ enhancedMetrics : false ,
133
+ logForwarding : false ,
134
+ shouldRetryMetrics : false ,
135
+ localTesting : false ,
136
+ siteURL,
137
+ } ) ;
138
+
139
+ await listener . onStartInvocation ( { } ) ;
140
+ await listener . onCompleteInvocation ( ) ;
141
+
142
+ expect ( secretsManagerSpy ) . toHaveBeenCalledWith ( {
143
+ useFipsEndpoint : true ,
144
+ } ) ;
145
+
146
+ secretsManagerSpy . mockRestore ( ) ;
147
+ } finally {
148
+ process . env . AWS_REGION = "us-east-1" ;
149
+ }
150
+ } ) ;
151
+
121
152
it ( "logs metrics when logForwarding is enabled" , async ( ) => {
122
153
const spy = jest . spyOn ( process . stdout , "write" ) ;
123
154
jest . spyOn ( Date , "now" ) . mockImplementation ( ( ) => 1487076708000 ) ;
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import { writeMetricToStdout } from "./metric-log";
7
7
import { Distribution } from "./model" ;
8
8
import { Context } from "aws-lambda" ;
9
9
import { getEnhancedMetricTags } from "./enhanced-metrics" ;
10
+ import { SecretsManagerClientConfig } from "@aws-sdk/client-secrets-manager" ;
10
11
11
12
const METRICS_BATCH_SEND_INTERVAL = 10000 ; // 10 seconds
12
13
const HISTORICAL_METRICS_THRESHOLD_HOURS = 4 * 60 * 60 * 1000 ; // 4 hours
@@ -223,7 +224,11 @@ export class MetricsListener {
223
224
if ( config . apiKeySecretARN !== "" ) {
224
225
try {
225
226
const { SecretsManager } = await import ( "@aws-sdk/client-secrets-manager" ) ;
226
- const secretsManager = new SecretsManager ( ) ;
227
+ const region = process . env . AWS_REGION ;
228
+ const isGovRegion = region !== undefined && region . startsWith ( "us-gov-" ) ;
229
+ const secretsManager = new SecretsManager ( {
230
+ useFipsEndpoint : isGovRegion ,
231
+ } ) ;
227
232
const secret = await secretsManager . getSecretValue ( { SecretId : config . apiKeySecretARN } ) ;
228
233
return secret ?. SecretString ?? "" ;
229
234
} catch ( error ) {
You can’t perform that action at this time.
0 commit comments