Skip to content

Commit 4774be7

Browse files
committed
Revert "Adding Response headers to CodeScan and reusing the uploadCode function"
This reverts commit be4f6a5.
1 parent be4f6a5 commit 4774be7

File tree

5 files changed

+38
-80
lines changed

5 files changed

+38
-80
lines changed

packages/core/src/amazonqFeatureDev/session/sessionState.ts

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { getLogger } from '../../shared/logger'
1212
import { telemetry } from '../../shared/telemetry/telemetry'
1313
import { VirtualFileSystem } from '../../shared/virtualFilesystem'
1414
import { VirtualMemoryFile } from '../../shared/virtualMemoryFile'
15-
import { featureDevScheme, featureName } from '../constants'
15+
import { featureDevScheme } from '../constants'
1616
import { IllegalStateTransition, UserMessageNotFoundError } from '../errors'
1717
import {
1818
CurrentWsFolders,
@@ -73,17 +73,8 @@ export class PrepareRefinementState implements Omit<SessionState, 'uploadId'> {
7373
zipFileChecksum,
7474
zipFileBuffer.length
7575
)
76-
const requestHeaders = {
77-
'Content-Type': 'application/zip',
78-
'Content-Length': String(zipFileBuffer.length),
79-
'x-amz-checksum-sha256': zipFileChecksum,
80-
...(kmsKeyArn && {
81-
'x-amz-server-side-encryption-aws-kms-key-id': kmsKeyArn,
82-
'x-amz-server-side-encryption': 'aws:kms',
83-
}),
84-
}
8576

86-
await uploadCode(uploadUrl, zipFileBuffer, requestHeaders, featureName)
77+
await uploadCode(uploadUrl, zipFileBuffer, zipFileChecksum, kmsKeyArn)
8778
return uploadId
8879
})
8980
const nextState = new RefinementState({ ...this.config, uploadId }, this.approach, this.tabID, 0)
@@ -481,17 +472,8 @@ export class PrepareCodeGenState implements SessionState {
481472
zipFileChecksum,
482473
zipFileBuffer.length
483474
)
484-
const requestHeaders = {
485-
'Content-Type': 'application/zip',
486-
'Content-Length': String(zipFileBuffer.length),
487-
'x-amz-checksum-sha256': zipFileChecksum,
488-
...(kmsKeyArn && {
489-
'x-amz-server-side-encryption-aws-kms-key-id': kmsKeyArn,
490-
'x-amz-server-side-encryption': 'aws:kms',
491-
}),
492-
}
493475

494-
await uploadCode(uploadUrl, zipFileBuffer, requestHeaders, featureName)
476+
await uploadCode(uploadUrl, zipFileBuffer, zipFileChecksum, kmsKeyArn)
495477
return uploadId
496478
})
497479
this.uploadId = uploadId

packages/core/src/amazonqFeatureDev/util/upload.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import request, { RequestError } from '../../common/request'
77
import { getLogger } from '../../shared/logger/logger'
8+
import { featureName } from '../constants'
89

910
import { UploadCodeError } from '../errors'
1011

