@message-queue-toolkit/sns 27.1.1 → 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 +102 -32
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sns/AbstractSnsSqsConsumer.d.ts +6 -1
- package/dist/sns/AbstractSnsSqsConsumer.js +29 -9
- package/dist/sns/AbstractSnsSqsConsumer.js.map +1 -1
- package/dist/utils/snsInitter.d.ts +6 -4
- package/dist/utils/snsInitter.js +32 -23
- package/dist/utils/snsInitter.js.map +1 -1
- package/dist/utils/snsSubscriber.d.ts +52 -7
- package/dist/utils/snsSubscriber.js +139 -37
- package/dist/utils/snsSubscriber.js.map +1 -1
- package/dist/utils/snsUtils.d.ts +1 -0
- package/dist/utils/snsUtils.js +6 -0
- package/dist/utils/snsUtils.js.map +1 -1
- package/package.json +2 -2
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
|
-
//
|
|
492
|
-
//
|
|
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`
|
|
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
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
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
|
|
545
|
-
|
|
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 (
|
|
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
|
|
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.
|
|
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
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
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,
|
|
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
|
|
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 &&
|
|
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.
|
|
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":"
|
|
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
|
|
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:
|
|
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;
|
package/dist/utils/snsInitter.js
CHANGED
|
@@ -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,
|
|
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
|
|
105
|
-
*
|
|
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 (
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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
|
-
|
|
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: !
|
|
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
|
-
|
|
10
|
-
|
|
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:
|
|
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.
|
|
24
|
-
*
|
|
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:
|
|
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,
|
|
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.
|
|
48
|
-
*
|
|
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
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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(
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/snsUtils.d.ts
CHANGED
|
@@ -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
|
*
|
package/dist/utils/snsUtils.js
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "27.2.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "SNS adapter for message-queue-toolkit",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@message-queue-toolkit/core": "27.2.0",
|
|
44
44
|
"@message-queue-toolkit/redis-message-deduplication-store": "3.0.1",
|
|
45
45
|
"@message-queue-toolkit/s3-payload-store": "4.0.2",
|
|
46
|
-
"@message-queue-toolkit/sqs": "27.
|
|
46
|
+
"@message-queue-toolkit/sqs": "27.2.0",
|
|
47
47
|
"@types/node": "^26.6.2",
|
|
48
48
|
"@vitest/coverage-v8": "^5.0.1",
|
|
49
49
|
"awilix": "^13.0.5",
|