diff --git a/src/api/integrations/event/sqs/sqs.controller.ts b/src/api/integrations/event/sqs/sqs.controller.ts index d18677c4fb..136236c429 100644 --- a/src/api/integrations/event/sqs/sqs.controller.ts +++ b/src/api/integrations/event/sqs/sqs.controller.ts @@ -28,8 +28,8 @@ export class SqsController extends EventController implements EventControllerInt accessKeyId: awsConfig.ACCESS_KEY_ID, secretAccessKey: awsConfig.SECRET_ACCESS_KEY, }, - region: awsConfig.REGION, + endpoint: awsConfig.ENDPOINT, }); this.logger.info('SQS initialized'); @@ -304,4 +304,15 @@ export class SqsController extends EventController implements EventControllerInt this.logger.error(`Error listing queues for ${prefixName}: ${err.message}`); } } + + private getQueueUrl(sqsConfig: Sqs, queueName: string): string { + if (sqsConfig.ENDPOINT) { + const endpoint = sqsConfig.ENDPOINT.replace(/\/+$/, ''); + if (endpoint.endsWith(sqsConfig.ACCOUNT_ID)) { + return `${endpoint}/${queueName}`; + } + return `${endpoint}/${sqsConfig.ACCOUNT_ID}/${queueName}`; + } + return `https://sqs.${sqsConfig.REGION}.amazonaws.com/${sqsConfig.ACCOUNT_ID}/${queueName}`; + } } diff --git a/src/config/env.config.ts b/src/config/env.config.ts index d4981d854c..33a5407891 100644 --- a/src/config/env.config.ts +++ b/src/config/env.config.ts @@ -122,6 +122,7 @@ export type Sqs = { SECRET_ACCESS_KEY: string; ACCOUNT_ID: string; REGION: string; + ENDPOINT?: string; BASE_URL: string; MAX_PAYLOAD_SIZE: number; EVENTS: { @@ -594,6 +595,7 @@ export class ConfigService { SECRET_ACCESS_KEY: process.env.SQS_SECRET_ACCESS_KEY || '', ACCOUNT_ID: process.env.SQS_ACCOUNT_ID || '', REGION: process.env.SQS_REGION || '', + ENDPOINT: process.env.SQS_ENDPOINT || undefined, BASE_URL: process.env.SQS_BASE_URL || '', MAX_PAYLOAD_SIZE: Number.parseInt(process.env.SQS_MAX_PAYLOAD_SIZE ?? '1048576'), EVENTS: {