diff --git a/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts b/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts index 74f654f7d1f8e..7f198797de4fb 100644 --- a/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts +++ b/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts @@ -300,7 +300,7 @@ export class AwsS3V2 implements INodeType { headers['x-amz-request-payer'] = 'requester'; } if (additionalFields.parentFolderKey) { - path = `/${additionalFields.parentFolderKey}${folderName}/`; + path = `${basePath}/${additionalFields.parentFolderKey}/${folderName}/`; } if (additionalFields.storageClass) { headers['x-amz-storage-class'] = snakeCase( @@ -778,7 +778,7 @@ export class AwsS3V2 implements INodeType { const additionalFields = this.getNodeParameter('additionalFields', i); const tagsValues = (this.getNodeParameter('tagsUi', i) as IDataObject) .tagsValues as IDataObject[]; - let path = `${basePath}/`; + let path = `${basePath}/${fileName}`; let body; const multipartHeaders: IDataObject = {}; @@ -788,9 +788,7 @@ export class AwsS3V2 implements INodeType { neededHeaders['x-amz-request-payer'] = 'requester'; } if (additionalFields.parentFolderKey) { - path = `${additionalFields.parentFolderKey}/${fileName}`; - } else { - path = `${fileName}`; + path = `${basePath}/${additionalFields.parentFolderKey}/${fileName}`; } if (additionalFields.storageClass) { multipartHeaders['x-amz-storage-class'] = snakeCase( @@ -877,7 +875,7 @@ export class AwsS3V2 implements INodeType { this, servicePath, 'POST', - `/${path}?uploads`, + `${path}?uploads`, body, qs, { ...neededHeaders, ...multipartHeaders }, @@ -899,7 +897,7 @@ export class AwsS3V2 implements INodeType { this, servicePath, 'PUT', - `/${path}?partNumber=${part}&uploadId=${uploadId}`, + `${path}?partNumber=${part}&uploadId=${uploadId}`, chunk, qs, listHeaders, @@ -913,7 +911,7 @@ export class AwsS3V2 implements INodeType { this, servicePath, 'DELETE', - `/${path}?uploadId=${uploadId}`, + `${path}?uploadId=${uploadId}`, ); } catch (err) { throw new NodeOperationError(this.getNode(), err as Error); @@ -926,7 +924,7 @@ export class AwsS3V2 implements INodeType { this, servicePath, 'GET', - `/${path}?max-parts=${900}&part-number-marker=0&uploadId=${uploadId}`, + `${path}?max-parts=${900}&part-number-marker=0&uploadId=${uploadId}`, '', qs, { ...neededHeaders }, @@ -978,7 +976,7 @@ export class AwsS3V2 implements INodeType { this, servicePath, 'POST', - `/${path}?uploadId=${uploadId}`, + `${path}?uploadId=${uploadId}`, data, qs, { @@ -1015,7 +1013,7 @@ export class AwsS3V2 implements INodeType { this, servicePath, 'PUT', - `/${path || binaryPropertyData.fileName}`, + path, body, qs, headers, @@ -1043,7 +1041,7 @@ export class AwsS3V2 implements INodeType { this, servicePath, 'PUT', - `/${path}`, + path, body, qs, { ...headers }, diff --git a/packages/nodes-base/nodes/Aws/S3/test/V2/AwsS3.file.upload.V2.workflow.json b/packages/nodes-base/nodes/Aws/S3/test/V2/AwsS3.file.upload.V2.workflow.json index a54d819ef6584..5d88217684631 100644 --- a/packages/nodes-base/nodes/Aws/S3/test/V2/AwsS3.file.upload.V2.workflow.json +++ b/packages/nodes-base/nodes/Aws/S3/test/V2/AwsS3.file.upload.V2.workflow.json @@ -23,7 +23,7 @@ { "parameters": { "operation": "upload", - "bucketName": "bucket", + "bucketName": "buc.ket", "fileName": "binary.json", "additionalFields": {} }, diff --git a/packages/nodes-base/nodes/Aws/S3/test/V2/AwsS3.node.test.ts b/packages/nodes-base/nodes/Aws/S3/test/V2/AwsS3.node.test.ts index 2f3b0516c8cbc..7d4da16178d9d 100644 --- a/packages/nodes-base/nodes/Aws/S3/test/V2/AwsS3.node.test.ts +++ b/packages/nodes-base/nodes/Aws/S3/test/V2/AwsS3.node.test.ts @@ -14,11 +14,11 @@ describe('Test S3 V2 Node', () => { await initBinaryDataService(); nock.disableNetConnect(); - mock = nock('https://bucket.s3.eu-central-1.amazonaws.com'); + mock = nock('https://s3.eu-central-1.amazonaws.com/buc.ket'); }); beforeEach(async () => { - mock.get('/?location').reply( + mock.get('?location').reply( 200, `