From 6c3a2d2313847d9a59c58572c54bd11cff251fd9 Mon Sep 17 00:00:00 2001 From: Tai Lai Date: Wed, 17 Sep 2025 10:22:55 -0700 Subject: [PATCH] refactor(ssm): migrate to aws-sdk v3 --- packages/core/src/awsService/ec2/utils.ts | 4 +- packages/core/src/awsService/ecs/util.ts | 15 +-- .../src/shared/clients/ssmDocumentClient.ts | 100 ++++++++++++------ packages/core/src/shared/extensions/ssh.ts | 4 +- .../ssmDocument/commands/openDocumentItem.ts | 6 +- .../ssmDocument/commands/publishDocument.ts | 6 +- .../commands/updateDocumentVersion.ts | 4 +- .../ssmDocument/explorer/documentItemNode.ts | 15 ++- .../explorer/documentItemNodeWriteable.ts | 10 +- .../ssmDocument/explorer/registryItemNode.ts | 8 +- .../wizards/publishDocumentWizard.ts | 6 +- .../src/test/shared/extensions/ssh.test.ts | 10 +- .../commands/deleteDocument.test.ts | 6 +- .../commands/openDocumentItem.test.ts | 12 +-- .../commands/publishDocument.test.ts | 13 ++- .../commands/updateDocumentVersion.test.ts | 8 +- .../explorer/documentItemNode.test.ts | 4 +- 17 files changed, 132 insertions(+), 99 deletions(-) diff --git a/packages/core/src/awsService/ec2/utils.ts b/packages/core/src/awsService/ec2/utils.ts index 5ce24debaca..a86f358eab9 100644 --- a/packages/core/src/awsService/ec2/utils.ts +++ b/packages/core/src/awsService/ec2/utils.ts @@ -7,7 +7,7 @@ import { Ec2Instance } from '../../shared/clients/ec2' import { copyToClipboard } from '../../shared/utilities/messages' import { Ec2Selection } from './prompter' import { sshLogFileLocation } from '../../shared/sshConfig' -import { SSM } from 'aws-sdk' +import { StartSessionResponse } from '@aws-sdk/client-ssm' import { getLogger } from '../../shared/logger/logger' export function getIconCode(instance: Ec2Instance) { @@ -33,7 +33,7 @@ export async function copyInstanceId(instanceId: string): Promise { export function getEc2SsmEnv( selection: Ec2Selection, ssmPath: string, - session: SSM.StartSessionResponse + session: StartSessionResponse ): NodeJS.ProcessEnv { return Object.assign( { diff --git a/packages/core/src/awsService/ecs/util.ts b/packages/core/src/awsService/ecs/util.ts index d8567373bc6..09d508940ba 100644 --- a/packages/core/src/awsService/ecs/util.ts +++ b/packages/core/src/awsService/ecs/util.ts @@ -15,7 +15,7 @@ import { isCloud9 } from '../../shared/extensionUtilities' import { getOrInstallCli } from '../../shared/utilities/cliUtils' import { Session, TaskDefinition } from 'aws-sdk/clients/ecs' import { getLogger } from '../../shared/logger/logger' -import { SSM } from 'aws-sdk' +import { SSMClient, TerminateSessionCommand } from '@aws-sdk/client-ssm' import { fromExtensionManifest } from '../../shared/settings' import { ecsTaskPermissionsUrl } from '../../shared/constants' @@ -93,12 +93,13 @@ export async function prepareCommand( async function terminateSession() { const sessionId = session.sessionId! - const ssm = await globals.sdkClientBuilder.createAwsService(SSM, undefined, client.regionCode) - ssm.terminateSession({ SessionId: sessionId }) - .promise() - .catch((err) => { - getLogger().warn(`ecs: failed to terminate session "${sessionId}": %s`, err) - }) + const ssm = globals.sdkClientBuilderV3.createAwsService({ + serviceClient: SSMClient, + clientOptions: { region: client.regionCode }, + }) + ssm.send(new TerminateSessionCommand({ SessionId: sessionId })).catch((err) => { + getLogger().warn(`ecs: failed to terminate session "${sessionId}": %s`, err) + }) } return { path: ssmPlugin, args, dispose: () => void terminateSession() } diff --git a/packages/core/src/shared/clients/ssmDocumentClient.ts b/packages/core/src/shared/clients/ssmDocumentClient.ts index 774b9a2b2fc..581cb0bc219 100644 --- a/packages/core/src/shared/clients/ssmDocumentClient.ts +++ b/packages/core/src/shared/clients/ssmDocumentClient.ts @@ -3,7 +3,36 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SSM } from 'aws-sdk' +import { + CreateDocumentCommand, + CreateDocumentRequest, + CreateDocumentResult, + DeleteDocumentCommand, + DeleteDocumentRequest, + DeleteDocumentResult, + DescribeDocumentCommand, + DescribeDocumentRequest, + DescribeDocumentResult, + DocumentFormat, + DocumentIdentifier, + DocumentVersionInfo, + GetDocumentCommand, + GetDocumentRequest, + GetDocumentResult, + ListDocumentsCommand, + ListDocumentsRequest, + ListDocumentsResult, + ListDocumentVersionsCommand, + ListDocumentVersionsRequest, + ListDocumentVersionsResult, + SSMClient, + UpdateDocumentCommand, + UpdateDocumentDefaultVersionCommand, + UpdateDocumentDefaultVersionRequest, + UpdateDocumentDefaultVersionResult, + UpdateDocumentRequest, + UpdateDocumentResult, +} from '@aws-sdk/client-ssm' import globals from '../extensionGlobals' import { ClassToInterfaceType } from '../utilities/tsUtils' @@ -12,23 +41,21 @@ export type SsmDocumentClient = ClassToInterfaceType export class DefaultSsmDocumentClient { public constructor(public readonly regionCode: string) {} - public async deleteDocument(documentName: string): Promise { - const client = await this.createSdkClient() + public async deleteDocument(documentName: string): Promise { + const client = this.createSdkClient() - const request: SSM.Types.DeleteDocumentRequest = { + const request: DeleteDocumentRequest = { Name: documentName, } - return await client.deleteDocument(request).promise() + return await client.send(new DeleteDocumentCommand(request)) } - public async *listDocuments( - request: SSM.Types.ListDocumentsRequest = {} - ): AsyncIterableIterator { - const client = await this.createSdkClient() + public async *listDocuments(request: ListDocumentsRequest = {}): AsyncIterableIterator { + const client = this.createSdkClient() do { - const response: SSM.Types.ListDocumentsResult = await client.listDocuments(request).promise() + const response: ListDocumentsResult = await client.send(new ListDocumentsCommand(request)) if (response.DocumentIdentifiers) { yield* response.DocumentIdentifiers @@ -38,15 +65,15 @@ export class DefaultSsmDocumentClient { } while (request.NextToken) } - public async *listDocumentVersions(documentName: string): AsyncIterableIterator { - const client = await this.createSdkClient() + public async *listDocumentVersions(documentName: string): AsyncIterableIterator { + const client = this.createSdkClient() - const request: SSM.Types.ListDocumentVersionsRequest = { + const request: ListDocumentVersionsRequest = { Name: documentName, } do { - const response: SSM.Types.ListDocumentVersionsResult = await client.listDocumentVersions(request).promise() + const response: ListDocumentVersionsResult = await client.send(new ListDocumentVersionsCommand(request)) if (response.DocumentVersions) { yield* response.DocumentVersions @@ -56,60 +83,63 @@ export class DefaultSsmDocumentClient { } while (request.NextToken) } - public async describeDocument(documentName: string, documentVersion?: string): Promise { - const client = await this.createSdkClient() + public async describeDocument(documentName: string, documentVersion?: string): Promise { + const client = this.createSdkClient() - const request: SSM.Types.DescribeDocumentRequest = { + const request: DescribeDocumentRequest = { Name: documentName, DocumentVersion: documentVersion, } - return await client.describeDocument(request).promise() + return await client.send(new DescribeDocumentCommand(request)) } public async getDocument( documentName: string, documentVersion?: string, - documentFormat?: string - ): Promise { - const client = await this.createSdkClient() + documentFormat?: DocumentFormat + ): Promise { + const client = this.createSdkClient() - const request: SSM.Types.GetDocumentRequest = { + const request: GetDocumentRequest = { Name: documentName, DocumentVersion: documentVersion, DocumentFormat: documentFormat, } - return await client.getDocument(request).promise() + return await client.send(new GetDocumentCommand(request)) } - public async createDocument(request: SSM.Types.CreateDocumentRequest): Promise { - const client = await this.createSdkClient() + public async createDocument(request: CreateDocumentRequest): Promise { + const client = this.createSdkClient() - return await client.createDocument(request).promise() + return await client.send(new CreateDocumentCommand(request)) } - public async updateDocument(request: SSM.Types.UpdateDocumentRequest): Promise { - const client = await this.createSdkClient() + public async updateDocument(request: UpdateDocumentRequest): Promise { + const client = this.createSdkClient() - return await client.updateDocument(request).promise() + return await client.send(new UpdateDocumentCommand(request)) } public async updateDocumentVersion( documentName: string, documentVersion: string - ): Promise { - const client = await this.createSdkClient() + ): Promise { + const client = this.createSdkClient() - const request: SSM.Types.UpdateDocumentDefaultVersionRequest = { + const request: UpdateDocumentDefaultVersionRequest = { Name: documentName, DocumentVersion: documentVersion, } - return await client.updateDocumentDefaultVersion(request).promise() + return await client.send(new UpdateDocumentDefaultVersionCommand(request)) } - private async createSdkClient(): Promise { - return await globals.sdkClientBuilder.createAwsService(SSM, undefined, this.regionCode) + private createSdkClient(): SSMClient { + return globals.sdkClientBuilderV3.createAwsService({ + serviceClient: SSMClient, + clientOptions: { region: this.regionCode }, + }) } } diff --git a/packages/core/src/shared/extensions/ssh.ts b/packages/core/src/shared/extensions/ssh.ts index 44af313d108..834b945cec7 100644 --- a/packages/core/src/shared/extensions/ssh.ts +++ b/packages/core/src/shared/extensions/ssh.ts @@ -12,7 +12,7 @@ import { ChildProcess, ChildProcessResult } from '../utilities/processUtils' import { ArrayConstructor, NonNullObject } from '../utilities/typeConstructors' import { Settings } from '../settings' import { VSCODE_EXTENSION_ID } from '../extensions' -import { SSM } from 'aws-sdk' +import { StartSessionResponse } from '@aws-sdk/client-ssm' import { ErrorInformation, ToolkitError } from '../errors' const localize = nls.loadMessageBundle() @@ -144,7 +144,7 @@ export async function testSshConnection( hostname: string, sshPath: string, user: string, - session: SSM.StartSessionResponse + session: StartSessionResponse ): Promise { const env = { SESSION_ID: session.SessionId, STREAM_URL: session.StreamUrl, TOKEN: session.TokenValue } const process = new ProcessClass(sshPath, ['-T', `${user}@${hostname}`, 'echo "test connection succeeded" && exit']) diff --git a/packages/core/src/ssmDocument/commands/openDocumentItem.ts b/packages/core/src/ssmDocument/commands/openDocumentItem.ts index af0c6760358..07832d0b560 100644 --- a/packages/core/src/ssmDocument/commands/openDocumentItem.ts +++ b/packages/core/src/ssmDocument/commands/openDocumentItem.ts @@ -6,7 +6,7 @@ import * as nls from 'vscode-nls' const localize = nls.loadMessageBundle() -import { SSM } from 'aws-sdk' +import { DocumentFormat, DocumentVersionInfo } from '@aws-sdk/client-ssm' import * as vscode from 'vscode' import { DocumentItemNode } from '../explorer/documentItemNode' import { AwsContext } from '../../shared/awsContext' @@ -16,7 +16,7 @@ import { showViewLogsMessage } from '../../shared/utilities/messages' import { telemetry } from '../../shared/telemetry/telemetry' import { Result } from '../../shared/telemetry/telemetry' -export async function openDocumentItem(node: DocumentItemNode, awsContext: AwsContext, format?: string) { +export async function openDocumentItem(node: DocumentItemNode, awsContext: AwsContext, format?: DocumentFormat) { const logger: Logger = getLogger() let result: Result = 'Succeeded' @@ -65,7 +65,7 @@ export async function openDocumentItemYaml(node: DocumentItemNode, awsContext: A await openDocumentItem(node, awsContext, 'YAML') } -async function promptUserforDocumentVersion(versions: SSM.Types.DocumentVersionInfo[]): Promise { +async function promptUserforDocumentVersion(versions: DocumentVersionInfo[]): Promise { // Prompt user to pick document version const quickPickItems: vscode.QuickPickItem[] = [] for (const version of versions) { diff --git a/packages/core/src/ssmDocument/commands/publishDocument.ts b/packages/core/src/ssmDocument/commands/publishDocument.ts index 402c86412a6..36a3145b952 100644 --- a/packages/core/src/ssmDocument/commands/publishDocument.ts +++ b/packages/core/src/ssmDocument/commands/publishDocument.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SSM } from 'aws-sdk' +import { CreateDocumentRequest, UpdateDocumentRequest } from '@aws-sdk/client-ssm' import * as vscode from 'vscode' import * as nls from 'vscode-nls' const localize = nls.loadMessageBundle() @@ -75,7 +75,7 @@ export async function createDocument( logger.info(`Creating Systems Manager Document '${wizardResponse.name}'`) try { - const request: SSM.CreateDocumentRequest = { + const request: CreateDocumentRequest = { Content: textDocument.getText(), Name: wizardResponse.name, DocumentType: wizardResponse.documentType, @@ -109,7 +109,7 @@ export async function updateDocument( logger.info(`Updating Systems Manager Document '${wizardResponse.name}'`) try { - const request: SSM.UpdateDocumentRequest = { + const request: UpdateDocumentRequest = { Content: textDocument.getText(), Name: wizardResponse.name, DocumentVersion: '$LATEST', diff --git a/packages/core/src/ssmDocument/commands/updateDocumentVersion.ts b/packages/core/src/ssmDocument/commands/updateDocumentVersion.ts index cb3c1577360..2574ed2f70d 100644 --- a/packages/core/src/ssmDocument/commands/updateDocumentVersion.ts +++ b/packages/core/src/ssmDocument/commands/updateDocumentVersion.ts @@ -6,7 +6,7 @@ import * as nls from 'vscode-nls' const localize = nls.loadMessageBundle() -import { SSM } from 'aws-sdk' +import { DocumentVersionInfo } from '@aws-sdk/client-ssm' import * as vscode from 'vscode' import { AwsContext } from '../../shared/awsContext' import { getLogger, Logger } from '../../shared/logger/logger' @@ -76,7 +76,7 @@ export async function updateDocumentVersion(node: DocumentItemNodeWriteable, aws } } -async function promptUserforDocumentVersion(versions: SSM.Types.DocumentVersionInfo[]): Promise { +async function promptUserforDocumentVersion(versions: DocumentVersionInfo[]): Promise { // Prompt user to pick document version const quickPickItems: vscode.QuickPickItem[] = [] for (const version of versions) { diff --git a/packages/core/src/ssmDocument/explorer/documentItemNode.ts b/packages/core/src/ssmDocument/explorer/documentItemNode.ts index 1fb06df96d1..ee17e53d41f 100644 --- a/packages/core/src/ssmDocument/explorer/documentItemNode.ts +++ b/packages/core/src/ssmDocument/explorer/documentItemNode.ts @@ -3,8 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SSM } from 'aws-sdk' - +import { DocumentFormat, DocumentIdentifier, DocumentVersionInfo, GetDocumentResult } from '@aws-sdk/client-ssm' import { SsmDocumentClient } from '../../shared/clients/ssmDocumentClient' import { AWSTreeNodeBase } from '../../shared/treeview/nodes/awsTreeNodeBase' @@ -13,7 +12,7 @@ import { getIcon } from '../../shared/icons' export class DocumentItemNode extends AWSTreeNodeBase { public constructor( - private documentItem: SSM.Types.DocumentIdentifier, + private documentItem: DocumentIdentifier, public readonly client: SsmDocumentClient, public override readonly regionCode: string ) { @@ -23,7 +22,7 @@ export class DocumentItemNode extends AWSTreeNodeBase { this.iconPath = getIcon('vscode-file') } - public update(documentItem: SSM.Types.DocumentIdentifier): void { + public update(documentItem: DocumentIdentifier): void { this.documentItem = documentItem this.label = this.documentName } @@ -38,13 +37,13 @@ export class DocumentItemNode extends AWSTreeNodeBase { public async getDocumentContent( documentVersion?: string, - documentFormat?: string - ): Promise { + documentFormat?: DocumentFormat + ): Promise { if (!this.documentName || !this.documentName.length) { return Promise.resolve({}) } - let resolvedDocumentFormat: string | undefined + let resolvedDocumentFormat: DocumentFormat | undefined if (documentFormat === undefined) { // retrieves the document format from the service @@ -61,7 +60,7 @@ export class DocumentItemNode extends AWSTreeNodeBase { ) } - public async listSchemaVersion(): Promise { + public async listSchemaVersion(): Promise { return await toArrayAsync(this.client.listDocumentVersions(this.documentName)) } } diff --git a/packages/core/src/ssmDocument/explorer/documentItemNodeWriteable.ts b/packages/core/src/ssmDocument/explorer/documentItemNodeWriteable.ts index 75a9a011d2b..4c2ffd6e813 100644 --- a/packages/core/src/ssmDocument/explorer/documentItemNodeWriteable.ts +++ b/packages/core/src/ssmDocument/explorer/documentItemNodeWriteable.ts @@ -3,14 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SSM } from 'aws-sdk' +import { DeleteDocumentResult, DocumentIdentifier, UpdateDocumentDefaultVersionResult } from '@aws-sdk/client-ssm' import { RegistryItemNode } from './registryItemNode' import { SsmDocumentClient } from '../../shared/clients/ssmDocumentClient' import { DocumentItemNode } from './documentItemNode' export class DocumentItemNodeWriteable extends DocumentItemNode { public constructor( - documentItem: SSM.Types.DocumentIdentifier, + documentItem: DocumentIdentifier, public override readonly client: SsmDocumentClient, public override readonly regionCode: string, public readonly parent: RegistryItemNode @@ -20,7 +20,7 @@ export class DocumentItemNodeWriteable extends DocumentItemNode { this.parent = parent } - public async deleteDocument(): Promise { + public async deleteDocument(): Promise { if (!this.documentName || !this.documentName.length) { return Promise.resolve({}) } @@ -28,9 +28,7 @@ export class DocumentItemNodeWriteable extends DocumentItemNode { return await this.client.deleteDocument(this.documentName) } - public async updateDocumentVersion( - documentVersion?: string - ): Promise { + public async updateDocumentVersion(documentVersion?: string): Promise { if (!documentVersion || !documentVersion.length) { return Promise.resolve({}) } diff --git a/packages/core/src/ssmDocument/explorer/registryItemNode.ts b/packages/core/src/ssmDocument/explorer/registryItemNode.ts index d5ca928f88f..dae0771f67d 100644 --- a/packages/core/src/ssmDocument/explorer/registryItemNode.ts +++ b/packages/core/src/ssmDocument/explorer/registryItemNode.ts @@ -6,7 +6,7 @@ import * as nls from 'vscode-nls' const localize = nls.loadMessageBundle() -import { SSM } from 'aws-sdk' +import { DocumentIdentifier, ListDocumentsRequest } from '@aws-sdk/client-ssm' import * as vscode from 'vscode' import { DefaultSsmDocumentClient, SsmDocumentClient } from '../../shared/clients/ssmDocumentClient' @@ -64,8 +64,8 @@ export class RegistryItemNode extends AWSTreeNodeBase { }) } - private async getDocumentByOwner(client: SsmDocumentClient): Promise { - const request: SSM.ListDocumentsRequest = { + private async getDocumentByOwner(client: SsmDocumentClient): Promise { + const request: ListDocumentsRequest = { Filters: [ { Key: 'DocumentType', @@ -95,7 +95,7 @@ export class RegistryItemNode extends AWSTreeNodeBase { } public async updateChildren(): Promise { - const documents = new Map() + const documents = new Map() const docs = await this.getDocumentByOwner(this.client) for (const doc of docs) { diff --git a/packages/core/src/ssmDocument/wizards/publishDocumentWizard.ts b/packages/core/src/ssmDocument/wizards/publishDocumentWizard.ts index 74a786b74c7..763c9995933 100644 --- a/packages/core/src/ssmDocument/wizards/publishDocumentWizard.ts +++ b/packages/core/src/ssmDocument/wizards/publishDocumentWizard.ts @@ -6,7 +6,7 @@ import * as nls from 'vscode-nls' const localize = nls.loadMessageBundle() -import { SSM } from 'aws-sdk' +import { DocumentKeyValuesFilter } from '@aws-sdk/client-ssm' import { createCommonButtons } from '../../shared/ui/buttons' import { createRegionPrompter } from '../../shared/ui/common/region' import { createInputBox } from '../../shared/ui/inputPrompter' @@ -27,8 +27,8 @@ export enum PublishSSMDocumentAction { QuickUpdate = 'Update', } -async function* loadDocuments(region: string, documentType?: SSM.Types.DocumentType) { - const filters: SSM.Types.DocumentKeyValuesFilterList = [ +async function* loadDocuments(region: string, documentType?: string) { + const filters: DocumentKeyValuesFilter[] = [ { Key: 'Owner', Values: ['Self'], diff --git a/packages/core/src/test/shared/extensions/ssh.test.ts b/packages/core/src/test/shared/extensions/ssh.test.ts index e7a012f182d..4e9bda41217 100644 --- a/packages/core/src/test/shared/extensions/ssh.test.ts +++ b/packages/core/src/test/shared/extensions/ssh.test.ts @@ -9,7 +9,7 @@ import { createBoundProcess } from '../../../shared/remoteSession' import { createExecutableFile, createTestWorkspaceFolder } from '../../testUtil' import { WorkspaceFolder } from 'vscode' import path from 'path' -import { SSM } from 'aws-sdk' +import { StartSessionResponse } from '@aws-sdk/client-ssm' import { fs } from '../../../shared/fs/fs' import { isWin } from '../../../shared/vscode/env' @@ -74,7 +74,7 @@ describe('testSshConnection', function () { SessionId: 'testSession', StreamUrl: 'testUrl', TokenValue: 'testToken', - } as SSM.StartSessionResponse + } as StartSessionResponse await createExecutableFile(sshPath, echoEnvVarsCmd(['MY_VAR'])) const r = await testSshConnection(process, 'localhost', sshPath, 'test-user', session) @@ -86,12 +86,12 @@ describe('testSshConnection', function () { SessionId: 'testSession1', StreamUrl: 'testUrl1', TokenValue: 'testToken1', - } as SSM.StartSessionResponse + } as StartSessionResponse const newSession = { SessionId: 'testSession2', StreamUrl: 'testUrl2', TokenValue: 'testToken2', - } as SSM.StartSessionResponse + } as StartSessionResponse const envProvider = async () => ({ SESSION_ID: oldSession.SessionId, STREAM_URL: oldSession.StreamUrl, @@ -108,7 +108,7 @@ describe('testSshConnection', function () { const executableFileContent = isWin() ? `echo "%1 %2"` : `echo "$1 $2"` const process = createBoundProcess(async () => ({})) await createExecutableFile(sshPath, executableFileContent) - const r = await testSshConnection(process, 'localhost', sshPath, 'test-user', {} as SSM.StartSessionResponse) + const r = await testSshConnection(process, 'localhost', sshPath, 'test-user', {} as StartSessionResponse) assertOutputContains(r.stdout, '-T') assertOutputContains(r.stdout, 'test-user@localhost') }) diff --git a/packages/core/src/test/ssmDocument/commands/deleteDocument.test.ts b/packages/core/src/test/ssmDocument/commands/deleteDocument.test.ts index c16b76be8c7..f79d217028d 100644 --- a/packages/core/src/test/ssmDocument/commands/deleteDocument.test.ts +++ b/packages/core/src/test/ssmDocument/commands/deleteDocument.test.ts @@ -9,7 +9,7 @@ import { DocumentItemNodeWriteable } from '../../../ssmDocument/explorer/documen import { SsmDocumentClient } from '../../../shared/clients/ssmDocumentClient' import { deleteDocument } from '../../../ssmDocument/commands/deleteDocument' import { RegistryItemNode } from '../../../ssmDocument/explorer/registryItemNode' -import { SSM } from 'aws-sdk' +import { DocumentFormat, DocumentIdentifier } from '@aws-sdk/client-ssm' import { getTestWindow } from '../../shared/vscode/window' import { stub } from '../../utilities/stubber' @@ -21,9 +21,9 @@ describe('deleteDocument', async function () { let spyExecuteCommand: sinon.SinonSpy const fakeName: string = 'testDocument' - const fakeDoc: SSM.Types.DocumentIdentifier = { + const fakeDoc: DocumentIdentifier = { Name: fakeName, - DocumentFormat: 'json', + DocumentFormat: DocumentFormat.JSON, DocumentType: 'Automation', Owner: 'Amazon', } diff --git a/packages/core/src/test/ssmDocument/commands/openDocumentItem.test.ts b/packages/core/src/test/ssmDocument/commands/openDocumentItem.test.ts index 8e5bb3029d3..a02403be4dc 100644 --- a/packages/core/src/test/ssmDocument/commands/openDocumentItem.test.ts +++ b/packages/core/src/test/ssmDocument/commands/openDocumentItem.test.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SSM } from 'aws-sdk' +import { DocumentFormat, DocumentIdentifier, GetDocumentResult } from '@aws-sdk/client-ssm' import assert from 'assert' import * as sinon from 'sinon' @@ -23,8 +23,8 @@ describe('openDocumentItem', async function () { sinon.restore() }) - const rawContent: SSM.Types.GetDocumentResult = { - DocumentFormat: 'json', + const rawContent: GetDocumentResult = { + DocumentFormat: DocumentFormat.JSON, DocumentType: 'Command', Name: 'testDocument', Content: `{ @@ -35,9 +35,9 @@ describe('openDocumentItem', async function () { }`, } - const fakeDoc: SSM.Types.DocumentIdentifier = { + const fakeDoc: DocumentIdentifier = { Name: 'testDocument', - DocumentFormat: 'json', + DocumentFormat: DocumentFormat.JSON, DocumentType: 'Command', Owner: 'Amazon', } @@ -65,7 +65,7 @@ describe('openDocumentItem', async function () { const documentNode = generateDocumentItemNode() const openTextDocumentStub = sinon.stub(vscode.workspace, 'openTextDocument') - await openDocumentItem(documentNode, fakeAwsContext, 'json') + await openDocumentItem(documentNode, fakeAwsContext, DocumentFormat.JSON) assert.strictEqual(openTextDocumentStub.getCall(0).args[0]?.content, rawContent.Content) assert.strictEqual(openTextDocumentStub.getCall(0).args[0]?.language, 'ssm-json') }) diff --git a/packages/core/src/test/ssmDocument/commands/publishDocument.test.ts b/packages/core/src/test/ssmDocument/commands/publishDocument.test.ts index 1403848b9ee..c715d11ad18 100644 --- a/packages/core/src/test/ssmDocument/commands/publishDocument.test.ts +++ b/packages/core/src/test/ssmDocument/commands/publishDocument.test.ts @@ -3,7 +3,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SSM } from 'aws-sdk' +import { + CreateDocumentRequest, + CreateDocumentResult, + UpdateDocumentRequest, + UpdateDocumentResult, +} from '@aws-sdk/client-ssm' import assert from 'assert' import * as sinon from 'sinon' @@ -24,15 +29,15 @@ import { SeverityLevel } from '../../shared/vscode/message' describe('publishDocument', async function () { let wizardResponse: PublishSSMDocumentWizardResponse let textDocument: vscode.TextDocument - let result: SSM.CreateDocumentResult | SSM.UpdateDocumentResult + let result: CreateDocumentResult | UpdateDocumentResult - const fakeCreateRequest: SSM.CreateDocumentRequest = { + const fakeCreateRequest: CreateDocumentRequest = { Content: 'foo', DocumentFormat: 'JSON', DocumentType: 'Automation', Name: 'test', } - const fakeUpdateRequest: SSM.UpdateDocumentRequest = { + const fakeUpdateRequest: UpdateDocumentRequest = { Content: 'foo', DocumentFormat: 'JSON', DocumentVersion: '$LATEST', diff --git a/packages/core/src/test/ssmDocument/commands/updateDocumentVersion.test.ts b/packages/core/src/test/ssmDocument/commands/updateDocumentVersion.test.ts index 01a21a9ee41..da941e43d62 100644 --- a/packages/core/src/test/ssmDocument/commands/updateDocumentVersion.test.ts +++ b/packages/core/src/test/ssmDocument/commands/updateDocumentVersion.test.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SSM } from 'aws-sdk' +import { DocumentFormat, DocumentIdentifier, DocumentVersionInfo } from '@aws-sdk/client-ssm' import * as sinon from 'sinon' import assert from 'assert' @@ -21,9 +21,9 @@ describe('openDocumentItem', async function () { sinon.restore() }) - const fakeDoc: SSM.Types.DocumentIdentifier = { + const fakeDoc: DocumentIdentifier = { Name: 'testDocument', - DocumentFormat: 'json', + DocumentFormat: DocumentFormat.JSON, DocumentType: 'Command', Owner: 'Amazon', } @@ -32,7 +32,7 @@ describe('openDocumentItem', async function () { const fakeRegion = 'us-east-1' - const fakeSchemaList: SSM.DocumentVersionInfo[] = [ + const fakeSchemaList: DocumentVersionInfo[] = [ { Name: 'testDocument', DocumentVersion: '1', diff --git a/packages/core/src/test/ssmDocument/explorer/documentItemNode.test.ts b/packages/core/src/test/ssmDocument/explorer/documentItemNode.test.ts index 12c400c4cef..3fa5dedef21 100644 --- a/packages/core/src/test/ssmDocument/explorer/documentItemNode.test.ts +++ b/packages/core/src/test/ssmDocument/explorer/documentItemNode.test.ts @@ -4,14 +4,14 @@ */ import assert from 'assert' -import { SSM } from 'aws-sdk' +import { DocumentIdentifier } from '@aws-sdk/client-ssm' import { DefaultSsmDocumentClient } from '../../../shared/clients/ssmDocumentClient' import { DocumentItemNode } from '../../../ssmDocument/explorer/documentItemNode' import { stub } from '../../utilities/stubber' describe('DocumentItemNode', async function () { let testNode: DocumentItemNode - const testDoc: SSM.DocumentIdentifier = { + const testDoc: DocumentIdentifier = { Name: 'testDoc', Owner: 'Amazon', }