@@ -13,11 +14,19 @@ import { UploadCodeError } from '../errors'
1314
*
1415
* uses a presigned url and files checksum to transfer data to s3 through http.
1516
*/
16-
export async function uploadCode(url: string, buffer: Buffer, requestHeaders: any, featureName: string) {
17+
export async function uploadCode(url: string, buffer: Buffer, checksumSha256: string, kmsKeyArn?: string) {
1718
try {
1819
await request.fetch('PUT', url, {
1920
body: buffer,
20-
headers: requestHeaders,
21+
headers: {
22+
'Content-Type': 'application/zip',
23+
'Content-Length': String(buffer.length),
24+
'x-amz-checksum-sha256': checksumSha256,
25+
...(kmsKeyArn && {
26+
'x-amz-server-side-encryption-aws-kms-key-id': kmsKeyArn,
27+
'x-amz-server-side-encryption': 'aws:kms',
28+
}),
29+
},
2130
}).response
2231
} catch (e: any) {
2332
getLogger().error(`${featureName}: failed to upload code to s3: ${(e as Error).message}`)

packages/core/src/codewhisperer/client/service-2.json

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -583,9 +583,6 @@
583583
},
584584
"kmsKeyArn": {
585585
"shape": "ResourceArn"
586-
},
587-
"requestHeaders": {
588-
"shape": "RequestHeaders"
589586
}
590587
}
591588
},
@@ -1089,27 +1086,6 @@
10891086
"max": 1224,
10901087
"min": 0
10911088
},
1092-
"RequestHeaderKey": {
1093-
"type": "string",
1094-
"max": 64,
1095-
"min": 1
1096-
},
1097-
"RequestHeaderValue": {
1098-
"type": "string",
1099-
"max": 256,
1100-
"min": 1
1101-
},
1102-
"RequestHeaders": {
1103-
"type": "map",
1104-
"key": {
1105-
"shape": "RequestHeaderKey"
1106-
},
1107-
"value": {
1108-
"shape": "RequestHeaderValue"
1109-
},
1110-
"max": 16,
1111-
"min": 1
1112-
},
11131089
"ResourceNotFoundException": {
11141090
"type": "structure",
11151091
"required": ["message"],

packages/core/src/codewhisperer/client/user-service-2.json

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -598,10 +598,7 @@
598598
"members": {
599599
"uploadId": { "shape": "UploadId" },
600600
"uploadUrl": { "shape": "PreSignedUrl" },
601-
"kmsKeyArn": { "shape": "ResourceArn" },
602-
"requestHeaders": {
603-
"shape": "RequestHeaders"
604-
}
601+
"kmsKeyArn": { "shape": "ResourceArn" }
605602
}
606603
},
607604
"CursorState": {
@@ -1140,27 +1137,6 @@
11401137
"min": 0,
11411138
"pattern": "arn:([-.a-z0-9]{1,63}:){2}([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}"
11421139
},
1143-
"RequestHeaderKey": {
1144-
"type": "string",
1145-
"max": 64,
1146-
"min": 1
1147-
},
1148-
"RequestHeaderValue": {
1149-
"type": "string",
1150-
"max": 256,
1151-
"min": 1
1152-
},
1153-
"RequestHeaders": {
1154-
"type": "map",
1155-
"key": {
1156-
"shape": "RequestHeaderKey"
1157-
},
1158-
"value": {
1159-
"shape": "RequestHeaderValue"
1160-
},
1161-
"max": 16,
1162-
"min": 1
1163-
},
11641140
"ResourceNotFoundException": {
11651141
"type": "structure",
11661142
"required": ["message"],

packages/core/src/codewhisperer/service/securityScanHandler.ts

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ import { RawCodeScanIssue } from '../models/model'
1414
import * as crypto from 'crypto'
1515
import path = require('path')
1616
import { pageableToCollection } from '../../shared/utilities/collectionUtils'
17-
import { ArtifactMap, CreateUploadUrlRequest } from '../client/codewhispereruserclient'
17+
import { ArtifactMap, CreateUploadUrlRequest, CreateUploadUrlResponse } from '../client/codewhispereruserclient'
1818
import { Truncation } from '../util/dependencyGraph/dependencyGraph'
1919
import { TelemetryHelper } from '../util/telemetryHelper'
20-
import { uploadCode } from '../../amazonqFeatureDev/util/upload'
20+
import request from '../../common/request'
2121

2222
export async function listScanResults(
2323
client: DefaultCodeWhispererClient,
@@ -154,12 +154,7 @@ export async function getPresignedUrlAndUpload(client: DefaultCodeWhispererClien
154154
getLogger().verbose(`Request id: ${srcResp.$response.requestId}`)
155155
getLogger().verbose(`Complete Getting presigned Url for uploading src context.`)
156156
getLogger().verbose(`Uploading src context...`)
157-
await uploadCode(
158-
srcResp.uploadUrl,
159-
readFileSync(truncation.zipFilePath),
160-
srcResp.requestHeaders,
161-
'QCA SecurityScan'
162-
)
157+
await uploadArtifactToS3(truncation.zipFilePath, srcResp)
163158
getLogger().verbose(`Complete uploading src context.`)
164159
const artifactMap: ArtifactMap = {
165160
SourceCode: srcResp.uploadId,
@@ -178,3 +173,23 @@ export function throwIfCancelled() {
178173
throw new CodeScanStoppedError()
179174
}
180175
}
176+
177+
export async function uploadArtifactToS3(fileName: string, resp: CreateUploadUrlResponse) {
178+
const encryptionContext = `{"uploadId":"${resp.uploadId}"}`
179+
const headersObj: Record<string, string> = {
180+
'Content-MD5': getMd5(fileName),
181+
'x-amz-server-side-encryption': 'aws:kms',
182+
'Content-Type': 'application/zip',
183+
'x-amz-server-side-encryption-context': Buffer.from(encryptionContext, 'utf8').toString('base64'),
184+
}
185+
186+
if (resp.kmsKeyArn !== '' && resp.kmsKeyArn !== undefined) {
187+
headersObj['x-amz-server-side-encryption-aws-kms-key-id'] = resp.kmsKeyArn
188+
}
189+
190+
const response = await request.fetch('PUT', resp.uploadUrl, {
191+
body: readFileSync(fileName),
192+
headers: headersObj,
193+
}).response
194+
getLogger().debug(`StatusCode: ${response.status}, Text: ${response.statusText}`)
195+
}

0 commit comments

Comments
 (0)