Skip to content

Commit d747350

Browse files
ahusseinalihayemaxi
authored andcommitted
fix(AmazonQ): Use SM Iam Credentials for CodeWhisperer
SM IAM permissions have been working as of v1.99 and now it's broken. This change brings it back to support code completion for SM code editor
1 parent 54158ba commit d747350

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

packages/amazonq/src/extension.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import {
4444
setContext,
4545
setupUninstallHandler,
4646
maybeShowMinVscodeWarning,
47+
isSageMaker,
4748
} from 'aws-core-vscode/shared'
4849
import { ExtStartUpSources, telemetry } from 'aws-core-vscode/telemetry'
4950
import { VSCODE_EXTENSION_ID } from 'aws-core-vscode/utils'
@@ -193,7 +194,7 @@ export async function activateAmazonQCommon(context: vscode.ExtensionContext, is
193194
}
194195
}
195196
const currConn = AuthUtil.instance.conn
196-
if (currConn !== undefined && !isAnySsoConnection(currConn)) {
197+
if (currConn !== undefined && !(isAnySsoConnection(currConn) || isSageMaker())) {
197198
getLogger().error(`Current Amazon Q connection is not SSO, type is: %s`, currConn?.type)
198199
}
199200

packages/core/src/auth/activation.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,19 @@ import { LoginManager } from './deprecated/loginManager'
88
import { fromString } from './providers/credentials'
99
import { getLogger } from '../shared/logger'
1010
import { ExtensionUse } from './utils'
11-
import { isCloud9 } from '../shared/extensionUtilities'
11+
import { isAmazonQ, isCloud9, isSageMaker } from '../shared/extensionUtilities'
1212
import { isInDevEnv } from '../shared/vscode/env'
1313
import { isWeb } from '../shared/extensionGlobals'
14+
import { CredentialsProviderManager } from './providers/credentialsProviderManager'
15+
import { SharedCredentialsProviderFactory } from './providers/sharedCredentialsProviderFactory'
16+
import { Ec2CredentialsProvider } from './providers/ec2CredentialsProvider'
17+
import { EcsCredentialsProvider } from './providers/ecsCredentialsProvider'
18+
import { EnvVarsCredentialsProvider } from './providers/envVarsCredentialsProvider'
1419

1520
export async function initialize(loginManager: LoginManager): Promise<void> {
21+
if (isAmazonQ() && isSageMaker()) {
22+
initializeCredentialsProviderManager()
23+
}
1624
Auth.instance.onDidChangeActiveConnection(async (conn) => {
1725
// This logic needs to be moved to `Auth.useConnection` to correctly record `passive`
1826
if (conn?.type === 'iam' && conn.state === 'valid') {
@@ -25,6 +33,12 @@ export async function initialize(loginManager: LoginManager): Promise<void> {
2533
await showManageConnectionsOnStartup()
2634
}
2735

36+
function initializeCredentialsProviderManager() {
37+
const manager = CredentialsProviderManager.getInstance()
38+
manager.addProviderFactory(new SharedCredentialsProviderFactory())
39+
manager.addProviders(new Ec2CredentialsProvider(), new EcsCredentialsProvider(), new EnvVarsCredentialsProvider())
40+
}
41+
2842
/**
2943
* Show the Manage Connections page when the extension starts up, if it should be shown.
3044
*/

0 commit comments

Comments
 (0)