Skip to content

Commit 1a22c99

Browse files
committed
telemetry(auth): emit metric for createToken
1 parent 7cceda0 commit 1a22c99

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"scan-licenses": "ts-node ./scripts/scan-licenses.ts"
4343
},
4444
"devDependencies": {
45-
"@aws-toolkits/telemetry": "^1.0.329",
45+
"@aws-toolkits/telemetry": "^1.0.338",
4646
"@playwright/browser-chromium": "^1.43.1",
4747
"@stylistic/eslint-plugin": "^2.11.0",
4848
"@types/he": "^1.2.3",

packages/core/src/auth/sso/clients.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ import { AuthenticationFlow } from './model'
3636
import { toSnakeCase } from '../../shared/utilities/textUtilities'
3737
import { getUserAgent, withTelemetryContext } from '../../shared/telemetry/util'
3838
import { oneSecond } from '../../shared/datetime'
39+
import { telemetry } from '../../shared/telemetry/telemetry'
40+
import { getTelemetryReason, getTelemetryReasonDesc } from '../../shared/errors'
3941

4042
export class OidcClient {
4143
public constructor(
@@ -86,15 +88,38 @@ export class OidcClient {
8688
}
8789

8890
public async createToken(request: CreateTokenRequest) {
91+
const startTime = this.clock.Date.now()
92+
const grantType = request.grantType
93+
8994
let response
9095
try {
9196
response = await this.client.createToken(request as CreateTokenRequest)
9297
} catch (err) {
98+
const reason = getTelemetryReason(err)
99+
telemetry.auth_ssoTokenOperation.emit({
100+
result: 'Failed',
101+
grantType: grantType ?? 'unknown',
102+
duration: this.clock.Date.now() - startTime,
103+
...(reason !== 'ENOTFOUND' && reason !== 'TimeoutError' ? { reason } : {}),
104+
})
105+
106+
getLogger().error(`sso-oidc: createToken failed (grantType=${grantType}): ${err}`)
107+
93108
const newError = AwsClientResponseError.instanceIf(err)
94109
throw newError
95110
}
96111
assertHasProps(response, 'accessToken', 'expiresIn')
97112

113+
telemetry.auth_ssoTokenOperation.emit({
114+
result: 'Succeeded',
115+
grantType: grantType ?? 'unknown',
116+
duration: this.clock.Date.now() - startTime,
117+
})
118+
119+
getLogger().debug(
120+
`sso-oidc: createToken succeeded (grantType=${grantType}, requestId=${response.$metadata.requestId})`
121+
)
122+
98123
return {
99124
...selectFrom(response, 'accessToken', 'refreshToken', 'tokenType'),
100125
requestId: response.$metadata.requestId,

0 commit comments

Comments
 (0)