@message-queue-toolkit/sns 27.1.0 → 27.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -488,9 +488,9 @@ When using `locatorConfig`, you connect to an existing topic without creating it
488
488
  // or
489
489
  // queueName: 'my-queue',
490
490
 
491
- // Optional: Existing subscription ARN. When omitted and no `subscriptionConfig` is given, the subscription of
492
- // the queue to the topic is looked up instead (see Resource Resolution)
493
- subscriptionArn: 'arn:aws:sns:us-east-1:123456789012:my-topic:uuid',
491
+ // Deprecated: the subscription is located from the topic and the queue (see Resource Resolution), so its ARN is
492
+ // no longer needed. It will be removed in the next major version
493
+ // subscriptionArn: 'arn:aws:sns:us-east-1:123456789012:my-topic:uuid',
494
494
  },
495
495
  }
496
496
  ```
@@ -500,16 +500,49 @@ When using `locatorConfig`, you connect to an existing topic without creating it
500
500
  Consumers resolve the topic, the queue and the subscription independently, so each of them can either be managed by
501
501
  your application or by external tooling (e.g. Terraform):
502
502
 
503
- | Resource | Located when | Created when |
504
- |--------------|------------------------------------------------|----------------------------------------|
505
- | Topic | `locatorConfig.topicArn` or `topicName` is set | otherwise, from `creationConfig.topic` |
506
- | Queue | `locatorConfig.queueUrl` or `queueName` is set | otherwise, from `creationConfig.queue` |
507
- | Subscription | `subscriptionConfig` is not set | `subscriptionConfig` is set |
503
+ | Resource | Located when | Created when |
504
+ |--------------|------------------------------------------------|-------------------------------------------|
505
+ | Topic | `locatorConfig.topicArn` or `topicName` is set | otherwise, from `creationConfig.topic` |
506
+ | Queue | `locatorConfig.queueUrl` or `queueName` is set | otherwise, from `creationConfig.queue` |
507
+ | Subscription | no `subscriptionConfig`, or `locateOnly: true` | `subscriptionConfig` without `locateOnly` |
508
+
509
+ A subscription that already exists is reused. Its attributes are read first and compared with the configured ones
510
+ (JSON policies structurally), so a subscription that is already up to date receives no writes at all. Differing
511
+ attributes are written one by one when `subscriptionConfig.updateAttributesIfExists` is enabled, and an error is thrown
512
+ otherwise. When both a locator and a creation config are given for the same resource, the locator takes precedence and
513
+ the creation config is ignored.
514
+
515
+ `subscriptionConfig.managedAttributes` lists the subscription attributes the application owns. It defaults to all of
516
+ `FilterPolicy`, `FilterPolicyScope`, `RawMessageDelivery` and `RedrivePolicy`. A managed attribute that is missing from
517
+ `Attributes` is reset on the existing subscription: `FilterPolicy` and `RedrivePolicy` are removed, `FilterPolicyScope`
518
+ goes back to `MessageAttributes` and `RawMessageDelivery` to `false`. Attributes left out of `managedAttributes` are
519
+ neither checked nor written, so external tooling can own them, and setting one of them in `Attributes` is a
520
+ configuration error.
508
521
 
509
- A subscription that already exists is reused, and its attributes are updated when they differ and
510
- `subscriptionConfig.updateAttributesIfExists` is enabled. When both a locator and a creation config are given for the
511
- same resource, the locator takes precedence and the creation config is ignored. When `locatorConfig.subscriptionArn`
512
- is set, every resource is located and both `creationConfig` and `subscriptionConfig` are ignored.
522
+ ```typescript
523
+ // Filter policy owned by the application, everything else by Terraform
524
+ subscriptionConfig: {
525
+ locateOnly: true,
526
+ managedAttributes: ['FilterPolicy', 'FilterPolicyScope'],
527
+ Attributes: { FilterPolicy: JSON.stringify({ type: ['entity.created'] }) },
528
+ }
529
+ ```
530
+
531
+ With `subscriptionDeadLetterQueue.reuseConsumerDeadLetterQueue`, `RedrivePolicy` is set from the consumer DLQ and is
532
+ excluded from the managed attributes.
533
+
534
+ With `subscriptionConfig: { locateOnly: true, Attributes }` the subscription is located, never created, and its
535
+ managed attributes are applied to it on startup when they differ from the current ones. Managed attributes missing
536
+ from `Attributes` are reset as well, so set `managedAttributes` to the ones the application owns (usually
537
+ `['FilterPolicy', 'FilterPolicyScope']`), otherwise attributes set by the external tooling, such as `RedrivePolicy`,
538
+ are removed. This lets external tooling own the subscription while the application keeps its filter policy in sync
539
+ with the consumer handlers. A locate-only subscription requires both the topic and the queue to be located, and none
540
+ of the located resources are deleted when `deletionConfig` is set.
541
+
542
+ > **Deprecated**: `locatorConfig.subscriptionArn` is no longer needed, as the subscription is located from the topic
543
+ > and the queue. When it is set, every resource is located and `creationConfig` and `subscriptionConfig` are ignored,
544
+ > except for a locate-only `subscriptionConfig`, whose attributes are still applied. It will be removed in the next
545
+ > major version.
513
546
 
514
547
  ```typescript
515
548
  // Application manages everything
@@ -535,14 +568,26 @@ is set, every resource is located and both `creationConfig` and `subscriptionCon
535
568
  {
536
569
  locatorConfig: { topicName: 'my-topic', queueName: 'my-queue' },
537
570
  }
571
+
572
+ // Everything managed externally, the application only manages the subscription filter policy
573
+ {
574
+ locatorConfig: { topicName: 'my-topic', queueName: 'my-queue' },
575
+ subscriptionConfig: {
576
+ locateOnly: true,
577
+ managedAttributes: ['FilterPolicy', 'FilterPolicyScope'],
578
+ Attributes: { FilterPolicy: JSON.stringify({ messageType: ['user.created'] }) },
579
+ },
580
+ }
538
581
  ```
539
582
 
540
583
  Some things to keep in mind when resources are managed externally:
541
584
 
542
585
  - **Queue policy**: when the queue is located, the application does not set its policy. The external tooling must
543
586
  allow the topic to send messages to the queue, otherwise the subscription exists but messages are never delivered.
544
- - **Filter policy**: when the subscription is located, its filter policy is not derived from the consumer handlers.
545
- The external tooling must keep it in sync with the message types the consumer handles.
587
+ - **Filter policy**: when the subscription is located without `subscriptionConfig`, its filter policy is not derived
588
+ from the consumer handlers, so the external tooling must keep it in sync with the message types the consumer
589
+ handles. Use `subscriptionConfig.locateOnly` with `Attributes.FilterPolicy` to keep managing it from the application
590
+ (requires `sns:SetSubscriptionAttributes`, and the external tooling should ignore changes to it).
546
591
  - **Permissions**: locating a subscription requires `sns:ListSubscriptionsByTopic`. Subscriptions pending
547
592
  confirmation (e.g. cross-account) are not considered until they are confirmed.
548
593
  - A missing located resource makes `init()` fail, unless startup resource polling is enabled (see below).
