@message-queue-toolkit/sns 17.3.0 → 18.0.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/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/sns/AbstractSnsService.d.ts +4 -0
- package/dist/lib/sns/AbstractSnsService.js +4 -2
- package/dist/lib/sns/AbstractSnsService.js.map +1 -1
- package/dist/lib/sns/AbstractSnsSqsConsumer.d.ts +3 -0
- package/dist/lib/sns/AbstractSnsSqsConsumer.js +4 -2
- package/dist/lib/sns/AbstractSnsSqsConsumer.js.map +1 -1
- package/dist/lib/sns/SnsPublisherManager.js +1 -0
- package/dist/lib/sns/SnsPublisherManager.js.map +1 -1
- package/dist/lib/utils/snsInitter.d.ts +5 -4
- package/dist/lib/utils/snsInitter.js +10 -9
- package/dist/lib/utils/snsInitter.js.map +1 -1
- package/dist/lib/utils/snsSubscriber.d.ts +2 -1
- package/dist/lib/utils/snsSubscriber.js +5 -4
- package/dist/lib/utils/snsSubscriber.js.map +1 -1
- package/dist/lib/utils/snsUtils.d.ts +4 -3
- package/dist/lib/utils/snsUtils.js +51 -11
- package/dist/lib/utils/snsUtils.js.map +1 -1
- package/dist/lib/utils/stsUtils.d.ts +8 -0
- package/dist/lib/utils/stsUtils.js +35 -0
- package/dist/lib/utils/stsUtils.js.map +1 -0
- package/package.json +4 -3
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export { AbstractSnsSqsConsumer } from './lib/sns/AbstractSnsSqsConsumer';
|
|
|
9
9
|
export type { CommonMessage } from './lib/types/MessageTypes';
|
|
10
10
|
export { deserializeSNSMessage } from './lib/utils/snsMessageDeserializer';
|
|
11
11
|
export { assertTopic, deleteTopic, getTopicAttributes, deleteSubscription, findSubscriptionByTopicAndQueue, getSubscriptionAttributes, } from './lib/utils/snsUtils';
|
|
12
|
+
export { clearCachedCallerIdentity } from './lib/utils/stsUtils';
|
|
12
13
|
export { subscribeToTopic } from './lib/utils/snsSubscriber';
|
|
13
14
|
export { initSns, initSnsSqs } from './lib/utils/snsInitter';
|
|
14
15
|
export { readSnsMessage } from './lib/utils/snsMessageReader';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FakeConsumer = exports.generateTopicSubscriptionPolicy = exports.generateFilterAttributes = exports.readSnsMessage = exports.initSnsSqs = exports.initSns = exports.subscribeToTopic = exports.getSubscriptionAttributes = exports.findSubscriptionByTopicAndQueue = exports.deleteSubscription = exports.getTopicAttributes = exports.deleteTopic = exports.assertTopic = exports.deserializeSNSMessage = exports.AbstractSnsSqsConsumer = exports.AbstractSnsPublisher = exports.SnsConsumerErrorResolver = exports.AbstractSnsService = exports.SNS_MESSAGE_MAX_SIZE = void 0;
|
|
3
|
+
exports.FakeConsumer = exports.generateTopicSubscriptionPolicy = exports.generateFilterAttributes = exports.readSnsMessage = exports.initSnsSqs = exports.initSns = exports.subscribeToTopic = exports.clearCachedCallerIdentity = exports.getSubscriptionAttributes = exports.findSubscriptionByTopicAndQueue = exports.deleteSubscription = exports.getTopicAttributes = exports.deleteTopic = exports.assertTopic = exports.deserializeSNSMessage = exports.AbstractSnsSqsConsumer = exports.AbstractSnsPublisher = exports.SnsConsumerErrorResolver = exports.AbstractSnsService = exports.SNS_MESSAGE_MAX_SIZE = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
var AbstractSnsService_1 = require("./lib/sns/AbstractSnsService");
|
|
6
6
|
Object.defineProperty(exports, "SNS_MESSAGE_MAX_SIZE", { enumerable: true, get: function () { return AbstractSnsService_1.SNS_MESSAGE_MAX_SIZE; } });
|
|
@@ -21,6 +21,8 @@ Object.defineProperty(exports, "getTopicAttributes", { enumerable: true, get: fu
|
|
|
21
21
|
Object.defineProperty(exports, "deleteSubscription", { enumerable: true, get: function () { return snsUtils_1.deleteSubscription; } });
|
|
22
22
|
Object.defineProperty(exports, "findSubscriptionByTopicAndQueue", { enumerable: true, get: function () { return snsUtils_1.findSubscriptionByTopicAndQueue; } });
|
|
23
23
|
Object.defineProperty(exports, "getSubscriptionAttributes", { enumerable: true, get: function () { return snsUtils_1.getSubscriptionAttributes; } });
|
|
24
|
+
var stsUtils_1 = require("./lib/utils/stsUtils");
|
|
25
|
+
Object.defineProperty(exports, "clearCachedCallerIdentity", { enumerable: true, get: function () { return stsUtils_1.clearCachedCallerIdentity; } });
|
|
24
26
|
var snsSubscriber_1 = require("./lib/utils/snsSubscriber");
|
|
25
27
|
Object.defineProperty(exports, "subscribeToTopic", { enumerable: true, get: function () { return snsSubscriber_1.subscribeToTopic; } });
|
|
26
28
|
var snsInitter_1 = require("./lib/utils/snsInitter");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAQA,mEAAmE;AAA1D,0HAAA,oBAAoB,OAAA;AAE7B,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAGjC,uEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAM7B,2EAAyE;AAAhE,gIAAA,sBAAsB,OAAA;AAI/B,6EAA0E;AAAjE,+HAAA,qBAAqB,OAAA;AAE9B,iDAO6B;AAN3B,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,2HAAA,+BAA+B,OAAA;AAC/B,qHAAA,yBAAyB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAQA,mEAAmE;AAA1D,0HAAA,oBAAoB,OAAA;AAE7B,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAGjC,uEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAM7B,2EAAyE;AAAhE,gIAAA,sBAAsB,OAAA;AAI/B,6EAA0E;AAAjE,+HAAA,qBAAqB,OAAA;AAE9B,iDAO6B;AAN3B,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,2HAAA,+BAA+B,OAAA;AAC/B,qHAAA,yBAAyB,OAAA;AAE3B,iDAAgE;AAAvD,qHAAA,yBAAyB,OAAA;AAElC,2DAA4D;AAAnD,iHAAA,gBAAgB,OAAA;AACzB,qDAA4D;AAAnD,qGAAA,OAAO,OAAA;AAAE,wGAAA,UAAU,OAAA;AAC5B,iEAA6D;AAApD,kHAAA,cAAc,OAAA;AACvB,mEAGsC;AAFpC,6HAAA,wBAAwB,OAAA;AACxB,oIAAA,+BAA+B,OAAA;AAGjC,8EAAmD;AACnD,wEAA6C;AAE7C,6DAA2D;AAAlD,4GAAA,YAAY,OAAA"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { CreateTopicCommandInput, SNSClient, Tag } from '@aws-sdk/client-sns';
|
|
2
2
|
import type { QueueDependencies, QueueOptions } from '@message-queue-toolkit/core';
|
|
3
3
|
import { AbstractQueueService } from '@message-queue-toolkit/core';
|
|
4
|
+
import type { STSClient } from '@aws-sdk/client-sts';
|
|
4
5
|
import type { SNS_MESSAGE_BODY_TYPE } from '../types/MessageTypes';
|
|
5
6
|
export declare const SNS_MESSAGE_MAX_SIZE: number;
|
|
6
7
|
export type SNSDependencies = QueueDependencies & {
|
|
7
8
|
snsClient: SNSClient;
|
|
9
|
+
stsClient: STSClient;
|
|
8
10
|
};
|
|
9
11
|
export type SNSTopicAWSConfig = CreateTopicCommandInput;
|
|
10
12
|
export type SNSTopicConfig = {
|
|
@@ -23,6 +25,7 @@ export type SNSTopicConfig = {
|
|
|
23
25
|
export type ExtraSNSCreationParams = {
|
|
24
26
|
queueUrlsWithSubscribePermissionsPrefix?: string | readonly string[];
|
|
25
27
|
allowedSourceOwner?: string;
|
|
28
|
+
forceTagUpdate?: boolean;
|
|
26
29
|
};
|
|
27
30
|
export type SNSCreationConfig = {
|
|
28
31
|
topic?: SNSTopicAWSConfig;
|
|
@@ -35,6 +38,7 @@ export type SNSTopicLocatorType = {
|
|
|
35
38
|
export type SNSOptions = QueueOptions<SNSCreationConfig, SNSTopicLocatorType>;
|
|
36
39
|
export declare abstract class AbstractSnsService<MessagePayloadType extends object, MessageEnvelopeType extends object = SNS_MESSAGE_BODY_TYPE, SNSOptionsType extends SNSOptions = SNSOptions, DependenciesType extends SNSDependencies = SNSDependencies> extends AbstractQueueService<MessagePayloadType, MessageEnvelopeType, DependenciesType, SNSCreationConfig, SNSTopicLocatorType, SNSOptionsType> {
|
|
37
40
|
protected readonly snsClient: SNSClient;
|
|
41
|
+
protected readonly stsClient: STSClient;
|
|
38
42
|
protected topicArn: string;
|
|
39
43
|
constructor(dependencies: DependenciesType, options: SNSOptionsType);
|
|
40
44
|
init(): Promise<void>;
|
|
@@ -7,17 +7,19 @@ const snsInitter_1 = require("../utils/snsInitter");
|
|
|
7
7
|
exports.SNS_MESSAGE_MAX_SIZE = 256 * 1024; // 256KB
|
|
8
8
|
class AbstractSnsService extends core_1.AbstractQueueService {
|
|
9
9
|
snsClient;
|
|
10
|
+
stsClient;
|
|
10
11
|
// @ts-ignore
|
|
11
12
|
topicArn;
|
|
12
13
|
constructor(dependencies, options) {
|
|
13
14
|
super(dependencies, options);
|
|
14
15
|
this.snsClient = dependencies.snsClient;
|
|
16
|
+
this.stsClient = dependencies.stsClient;
|
|
15
17
|
}
|
|
16
18
|
async init() {
|
|
17
19
|
if (this.deletionConfig && this.creationConfig) {
|
|
18
|
-
await (0, snsInitter_1.deleteSns)(this.snsClient, this.deletionConfig, this.creationConfig);
|
|
20
|
+
await (0, snsInitter_1.deleteSns)(this.snsClient, this.stsClient, this.deletionConfig, this.creationConfig);
|
|
19
21
|
}
|
|
20
|
-
const initResult = await (0, snsInitter_1.initSns)(this.snsClient, this.locatorConfig, this.creationConfig);
|
|
22
|
+
const initResult = await (0, snsInitter_1.initSns)(this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig);
|
|
21
23
|
this.topicArn = initResult.topicArn;
|
|
22
24
|
this.isInitted = true;
|
|
23
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":";;;AAEA,sDAAkE;
|
|
1
|
+
{"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":";;;AAEA,sDAAkE;AAIlE,oDAAwD;AAExD,yDAAyD;AAC5C,QAAA,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,QAAQ;AAyCvD,MAAsB,kBAKpB,SAAQ,2BAOT;IACoB,SAAS,CAAW;IACpB,SAAS,CAAW;IACvC,aAAa;IACH,QAAQ,CAAQ;IAE1B,YAAY,YAA8B,EAAE,OAAuB;QACjE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,IAAA,sBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3F,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAA,oBAAO,EAC9B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAEe,KAAK;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF;AA5CD,gDA4CC"}
|
|
@@ -2,9 +2,11 @@ import type { SNSClient } from '@aws-sdk/client-sns';
|
|
|
2
2
|
import type { SQSConsumerDependencies, SQSConsumerOptions, SQSCreationConfig, SQSMessage, SQSQueueLocatorType } from '@message-queue-toolkit/sqs';
|
|
3
3
|
import { AbstractSqsConsumer } from '@message-queue-toolkit/sqs';
|
|
4
4
|
import type { SNSSubscriptionOptions } from '../utils/snsSubscriber';
|
|
5
|
+
import type { STSClient } from '@aws-sdk/client-sts';
|
|
5
6
|
import type { SNSCreationConfig, SNSOptions, SNSTopicLocatorType } from './AbstractSnsService';
|
|
6
7
|
export type SNSSQSConsumerDependencies = SQSConsumerDependencies & {
|
|
7
8
|
snsClient: SNSClient;
|
|
9
|
+
stsClient: STSClient;
|
|
8
10
|
};
|
|
9
11
|
export type SNSSQSCreationConfig = SQSCreationConfig & SNSCreationConfig;
|
|
10
12
|
export type SNSSQSQueueLocatorType = Partial<SQSQueueLocatorType> & SNSTopicLocatorType & {
|
|
@@ -16,6 +18,7 @@ export type SNSSQSConsumerOptions<MessagePayloadType extends object, ExecutionCo
|
|
|
16
18
|
export declare abstract class AbstractSnsSqsConsumer<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> extends AbstractSqsConsumer<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SNSSQSCreationConfig, SNSSQSQueueLocatorType, SNSSQSConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>> {
|
|
17
19
|
private readonly subscriptionConfig?;
|
|
18
20
|
private readonly snsClient;
|
|
21
|
+
private readonly stsClient;
|
|
19
22
|
protected topicArn: string;
|
|
20
23
|
protected subscriptionArn: string;
|
|
21
24
|
protected constructor(dependencies: SNSSQSConsumerDependencies, options: SNSSQSConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>, executionContext: ExecutionContext);
|
|
@@ -7,6 +7,7 @@ const snsMessageReader_1 = require("../utils/snsMessageReader");
|
|
|
7
7
|
class AbstractSnsSqsConsumer extends sqs_1.AbstractSqsConsumer {
|
|
8
8
|
subscriptionConfig;
|
|
9
9
|
snsClient;
|
|
10
|
+
stsClient;
|
|
10
11
|
// @ts-ignore
|
|
11
12
|
topicArn;
|
|
12
13
|
// @ts-ignore
|
|
@@ -17,15 +18,16 @@ class AbstractSnsSqsConsumer extends sqs_1.AbstractSqsConsumer {
|
|
|
17
18
|
}, executionContext);
|
|
18
19
|
this.subscriptionConfig = options.subscriptionConfig;
|
|
19
20
|
this.snsClient = dependencies.snsClient;
|
|
21
|
+
this.stsClient = dependencies.stsClient;
|
|
20
22
|
}
|
|
21
23
|
async init() {
|
|
22
24
|
if (this.deletionConfig && this.creationConfig && this.subscriptionConfig) {
|
|
23
|
-
await (0, snsInitter_1.deleteSnsSqs)(this.sqsClient, this.snsClient, this.deletionConfig, this.creationConfig.queue, this.creationConfig.topic, this.subscriptionConfig, undefined, this.locatorConfig);
|
|
25
|
+
await (0, snsInitter_1.deleteSnsSqs)(this.sqsClient, this.snsClient, this.stsClient, this.deletionConfig, this.creationConfig.queue, this.creationConfig.topic, this.subscriptionConfig, undefined, this.locatorConfig);
|
|
24
26
|
}
|
|
25
27
|
else if (this.deletionConfig && this.creationConfig) {
|
|
26
28
|
await (0, sqs_1.deleteSqs)(this.sqsClient, this.deletionConfig, this.creationConfig);
|
|
27
29
|
}
|
|
28
|
-
const initSnsSqsResult = await (0, snsInitter_1.initSnsSqs)(this.sqsClient, this.snsClient, this.locatorConfig, this.creationConfig, this.subscriptionConfig, { logger: this.logger });
|
|
30
|
+
const initSnsSqsResult = await (0, snsInitter_1.initSnsSqs)(this.sqsClient, this.snsClient, this.stsClient, this.locatorConfig, this.creationConfig, this.subscriptionConfig, { logger: this.logger });
|
|
29
31
|
this.queueName = initSnsSqsResult.queueName;
|
|
30
32
|
this.queueUrl = initSnsSqsResult.queueUrl;
|
|
31
33
|
this.topicArn = initSnsSqsResult.topicArn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":";;;AAQA,oDAA2E;AAE3E,oDAA8D;AAC9D,gEAA0D;
|
|
1
|
+
{"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":";;;AAQA,oDAA2E;AAE3E,oDAA8D;AAC9D,gEAA0D;AAgC1D,MAAsB,sBAIpB,SAAQ,yBAOT;IACkB,kBAAkB,CAAyB;IAC3C,SAAS,CAAW;IACpB,SAAS,CAAW;IAErC,aAAa;IACH,QAAQ,CAAQ;IAC1B,aAAa;IACH,eAAe,CAAQ;IAEjC,YACE,YAAwC,EACxC,OAAyF,EACzF,gBAAkC;QAElC,KAAK,CACH,YAAY,EACZ;YACE,GAAG,OAAO;SACX,EACD,gBAAgB,CACjB,CAAA;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1E,MAAM,IAAA,yBAAY,EAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,kBAAkB,EACvB,SAAS,EACT,IAAI,CAAC,aAAa,CACnB,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,IAAA,eAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,IAAA,uBAAU,EACvC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,kBAAkB,EACvB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAA;QAEvD,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;IAClC,CAAC;IAEkB,cAAc,CAAC,OAAmB;QACnD,MAAM,MAAM,GAAG,IAAA,iCAAc,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,qDAAqD;QACrD,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAEkB,aAAa,CAAC,cAAqC;QACpE,OAAO,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IACnE,CAAC;CACF;AAtFD,wDAsFC"}
|
|
@@ -13,6 +13,7 @@ class SnsPublisherManager extends core_1.AbstractPublisherManager {
|
|
|
13
13
|
newPublisherOptions: options.newPublisherOptions,
|
|
14
14
|
publisherDependencies: {
|
|
15
15
|
snsClient: dependencies.snsClient,
|
|
16
|
+
stsClient: dependencies.stsClient,
|
|
16
17
|
logger: dependencies.logger,
|
|
17
18
|
errorReporter: dependencies.errorReporter,
|
|
18
19
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnsPublisherManager.js","sourceRoot":"","sources":["../../../lib/sns/SnsPublisherManager.ts"],"names":[],"mappings":";;;AAOA,sDAAsE;AAYtE,2EAAuE;AA0BvE,MAAa,mBAIX,SAAQ,+BAeT;IACC,YACE,YAAwE,EACxE,OAIC;QAED,KAAK,CAAC;YACJ,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,YAAY,CAAC,aAAa;YACzC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,UAAU;YAClD,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,qBAAqB,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,aAAa,EAAE,YAAY,CAAC,aAAa;aAC1C;YACD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,qDAAyB,EAAE;SAC9E,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CACL,KAAiE,EACjE,OAA8D,EAC9D,sBAA8C,EAC9C,cAAkC;QAElC,4EAA4E;QAC5E,kCAAkC;QAClC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,CAAC,CAAA;IAC9E,CAAC;IAEkB,qBAAqB,CACtC,WAAuE;QAEvE,OAAO;YACL,GAAG,IAAI,CAAC,mBAAmB;YAC3B,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;aAClB;SACF,CAAA;IACH,CAAC;IAEkB,kBAAkB,CACnC,KAA8B;QAE9B,OAAO,KAAK,CAAC,QAAQ,CAAA;IACvB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"SnsPublisherManager.js","sourceRoot":"","sources":["../../../lib/sns/SnsPublisherManager.ts"],"names":[],"mappings":";;;AAOA,sDAAsE;AAYtE,2EAAuE;AA0BvE,MAAa,mBAIX,SAAQ,+BAeT;IACC,YACE,YAAwE,EACxE,OAIC;QAED,KAAK,CAAC;YACJ,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,YAAY,CAAC,aAAa;YACzC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,UAAU;YAClD,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,qBAAqB,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,aAAa,EAAE,YAAY,CAAC,aAAa;aAC1C;YACD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,qDAAyB,EAAE;SAC9E,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CACL,KAAiE,EACjE,OAA8D,EAC9D,sBAA8C,EAC9C,cAAkC;QAElC,4EAA4E;QAC5E,kCAAkC;QAClC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,CAAC,CAAA;IAC9E,CAAC;IAEkB,qBAAqB,CACtC,WAAuE;QAEvE,OAAO;YACL,GAAG,IAAI,CAAC,mBAAmB;YAC3B,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;aAClB;SACF,CAAA;IACH,CAAC;IAEkB,kBAAkB,CACnC,KAA8B;QAE9B,OAAO,KAAK,CAAC,QAAQ,CAAA;IACvB,CAAC;CACF;AAvED,kDAuEC"}
|
|
@@ -4,15 +4,16 @@ import type { DeletionConfig, ExtraParams } from '@message-queue-toolkit/core';
|
|
|
4
4
|
import type { SQSCreationConfig } from '@message-queue-toolkit/sqs';
|
|
5
5
|
import type { SNSCreationConfig, SNSTopicLocatorType } from '../sns/AbstractSnsService';
|
|
6
6
|
import type { SNSSQSQueueLocatorType } from '../sns/AbstractSnsSqsConsumer';
|
|
7
|
+
import type { STSClient } from '@aws-sdk/client-sts';
|
|
7
8
|
import type { SNSSubscriptionOptions } from './snsSubscriber';
|
|
8
|
-
export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: ExtraParams): Promise<{
|
|
9
|
+
export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: ExtraParams): Promise<{
|
|
9
10
|
subscriptionArn: string;
|
|
10
11
|
topicArn: string;
|
|
11
12
|
queueUrl: string;
|
|
12
13
|
queueName: string;
|
|
13
14
|
}>;
|
|
14
|
-
export declare function deleteSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, deletionConfig: DeletionConfig, queueConfiguration: CreateQueueCommandInput, topicConfiguration: CreateTopicCommandInput | undefined, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraParams, topicLocator?: SNSTopicLocatorType): Promise<void>;
|
|
15
|
-
export declare function deleteSns(snsClient: SNSClient, deletionConfig: DeletionConfig, creationConfig: SNSCreationConfig): Promise<void>;
|
|
16
|
-
export declare function initSns(snsClient: SNSClient, locatorConfig?: SNSTopicLocatorType, creationConfig?: SNSCreationConfig): Promise<{
|
|
15
|
+
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>;
|
|
16
|
+
export declare function deleteSns(snsClient: SNSClient, stsClient: STSClient, deletionConfig: DeletionConfig, creationConfig: SNSCreationConfig): Promise<void>;
|
|
17
|
+
export declare function initSns(snsClient: SNSClient, stsClient: STSClient, locatorConfig?: SNSTopicLocatorType, creationConfig?: SNSCreationConfig): Promise<{
|
|
17
18
|
topicArn: string;
|
|
18
19
|
}>;
|
|
@@ -10,7 +10,7 @@ const TopicTypes_1 = require("../types/TopicTypes");
|
|
|
10
10
|
const snsSubscriber_1 = require("./snsSubscriber");
|
|
11
11
|
const snsUtils_1 = require("./snsUtils");
|
|
12
12
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>
|
|
13
|
-
async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
|
|
13
|
+
async function initSnsSqs(sqsClient, snsClient, stsClient, locatorConfig, creationConfig, subscriptionConfig, extraParams) {
|
|
14
14
|
if (!locatorConfig?.subscriptionArn) {
|
|
15
15
|
if (!creationConfig?.topic && !locatorConfig?.topicArn && !locatorConfig?.topicName) {
|
|
16
16
|
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.name or locatorConfig.topicArn parameter is mandatory, to create subscription for existing topic.');
|
|
@@ -28,7 +28,7 @@ async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, s
|
|
|
28
28
|
...locatorConfig,
|
|
29
29
|
...creationConfig.topic,
|
|
30
30
|
};
|
|
31
|
-
const { subscriptionArn, topicArn, queueUrl } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
|
|
31
|
+
const { subscriptionArn, topicArn, queueUrl } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, stsClient, creationConfig.queue, topicResolutionOptions, subscriptionConfig, {
|
|
32
32
|
updateAttributesIfExists: creationConfig.updateAttributesIfExists,
|
|
33
33
|
queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
|
|
34
34
|
allowedSourceOwner: creationConfig.allowedSourceOwner,
|
|
@@ -80,14 +80,14 @@ async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, s
|
|
|
80
80
|
queueName,
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
|
-
async function deleteSnsSqs(sqsClient, snsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
|
|
83
|
+
async function deleteSnsSqs(sqsClient, snsClient, stsClient, deletionConfig, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams, topicLocator) {
|
|
84
84
|
if (!deletionConfig.deleteIfExists) {
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
87
|
if ((0, core_1.isProduction)() && !deletionConfig.forceDeleteInProduction) {
|
|
88
88
|
throw new Error('You are running autodeletion in production. This can and probably will cause a loss of data. If you are absolutely sure you want to do this, please set deletionConfig.forceDeleteInProduction to true');
|
|
89
89
|
}
|
|
90
|
-
const { subscriptionArn } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, queueConfiguration, topicConfiguration ?? topicLocator, subscriptionConfiguration, extraParams);
|
|
90
|
+
const { subscriptionArn } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, stsClient, queueConfiguration, topicConfiguration ?? topicLocator, subscriptionConfiguration, extraParams);
|
|
91
91
|
if (!subscriptionArn) {
|
|
92
92
|
throw new Error('subscriptionArn must be set for automatic deletion');
|
|
93
93
|
}
|
|
@@ -101,11 +101,11 @@ async function deleteSnsSqs(sqsClient, snsClient, deletionConfig, queueConfigura
|
|
|
101
101
|
if (!topicName) {
|
|
102
102
|
throw new Error('Failed to resolve topic name');
|
|
103
103
|
}
|
|
104
|
-
await (0, snsUtils_1.deleteTopic)(snsClient, topicName);
|
|
104
|
+
await (0, snsUtils_1.deleteTopic)(snsClient, stsClient, topicName);
|
|
105
105
|
}
|
|
106
106
|
await (0, snsUtils_1.deleteSubscription)(snsClient, subscriptionArn);
|
|
107
107
|
}
|
|
108
|
-
async function deleteSns(snsClient, deletionConfig, creationConfig) {
|
|
108
|
+
async function deleteSns(snsClient, stsClient, deletionConfig, creationConfig) {
|
|
109
109
|
if (!deletionConfig.deleteIfExists) {
|
|
110
110
|
return;
|
|
111
111
|
}
|
|
@@ -115,9 +115,9 @@ async function deleteSns(snsClient, deletionConfig, creationConfig) {
|
|
|
115
115
|
if (!creationConfig.topic?.Name) {
|
|
116
116
|
throw new Error('topic.Name must be set for automatic deletion');
|
|
117
117
|
}
|
|
118
|
-
await (0, snsUtils_1.deleteTopic)(snsClient, creationConfig.topic.Name);
|
|
118
|
+
await (0, snsUtils_1.deleteTopic)(snsClient, stsClient, creationConfig.topic.Name);
|
|
119
119
|
}
|
|
120
|
-
async function initSns(snsClient, locatorConfig, creationConfig) {
|
|
120
|
+
async function initSns(snsClient, stsClient, locatorConfig, creationConfig) {
|
|
121
121
|
if (locatorConfig) {
|
|
122
122
|
const topicArn = locatorConfig.topicArn ?? (await (0, snsUtils_1.getTopicArnByName)(snsClient, locatorConfig.topicName));
|
|
123
123
|
const checkResult = await (0, snsUtils_1.getTopicAttributes)(snsClient, topicArn);
|
|
@@ -132,9 +132,10 @@ async function initSns(snsClient, locatorConfig, creationConfig) {
|
|
|
132
132
|
if (!creationConfig) {
|
|
133
133
|
throw new Error('When locatorConfig for the topic is not specified, creationConfig of the topic is mandatory');
|
|
134
134
|
}
|
|
135
|
-
const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, creationConfig.topic, {
|
|
135
|
+
const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, stsClient, creationConfig.topic, {
|
|
136
136
|
queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
|
|
137
137
|
allowedSourceOwner: creationConfig.allowedSourceOwner,
|
|
138
|
+
forceTagUpdate: creationConfig.forceTagUpdate,
|
|
138
139
|
});
|
|
139
140
|
return {
|
|
140
141
|
topicArn,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../../lib/utils/snsInitter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,12 @@ import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs';
|
|
|
4
4
|
import type { ExtraParams } from '@message-queue-toolkit/core';
|
|
5
5
|
import type { ExtraSQSCreationParams } from '@message-queue-toolkit/sqs';
|
|
6
6
|
import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
|
|
7
|
+
import type { STSClient } from '@aws-sdk/client-sts';
|
|
7
8
|
import { type TopicResolutionOptions } from '../types/TopicTypes';
|
|
8
9
|
export type SNSSubscriptionOptions = Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'> & {
|
|
9
10
|
updateAttributesIfExists: boolean;
|
|
10
11
|
};
|
|
11
|
-
export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: TopicResolutionOptions, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams & ExtraParams): Promise<{
|
|
12
|
+
export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, stsClient: STSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: TopicResolutionOptions, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams & ExtraParams): Promise<{
|
|
12
13
|
subscriptionArn: string | undefined;
|
|
13
14
|
topicArn: string;
|
|
14
15
|
queueUrl: string;
|
|
@@ -5,23 +5,24 @@ const client_sns_1 = require("@aws-sdk/client-sns");
|
|
|
5
5
|
const sqs_1 = require("@message-queue-toolkit/sqs");
|
|
6
6
|
const TopicTypes_1 = require("../types/TopicTypes");
|
|
7
7
|
const snsUtils_1 = require("./snsUtils");
|
|
8
|
-
async function resolveTopicArnToSubscribeTo(
|
|
8
|
+
async function resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfiguration, extraParams) {
|
|
9
9
|
//If topicArn is present, let's use it and return early.
|
|
10
10
|
if ((0, TopicTypes_1.isSNSTopicLocatorType)(topicConfiguration) && topicConfiguration.topicArn) {
|
|
11
11
|
return topicConfiguration.topicArn;
|
|
12
12
|
}
|
|
13
13
|
//If input configuration is capable of creating a topic, let's create it and return its ARN.
|
|
14
14
|
if ((0, TopicTypes_1.isCreateTopicCommand)(topicConfiguration)) {
|
|
15
|
-
return await (0, snsUtils_1.assertTopic)(snsClient, topicConfiguration, {
|
|
15
|
+
return await (0, snsUtils_1.assertTopic)(snsClient, stsClient, topicConfiguration, {
|
|
16
16
|
queueUrlsWithSubscribePermissionsPrefix: extraParams?.queueUrlsWithSubscribePermissionsPrefix,
|
|
17
17
|
allowedSourceOwner: extraParams?.allowedSourceOwner,
|
|
18
|
+
forceTagUpdate: extraParams?.forceTagUpdate,
|
|
18
19
|
});
|
|
19
20
|
}
|
|
20
21
|
//Last option: let's not create a topic but resolve a ARN based on the desired topic name.
|
|
21
22
|
return await (0, snsUtils_1.getTopicArnByName)(snsClient, topicConfiguration.topicName);
|
|
22
23
|
}
|
|
23
|
-
async function subscribeToTopic(sqsClient, snsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
|
|
24
|
-
const topicArn = await resolveTopicArnToSubscribeTo(
|
|
24
|
+
async function subscribeToTopic(sqsClient, snsClient, stsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
|
|
25
|
+
const topicArn = await resolveTopicArnToSubscribeTo(snsClient, stsClient, topicConfiguration, extraParams);
|
|
25
26
|
const { queueUrl, queueArn } = await (0, sqs_1.assertQueue)(sqsClient, queueConfiguration, {
|
|
26
27
|
topicArnsWithPublishPermissionsPrefix: extraParams?.topicArnsWithPublishPermissionsPrefix,
|
|
27
28
|
updateAttributesIfExists: extraParams?.updateAttributesIfExists,
|
|
@@ -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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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { type CreateTopicCommandInput, type SNSClient } from '@aws-sdk/client-sns';
|
|
2
|
-
import type
|
|
2
|
+
import { type Either } from '@lokalise/node-core';
|
|
3
3
|
import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
|
|
4
|
+
import type { STSClient } from '@aws-sdk/client-sts';
|
|
4
5
|
type AttributesResult = {
|
|
5
6
|
attributes?: Record<string, string>;
|
|
6
7
|
};
|
|
7
8
|
export declare function getTopicAttributes(snsClient: SNSClient, topicArn: string): Promise<Either<'not_found', AttributesResult>>;
|
|
8
9
|
export declare function getSubscriptionAttributes(snsClient: SNSClient, subscriptionArn: string): Promise<Either<'not_found', AttributesResult>>;
|
|
9
|
-
export declare function assertTopic(snsClient: SNSClient, topicOptions: CreateTopicCommandInput, extraParams?: ExtraSNSCreationParams): Promise<string>;
|
|
10
|
-
export declare function deleteTopic(
|
|
10
|
+
export declare function assertTopic(snsClient: SNSClient, stsClient: STSClient, topicOptions: CreateTopicCommandInput, extraParams?: ExtraSNSCreationParams): Promise<string>;
|
|
11
|
+
export declare function deleteTopic(snsClient: SNSClient, stsClient: STSClient, topicName: string): Promise<void>;
|
|
11
12
|
export declare function deleteSubscription(client: SNSClient, subscriptionArn: string): Promise<void>;
|
|
12
13
|
export declare function findSubscriptionByTopicAndQueue(snsClient: SNSClient, topicArn: string, queueArn: string): Promise<import("@aws-sdk/client-sns").Subscription | undefined>;
|
|
13
14
|
export declare function getTopicArnByName(snsClient: SNSClient, topicName?: string): Promise<string>;
|
|
@@ -10,8 +10,10 @@ exports.findSubscriptionByTopicAndQueue = findSubscriptionByTopicAndQueue;
|
|
|
10
10
|
exports.getTopicArnByName = getTopicArnByName;
|
|
11
11
|
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
12
12
|
const client_sns_2 = require("@aws-sdk/client-sns");
|
|
13
|
+
const node_core_1 = require("@lokalise/node-core");
|
|
13
14
|
const sqs_1 = require("@message-queue-toolkit/sqs");
|
|
14
15
|
const snsAttributeUtils_1 = require("./snsAttributeUtils");
|
|
16
|
+
const stsUtils_1 = require("./stsUtils");
|
|
15
17
|
async function getTopicAttributes(snsClient, topicArn) {
|
|
16
18
|
const command = new client_sns_2.GetTopicAttributesCommand({
|
|
17
19
|
TopicArn: topicArn,
|
|
@@ -58,13 +60,35 @@ async function getSubscriptionAttributes(snsClient, subscriptionArn) {
|
|
|
58
60
|
throw err;
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
|
-
async function assertTopic(snsClient, topicOptions, extraParams) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
async function assertTopic(snsClient, stsClient, topicOptions, extraParams) {
|
|
64
|
+
let topicArn;
|
|
65
|
+
try {
|
|
66
|
+
const command = new client_sns_2.CreateTopicCommand(topicOptions);
|
|
67
|
+
const response = await snsClient.send(command);
|
|
68
|
+
if (!response.TopicArn)
|
|
69
|
+
throw new Error('No topic arn in response');
|
|
70
|
+
topicArn = response.TopicArn;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (!(0, node_core_1.isError)(error))
|
|
74
|
+
throw error;
|
|
75
|
+
// To build ARN we need topic name and error should be "topic already exist with different tags"
|
|
76
|
+
if (!topicOptions.Name || !isTopicAlreadyExistWithDifferentTagsError(error))
|
|
77
|
+
throw error;
|
|
78
|
+
topicArn = await (0, stsUtils_1.buildTopicArn)(stsClient, topicOptions.Name);
|
|
79
|
+
if (!extraParams?.forceTagUpdate) {
|
|
80
|
+
const currentTags = await snsClient.send(new client_sns_1.ListTagsForResourceCommand({ ResourceArn: topicArn }));
|
|
81
|
+
throw new node_core_1.InternalError({
|
|
82
|
+
message: `${topicOptions.Name} - ${error.message}`,
|
|
83
|
+
details: {
|
|
84
|
+
currentTags: JSON.stringify(currentTags),
|
|
85
|
+
newTags: JSON.stringify(topicOptions.Tags),
|
|
86
|
+
},
|
|
87
|
+
errorCode: 'SNS_TOPIC_ALREADY_EXISTS_WITH_DIFFERENT_TAGS',
|
|
88
|
+
cause: error,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
66
91
|
}
|
|
67
|
-
const topicArn = response.TopicArn;
|
|
68
92
|
if (extraParams?.queueUrlsWithSubscribePermissionsPrefix || extraParams?.allowedSourceOwner) {
|
|
69
93
|
const setTopicAttributesCommand = new client_sns_2.SetTopicAttributesCommand({
|
|
70
94
|
TopicArn: topicArn,
|
|
@@ -77,17 +101,23 @@ async function assertTopic(snsClient, topicOptions, extraParams) {
|
|
|
77
101
|
});
|
|
78
102
|
await snsClient.send(setTopicAttributesCommand);
|
|
79
103
|
}
|
|
104
|
+
if (extraParams?.forceTagUpdate && topicOptions.Tags) {
|
|
105
|
+
const tagTopicCommand = new client_sns_1.TagResourceCommand({
|
|
106
|
+
ResourceArn: topicArn,
|
|
107
|
+
Tags: topicOptions.Tags,
|
|
108
|
+
});
|
|
109
|
+
await snsClient.send(tagTopicCommand);
|
|
110
|
+
}
|
|
80
111
|
return topicArn;
|
|
81
112
|
}
|
|
82
|
-
async function deleteTopic(
|
|
113
|
+
async function deleteTopic(snsClient, stsClient, topicName) {
|
|
83
114
|
try {
|
|
84
|
-
const topicArn = await assertTopic(
|
|
115
|
+
const topicArn = await assertTopic(snsClient, stsClient, {
|
|
85
116
|
Name: topicName,
|
|
86
117
|
});
|
|
87
|
-
|
|
118
|
+
await snsClient.send(new client_sns_2.DeleteTopicCommand({
|
|
88
119
|
TopicArn: topicArn,
|
|
89
|
-
});
|
|
90
|
-
await client.send(command);
|
|
120
|
+
}));
|
|
91
121
|
}
|
|
92
122
|
catch (_) {
|
|
93
123
|
// we don't care it operation has failed
|
|
@@ -141,4 +171,14 @@ async function getTopicArnByName(snsClient, topicName) {
|
|
|
141
171
|
*/
|
|
142
172
|
const calculateOutgoingMessageSize = (message) => (0, sqs_1.calculateOutgoingMessageSize)(message);
|
|
143
173
|
exports.calculateOutgoingMessageSize = calculateOutgoingMessageSize;
|
|
174
|
+
const isTopicAlreadyExistWithDifferentTagsError = (error) => !!error &&
|
|
175
|
+
(0, node_core_1.isError)(error) &&
|
|
176
|
+
'Error' in error &&
|
|
177
|
+
!!error.Error &&
|
|
178
|
+
typeof error.Error === 'object' &&
|
|
179
|
+
'Code' in error.Error &&
|
|
180
|
+
'Message' in error.Error &&
|
|
181
|
+
typeof error.Error.Message === 'string' &&
|
|
182
|
+
error.Error.Code === 'InvalidParameter' &&
|
|
183
|
+
error.Error.Message.includes('already exists with different tags');
|
|
144
184
|
//# sourceMappingURL=snsUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsUtils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type STSClient } from '@aws-sdk/client-sts';
|
|
2
|
+
/**
|
|
3
|
+
* Manually builds the ARN of a topic based on the current AWS account and the topic name.
|
|
4
|
+
* It follows the following pattern: arn:aws:sns:<region>:<account-id>:<topic-name>
|
|
5
|
+
* Doc -> https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html
|
|
6
|
+
*/
|
|
7
|
+
export declare const buildTopicArn: (client: STSClient, topicName: string) => Promise<string>;
|
|
8
|
+
export declare const clearCachedCallerIdentity: () => void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearCachedCallerIdentity = exports.buildTopicArn = void 0;
|
|
4
|
+
const client_sts_1 = require("@aws-sdk/client-sts");
|
|
5
|
+
let callerIdentityPromise;
|
|
6
|
+
let callerIdentityCached;
|
|
7
|
+
/**
|
|
8
|
+
* Manually builds the ARN of a topic based on the current AWS account and the topic name.
|
|
9
|
+
* It follows the following pattern: arn:aws:sns:<region>:<account-id>:<topic-name>
|
|
10
|
+
* Doc -> https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html
|
|
11
|
+
*/
|
|
12
|
+
const buildTopicArn = async (client, topicName) => {
|
|
13
|
+
const identityResponse = await getAndCacheCallerIdentity(client);
|
|
14
|
+
const region = typeof client.config.region === 'string' ? client.config.region : await client.config.region();
|
|
15
|
+
return `arn:aws:sns:${region}:${identityResponse.Account}:${topicName}`;
|
|
16
|
+
};
|
|
17
|
+
exports.buildTopicArn = buildTopicArn;
|
|
18
|
+
const clearCachedCallerIdentity = () => {
|
|
19
|
+
callerIdentityPromise = undefined;
|
|
20
|
+
callerIdentityCached = undefined;
|
|
21
|
+
};
|
|
22
|
+
exports.clearCachedCallerIdentity = clearCachedCallerIdentity;
|
|
23
|
+
const getAndCacheCallerIdentity = async (client) => {
|
|
24
|
+
if (!callerIdentityCached) {
|
|
25
|
+
if (!callerIdentityPromise) {
|
|
26
|
+
callerIdentityPromise = client.send(new client_sts_1.GetCallerIdentityCommand({})).then((response) => {
|
|
27
|
+
callerIdentityCached = response;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
await callerIdentityPromise;
|
|
31
|
+
callerIdentityPromise = undefined;
|
|
32
|
+
}
|
|
33
|
+
return callerIdentityCached;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=stsUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsUtils.js","sourceRoot":"","sources":["../../../lib/utils/stsUtils.ts"],"names":[],"mappings":";;;AAAA,oDAI4B;AAE5B,IAAI,qBAAgD,CAAA;AACpD,IAAI,oBAAgE,CAAA;AAEpE;;;;GAIG;AACI,MAAM,aAAa,GAAG,KAAK,EAAE,MAAiB,EAAE,SAAiB,EAAE,EAAE;IAC1E,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAChE,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IAEhG,OAAO,eAAe,MAAM,IAAI,gBAAgB,CAAC,OAAO,IAAI,SAAS,EAAE,CAAA;AACzE,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAEM,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC5C,qBAAqB,GAAG,SAAS,CAAA;IACjC,oBAAoB,GAAG,SAAS,CAAA;AAClC,CAAC,CAAA;AAHY,QAAA,yBAAyB,6BAGrC;AAED,MAAM,yBAAyB,GAAG,KAAK,EACrC,MAAiB,EACwB,EAAE;IAC3C,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3B,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,qCAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACtF,oBAAoB,GAAG,QAAQ,CAAA;YACjC,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,qBAAqB,CAAA;QAC3B,qBAAqB,GAAG,SAAS,CAAA;IACnC,CAAC;IAED,OAAO,oBAAqB,CAAA;AAC9B,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@message-queue-toolkit/sns",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "18.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "SNS adapter for message-queue-toolkit",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"@aws-sdk/client-sns": "^3.632.0",
|
|
34
34
|
"@aws-sdk/client-sqs": "^3.632.0",
|
|
35
|
+
"@aws-sdk/client-sts": "^3.632.0",
|
|
35
36
|
"@message-queue-toolkit/core": ">=15.0.0",
|
|
36
37
|
"@message-queue-toolkit/schemas": ">=2.0.0",
|
|
37
38
|
"@message-queue-toolkit/sqs": "^17.0.0"
|
|
@@ -40,11 +41,11 @@
|
|
|
40
41
|
"@aws-sdk/client-s3": "^3.670.0",
|
|
41
42
|
"@aws-sdk/client-sns": "^3.670.0",
|
|
42
43
|
"@aws-sdk/client-sqs": "^3.670.0",
|
|
44
|
+
"@biomejs/biome": "1.9.4",
|
|
45
|
+
"@kibertoad/biome-config": "^1.2.1",
|
|
43
46
|
"@message-queue-toolkit/core": "*",
|
|
44
47
|
"@message-queue-toolkit/s3-payload-store": "*",
|
|
45
48
|
"@message-queue-toolkit/sqs": "*",
|
|
46
|
-
"@biomejs/biome": "1.9.3",
|
|
47
|
-
"@kibertoad/biome-config": "^1.2.1",
|
|
48
49
|
"@types/node": "^22.7.5",
|
|
49
50
|
"@vitest/coverage-v8": "^2.1.2",
|
|
50
51
|
"awilix": "^12.0.1",
|