@message-queue-toolkit/sns 27.0.1 → 27.1.1
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 +84 -2
- package/dist/utils/snsInitter.d.ts +17 -0
- package/dist/utils/snsInitter.js +180 -247
- package/dist/utils/snsInitter.js.map +1 -1
- package/dist/utils/snsSubscriber.d.ts +14 -0
- package/dist/utils/snsSubscriber.js +29 -24
- package/dist/utils/snsSubscriber.js.map +1 -1
- package/dist/utils/snsUtils.js +12 -7
- package/dist/utils/snsUtils.js.map +1 -1
- package/package.json +15 -15
package/README.md
CHANGED
|
@@ -17,6 +17,8 @@ both standard and FIFO topics.
|
|
|
17
17
|
- [Configuration](#configuration)
|
|
18
18
|
- [Topic Creation](#topic-creation)
|
|
19
19
|
- [Topic Locator](#topic-locator)
|
|
20
|
+
- [Resource Resolution](#resource-resolution)
|
|
21
|
+
- [Startup Resource Polling](#startup-resource-polling)
|
|
20
22
|
- [Publisher Options](#publisher-options)
|
|
21
23
|
- [Consumer Options](#consumer-options)
|
|
22
24
|
- [SNS-Specific Features](#sns-specific-features)
|
|
@@ -486,12 +488,65 @@ When using `locatorConfig`, you connect to an existing topic without creating it
|
|
|
486
488
|
// or
|
|
487
489
|
// queueName: 'my-queue',
|
|
488
490
|
|
|
489
|
-
// Optional: Existing subscription ARN
|
|
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)
|
|
490
493
|
subscriptionArn: 'arn:aws:sns:us-east-1:123456789012:my-topic:uuid',
|
|
491
494
|
},
|
|
492
495
|
}
|
|
493
496
|
```
|
|
494
497
|
|
|
498
|
+
### Resource Resolution
|
|
499
|
+
|
|
500
|
+
Consumers resolve the topic, the queue and the subscription independently, so each of them can either be managed by
|
|
501
|
+
your application or by external tooling (e.g. Terraform):
|
|
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 |
|
|
508
|
+
|
|
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.
|
|
513
|
+
|
|
514
|
+
```typescript
|
|
515
|
+
// Application manages everything
|
|
516
|
+
{
|
|
517
|
+
creationConfig: { topic: { Name: 'my-topic' }, queue: { QueueName: 'my-queue' } },
|
|
518
|
+
subscriptionConfig: { updateAttributesIfExists: true },
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
// Topic owned by another service, queue and subscription managed by the application
|
|
522
|
+
{
|
|
523
|
+
locatorConfig: { topicName: 'my-topic' },
|
|
524
|
+
creationConfig: { queue: { QueueName: 'my-queue' } },
|
|
525
|
+
subscriptionConfig: { updateAttributesIfExists: true },
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// Topic and queue managed externally, subscription (and its filter policy) managed by the application
|
|
529
|
+
{
|
|
530
|
+
locatorConfig: { topicName: 'my-topic', queueName: 'my-queue' },
|
|
531
|
+
subscriptionConfig: { updateAttributesIfExists: true },
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// Everything managed externally, the application only locates the resources
|
|
535
|
+
{
|
|
536
|
+
locatorConfig: { topicName: 'my-topic', queueName: 'my-queue' },
|
|
537
|
+
}
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
Some things to keep in mind when resources are managed externally:
|
|
541
|
+
|
|
542
|
+
- **Queue policy**: when the queue is located, the application does not set its policy. The external tooling must
|
|
543
|
+
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.
|
|
546
|
+
- **Permissions**: locating a subscription requires `sns:ListSubscriptionsByTopic`. Subscriptions pending
|
|
547
|
+
confirmation (e.g. cross-account) are not considered until they are confirmed.
|
|
548
|
+
- A missing located resource makes `init()` fail, unless startup resource polling is enabled (see below).
|
|
549
|
+
|
|
495
550
|
### Startup Resource Polling
|
|
496
551
|
|
|
497
552
|
When your SNS topic or SQS queue may not exist at startup (e.g., created by another service or infrastructure-as-code pipeline), you can enable polling to wait for resources to become available instead of failing immediately:
|
|
@@ -519,7 +574,8 @@ When your SNS topic or SQS queue may not exist at startup (e.g., created by anot
|
|
|
519
574
|
|
|
520
575
|
#### Blocking Mode (Default)
|
|
521
576
|
|
|
522
|
-
In blocking mode, `init()` or `start()` will wait until
|
|
577
|
+
In blocking mode, `init()` or `start()` will wait until the located resources (topic, queue and, when located, the
|
|
578
|
+
subscription) are available:
|
|
523
579
|
|
|
524
580
|
```typescript
|
|
525
581
|
const consumer = new MyConsumer(deps, {
|
|
@@ -650,6 +706,32 @@ const consumer = new MyConsumer(deps, {
|
|
|
650
706
|
await consumer.start()
|
|
651
707
|
```
|
|
652
708
|
|
|
709
|
+
#### Subscription Locate Mode
|
|
710
|
+
|
|
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:
|
|
713
|
+
|
|
714
|
+
```typescript
|
|
715
|
+
const consumer = new MyConsumer(deps, {
|
|
716
|
+
locatorConfig: {
|
|
717
|
+
topicName: 'my-topic', // Topic, queue and subscription created by infrastructure tooling
|
|
718
|
+
queueName: 'my-consumer-queue',
|
|
719
|
+
startupResourcePolling: {
|
|
720
|
+
enabled: true,
|
|
721
|
+
pollingIntervalMs: 5000,
|
|
722
|
+
timeoutMs: 60000,
|
|
723
|
+
},
|
|
724
|
+
},
|
|
725
|
+
// No subscriptionConfig - the subscription is located, never created
|
|
726
|
+
})
|
|
727
|
+
|
|
728
|
+
// This will:
|
|
729
|
+
// 1. Poll until the topic and the queue exist
|
|
730
|
+
// 2. Poll until the queue is subscribed to the topic
|
|
731
|
+
// 3. Start consuming
|
|
732
|
+
await consumer.start()
|
|
733
|
+
```
|
|
734
|
+
|
|
653
735
|
### Publisher Options
|
|
654
736
|
|
|
655
737
|
```typescript
|
|
@@ -47,6 +47,23 @@ export type InitSnsExtraParams = ExtraParams & {
|
|
|
47
47
|
topicArn: string;
|
|
48
48
|
}) => void;
|
|
49
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* Initializes an SNS topic, an SQS queue and the subscription of the queue to the topic. Each
|
|
52
|
+
* resource is resolved independently:
|
|
53
|
+
* - Topic: located when `locatorConfig.topicArn` or `locatorConfig.topicName` is given, otherwise
|
|
54
|
+
* created from `creationConfig.topic`.
|
|
55
|
+
* - Queue: located when `locatorConfig.queueUrl` or `locatorConfig.queueName` is given, otherwise
|
|
56
|
+
* created from `creationConfig.queue`.
|
|
57
|
+
* - Subscription: created (or updated) when `subscriptionConfig` is given, otherwise located by
|
|
58
|
+
* looking up the queue's subscription on the topic.
|
|
59
|
+
*
|
|
60
|
+
* When `locatorConfig.subscriptionArn` is given, every resource is located and `creationConfig` and
|
|
61
|
+
* `subscriptionConfig` are ignored.
|
|
62
|
+
*
|
|
63
|
+
* Located resources are waited for when `locatorConfig.startupResourcePolling` is enabled. In
|
|
64
|
+
* non-blocking mode, `undefined` is returned if they are not immediately available, and
|
|
65
|
+
* `onResourcesReady` is invoked once they are.
|
|
66
|
+
*/
|
|
50
67
|
export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: InitSnsSqsExtraParams): Promise<InitSnsSqsResult | undefined>;
|
|
51
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>;
|
|
52
69
|
export declare function deleteSns(snsClient: SNSClient, stsClient: STSClient, deletionConfig: DeletionConfig, creationConfig: SNSCreationConfig): Promise<void>;
|
package/dist/utils/snsInitter.js
CHANGED
|
@@ -1,271 +1,204 @@
|
|
|
1
|
-
import { isError } from '@lokalise/node-core';
|
|
1
|
+
import { InternalError, isError, isInternalError } from '@lokalise/node-core';
|
|
2
2
|
import { isProduction, isStartupResourcePollingEnabled, waitForResource, } from '@message-queue-toolkit/core';
|
|
3
|
-
import { deleteQueue, getQueueAttributes,
|
|
3
|
+
import { assertQueue, deleteQueue, getQueueAttributes, getQueueUrl, } from '@message-queue-toolkit/sqs';
|
|
4
4
|
import { isCreateTopicCommand } from '../types/TopicTypes.js';
|
|
5
|
-
import { subscribeToTopic } from './snsSubscriber.js';
|
|
6
|
-
import { assertTopic, deleteSubscription, deleteTopic, getTopicAttributes } from './snsUtils.js';
|
|
5
|
+
import { assertSubscription, subscribeToTopic } from './snsSubscriber.js';
|
|
6
|
+
import { assertTopic, deleteSubscription, deleteTopic, findSubscriptionByTopicAndQueue, getTopicAttributes, } from './snsUtils.js';
|
|
7
7
|
import { buildTopicArn } from './stsUtils.js';
|
|
8
|
-
|
|
9
|
-
async function
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
const RESOURCE_NOT_FOUND_ERROR_CODE = 'sns_sqs_resource_not_found';
|
|
9
|
+
async function waitForOrCheckResource(resourceName, notFoundMessage, checkFn, options) {
|
|
10
|
+
if (options.polling) {
|
|
11
|
+
const result = await waitForResource({
|
|
12
|
+
config: { ...options.polling, nonBlocking: false },
|
|
13
|
+
resourceName,
|
|
14
|
+
logger: options.extraParams?.logger,
|
|
15
|
+
errorReporter: options.extraParams?.errorReporter,
|
|
16
|
+
checkFn,
|
|
17
|
+
});
|
|
18
|
+
if (result === undefined)
|
|
19
|
+
throw new Error(`Could not resolve ${resourceName}`);
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
const checkResult = await checkFn();
|
|
23
|
+
if (!checkResult.isAvailable) {
|
|
24
|
+
throw new InternalError({ errorCode: RESOURCE_NOT_FOUND_ERROR_CODE, message: notFoundMessage });
|
|
25
|
+
}
|
|
26
|
+
return checkResult.result;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Topic is located when the locator references it, otherwise it is created.
|
|
30
|
+
* Locator takes precedence.
|
|
31
|
+
*/
|
|
32
|
+
async function resolveTopicArn(snsClient, stsClient, locatorConfig, creationConfig, options) {
|
|
33
|
+
const topicArn = locatorConfig?.topicArn ??
|
|
34
|
+
(locatorConfig?.topicName ? await buildTopicArn(stsClient, locatorConfig.topicName) : undefined);
|
|
35
|
+
if (topicArn) {
|
|
36
|
+
if (!options.polling && !options.checkLocatedTopic)
|
|
37
|
+
return topicArn;
|
|
38
|
+
return await waitForOrCheckResource(`SNS topic ${topicArn}`, `Topic with topicArn ${topicArn} does not exist.`, async () => {
|
|
18
39
|
const result = await getTopicAttributes(snsClient, topicArn);
|
|
19
|
-
if (result.error === 'not_found')
|
|
40
|
+
if (result.error === 'not_found')
|
|
20
41
|
return { isAvailable: false };
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
// Helper function to create subscription
|
|
28
|
-
async function createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams) {
|
|
29
|
-
const { subscriptionArn, topicArn, queueUrl, queueArn } = await subscribeToTopic(sqsClient, snsClient, stsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
|
|
30
|
-
updateAttributesIfExists: creationConfig.updateAttributesIfExists,
|
|
31
|
-
queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
|
|
32
|
-
allowedSourceOwner: creationConfig.allowedSourceOwner,
|
|
33
|
-
topicArnsWithPublishPermissionsPrefix: creationConfig.topicArnsWithPublishPermissionsPrefix,
|
|
34
|
-
logger: extraParams?.logger,
|
|
35
|
-
forceTagUpdate: creationConfig.forceTagUpdate,
|
|
36
|
-
});
|
|
37
|
-
if (!subscriptionArn) {
|
|
38
|
-
throw new Error('Failed to subscribe');
|
|
42
|
+
return { isAvailable: true, result: topicArn };
|
|
43
|
+
}, options);
|
|
44
|
+
}
|
|
45
|
+
if (!creationConfig?.topic) {
|
|
46
|
+
throw new Error('Either creationConfig.topic, locatorConfig.topicArn or locatorConfig.topicName must be provided');
|
|
39
47
|
}
|
|
40
|
-
return
|
|
48
|
+
return await assertTopic(snsClient, stsClient, creationConfig.topic, {
|
|
49
|
+
queueUrlsWithSubscribePermissionsPrefix: creationConfig?.queueUrlsWithSubscribePermissionsPrefix,
|
|
50
|
+
allowedSourceOwner: creationConfig?.allowedSourceOwner,
|
|
51
|
+
forceTagUpdate: creationConfig?.forceTagUpdate,
|
|
52
|
+
});
|
|
41
53
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
queueUrl: result.queueUrl,
|
|
53
|
-
queueArn: result.queueArn,
|
|
54
|
-
subscriptionArn: result.subscriptionArn,
|
|
55
|
-
queueName,
|
|
56
|
-
});
|
|
54
|
+
/**
|
|
55
|
+
* Queue is located when the locator references it, otherwise it is created.
|
|
56
|
+
* Locator takes precedence.
|
|
57
|
+
*/
|
|
58
|
+
async function resolveQueue(sqsClient, locatorConfig, creationConfig, options) {
|
|
59
|
+
const locatedQueueUrl = locatorConfig?.queueUrl;
|
|
60
|
+
const locatedQueueName = locatorConfig?.queueName;
|
|
61
|
+
if (!locatedQueueUrl && !locatedQueueName) {
|
|
62
|
+
if (!creationConfig?.queue) {
|
|
63
|
+
throw new Error('Either creationConfig.queue, locatorConfig.queueUrl or locatorConfig.queueName must be provided');
|
|
57
64
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
return assertQueue(sqsClient, creationConfig.queue, {
|
|
66
|
+
topicArnsWithPublishPermissionsPrefix: creationConfig.topicArnsWithPublishPermissionsPrefix,
|
|
67
|
+
updateAttributesIfExists: creationConfig.updateAttributesIfExists,
|
|
68
|
+
forceTagUpdate: creationConfig.forceTagUpdate,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const queueReference = locatedQueueUrl
|
|
72
|
+
? `queueUrl ${locatedQueueUrl}`
|
|
73
|
+
: `queueName ${locatedQueueName}`;
|
|
74
|
+
return await waitForOrCheckResource(`SQS queue with ${queueReference}`, `Queue with ${queueReference} does not exist.`, async () => {
|
|
75
|
+
// Queue URL is resolved on every check, so a queue located by name can be waited for as well
|
|
76
|
+
let queueUrl = locatedQueueUrl;
|
|
77
|
+
if (!queueUrl && locatedQueueName) {
|
|
78
|
+
const queueUrlResult = await getQueueUrl(sqsClient, locatedQueueName);
|
|
79
|
+
if (queueUrlResult.error === 'not_found')
|
|
80
|
+
return { isAvailable: false };
|
|
81
|
+
queueUrl = queueUrlResult.result;
|
|
67
82
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
};
|
|
83
|
+
if (!queueUrl)
|
|
84
|
+
return { isAvailable: false };
|
|
85
|
+
const queueAttributesResult = await getQueueAttributes(sqsClient, queueUrl, ['QueueArn']);
|
|
86
|
+
if (queueAttributesResult.error === 'not_found')
|
|
87
|
+
return { isAvailable: false };
|
|
88
|
+
const queueArn = queueAttributesResult.result?.attributes?.QueueArn;
|
|
89
|
+
if (!queueArn)
|
|
90
|
+
throw new Error(`Could not resolve QueueArn for queue at ${queueUrl}`);
|
|
91
|
+
const queueName = queueUrl.split('/').pop();
|
|
92
|
+
if (!queueName)
|
|
93
|
+
throw new Error(`Could not resolve queue name from queueUrl ${queueUrl}`);
|
|
94
|
+
return { isAvailable: true, result: { queueUrl, queueArn, queueName } };
|
|
95
|
+
}, options);
|
|
82
96
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
resourceName: `SQS queue ${queueUrl}`,
|
|
89
|
-
logger: extraParams?.logger,
|
|
90
|
-
errorReporter: extraParams?.errorReporter,
|
|
91
|
-
onResourceAvailable,
|
|
92
|
-
onError,
|
|
93
|
-
checkFn: async () => {
|
|
94
|
-
const result = await getQueueAttributes(sqsClient, queueUrl);
|
|
95
|
-
if (result.error === 'not_found') {
|
|
96
|
-
return { isAvailable: false };
|
|
97
|
-
}
|
|
98
|
-
return { isAvailable: true, result: result.result };
|
|
99
|
-
},
|
|
100
|
-
});
|
|
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;
|
|
101
102
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
103
|
+
/**
|
|
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.
|
|
106
|
+
*/
|
|
107
|
+
async function resolveSubscriptionArn(snsClient, topicArn, queue, locatorConfig, subscriptionConfig, options) {
|
|
108
|
+
if (locatorConfig?.subscriptionArn)
|
|
109
|
+
return locatorConfig.subscriptionArn;
|
|
110
|
+
if (subscriptionConfig) {
|
|
111
|
+
const subscriptionArn = await assertSubscription(snsClient, topicArn, queue.queueArn, subscriptionConfig, { queueName: queue.queueName, topicName: topicArn.split(':').pop() }, options.extraParams?.logger);
|
|
112
|
+
if (!subscriptionArn)
|
|
113
|
+
throw new Error('Failed to subscribe');
|
|
114
|
+
return subscriptionArn;
|
|
115
|
+
}
|
|
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);
|
|
122
|
+
}
|
|
123
|
+
async function resolveSnsSqsResources(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, options) {
|
|
124
|
+
const topicArn = await resolveTopicArn(snsClient, stsClient, locatorConfig, creationConfig, options);
|
|
125
|
+
const queue = await resolveQueue(sqsClient, locatorConfig, creationConfig, options);
|
|
126
|
+
const subscriptionArn = await resolveSubscriptionArn(snsClient, topicArn, queue, locatorConfig, subscriptionConfig, options);
|
|
127
|
+
return { topicArn, subscriptionArn, ...queue };
|
|
128
|
+
}
|
|
129
|
+
function validateInitSnsSqsConfig(locatorConfig, creationConfig, subscriptionConfig) {
|
|
130
|
+
if (!creationConfig?.topic && !locatorConfig?.topicArn && !locatorConfig?.topicName) {
|
|
131
|
+
throw new Error('If locatorConfig.subscriptionArn is not specified, creationConfig.topic is mandatory in order to attempt to create missing topic and subscribe to it OR locatorConfig.topicName or locatorConfig.topicArn parameter is mandatory, to create subscription for existing topic.');
|
|
132
|
+
}
|
|
133
|
+
if (!creationConfig?.queue && !locatorConfig?.queueUrl && !locatorConfig?.queueName) {
|
|
134
|
+
throw new Error('Either creationConfig.queue is mandatory in order to create the queue, or locatorConfig.queueUrl or locatorConfig.queueName is mandatory in order to locate the existing queue');
|
|
135
|
+
}
|
|
136
|
+
// Queue creation config is ignored when the queue is located
|
|
137
|
+
const isQueueLocated = !!(locatorConfig?.queueUrl || locatorConfig?.queueName);
|
|
138
|
+
if (!isQueueLocated && creationConfig?.queue) {
|
|
111
139
|
if (!creationConfig.queue.QueueName) {
|
|
112
140
|
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');
|
|
113
141
|
}
|
|
114
142
|
if (!subscriptionConfig) {
|
|
115
|
-
throw new Error('If
|
|
116
|
-
}
|
|
117
|
-
const topicResolutionOptions = {
|
|
118
|
-
...locatorConfig,
|
|
119
|
-
...creationConfig.topic,
|
|
120
|
-
};
|
|
121
|
-
// If startup resource polling is enabled and we're not creating the topic (just locating it),
|
|
122
|
-
// we should poll for the topic to exist before attempting to subscribe
|
|
123
|
-
const startupResourcePolling = locatorConfig?.startupResourcePolling;
|
|
124
|
-
if (isStartupResourcePollingEnabled(startupResourcePolling) &&
|
|
125
|
-
!isCreateTopicCommand(topicResolutionOptions)) {
|
|
126
|
-
// Validate that we have either topicArn or topicName to build the ARN
|
|
127
|
-
if (!topicResolutionOptions.topicArn && !topicResolutionOptions.topicName) {
|
|
128
|
-
throw new Error('When startup resource polling is enabled and topic is not being created, either topicArn or topicName must be provided in locatorConfig to identify the topic to poll for');
|
|
129
|
-
}
|
|
130
|
-
// topicName is guaranteed to be defined here because we validated above that at least one of topicArn or topicName is present
|
|
131
|
-
const topicArnToWaitFor = topicResolutionOptions.topicArn ??
|
|
132
|
-
(await buildTopicArn(stsClient, topicResolutionOptions.topicName));
|
|
133
|
-
return await createSubscriptionWithPolling(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, topicArnToWaitFor, startupResourcePolling, extraParams);
|
|
143
|
+
throw new Error('If creationConfig.queue is specified, subscriptionConfig is mandatory, as the subscription of a queue being created cannot be located');
|
|
134
144
|
}
|
|
135
|
-
// No polling needed - create subscription immediately
|
|
136
|
-
const { subscriptionArn, topicArn, queueUrl, queueArn } = await createSubscription(sqsClient, snsClient, stsClient, creationConfig, topicResolutionOptions, subscriptionConfig, extraParams);
|
|
137
|
-
return {
|
|
138
|
-
subscriptionArn,
|
|
139
|
-
topicArn,
|
|
140
|
-
queueName: creationConfig.queue.QueueName,
|
|
141
|
-
queueUrl,
|
|
142
|
-
queueArn,
|
|
143
|
-
};
|
|
144
145
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
const markQueueAvailable = (attrs) => {
|
|
175
|
-
const resolvedArn = attrs.attributes?.QueueArn;
|
|
176
|
-
if (!resolvedArn) {
|
|
177
|
-
extraParams?.onResourcesError?.(new Error(`Could not resolve QueueArn for queue at ${queueUrl}`), { isFinal: true });
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
queueArn = resolvedArn;
|
|
181
|
-
notifyIfBothReady();
|
|
182
|
-
};
|
|
183
|
-
// Wait for topic to become available
|
|
184
|
-
const { topicResult } = await pollForTopic(snsClient, subscriptionTopicArn, startupResourcePolling, extraParams, () => {
|
|
185
|
-
topicAvailable = true;
|
|
186
|
-
notifyIfBothReady();
|
|
187
|
-
}, (error, context) => {
|
|
188
|
-
extraParams?.onResourcesError?.(error, context);
|
|
189
|
-
});
|
|
190
|
-
// If topic was immediately available, mark it
|
|
191
|
-
if (topicResult !== undefined) {
|
|
192
|
-
topicAvailable = true;
|
|
193
|
-
}
|
|
194
|
-
// If non-blocking and topic wasn't immediately available, return early
|
|
195
|
-
// Background polling will continue and call notifyIfBothReady when topic is available
|
|
196
|
-
if (nonBlocking && topicResult === undefined) {
|
|
197
|
-
// Also start polling for queue in background so we can notify when both are ready
|
|
198
|
-
pollForQueue(sqsClient, queueUrl, startupResourcePolling, extraParams, (attrs) => markQueueAvailable(attrs), (error, context) => {
|
|
199
|
-
extraParams?.onResourcesError?.(error, context);
|
|
200
|
-
})
|
|
201
|
-
.then((result) => {
|
|
202
|
-
// If queue was immediately available, pollForQueue returns the result
|
|
203
|
-
// but doesn't call onResourceAvailable, so we handle it here
|
|
204
|
-
if (result !== undefined) {
|
|
205
|
-
markQueueAvailable(result);
|
|
206
|
-
}
|
|
207
|
-
})
|
|
208
|
-
.catch((err) => {
|
|
209
|
-
// Handle unexpected errors during background polling
|
|
210
|
-
const error = isError(err) ? err : new Error(String(err));
|
|
211
|
-
extraParams?.logger?.error({
|
|
212
|
-
message: 'Background queue polling failed unexpectedly',
|
|
213
|
-
queueUrl,
|
|
214
|
-
error,
|
|
215
|
-
});
|
|
216
|
-
extraParams?.onResourcesError?.(error, { isFinal: true });
|
|
217
|
-
});
|
|
218
|
-
// Non-blocking: caller will be notified via onResourcesReady when ready
|
|
219
|
-
return undefined;
|
|
220
|
-
}
|
|
221
|
-
// Wait for queue to become available
|
|
222
|
-
const queueResult = await pollForQueue(sqsClient, queueUrl, startupResourcePolling, extraParams, (attrs) => markQueueAvailable(attrs));
|
|
223
|
-
// If queue was immediately available, mark it (reuses the same attrs)
|
|
224
|
-
if (queueResult !== undefined) {
|
|
225
|
-
markQueueAvailable(queueResult);
|
|
226
|
-
queueAttributes = queueResult;
|
|
227
|
-
}
|
|
228
|
-
// Non-blocking: caller will be notified via onResourcesReady when ready
|
|
229
|
-
if (nonBlocking && queueResult === undefined)
|
|
230
|
-
return undefined;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Initializes an SNS topic, an SQS queue and the subscription of the queue to the topic. Each
|
|
149
|
+
* resource is resolved independently:
|
|
150
|
+
* - Topic: located when `locatorConfig.topicArn` or `locatorConfig.topicName` is given, otherwise
|
|
151
|
+
* created from `creationConfig.topic`.
|
|
152
|
+
* - Queue: located when `locatorConfig.queueUrl` or `locatorConfig.queueName` is given, otherwise
|
|
153
|
+
* created from `creationConfig.queue`.
|
|
154
|
+
* - Subscription: created (or updated) when `subscriptionConfig` is given, otherwise located by
|
|
155
|
+
* looking up the queue's subscription on the topic.
|
|
156
|
+
*
|
|
157
|
+
* When `locatorConfig.subscriptionArn` is given, every resource is located and `creationConfig` and
|
|
158
|
+
* `subscriptionConfig` are ignored.
|
|
159
|
+
*
|
|
160
|
+
* Located resources are waited for when `locatorConfig.startupResourcePolling` is enabled. In
|
|
161
|
+
* non-blocking mode, `undefined` is returned if they are not immediately available, and
|
|
162
|
+
* `onResourcesReady` is invoked once they are.
|
|
163
|
+
*/
|
|
164
|
+
export async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
|
|
165
|
+
const isFullyLocated = !!locatorConfig?.subscriptionArn;
|
|
166
|
+
const resolvedCreationConfig = isFullyLocated ? undefined : creationConfig;
|
|
167
|
+
const resolvedSubscriptionConfig = isFullyLocated ? undefined : subscriptionConfig;
|
|
168
|
+
validateInitSnsSqsConfig(locatorConfig, resolvedCreationConfig, resolvedSubscriptionConfig);
|
|
169
|
+
const resolve = (options) => resolveSnsSqsResources(sqsClient, snsClient, stsClient, locatorConfig, resolvedCreationConfig, resolvedSubscriptionConfig, { ...options, extraParams });
|
|
170
|
+
const startupResourcePolling = locatorConfig?.startupResourcePolling;
|
|
171
|
+
if (!isStartupResourcePollingEnabled(startupResourcePolling)) {
|
|
172
|
+
return await resolve({ checkLocatedTopic: !resolvedSubscriptionConfig });
|
|
231
173
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
const [topicCheckResult, queueCheckResult] = await Promise.all([
|
|
235
|
-
getTopicAttributes(snsClient, subscriptionTopicArn),
|
|
236
|
-
getQueueAttributes(sqsClient, queueUrl),
|
|
237
|
-
]);
|
|
238
|
-
if (queueCheckResult.error === 'not_found') {
|
|
239
|
-
throw new Error(`Queue with queueUrl ${queueUrl} does not exist.`);
|
|
240
|
-
}
|
|
241
|
-
if (topicCheckResult.error === 'not_found') {
|
|
242
|
-
throw new Error(`Topic with topicArn ${subscriptionTopicArn} does not exist.`);
|
|
243
|
-
}
|
|
244
|
-
// Capture so the final return below can read QueueArn without a re-fetch
|
|
245
|
-
queueAttributes = queueCheckResult.result;
|
|
174
|
+
if (startupResourcePolling.nonBlocking !== true) {
|
|
175
|
+
return await resolve({ polling: startupResourcePolling, checkLocatedTopic: true });
|
|
246
176
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
queueName = splitUrl[splitUrl.length - 1];
|
|
177
|
+
// Non-blocking: resources are returned directly if they are all available on the first check,
|
|
178
|
+
// otherwise they keep being resolved in background and onResourcesReady is invoked once ready
|
|
179
|
+
try {
|
|
180
|
+
return await resolve({ checkLocatedTopic: true });
|
|
252
181
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
182
|
+
catch (err) {
|
|
183
|
+
if (!isInternalError(err) || err.errorCode !== RESOURCE_NOT_FOUND_ERROR_CODE)
|
|
184
|
+
throw err;
|
|
185
|
+
extraParams?.logger?.info({
|
|
186
|
+
message: 'SNS/SQS resources not immediately available, resolving them in background',
|
|
187
|
+
reason: err.message,
|
|
188
|
+
});
|
|
256
189
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
190
|
+
resolve({ polling: startupResourcePolling, checkLocatedTopic: true })
|
|
191
|
+
.then((result) => extraParams?.onResourcesReady?.(result))
|
|
192
|
+
.catch((err) => {
|
|
193
|
+
const error = isError(err) ? err : new Error(String(err));
|
|
194
|
+
extraParams?.logger?.error({
|
|
195
|
+
message: 'Background SNS/SQS resources resolution failed',
|
|
196
|
+
error,
|
|
197
|
+
});
|
|
198
|
+
// Blocking polling only throws when it gives up, so the error is final
|
|
199
|
+
extraParams?.onResourcesError?.(error, { isFinal: true });
|
|
200
|
+
});
|
|
201
|
+
return undefined;
|
|
269
202
|
}
|
|
270
203
|
export async function deleteSnsSqs(sqsClient, snsClient, stsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
|
|
271
204
|
if (!deletionConfig.deleteIfExists) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { SNSClient, SubscribeCommandInput } from '@aws-sdk/client-sns';
|
|
2
2
|
import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs';
|
|
3
3
|
import type { STSClient } from '@aws-sdk/client-sts';
|
|
4
|
+
import { type CommonLogger } from '@lokalise/node-core';
|
|
4
5
|
import type { ExtraParams } from '@message-queue-toolkit/core';
|
|
5
6
|
import type { ExtraSQSCreationParams } from '@message-queue-toolkit/sqs';
|
|
6
7
|
import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService.ts';
|
|
@@ -8,9 +9,22 @@ import { type TopicResolutionOptions } from '../types/TopicTypes.ts';
|
|
|
8
9
|
export type SNSSubscriptionOptions = Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'> & {
|
|
9
10
|
updateAttributesIfExists: boolean;
|
|
10
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Asserts the SNS topic (or resolves the ARN of a located one), asserts the SQS queue and then
|
|
14
|
+
* asserts the subscription of the queue to the topic.
|
|
15
|
+
*/
|
|
11
16
|
export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: TopicResolutionOptions, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams & ExtraParams): Promise<{
|
|
12
17
|
subscriptionArn: string | undefined;
|
|
13
18
|
topicArn: string;
|
|
14
19
|
queueUrl: string;
|
|
15
20
|
queueArn: string;
|
|
16
21
|
}>;
|
|
22
|
+
/**
|
|
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.
|
|
26
|
+
*/
|
|
27
|
+
export declare function assertSubscription(snsClient: SNSClient, topicArn: string, queueArn: string, subscriptionConfiguration: SNSSubscriptionOptions, errorContext: {
|
|
28
|
+
queueName?: string;
|
|
29
|
+
topicName?: string;
|
|
30
|
+
}, logger?: CommonLogger): Promise<string | undefined>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SetSubscriptionAttributesCommand, SubscribeCommand } from '@aws-sdk/client-sns';
|
|
2
|
-
import { InternalError, isError, stringValueSerializer } from '@lokalise/node-core';
|
|
2
|
+
import { InternalError, isError, stringValueSerializer, } from '@lokalise/node-core';
|
|
3
3
|
import { assertQueue } from '@message-queue-toolkit/sqs';
|
|
4
4
|
import { isCreateTopicCommand, isSNSTopicLocatorType, } from '../types/TopicTypes.js';
|
|
5
5
|
import { assertTopic, findSubscriptionByTopicAndQueue } from './snsUtils.js';
|
|
@@ -24,6 +24,10 @@ async function resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfigura
|
|
|
24
24
|
details: { topicConfiguration: stringValueSerializer(topicConfiguration) },
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Asserts the SNS topic (or resolves the ARN of a located one), asserts the SQS queue and then
|
|
29
|
+
* asserts the subscription of the queue to the topic.
|
|
30
|
+
*/
|
|
27
31
|
export async function subscribeToTopic(sqsClient, snsClient, stsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
|
|
28
32
|
const topicArn = await resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfiguration, extraParams);
|
|
29
33
|
const { queueUrl, queueArn } = await assertQueue(sqsClient, queueConfiguration, {
|
|
@@ -31,6 +35,20 @@ export async function subscribeToTopic(sqsClient, snsClient, stsClient, queueCon
|
|
|
31
35
|
updateAttributesIfExists: extraParams?.updateAttributesIfExists,
|
|
32
36
|
forceTagUpdate: extraParams?.forceTagUpdate,
|
|
33
37
|
});
|
|
38
|
+
const subscriptionArn = await assertSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration, {
|
|
39
|
+
queueName: queueConfiguration.QueueName,
|
|
40
|
+
topicName: isCreateTopicCommand(topicConfiguration)
|
|
41
|
+
? topicConfiguration.Name
|
|
42
|
+
: topicConfiguration.topicName,
|
|
43
|
+
}, extraParams?.logger);
|
|
44
|
+
return { subscriptionArn, topicArn, queueUrl, queueArn };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
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.
|
|
50
|
+
*/
|
|
51
|
+
export async function assertSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration, errorContext, logger) {
|
|
34
52
|
const subscribeCommand = new SubscribeCommand({
|
|
35
53
|
TopicArn: topicArn,
|
|
36
54
|
Endpoint: queueArn,
|
|
@@ -40,41 +58,28 @@ export async function subscribeToTopic(sqsClient, snsClient, stsClient, queueCon
|
|
|
40
58
|
});
|
|
41
59
|
try {
|
|
42
60
|
const subscriptionResult = await snsClient.send(subscribeCommand);
|
|
43
|
-
return
|
|
44
|
-
subscriptionArn: subscriptionResult.SubscriptionArn,
|
|
45
|
-
topicArn,
|
|
46
|
-
queueUrl,
|
|
47
|
-
queueArn,
|
|
48
|
-
};
|
|
61
|
+
return subscriptionResult.SubscriptionArn;
|
|
49
62
|
}
|
|
50
63
|
catch (err) {
|
|
51
64
|
if (!isError(err))
|
|
52
65
|
throw err;
|
|
53
|
-
const
|
|
54
|
-
const errMessage = `Error while creating subscription for queue "${
|
|
55
|
-
? topicConfiguration.Name
|
|
56
|
-
: topicConfiguration.topicName}": ${err.message}`;
|
|
66
|
+
const resolvedLogger = logger ?? console;
|
|
67
|
+
const errMessage = `Error while creating subscription for queue "${errorContext.queueName}", topic "${errorContext.topicName}": ${err.message}`;
|
|
57
68
|
if (subscriptionConfiguration.updateAttributesIfExists &&
|
|
58
|
-
err.message.
|
|
59
|
-
|
|
69
|
+
err.message.includes('Subscription already exists with different attributes')) {
|
|
70
|
+
resolvedLogger.warn(`${errMessage}. Trying to update subscription`);
|
|
60
71
|
const result = await tryToUpdateSubscription(snsClient, topicArn, queueArn, subscriptionConfiguration);
|
|
61
|
-
if (result)
|
|
62
|
-
return
|
|
63
|
-
|
|
64
|
-
topicArn,
|
|
65
|
-
queueUrl,
|
|
66
|
-
queueArn,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
logger.error('Failed to update subscription');
|
|
72
|
+
if (result)
|
|
73
|
+
return result.SubscriptionArn;
|
|
74
|
+
resolvedLogger.error('Failed to update subscription');
|
|
70
75
|
}
|
|
71
76
|
else {
|
|
72
|
-
|
|
77
|
+
resolvedLogger.error(errMessage);
|
|
73
78
|
}
|
|
74
79
|
throw new InternalError({
|
|
75
80
|
errorCode: 'sns_subscription_creation_failed',
|
|
76
81
|
message: errMessage,
|
|
77
|
-
details: { queueName:
|
|
82
|
+
details: { queueName: errorContext.queueName, topicArn, originalError: err.message },
|
|
78
83
|
cause: err,
|
|
79
84
|
});
|
|
80
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGxF,OAAO,
|
|
1
|
+
{"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/snsUtils.js
CHANGED
|
@@ -131,13 +131,18 @@ export async function deleteSubscription(client, subscriptionArn) {
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
export async function findSubscriptionByTopicAndQueue(snsClient, topicArn, queueArn) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
134
|
+
// ListSubscriptionsByTopic returns up to 100 subscriptions per page
|
|
135
|
+
let nextToken;
|
|
136
|
+
do {
|
|
137
|
+
const listSubscriptionResult = await snsClient.send(new ListSubscriptionsByTopicCommand({ TopicArn: topicArn, NextToken: nextToken }));
|
|
138
|
+
const subscription = listSubscriptionResult.Subscriptions?.find((entry) => {
|
|
139
|
+
return entry.Protocol === 'sqs' && entry.Endpoint === queueArn;
|
|
140
|
+
});
|
|
141
|
+
if (subscription)
|
|
142
|
+
return subscription;
|
|
143
|
+
nextToken = listSubscriptionResult.NextToken;
|
|
144
|
+
} while (nextToken);
|
|
145
|
+
return undefined;
|
|
141
146
|
}
|
|
142
147
|
/**
|
|
143
148
|
* Calculates the size of an outgoing SNS message.
|
|
@@ -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":"AAAA,OAAO,EACL,kBAAkB,EAElB,kBAAkB,EAClB,gCAAgC,EAChC,yBAAyB,EACzB,+BAA+B,EAC/B,0BAA0B,EAC1B,yBAAyB,EAEzB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAe,aAAa,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,4BAA4B,IAAI,+BAA+B,EAAE,MAAM,4BAA4B,CAAA;AAE5G,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAM7C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAoB,EACpB,QAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC;QAC5C,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO;YACL,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC;SACF,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wDAAwD;QACxD,mBAAmB;QACnB,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChE,OAAO;gBACL,KAAK,EAAE,WAAW;aACnB,CAAA;QACH,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAoB,EACpB,eAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,gCAAgC,CAAC;QACnD,eAAe,EAAE,eAAe;KACjC,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO;YACL,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC;SACF,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,+DAA+D;QAC/D,mBAAmB;QACnB,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChE,OAAO;gBACL,KAAK,EAAE,WAAW;aACnB,CAAA;QACH,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAoB,EACpB,SAAoB,EACpB,YAAqC,EACrC,WAAoC;IAEpC,IAAI,QAAgB,CAAA;IACpB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACnE,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAA;QAChC,gGAAgG;QAChG,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,yCAAyC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,aAAa,CAAC;gBACtB,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE;gBAClD,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE;gBACzC,SAAS,EAAE,2CAA2C;aACvD,CAAC,CAAA;QACJ,CAAC;QAED,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;QAC5D,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,IAAI,CACtC,IAAI,0BAA0B,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAC1D,CAAA;YACD,MAAM,IAAI,aAAa,CAAC;gBACtB,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE;gBAClD,OAAO,EAAE;oBACP,SAAS,EAAE,YAAY,CAAC,IAAI;oBAC5B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;oBACxC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;iBAC3C;gBACD,SAAS,EAAE,8CAA8C;gBACzD,KAAK,EAAE,KAAK;aACb,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,uCAAuC,IAAI,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAC5F,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAAC;YAC9D,QAAQ,EAAE,QAAQ;YAClB,aAAa,EAAE,QAAQ;YACvB,cAAc,EAAE,+BAA+B,CAAC;gBAC9C,QAAQ;gBACR,wBAAwB,EAAE,WAAW,CAAC,uCAAuC;gBAC7E,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;aACnD,CAAC;SACH,CAAC,CAAA;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACjD,CAAC;IACD,IAAI,WAAW,EAAE,cAAc,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,eAAe,GAAG,IAAI,kBAAkB,CAAC;YAC7C,WAAW,EAAE,QAAQ;YACrB,IAAI,EAAE,YAAY,CAAC,IAAI;SACxB,CAAC,CAAA;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAoB,EAAE,SAAoB,EAAE,SAAiB;IAC7F,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE;YACvD,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QAEF,MAAM,SAAS,CAAC,IAAI,CAClB,IAAI,kBAAkB,CAAC;YACrB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CACH,CAAA;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wCAAwC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAiB,EAAE,eAAuB;IACjF,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC;QACrC,eAAe,EAAE,eAAe;KACjC,CAAC,CAAA;IACF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wCAAwC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,SAAoB,EACpB,QAAgB,EAChB,QAAgB;IAEhB,oEAAoE;IACpE,IAAI,SAA6B,CAAA;IACjC,GAAG,CAAC;QACF,MAAM,sBAAsB,GAAG,MAAM,SAAS,CAAC,IAAI,CACjD,IAAI,+BAA+B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAClF,CAAA;QACD,MAAM,YAAY,GAAG,sBAAsB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACxE,OAAO,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAA;QAChE,CAAC,CAAC,CAAA;QACF,IAAI,YAAY;YAAE,OAAO,YAAY,CAAA;QAErC,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAA;IAC9C,CAAC,QAAQ,SAAS,EAAC;IAEnB,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC/D,+BAA+B,CAAC,OAAO,CAAC,CAAA;AAE1C;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,WAAoB;IAC3E,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAE9C,IAAI,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,4DAA4D,SAAS,EAAE,CAAC,CAAA;IAC1F,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,mFAAmF,SAAS,EAAE,CAC/F,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,yCAAyC,GAAG,CAAC,KAAc,EAAE,EAAE,CACnE,CAAC,CAAC,KAAK;IACP,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,IAAI,KAAK;IAChB,CAAC,CAAC,KAAK,CAAC,KAAK;IACb,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;IAC/B,MAAM,IAAI,KAAK,CAAC,KAAK;IACrB,SAAS,IAAI,KAAK,CAAC,KAAK;IACxB,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ;IACvC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB;IACvC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@message-queue-toolkit/sns",
|
|
3
|
-
"version": "27.
|
|
3
|
+
"version": "27.1.1",
|
|
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.
|
|
37
|
-
"@aws-sdk/client-sns": "^3.
|
|
38
|
-
"@aws-sdk/client-sqs": "^3.
|
|
39
|
-
"@aws-sdk/client-sts": "^3.
|
|
40
|
-
"@biomejs/biome": "^2.5.
|
|
36
|
+
"@aws-sdk/client-s3": "^3.1138.0",
|
|
37
|
+
"@aws-sdk/client-sns": "^3.1138.0",
|
|
38
|
+
"@aws-sdk/client-sqs": "^3.1134.0",
|
|
39
|
+
"@aws-sdk/client-sts": "^3.1138.0",
|
|
40
|
+
"@biomejs/biome": "^2.5.14",
|
|
41
41
|
"@lokalise/biome-config": "^3.1.1",
|
|
42
42
|
"@lokalise/tsconfig": "^5.0.0",
|
|
43
|
-
"@message-queue-toolkit/core": "27.0
|
|
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.
|
|
46
|
-
"@message-queue-toolkit/sqs": "27.
|
|
47
|
-
"@types/node": "^26.
|
|
48
|
-
"@vitest/coverage-v8": "^
|
|
45
|
+
"@message-queue-toolkit/s3-payload-store": "4.0.2",
|
|
46
|
+
"@message-queue-toolkit/sqs": "27.1.1",
|
|
47
|
+
"@types/node": "^26.6.2",
|
|
48
|
+
"@vitest/coverage-v8": "^5.0.1",
|
|
49
49
|
"awilix": "^13.0.5",
|
|
50
|
-
"awilix-manager": "^7.
|
|
51
|
-
"fauxqs": "^2.12.
|
|
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
|
-
"vitest": "^
|
|
56
|
-
"zod": "^4.5
|
|
55
|
+
"vitest": "^5.0.1",
|
|
56
|
+
"zod": "^4.6.5"
|
|
57
57
|
},
|
|
58
58
|
"homepage": "https://github.com/kibertoad/message-queue-toolkit",
|
|
59
59
|
"repository": {
|