@@ -556,7 +601,6 @@ When your SNS topic or SQS queue may not exist at startup (e.g., created by anot
556
601
  locatorConfig: {
557
602
  topicName: 'my-topic',
558
603
  queueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue',
559
- subscriptionArn: 'arn:aws:sns:us-east-1:123456789012:my-topic:uuid',
560
604
 
561
605
  // Enable startup resource polling
562
606
  startupResourcePolling: {
@@ -582,7 +626,6 @@ const consumer = new MyConsumer(deps, {
582
626
  locatorConfig: {
583
627
  topicName: 'my-topic',
584
628
  queueUrl: 'https://sqs...',
585
- subscriptionArn: 'arn:aws:sns:...',
586
629
  startupResourcePolling: {
587
630
  enabled: true,
588
631
  pollingIntervalMs: 5000,
@@ -606,7 +649,6 @@ const consumer = new MyConsumer(deps, {
606
649
  locatorConfig: {
607
650
  topicName: 'my-topic',
608
651
  queueUrl: 'https://sqs...',
609
- subscriptionArn: 'arn:aws:sns:...',
610
652
  startupResourcePolling: {
611
653
  enabled: true,
612
654
  pollingIntervalMs: 5000,
@@ -680,13 +722,13 @@ if (result.resourcesReady) {
680
722
 
681
723
  #### Subscription Creation Mode
682
724
 
683
- When you want to **create** a subscription (no existing `subscriptionArn`), startup resource polling will wait for the topic to exist before attempting to subscribe:
725
+ When you want to **create** a subscription (`subscriptionConfig` without `locateOnly`), startup resource polling will
726
+ wait for the topic to exist before attempting to subscribe:
684
727
 
685
728
  ```typescript
686
729
  const consumer = new MyConsumer(deps, {
687
730
  locatorConfig: {
688
731
  topicName: 'my-topic', // Topic created by another service
689
- // No subscriptionArn - we'll create the subscription
690
732
  startupResourcePolling: {
691
733
  enabled: true,
692
734
  pollingIntervalMs: 5000,
@@ -696,6 +738,7 @@ const consumer = new MyConsumer(deps, {
696
738
  creationConfig: {
697
739
  queue: { QueueName: 'my-consumer-queue' }, // Queue will be created
698
740
  },
741
+ subscriptionConfig: { updateAttributesIfExists: true }, // Subscription will be created
699
742
  })
700
743
 
701
744
  // This will:
@@ -708,8 +751,8 @@ await consumer.start()
708
751
 
709
752
  #### Subscription Locate Mode
710
753
 
711
- When the subscription is managed externally (no `subscriptionConfig`), startup resource polling will also wait for the
712
- subscription of the queue to the topic to exist:
754
+ When the subscription is managed externally (no `subscriptionConfig`, or `subscriptionConfig.locateOnly`), startup
755
+ resource polling will also wait for the subscription of the queue to the topic to exist:
713
756
 
714
757
  ```typescript
715
758
  const consumer = new MyConsumer(deps, {
@@ -722,13 +765,19 @@ const consumer = new MyConsumer(deps, {
722
765
  timeoutMs: 60000,
723
766
  },
724
767
  },
725
- // No subscriptionConfig - the subscription is located, never created
768
+ // No subscriptionConfig - the subscription is located, never created. Alternatively, keep managing its filter policy:
769
+ // subscriptionConfig: {
770
+ // locateOnly: true,
771
+ // managedAttributes: ['FilterPolicy', 'FilterPolicyScope'],
772
+ // Attributes: { FilterPolicy: '...' },
773
+ // },
726
774
  })
727
775
 
728
776
  // This will:
729
777
  // 1. Poll until the topic and the queue exist
730
778
  // 2. Poll until the queue is subscribed to the topic
731
- // 3. Start consuming
779
+ // 3. Apply the subscription attributes, if a locate-only subscriptionConfig is given
780
+ // 4. Start consuming
732
781
  await consumer.start()
733
782
  ```
734
783
 
@@ -799,12 +848,12 @@ SNS consumers use the same options as SQS consumers, plus SNS-specific subscript
799
848
  locatorConfig: {
800
849
  topicArn: 'arn:aws:sns:...',
801
850
  queueUrl: 'https://sqs...',
802
- subscriptionArn: 'arn:aws:sns:...',
803
851
  },
804
852
 
805
853
  // SNS-Specific - Subscription Configuration
806
854
  subscriptionConfig: {
807
855
  updateAttributesIfExists: false, // Update subscription attributes if exists
856
+ managedAttributes: ['FilterPolicy', 'FilterPolicyScope'], // Defaults to all supported attributes
808
857
 
809
858
  // Optional: Message filtering
810
859
  filterPolicy: {
@@ -819,6 +868,12 @@ SNS consumers use the same options as SQS consumers, plus SNS-specific subscript
819
868
  deadLetterTargetArn: 'arn:aws:sqs:us-east-1:123456789012:my-dlq',
820
869
  },
821
870
  },
871
+ // or, for a subscription managed externally (requires topic and queue locators)
872
+ // subscriptionConfig: {
873
+ // locateOnly: true,
874
+ // managedAttributes: ['FilterPolicy', 'FilterPolicyScope'],
875
+ // Attributes: { FilterPolicy: '...' },
876
+ // },
822
877
 
823
878
  // Optional - FIFO Configuration
824
879
  fifoQueue: false,
@@ -1382,14 +1437,29 @@ type SNSSQSConsumerDependencies = SNSDependencies & SQSDependencies & {
1382
1437
  }
1383
1438
 
1384
1439
  // Subscription options
1385
- type SNSSubscriptionOptions = {
1386
- updateAttributesIfExists?: boolean
1387
- filterPolicy?: Record<string, string[]>
1388
- rawMessageDelivery?: boolean
1389
- redrivePolicy?: {
1390
- deadLetterTargetArn: string
1391
- }
1392
- }
1440
+ type SNSSubscriptionOptions =
1441
+ // Creation: the subscription is created, or updated if it already exists
1442
+ | {
1443
+ updateAttributesIfExists?: boolean
1444
+ managedAttributes?: SubscriptionManagedAttributeName[]
1445
+ filterPolicy?: Record<string, string[]>
1446
+ rawMessageDelivery?: boolean
1447
+ redrivePolicy?: {
1448
+ deadLetterTargetArn: string
1449
+ }
1450
+ }
1451
+ // Locate only: the subscription is located, never created, and the given attributes are applied to it
1452
+ | {
1453
+ locateOnly: true
1454
+ managedAttributes?: SubscriptionManagedAttributeName[]
1455
+ Attributes?: Record<string, string>
1456
+ }
1457
+
1458
+ type SubscriptionManagedAttributeName =
1459
+ | 'FilterPolicy'
1460
+ | 'FilterPolicyScope'
1461
+ | 'RawMessageDelivery'
1462
+ | 'RedrivePolicy'
1393
1463
  ```
1394
1464
 
1395
1465
  ### Utility Functions
package/dist/index.d.ts CHANGED
@@ -14,6 +14,6 @@ export { generateFilterAttributes, generateTopicSubscriptionPolicy, } from './ut
14
14
  export { type InitSnsExtraParams, type InitSnsSqsExtraParams, initSns, initSnsSqs, } from './utils/snsInitter.ts';
15
15
  export { deserializeSNSMessage } from './utils/snsMessageDeserializer.ts';
16
16
  export { readSnsMessage } from './utils/snsMessageReader.ts';
17
- export { type SNSSubscriptionOptions, subscribeToTopic } from './utils/snsSubscriber.ts';
17
+ export { type SNSSubscriptionOptions, SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES, type SubscriptionManagedAttributeName, subscribeToTopic, } from './utils/snsSubscriber.ts';
18
18
  export { assertTopic, calculateOutgoingMessageSize, deleteSubscription, deleteTopic, findSubscriptionByTopicAndQueue, getSubscriptionAttributes, getTopicAttributes, isFifoTopicName, validateFifoTopicName, } from './utils/snsUtils.ts';
19
19
  export { clearCachedCallerIdentity } from './utils/stsUtils.ts';
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ export { generateFilterAttributes, generateTopicSubscriptionPolicy, } from './ut
10
10
  export { initSns, initSnsSqs, } from './utils/snsInitter.js';
11
11
  export { deserializeSNSMessage } from './utils/snsMessageDeserializer.js';
12
12
  export { readSnsMessage } from './utils/snsMessageReader.js';
13
- export { subscribeToTopic } from './utils/snsSubscriber.js';
13
+ export { SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES, subscribeToTopic, } from './utils/snsSubscriber.js';
14
14
  export { assertTopic, calculateOutgoingMessageSize, deleteSubscription, deleteTopic, findSubscriptionByTopicAndQueue, getSubscriptionAttributes, getTopicAttributes, isFifoTopicName, validateFifoTopicName, } from './utils/snsUtils.js';
15
15
  export { clearCachedCallerIdentity } from './utils/stsUtils.js';
16
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAQpE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,cAAc,oCAAoC,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAA8B,MAAM,iCAAiC,CAAA;AAC9F,cAAc,8BAA8B,CAAA;AAE5C,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAGL,OAAO,EACP,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAA+B,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AACxF,OAAO,EACL,WAAW,EACX,4BAA4B,EAC5B,kBAAkB,EAClB,WAAW,EACX,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAQpE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,cAAc,oCAAoC,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAA8B,MAAM,iCAAiC,CAAA;AAC9F,cAAc,8BAA8B,CAAA;AAE5C,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAGL,OAAO,EACP,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAEL,oCAAoC,EAEpC,gBAAgB,GACjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,WAAW,EACX,4BAA4B,EAC5B,kBAAkB,EAClB,WAAW,EACX,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -4,7 +4,7 @@ import { type Either } from '@lokalise/node-core';
4
4
  import type { MessageInvalidFormatError, MessageValidationError, ResolvedMessage } from '@message-queue-toolkit/core';
5
5
  import type { SQSConsumerDependencies, SQSConsumerOptions, SQSCreationConfig, SQSMessage, SQSQueueLocatorType } from '@message-queue-toolkit/sqs';
6
6
  import { AbstractSqsConsumer } from '@message-queue-toolkit/sqs';
7
- import type { SNSSubscriptionOptions } from '../utils/snsSubscriber.ts';
7
+ import { type SNSSubscriptionOptions } from '../utils/snsSubscriber.ts';
8
8
  import type { SNSCreationConfig, SNSOptions, SNSTopicLocatorType } from './AbstractSnsService.ts';
9
9
  export type SNSSQSConsumerDependencies = SQSConsumerDependencies & {
10
10
  snsClient: SNSClient;
@@ -12,6 +12,11 @@ export type SNSSQSConsumerDependencies = SQSConsumerDependencies & {
12
12
  };
13
13
  export type SNSSQSCreationConfig = Omit<SQSCreationConfig, 'policyConfig'> & SNSCreationConfig;
14
14
  export type SNSSQSQueueLocatorType = Partial<SQSQueueLocatorType> & SNSTopicLocatorType & {
15
+ /**
16
+ * @deprecated The subscription is located from the topic and queue locators, so its ARN is no longer needed.
17
+ * To avoid creating it, omit `subscriptionConfig` or use `subscriptionConfig.locateOnly`. It will be removed in
18
+ * the next major version.
19
+ */
15
20
  subscriptionArn?: string;
16
21
  };
17
22
  export type SNSSQSConsumerOptions<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput> = SQSConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput, SNSSQSCreationConfig, SNSSQSQueueLocatorType> & SNSOptions & {
@@ -1,8 +1,8 @@
1
- import { SetSubscriptionAttributesCommand } from '@aws-sdk/client-sns';
2
1
  import { InternalError } from '@lokalise/node-core';
3
2
  import { AbstractSqsConsumer, deleteSqs } from '@message-queue-toolkit/sqs';
4
3
  import { deleteSnsSqs, initSnsSqs } from '../utils/snsInitter.js';
5
4
  import { readSnsMessage } from '../utils/snsMessageReader.js';
5
+ import { SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES, setSubscriptionAttributes, } from '../utils/snsSubscriber.js';
6
6
  export class AbstractSnsSqsConsumer extends AbstractSqsConsumer {
7
7
  subscriptionConfig;
8
8
  reuseConsumerDeadLetterQueueForSubscription;
@@ -29,9 +29,11 @@ export class AbstractSnsSqsConsumer extends AbstractSqsConsumer {
29
29
  _subscription;
30
30
  constructor(dependencies, options, executionContext) {
31
31
  super(dependencies, { ...options }, executionContext);
32
- this.subscriptionConfig = options.subscriptionConfig;
33
32
  this.reuseConsumerDeadLetterQueueForSubscription =
34
33
  !!options.subscriptionDeadLetterQueue?.reuseConsumerDeadLetterQueue;
34
+ this.subscriptionConfig = this.reuseConsumerDeadLetterQueueForSubscription
35
+ ? withoutManagedRedrivePolicy(options.subscriptionConfig)
36
+ : options.subscriptionConfig;
35
37
  if (this.reuseConsumerDeadLetterQueueForSubscription && !options.deadLetterQueue) {
36
38
  throw new InternalError({
37
39
  errorCode: 'invalid_subscription_dlq_configuration',
@@ -42,10 +44,13 @@ export class AbstractSnsSqsConsumer extends AbstractSqsConsumer {
42
44
  this.stsClient = dependencies.stsClient;
43
45
  }
44
46
  async init() {
45
- if (this.deletionConfig && this.creationConfig && this.subscriptionConfig) {
47
+ if (this.deletionConfig &&
48
+ this.creationConfig &&
49
+ this.subscriptionConfig &&
50
+ !this.subscriptionConfig.locateOnly) {
46
51
  await deleteSnsSqs(this.sqsClient, this.snsClient, this.stsClient, this.deletionConfig, this.creationConfig.queue, this.creationConfig.topic, this.subscriptionConfig, undefined, this.locatorConfig);
47
52
  }
48
- else if (this.deletionConfig && this.creationConfig) {
53
+ else if (this.deletionConfig && this.creationConfig && !this.subscriptionConfig?.locateOnly) {
49
54
  await deleteSqs(this.sqsClient, this.deletionConfig, this.creationConfig);
50
55
  }
51
56
  const initSnsSqsResult = await initSnsSqs(this.sqsClient, this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig, this.subscriptionConfig, {
@@ -137,11 +142,7 @@ export class AbstractSnsSqsConsumer extends AbstractSqsConsumer {
137
142
  const dlq = this.deadLetterQueue;
138
143
  if (!dlq)
139
144
  return;
140
- await this.snsClient.send(new SetSubscriptionAttributesCommand({
141
- SubscriptionArn: this.subscription.subscriptionArn,
142
- AttributeName: 'RedrivePolicy',
143
- AttributeValue: JSON.stringify({ deadLetterTargetArn: dlq.arn }),
144
- }));
145
+ await setSubscriptionAttributes(this.snsClient, this.subscription.subscriptionArn, { RedrivePolicy: JSON.stringify({ deadLetterTargetArn: dlq.arn }) }, ['RedrivePolicy']);
145
146
  }
146
147
  /**
147
148
  * Starts the consumer. In non-blocking polling mode, if resources aren't ready yet,
@@ -191,4 +192,23 @@ export class AbstractSnsSqsConsumer extends AbstractSqsConsumer {
191
192
  return this._messageSchemaContainer.resolveSchema(messagePayload);
192
193
  }
193
194
  }
195
+ /**
196
+ * With `subscriptionDeadLetterQueue.reuseConsumerDeadLetterQueue`, the redrive policy is set once the
197
+ * DLQ is resolved, so the subscription config must not manage (and reset) it on its own.
198
+ */
199
+ function withoutManagedRedrivePolicy(subscriptionConfig) {
200
+ if (!subscriptionConfig)
201
+ return undefined;
202
+ if (subscriptionConfig.managedAttributes?.includes('RedrivePolicy') ||
203
+ subscriptionConfig.Attributes?.RedrivePolicy) {
204
+ throw new InternalError({
205
+ errorCode: 'invalid_subscription_dlq_configuration',
206
+ message: 'subscriptionDeadLetterQueue.reuseConsumerDeadLetterQueue sets the subscription RedrivePolicy, so subscriptionConfig must not manage it',
207
+ });
208
+ }
209
+ return {
210
+ ...subscriptionConfig,
211
+ managedAttributes: (subscriptionConfig.managedAttributes ?? SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES).filter((name) => name !== 'RedrivePolicy'),
212
+ };
213
+ }
194
214
  //# sourceMappingURL=AbstractSnsSqsConsumer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import type { DeletionConfig, ExtraParams, PollingErrorCallback } from '@message
5
5
  import { type SQSCreationConfig } from '@message-queue-toolkit/sqs';
6
6
  import type { SNSCreationConfig, SNSTopicLocatorType } from '../sns/AbstractSnsService.ts';
7
7
  import type { SNSSQSQueueLocatorType } from '../sns/AbstractSnsSqsConsumer.ts';
8
- import type { SNSSubscriptionOptions } from './snsSubscriber.ts';
8
+ import { type SNSSubscriptionCreationOptions, type SNSSubscriptionOptions } from './snsSubscriber.ts';
9
9
  /**
10
10
  * Result of {@link initSnsSqs} when all resources are confirmed available.
11
11
  * The function returns `undefined` instead when running in non-blocking
@@ -55,17 +55,19 @@ export type InitSnsExtraParams = ExtraParams & {
55
55
  * - Queue: located when `locatorConfig.queueUrl` or `locatorConfig.queueName` is given, otherwise
56
56
  * created from `creationConfig.queue`.
57
57
  * - Subscription: created (or updated) when `subscriptionConfig` is given, otherwise located by
58
- * looking up the queue's subscription on the topic.
58
+ * looking up the queue's subscription on the topic. With `subscriptionConfig.locateOnly`, it is
59
+ * always located and its `Attributes` (e.g. `FilterPolicy`) are applied to it.
59
60
  *
60
61
  * When `locatorConfig.subscriptionArn` is given, every resource is located and `creationConfig` and
61
- * `subscriptionConfig` are ignored.
62
+ * `subscriptionConfig` are ignored, except for a locate-only `subscriptionConfig`, whose attributes
63
+ * are still applied.
62
64
  *
63
65
  * Located resources are waited for when `locatorConfig.startupResourcePolling` is enabled. In
64
66
  * non-blocking mode, `undefined` is returned if they are not immediately available, and
65
67
  * `onResourcesReady` is invoked once they are.
66
68
  */
67
69
  export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: InitSnsSqsExtraParams): Promise<InitSnsSqsResult | undefined>;
68
- export declare function deleteSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, deletionConfig: DeletionConfig, queueConfiguration: CreateQueueCommandInput, topicConfiguration: CreateTopicCommandInput | undefined, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraParams, topicLocator?: SNSTopicLocatorType): Promise<void>;
70
+ export declare function deleteSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, deletionConfig: DeletionConfig, queueConfiguration: CreateQueueCommandInput, topicConfiguration: CreateTopicCommandInput | undefined, subscriptionConfiguration: SNSSubscriptionCreationOptions, extraParams?: ExtraParams, topicLocator?: SNSTopicLocatorType): Promise<void>;
69
71
  export declare function deleteSns(snsClient: SNSClient, stsClient: STSClient, deletionConfig: DeletionConfig, creationConfig: SNSCreationConfig): Promise<void>;
70
72
  export declare function initSns(snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSTopicLocatorType, creationConfig?: SNSCreationConfig, extraParams?: InitSnsExtraParams): Promise<{
71
73
  topicArn: string;
@@ -2,8 +2,8 @@ import { InternalError, isError, isInternalError } from '@lokalise/node-core';
2
2
  import { isProduction, isStartupResourcePollingEnabled, waitForResource, } from '@message-queue-toolkit/core';
3
3
  import { assertQueue, deleteQueue, getQueueAttributes, getQueueUrl, } from '@message-queue-toolkit/sqs';
4
4
  import { isCreateTopicCommand } from '../types/TopicTypes.js';
5
- import { assertSubscription, subscribeToTopic } from './snsSubscriber.js';
6
- import { assertTopic, deleteSubscription, deleteTopic, findSubscriptionByTopicAndQueue, getTopicAttributes, } from './snsUtils.js';
5
+ import { assertSubscription, setSubscriptionAttributes, subscribeToTopic, } from './snsSubscriber.js';
6
+ import { assertTopic, deleteSubscription, deleteTopic, findConfirmedSubscriptionArn, getTopicAttributes, } from './snsUtils.js';
7
7
  import { buildTopicArn } from './stsUtils.js';
8
8
  const RESOURCE_NOT_FOUND_ERROR_CODE = 'sns_sqs_resource_not_found';
9
9
  async function waitForOrCheckResource(resourceName, notFoundMessage, checkFn, options) {
@@ -94,31 +94,31 @@ async function resolveQueue(sqsClient, locatorConfig, creationConfig, options) {
94
94
  return { isAvailable: true, result: { queueUrl, queueArn, queueName } };
95
95
  }, options);
96
96
  }
97
- async function findConfirmedSubscriptionArn(snsClient, topicArn, queueArn) {
98
- const subscription = await findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn);
99
- const subscriptionArn = subscription?.SubscriptionArn;
100
- // Unconfirmed subscriptions are listed with a status placeholder instead of an ARN
101
- return subscriptionArn?.startsWith('arn:') ? subscriptionArn : undefined;
102
- }
103
97
  /**
104
- * Subscription is used as is when its ARN is given, created (or updated) when subscriptionConfig is
105
- * given, and otherwise located by looking up the queue's subscription on the topic.
98
+ * Subscription is created (or updated) when a creation subscriptionConfig is given. Otherwise, it is located:
99
+ * used as is when its ARN is given, or looked up on the topic, and the attributes of a locate-only
100
+ * subscriptionConfig are applied to it.
101
+ *
102
+ * Note: a creation subscriptionConfig is never given along with the subscription ARN, as initSnsSqs discards it.
106
103
  */
107
104
  async function resolveSubscriptionArn(snsClient, topicArn, queue, locatorConfig, subscriptionConfig, options) {
108
- if (locatorConfig?.subscriptionArn)
109
- return locatorConfig.subscriptionArn;
110
- if (subscriptionConfig) {
105
+ if (subscriptionConfig && !subscriptionConfig.locateOnly) {
111
106
  const subscriptionArn = await assertSubscription(snsClient, topicArn, queue.queueArn, subscriptionConfig, { queueName: queue.queueName, topicName: topicArn.split(':').pop() }, options.extraParams?.logger);
112
107
  if (!subscriptionArn)
113
108
  throw new Error('Failed to subscribe');
114
109
  return subscriptionArn;
115
110
  }
116
- return await waitForOrCheckResource(`SNS subscription of SQS queue ${queue.queueArn} to topic ${topicArn}`, `Subscription of queue ${queue.queueArn} to topic ${topicArn} does not exist.`, async () => {
117
- const subscriptionArn = await findConfirmedSubscriptionArn(snsClient, topicArn, queue.queueArn);
118
- if (!subscriptionArn)
119
- return { isAvailable: false };
120
- return { isAvailable: true, result: subscriptionArn };
121
- }, options);
111
+ const subscriptionArn = locatorConfig?.subscriptionArn ??
112
+ (await waitForOrCheckResource(`SNS subscription of SQS queue ${queue.queueArn} to topic ${topicArn}`, `Subscription of queue ${queue.queueArn} to topic ${topicArn} does not exist.`, async () => {
113
+ const subscriptionArn = await findConfirmedSubscriptionArn(snsClient, topicArn, queue.queueArn);
114
+ if (!subscriptionArn)
115
+ return { isAvailable: false };
116
+ return { isAvailable: true, result: subscriptionArn };
117
+ }, options));
118
+ if (subscriptionConfig?.locateOnly) {
119
+ await setSubscriptionAttributes(snsClient, subscriptionArn, subscriptionConfig.Attributes, subscriptionConfig.managedAttributes);
120
+ }
121
+ return subscriptionArn;
122
122
  }
123
123
  async function resolveSnsSqsResources(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, options) {
124
124
  const topicArn = await resolveTopicArn(snsClient, stsClient, locatorConfig, creationConfig, options);
@@ -135,6 +135,11 @@ function validateInitSnsSqsConfig(locatorConfig, creationConfig, subscriptionCon
135
135
  }
136
136
  // Queue creation config is ignored when the queue is located
137
137
  const isQueueLocated = !!(locatorConfig?.queueUrl || locatorConfig?.queueName);
138
+ const isTopicLocated = !!(locatorConfig?.topicArn || locatorConfig?.topicName);
139
+ // A subscription managed externally can only belong to a topic and a queue managed externally too
140
+ if (subscriptionConfig?.locateOnly && (!isTopicLocated || !isQueueLocated)) {
141
+ throw new Error('If subscriptionConfig.locateOnly is specified, both the topic and the queue must be located');
142
+ }
138
143
  if (!isQueueLocated && creationConfig?.queue) {
139
144
  if (!creationConfig.queue.QueueName) {
140
145
  throw new Error('If locatorConfig.subscriptionArn is not specified, creationConfig.queue.QueueName parameter is mandatory, as there will be an attempt to create the missing queue');
@@ -152,10 +157,12 @@ function validateInitSnsSqsConfig(locatorConfig, creationConfig, subscriptionCon
152
157
  * - Queue: located when `locatorConfig.queueUrl` or `locatorConfig.queueName` is given, otherwise
153
158
  * created from `creationConfig.queue`.
154
159
  * - Subscription: created (or updated) when `subscriptionConfig` is given, otherwise located by
155
- * looking up the queue's subscription on the topic.
160
+ * looking up the queue's subscription on the topic. With `subscriptionConfig.locateOnly`, it is
161
+ * always located and its `Attributes` (e.g. `FilterPolicy`) are applied to it.
156
162
  *
157
163
  * When `locatorConfig.subscriptionArn` is given, every resource is located and `creationConfig` and
158
- * `subscriptionConfig` are ignored.
164
+ * `subscriptionConfig` are ignored, except for a locate-only `subscriptionConfig`, whose attributes
165
+ * are still applied.
159
166
  *
160
167
  * Located resources are waited for when `locatorConfig.startupResourcePolling` is enabled. In
161
168
  * non-blocking mode, `undefined` is returned if they are not immediately available, and
@@ -164,12 +171,14 @@ function validateInitSnsSqsConfig(locatorConfig, creationConfig, subscriptionCon
164
171
  export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
165
172
  const isFullyLocated = !!locatorConfig?.subscriptionArn;
166
173
  const resolvedCreationConfig = isFullyLocated ? undefined : creationConfig;
167
- const resolvedSubscriptionConfig = isFullyLocated ? undefined : subscriptionConfig;
174
+ // A locate-only subscriptionConfig doesn't create anything, so it is kept to apply its attributes
175
+ const resolvedSubscriptionConfig = isFullyLocated && !subscriptionConfig?.locateOnly ? undefined : subscriptionConfig;
176
+ const createsSubscription = !!resolvedSubscriptionConfig && !resolvedSubscriptionConfig.locateOnly;
168
177
  validateInitSnsSqsConfig(locatorConfig, resolvedCreationConfig, resolvedSubscriptionConfig);
169
178
  const resolve = (options) => resolveSnsSqsResources(sqsClient, snsClient, stsClient, locatorConfig, resolvedCreationConfig, resolvedSubscriptionConfig, { ...options, extraParams });
170
179
  const startupResourcePolling = locatorConfig?.startupResourcePolling;
171
180
  if (!isStartupResourcePollingEnabled(startupResourcePolling)) {
172
- return await resolve({ checkLocatedTopic: !resolvedSubscriptionConfig });
181
+ return await resolve({ checkLocatedTopic: !createsSubscription });
173
182
  }
174
183
  if (startupResourcePolling.nonBlocking !== true) {
175
184
  return await resolve({ polling: startupResourcePolling, checkLocatedTopic: true });
@@ -1 +1 @@
1
- {"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAO7E,OAAO,EACL,YAAY,EACZ,+BAA+B,EAC/B,eAAe,GAChB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,WAAW,GAEZ,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,+BAA+B,EAC/B,kBAAkB,GACnB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AA8C7C,MAAM,6BAA6B,GAAG,4BAA4B,CAAA;AAgBlE,KAAK,UAAU,sBAAsB,CACnC,YAAoB,EACpB,eAAuB,EACvB,OAA4D,EAC5D,OAAkC;IAElC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE;YAClD,YAAY;YACZ,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM;YACnC,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa;YACjD,OAAO;SACR,CAAC,CAAA;QACF,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAA;QAE9E,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAA;IACnC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,IAAI,aAAa,CAAC,EAAE,SAAS,EAAE,6BAA6B,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,CAAA;AAC3B,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAC5B,SAAoB,EACpB,SAAoB,EACpB,aAAiD,EACjD,cAAmE,EACnE,OAAkC;IAElC,MAAM,QAAQ,GACZ,aAAa,EAAE,QAAQ;QACvB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAElG,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB;YAAE,OAAO,QAAQ,CAAA;QAEnE,OAAO,MAAM,sBAAsB,CACjC,aAAa,QAAQ,EAAE,EACvB,uBAAuB,QAAQ,kBAAkB,EACjD,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC5D,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;gBAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;YAC/D,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;QAChD,CAAC,EACD,OAAO,CACR,CAAA;IACH,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAA;IACH,CAAC;IAED,OAAO,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE;QACnE,uCAAuC,EACrC,cAAc,EAAE,uCAAuC;QACzD,kBAAkB,EAAE,cAAc,EAAE,kBAAkB;QACtD,cAAc,EAAE,cAAc,EAAE,cAAc;KAC/C,CAAC,CAAA;AACJ,CAAC;AAID;;;GAGG;AACH,KAAK,UAAU,YAAY,CACzB,SAAoB,EACpB,aAAiD,EACjD,cAAmE,EACnE,OAAkC;IAElC,MAAM,eAAe,GAAG,aAAa,EAAE,QAAQ,CAAA;IAC/C,MAAM,gBAAgB,GAAG,aAAa,EAAE,SAAS,CAAA;IACjD,IAAI,CAAC,eAAe,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAA;QACH,CAAC;QAED,OAAO,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE;YAClD,qCAAqC,EAAE,cAAc,CAAC,qCAAqC;YAC3F,wBAAwB,EAAE,cAAc,CAAC,wBAAwB;YACjE,cAAc,EAAE,cAAc,CAAC,cAAc;SAC9C,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,eAAe;QACpC,CAAC,CAAC,YAAY,eAAe,EAAE;QAC/B,CAAC,CAAC,aAAa,gBAAgB,EAAE,CAAA;IAEnC,OAAO,MAAM,sBAAsB,CACjC,kBAAkB,cAAc,EAAE,EAClC,cAAc,cAAc,kBAAkB,EAC9C,KAAK,IAAI,EAAE;QACT,6FAA6F;QAC7F,IAAI,QAAQ,GAAG,eAAe,CAAA;QAC9B,IAAI,CAAC,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;YACrE,IAAI,cAAc,CAAC,KAAK,KAAK,WAAW;gBAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;YACvE,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAA;QAClC,CAAC;QACD,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;QAE5C,MAAM,qBAAqB,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;QACzF,IAAI,qBAAqB,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;QAE9E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAA;QACnE,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,EAAE,CAAC,CAAA;QAErF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;QAC3C,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,QAAQ,EAAE,CAAC,CAAA;QAEzF,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAA;IACzE,CAAC,EAED,OAAO,CACR,CAAA;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,SAAoB,EACpB,QAAgB,EAChB,QAAgB;IAEhB,MAAM,YAAY,GAAG,MAAM,+BAA+B,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACzF,MAAM,eAAe,GAAG,YAAY,EAAE,eAAe,CAAA;IAErD,mFAAmF;IACnF,OAAO,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1E,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,sBAAsB,CACnC,SAAoB,EACpB,QAAgB,EAChB,KAAoB,EACpB,aAAiD,EACjD,kBAAsD,EACtD,OAAkC;IAElC,IAAI,aAAa,EAAE,eAAe;QAAE,OAAO,aAAa,CAAC,eAAe,CAAA;IAExE,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAC9C,SAAS,EACT,QAAQ,EACR,KAAK,CAAC,QAAQ,EACd,kBAAkB,EAClB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EACpE,OAAO,CAAC,WAAW,EAAE,MAAM,CAC5B,CAAA;QACD,IAAI,CAAC,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAE5D,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,OAAO,MAAM,sBAAsB,CACjC,iCAAiC,KAAK,CAAC,QAAQ,aAAa,QAAQ,EAAE,EACtE,yBAAyB,KAAK,CAAC,QAAQ,aAAa,QAAQ,kBAAkB,EAC9E,KAAK,IAAI,EAAE;QACT,MAAM,eAAe,GAAG,MAAM,4BAA4B,CACxD,SAAS,EACT,QAAQ,EACR,KAAK,CAAC,QAAQ,CACf,CAAA;QACD,IAAI,CAAC,eAAe;YAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;QACnD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAA;IACvD,CAAC,EACD,OAAO,CACR,CAAA;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACpB,aAAiD,EACjD,cAAmE,EACnE,kBAAsD,EACtD,OAAkC;IAElC,MAAM,QAAQ,GAAG,MAAM,eAAe,CACpC,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,OAAO,CACR,CAAA;IAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IACnF,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAClD,SAAS,EACT,QAAQ,EACR,KAAK,EACL,aAAa,EACb,kBAAkB,EAClB,OAAO,CACR,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,CAAA;AAChD,CAAC;AAED,SAAS,wBAAwB,CAC/B,aAAiD,EACjD,cAAmE,EACnE,kBAAsD;IAEtD,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,QAAQ,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CACb,8QAA8Q,CAC/Q,CAAA;IACH,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,QAAQ,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CACb,gLAAgL,CACjL,CAAA;IACH,CAAC;IACD,6DAA6D;IAC7D,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,QAAQ,IAAI,aAAa,EAAE,SAAS,CAAC,CAAA;IAC9E,IAAI,CAAC,cAAc,IAAI,cAAc,EAAE,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,mKAAmK,CACpK,CAAA;QACH,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,uIAAuI,CACxI,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACpB,aAAsC,EACtC,cAAsD,EACtD,kBAA2C,EAC3C,WAAmC;IAEnC,MAAM,cAAc,GAAG,CAAC,CAAC,aAAa,EAAE,eAAe,CAAA;IACvD,MAAM,sBAAsB,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAA;IAC1E,MAAM,0BAA0B,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAA;IAElF,wBAAwB,CAAC,aAAa,EAAE,sBAAsB,EAAE,0BAA0B,CAAC,CAAA;IAE3F,MAAM,OAAO,GAAG,CAAC,OAAuD,EAAE,EAAE,CAC1E,sBAAsB,CACpB,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,0BAA0B,EAC1B,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,CAC5B,CAAA;IAEH,MAAM,sBAAsB,GAAG,aAAa,EAAE,sBAAsB,CAAA;IACpE,IAAI,CAAC,+BAA+B,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC7D,OAAO,MAAM,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC,0BAA0B,EAAE,CAAC,CAAA;IAC1E,CAAC;IACD,IAAI,sBAAsB,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAA;IACpF,CAAC;IAED,8FAA8F;IAC9F,8FAA8F;IAC9F,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,6BAA6B;YAAE,MAAM,GAAG,CAAA;QAEvF,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;YACxB,OAAO,EAAE,2EAA2E;YACpF,MAAM,EAAE,GAAG,CAAC,OAAO;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;SAClE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;SACzD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACzD,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;YACzB,OAAO,EAAE,gDAAgD;YACzD,KAAK;SACN,CAAC,CAAA;QACF,uEAAuE;QACvE,WAAW,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEJ,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACpB,cAA8B,EAC9B,kBAA2C,EAC3C,kBAAuD,EACvD,yBAAiD,EACjD,WAAyB,EACzB,YAAkC;IAElC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACnC,OAAM;IACR,CAAC;IAED,IAAI,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,wMAAwM,CACzM,CAAA;IACH,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,gBAAgB,CAChD,SAAS,EACT,SAAS,EACT,SAAS,EACT,kBAAkB;IAClB,8DAA8D;IAC9D,kBAAkB,IAAI,YAAa,EACnC,yBAAyB,EACzB,WAAW,CACZ,CAAA;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,WAAW,CACf,SAAS;IACT,sDAAsD;IACtD,kBAAkB,CAAC,SAAU,EAC7B,cAAc,CAAC,mBAAmB,KAAK,KAAK,CAC7C,CAAA;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,oBAAoB,CAAC,kBAAkB,CAAC;YACxD,CAAC,CAAC,kBAAkB,CAAC,IAAI;YACzB,CAAC,CAAC,WAAW,CAAA;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QACD,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,kBAAkB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAoB,EACpB,SAAoB,EACpB,cAA8B,EAC9B,cAAiC;IAEjC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACnC,OAAM;IACR,CAAC;IAED,IAAI,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,wMAAwM,CACzM,CAAA;IACH,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACpE,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,SAAoB,EACpB,SAAoB,EACpB,aAAkC,EAClC,WAAgC;IAEhC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GACZ,aAAa,CAAC,QAAQ,IAAI,CAAC,MAAM,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAA;IAE3F,MAAM,sBAAsB,GAAG,aAAa,CAAC,sBAAsB,CAAA;IAEnE,6EAA6E;IAC7E,IAAI,+BAA+B,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,sBAAsB,CAAC,WAAW,KAAK,IAAI,CAAA;QAE/D,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC;YACxC,MAAM,EAAE,sBAAsB;YAC9B,YAAY,EAAE,aAAa,QAAQ,EAAE;YACrC,MAAM,EAAE,WAAW,EAAE,MAAM;YAC3B,aAAa,EAAE,WAAW,EAAE,aAAa;YACzC,mBAAmB,EAAE,GAAG,EAAE;gBACxB,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAC3C,CAAC;YACH,CAAC;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;gBAC5D,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBACjC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;gBAC/B,CAAC;gBACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;YACrD,CAAC;SACF,CAAC,CAAA;QAEF,2EAA2E;QAC3E,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;QAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,kEAAkE;QAClE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QACjE,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,kBAAkB,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAoB,EACpB,SAAoB,EACpB,aAAmC,EACnC,cAAkC,EAClC,WAAgC;IAEhC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;IAC7E,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAA;IACH,CAAC;IACD,sDAAsD;IACtD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,KAAM,EAAE;QAC9E,uCAAuC,EAAE,cAAc,CAAC,uCAAuC;QAC/F,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;QACrD,cAAc,EAAE,cAAc,CAAC,cAAc;KAC9C,CAAC,CAAA;IAEF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;AAC3C,CAAC"}
1
+ {"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
@@ -6,25 +6,70 @@ import type { ExtraParams } from '@message-queue-toolkit/core';
6
6
  import type { ExtraSQSCreationParams } from '@message-queue-toolkit/sqs';
7
7
  import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService.ts';
8
8
  import { type TopicResolutionOptions } from '../types/TopicTypes.ts';
9
- export type SNSSubscriptionOptions = Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'> & {
10
- updateAttributesIfExists: boolean;
9
+ /** Subscription attributes that can be managed for an SQS subscription */
10
+ export declare const SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES: readonly ['FilterPolicy', 'FilterPolicyScope', 'RawMessageDelivery', 'RedrivePolicy'];
11
+ export type SubscriptionManagedAttributeName = (typeof SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES)[number];
12
+ type SubscriptionAttributeManagementOptions = {
13
+ /**
14
+ * Attributes whose value is owned by this config. Defaults to all of
15
+ * {@link SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES}.
16
+ *
17
+ * A managed attribute that is missing from `Attributes` is reset on the existing subscription
18
+ * (`FilterPolicy` and `RedrivePolicy` are removed, the others go back to their defaults).
19
+ * Attributes that are not managed are neither checked nor written, so external tooling such as
20
+ * Terraform can own them, and must not be present in `Attributes`.
21
+ */
22
+ managedAttributes?: readonly SubscriptionManagedAttributeName[];
11
23
  };
24
+ /**
25
+ * Options for the subscription of a queue to a topic.
26
+ *
27
+ * There are two modes for this config:
28
+ * 1. Creation (default): the subscription is created, or updated if it already exists.
29
+ * 2. Locate only: for subscriptions managed externally. The subscription is only located, never created,
30
+ * and its managed attributes (e.g. `FilterPolicy`) are applied to it.
31
+ */
32
+ export type SNSSubscriptionOptions =
33
+ /** Creation */
34
+ (Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'> & SubscriptionAttributeManagementOptions & {
35
+ updateAttributesIfExists: boolean;
36
+ /** Should not be present when the subscription is created */
37
+ locateOnly?: never;
38
+ })
39
+ /** Locate only */
40
+ | (SubscriptionAttributeManagementOptions & {
41
+ /** Marks the subscription as located only */
42
+ locateOnly: true;
43
+ /** Attributes applied to the located subscription */
44
+ Attributes?: SubscribeCommandInput['Attributes'];
45
+ });
46
+ /** Subscription options that create the subscription, required when subscribing */
47
+ export type SNSSubscriptionCreationOptions = Exclude<SNSSubscriptionOptions, {
48
+ locateOnly: true;
49
+ }>;
12
50
  /**
13
51
  * Asserts the SNS topic (or resolves the ARN of a located one), asserts the SQS queue and then
14
52
  * asserts the subscription of the queue to the topic.
15
53
  */
16
- export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: TopicResolutionOptions, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams & ExtraParams): Promise<{
54
+ export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: TopicResolutionOptions, subscriptionConfiguration: SNSSubscriptionCreationOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams & ExtraParams): Promise<{
17
55
  subscriptionArn: string | undefined;
18
56
  topicArn: string;
19
57
  queueUrl: string;
20
58
  queueArn: string;
21
59
  }>;
22
60
  /**
23
- * Subscribes an existing SQS queue to an existing SNS topic. Subscribing is idempotent, so an
24
- * existing subscription is returned as is, or has its attributes updated when they differ and
25
- * `updateAttributesIfExists` is enabled.
61
+ * Subscribes an existing SQS queue to an existing SNS topic. An existing subscription is checked
62
+ * with read-only calls first and is only written to when its managed attributes differ from the
63
+ * configured ones and `updateAttributesIfExists` is enabled. Only the differing attributes are
64
+ * written.
26
65
  */
27
- export declare function assertSubscription(snsClient: SNSClient, topicArn: string, queueArn: string, subscriptionConfiguration: SNSSubscriptionOptions, errorContext: {
66
+ export declare function assertSubscription(snsClient: SNSClient, topicArn: string, queueArn: string, subscriptionConfiguration: SNSSubscriptionCreationOptions, errorContext: {
28
67
  queueName?: string;
29
68
  topicName?: string;
30
69
  }, logger?: CommonLogger): Promise<string | undefined>;
70
+ /**
71
+ * Applies the given attributes to an existing subscription, resetting managed attributes that are
72
+ * missing from them. Current attributes are read first, and only the ones that differ are written.
73
+ */
74
+ export declare function setSubscriptionAttributes(snsClient: SNSClient, subscriptionArn: string, attributes: SubscribeCommandInput['Attributes'], managedAttributes?: readonly SubscriptionManagedAttributeName[]): Promise<void>;
75
+ export {};
@@ -1,9 +1,17 @@
1
+ import { isDeepStrictEqual } from 'node:util';
1
2
  import { SetSubscriptionAttributesCommand, SubscribeCommand } from '@aws-sdk/client-sns';
2
3
  import { InternalError, isError, stringValueSerializer, } from '@lokalise/node-core';
3
4
  import { assertQueue } from '@message-queue-toolkit/sqs';
4
5
  import { isCreateTopicCommand, isSNSTopicLocatorType, } from '../types/TopicTypes.js';
5
- import { assertTopic, findSubscriptionByTopicAndQueue } from './snsUtils.js';
6
+ import { assertTopic, findConfirmedSubscriptionArn, getSubscriptionAttributes } from './snsUtils.js';
6
7
  import { buildTopicArn } from './stsUtils.js';
8
+ /** Subscription attributes that can be managed for an SQS subscription */
9
+ export const SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES = [
10
+ 'FilterPolicy',
11
+ 'FilterPolicyScope',
12
+ 'RawMessageDelivery',
13
+ 'RedrivePolicy',
14
+ ];
7
15
  async function resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfiguration, extraParams) {
8
16
  if (isSNSTopicLocatorType(topicConfiguration)) {
9
17
  if (topicConfiguration.topicArn)
@@ -44,38 +52,57 @@ export async function subscribeToTopic(sqsClient, snsClient, stsClient, queueCon
44
52
  return { subscriptionArn, topicArn, queueUrl, queueArn };
45
53
  }
46
54
  /**
47
- * Subscribes an existing SQS queue to an existing SNS topic. Subscribing is idempotent, so an
48
- * existing subscription is returned as is, or has its attributes updated when they differ and
49
- * `updateAttributesIfExists` is enabled.
55
+ * Subscribes an existing SQS queue to an existing SNS topic. An existing subscription is checked
56
+ * with read-only calls first and is only written to when its managed attributes differ from the
57
+ * configured ones and `updateAttributesIfExists` is enabled. Only the differing attributes are
58
+ * written.
50
59
  */
51
60
  export async function assertSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration, errorContext, logger) {
52
- const subscribeCommand = new SubscribeCommand({
53
- TopicArn: topicArn,
54
- Endpoint: queueArn,
55
- Protocol: 'sqs',
56
- ReturnSubscriptionArn: true,
57
- ...subscriptionConfiguration,
58
- });
61
+ const { updateAttributesIfExists, managedAttributes, locateOnly, ...subscribeInput } = subscriptionConfiguration;
62
+ const resolvedManagedAttributes = resolveManagedAttributes(subscribeInput.Attributes, managedAttributes);
63
+ const resolvedLogger = logger ?? console;
64
+ const errMessagePrefix = `Error while creating subscription for queue "${errorContext.queueName}", topic "${errorContext.topicName}"`;
65
+ const reconcileExistingSubscription = async (subscriptionArn) => {
66
+ const changedAttributes = await findChangedSubscriptionAttributes(snsClient, subscriptionArn, subscribeInput.Attributes, resolvedManagedAttributes);
67
+ if (Object.keys(changedAttributes).length === 0)
68
+ return subscriptionArn;
69
+ const errMessage = `${errMessagePrefix}: Subscription already exists with different attributes: ${Object.keys(changedAttributes).join(', ')}`;
70
+ if (!updateAttributesIfExists) {
71
+ resolvedLogger.error(errMessage);
72
+ throw new InternalError({
73
+ errorCode: 'sns_subscription_creation_failed',
74
+ message: errMessage,
75
+ details: { queueName: errorContext.queueName, topicArn },
76
+ });
77
+ }
78
+ resolvedLogger.warn(`${errMessage}. Updating subscription`);
79
+ await writeSubscriptionAttributes(snsClient, subscriptionArn, changedAttributes);
80
+ return subscriptionArn;
81
+ };
82
+ const existingSubscriptionArn = await findConfirmedSubscriptionArn(snsClient, topicArn, queueArn);
83
+ if (existingSubscriptionArn)
84
+ return reconcileExistingSubscription(existingSubscriptionArn);
59
85
  try {
60
- const subscriptionResult = await snsClient.send(subscribeCommand);
86
+ const subscriptionResult = await snsClient.send(new SubscribeCommand({
87
+ ...subscribeInput,
88
+ TopicArn: topicArn,
89
+ Endpoint: queueArn,
90
+ Protocol: 'sqs',
91
+ ReturnSubscriptionArn: true,
92
+ }));
61
93
  return subscriptionResult.SubscriptionArn;
62
94
  }
63
95
  catch (err) {
64
96
  if (!isError(err))
65
97
  throw err;
66
- const resolvedLogger = logger ?? console;
67
- const errMessage = `Error while creating subscription for queue "${errorContext.queueName}", topic "${errorContext.topicName}": ${err.message}`;
68
- if (subscriptionConfiguration.updateAttributesIfExists &&
69
- err.message.includes('Subscription already exists with different attributes')) {
70
- resolvedLogger.warn(`${errMessage}. Trying to update subscription`);
71
- const result = await tryToUpdateSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration);
72
- if (result)
73
- return result.SubscriptionArn;
74
- resolvedLogger.error('Failed to update subscription');
75
- }
76
- else {
77
- resolvedLogger.error(errMessage);
98
+ // Another instance may have created the subscription after the lookup above
99
+ if (err.message.includes('Subscription already exists with different attributes')) {
100
+ const concurrentSubscriptionArn = await findConfirmedSubscriptionArn(snsClient, topicArn, queueArn);
101
+ if (concurrentSubscriptionArn)
102
+ return reconcileExistingSubscription(concurrentSubscriptionArn);
78
103
  }
104
+ const errMessage = `${errMessagePrefix}: ${err.message}`;
105
+ resolvedLogger.error(errMessage);
79
106
  throw new InternalError({
80
107
  errorCode: 'sns_subscription_creation_failed',
81
108
  message: errMessage,
@@ -84,21 +111,96 @@ export async function assertSubscription(snsClient, topicArn, queueArn, subscrip
84
111
  });
85
112
  }
86
113
  }
87
- async function tryToUpdateSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration) {
88
- const subscription = await findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn);
89
- if (!subscription || !subscriptionConfiguration.Attributes) {
90
- return undefined;
91
- }
92
- const setSubscriptionAttributesCommands = Object.entries(subscriptionConfiguration.Attributes).map(([key, value]) => {
93
- return new SetSubscriptionAttributesCommand({
94
- SubscriptionArn: subscription.SubscriptionArn,
114
+ /**
115
+ * Applies the given attributes to an existing subscription, resetting managed attributes that are
116
+ * missing from them. Current attributes are read first, and only the ones that differ are written.
117
+ */
118
+ export async function setSubscriptionAttributes(snsClient, subscriptionArn, attributes, managedAttributes) {
119
+ const changedAttributes = await findChangedSubscriptionAttributes(snsClient, subscriptionArn, attributes, resolveManagedAttributes(attributes, managedAttributes));
120
+ await writeSubscriptionAttributes(snsClient, subscriptionArn, changedAttributes);
121
+ }
122
+ // SNS only allows setting a single attribute per call
123
+ async function writeSubscriptionAttributes(snsClient, subscriptionArn, attributes) {
124
+ for (const [key, value] of Object.entries(attributes)) {
125
+ await snsClient.send(new SetSubscriptionAttributesCommand({
126
+ SubscriptionArn: subscriptionArn,
95
127
  AttributeName: key,
96
- AttributeValue: value,
128
+ // AWS rejects an empty RedrivePolicy, omitting the value is what removes it
129
+ AttributeValue: key === 'RedrivePolicy' && value === '' ? undefined : value,
130
+ }));
131
+ }
132
+ }
133
+ // Values that reset an attribute to the state of a subscription where it was never set
134
+ const SUBSCRIPTION_ATTRIBUTE_UNSET_VALUES = {
135
+ FilterPolicy: '{}',
136
+ FilterPolicyScope: 'MessageAttributes',
137
+ RawMessageDelivery: 'false',
138
+ RedrivePolicy: '',
139
+ };
140
+ function isManagedAttributeName(name) {
141
+ return SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES.includes(name);
142
+ }
143
+ function resolveManagedAttributes(attributes, managedAttributes) {
144
+ const resolvedManagedAttributes = managedAttributes ?? SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES;
145
+ const unmanagedAttributes = Object.keys(attributes ?? {}).filter((name) => isManagedAttributeName(name) && !resolvedManagedAttributes.includes(name));
146
+ if (unmanagedAttributes.length > 0) {
147
+ throw new InternalError({
148
+ errorCode: 'invalid_subscription_configuration',
149
+ message: `Subscription attributes ${unmanagedAttributes.join(', ')} are set, but not listed in managedAttributes`,
97
150
  });
98
- });
99
- for (const command of setSubscriptionAttributesCommands) {
100
- await snsClient.send(command);
101
151
  }
102
- return subscription;
152
+ return resolvedManagedAttributes;
153
+ }
154
+ /**
155
+ * Compares the current attributes of the subscription with the expected ones. Every managed
156
+ * attribute is compared, falling back to its unset value when it is not configured. Configured
157
+ * attributes outside {@link SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES} are compared, but never reset.
158
+ */
159
+ async function findChangedSubscriptionAttributes(snsClient, subscriptionArn, attributes, managedAttributes) {
160
+ const expectedAttributes = {};
161
+ // Iterating in the declared order writes FilterPolicy before FilterPolicyScope
162
+ for (const name of SUBSCRIPTION_MANAGED_ATTRIBUTE_NAMES) {
163
+ if (managedAttributes.includes(name)) {
164
+ expectedAttributes[name] = attributes?.[name] ?? SUBSCRIPTION_ATTRIBUTE_UNSET_VALUES[name];
165
+ }
166
+ }
167
+ for (const [name, value] of Object.entries(attributes ?? {})) {
168
+ if (!isManagedAttributeName(name))
169
+ expectedAttributes[name] = value;
170
+ }
171
+ if (Object.keys(expectedAttributes).length === 0)
172
+ return {};
173
+ const currentAttributesResult = await getSubscriptionAttributes(snsClient, subscriptionArn);
174
+ const currentAttributes = currentAttributesResult.result?.attributes ?? {};
175
+ const changedAttributes = Object.fromEntries(Object.entries(expectedAttributes).filter(([name, value]) => !isSameAttributeValue(name, value, currentAttributes[name])));
176
+ // Filter policy scope means nothing without a filter policy, so it is not reset on its own
177
+ const resultingFilterPolicy = expectedAttributes.FilterPolicy ?? currentAttributes.FilterPolicy;
178
+ if (isUnsetAttributeValue('FilterPolicy', resultingFilterPolicy) &&
179
+ isUnsetAttributeValue('FilterPolicyScope', changedAttributes.FilterPolicyScope)) {
180
+ delete changedAttributes.FilterPolicyScope;
181
+ }
182
+ return changedAttributes;
183
+ }
184
+ function isUnsetAttributeValue(name, value) {
185
+ if (value === undefined || value === '')
186
+ return true;
187
+ if (name === 'FilterPolicy' && value === '{}')
188
+ return true;
189
+ return isManagedAttributeName(name) && SUBSCRIPTION_ATTRIBUTE_UNSET_VALUES[name] === value;
190
+ }
191
+ // JSON attributes are compared structurally, as SNS does not preserve their formatting
192
+ function isSameAttributeValue(name, expected, current) {
193
+ if (expected === current)
194
+ return true;
195
+ if (isUnsetAttributeValue(name, expected) && isUnsetAttributeValue(name, current))
196
+ return true;
197
+ if (current === undefined || !name.endsWith('Policy'))
198
+ return false;
199
+ try {
200
+ return isDeepStrictEqual(JSON.parse(expected), JSON.parse(current));
201
+ }
202
+ catch {
203
+ return false;
204
+ }
103
205
  }
104
206
  //# sourceMappingURL=snsSubscriber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export declare function assertTopic(snsClient: SNSClient, stsClient: STSClient,
11
11
  export declare function deleteTopic(snsClient: SNSClient, stsClient: STSClient, topicName: string): Promise<void>;
12
12
  export declare function deleteSubscription(client: SNSClient, subscriptionArn: string): Promise<void>;
13
13
  export declare function findSubscriptionByTopicAndQueue(snsClient: SNSClient, topicArn: string, queueArn: string): Promise<import("@aws-sdk/client-sns").Subscription | undefined>;
14
+ export declare function findConfirmedSubscriptionArn(snsClient: SNSClient, topicArn: string, queueArn: string): Promise<string | undefined>;
14
15
  /**
15
16
  * Calculates the size of an outgoing SNS message.
16
17
  *
@@ -144,6 +144,12 @@ export async function findSubscriptionByTopicAndQueue(snsClient, topicArn, queue
144
144
  } while (nextToken);
145
145
  return undefined;
146
146
  }
147
+ export async function findConfirmedSubscriptionArn(snsClient, topicArn, queueArn) {
148
+ const subscription = await findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn);
149
+ const subscriptionArn = subscription?.SubscriptionArn;
150
+ // Unconfirmed subscriptions are listed with a status placeholder instead of an ARN
151
+ return subscriptionArn?.startsWith('arn:') ? subscriptionArn : undefined;
152
+ }
147
153
  /**
148
154
  * Calculates the size of an outgoing SNS message.
149
155
  *
@@ -1 +1 @@
1
- {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../lib/utils/snsUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../lib/utils/snsUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/sns",
3
- "version": "27.1.0",
3
+ "version": "27.2.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "SNS adapter for message-queue-toolkit",
@@ -33,27 +33,27 @@
33
33
  "zod": "^4.5.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@aws-sdk/client-s3": "^3.1134.0",
37
- "@aws-sdk/client-sns": "^3.1134.0",
36
+ "@aws-sdk/client-s3": "^3.1138.0",
37
+ "@aws-sdk/client-sns": "^3.1138.0",
38
38
  "@aws-sdk/client-sqs": "^3.1134.0",
39
- "@aws-sdk/client-sts": "^3.1134.0",
39
+ "@aws-sdk/client-sts": "^3.1138.0",
40
40
  "@biomejs/biome": "^2.5.14",
41
41
  "@lokalise/biome-config": "^3.1.1",
42
42
  "@lokalise/tsconfig": "^5.0.0",
43
43
  "@message-queue-toolkit/core": "27.2.0",
44
44
  "@message-queue-toolkit/redis-message-deduplication-store": "3.0.1",
45
- "@message-queue-toolkit/s3-payload-store": "4.0.1",
46
- "@message-queue-toolkit/sqs": "27.1.0",
47
- "@types/node": "^26.6.1",
45
+ "@message-queue-toolkit/s3-payload-store": "4.0.2",
46
+ "@message-queue-toolkit/sqs": "27.2.0",
47
+ "@types/node": "^26.6.2",
48
48
  "@vitest/coverage-v8": "^5.0.1",
49
49
  "awilix": "^13.0.5",
50
- "awilix-manager": "^7.0.1",
51
- "fauxqs": "^2.12.0",
50
+ "awilix-manager": "^7.1.0",
51
+ "fauxqs": "^2.12.1",
52
52
  "ioredis": "^5.11.1",
53
53
  "rimraf": "^6.1.3",
54
54
  "typescript": "^7.0.2",
55
55
  "vitest": "^5.0.1",
56
- "zod": "^4.6.0"
56
+ "zod": "^4.6.5"
57
57
  },
58
58
  "homepage": "https://github.com/kibertoad/message-queue-toolkit",
59
59
  "repository": {