diff --git a/packages/nodes-base/credentials/Aws.credentials.ts b/packages/nodes-base/credentials/Aws.credentials.ts index 2e14789c16..ce4665c3a2 100644 --- a/packages/nodes-base/credentials/Aws.credentials.ts +++ b/packages/nodes-base/credentials/Aws.credentials.ts @@ -273,7 +273,7 @@ export class Aws implements ICredentialType { requestOptions: IHttpRequestOptions, ): Promise { let endpoint; - let service = requestOptions.qs?.service; + let service = requestOptions.qs?.service as string; let path = requestOptions.qs?.path; const method = requestOptions.method; const body = requestOptions.body; @@ -314,9 +314,10 @@ export class Aws implements ICredentialType { path = customUrl.pathname as string; endpoint = customUrl; } - if (service === 's3' && credentials.s3Endpoint) { + if (service.includes('.s3')) { path = `${endpoint.pathname}?${queryToString(query).replace(/\+/g, '%2B')}`; } + const signOpts = { headers: requestOptions.headers, host: endpoint.host, diff --git a/packages/nodes-base/nodes/Aws/S3/GenericFunctions.ts b/packages/nodes-base/nodes/Aws/S3/GenericFunctions.ts index ba29e6028a..5e431373d1 100644 --- a/packages/nodes-base/nodes/Aws/S3/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Aws/S3/GenericFunctions.ts @@ -15,7 +15,13 @@ import { IWebhookFunctions, } from 'n8n-core'; -import { IDataObject, IHttpRequestOptions, JsonObject, NodeApiError, NodeOperationError } from 'n8n-workflow'; +import { + IDataObject, + IHttpRequestOptions, + JsonObject, + NodeApiError, + NodeOperationError, +} from 'n8n-workflow'; export async function awsApiRequest( this: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions | IWebhookFunctions, @@ -32,6 +38,7 @@ export async function awsApiRequest( const credentials = await this.getCredentials('aws'); const requestOptions = { qs: { + ...query, service, path, query,