@janiscommerce/sns v2.1.0
sns
SNS Wrapper
Installation
npm install @janiscommerce/snsInstall peer dependencies
# Install as devDependency if you run your code in AWS Lambda, which already includes the SDK
npm install --dev @aws-sdk/client-sns@3Why? This is to avoid installing the SDK in production and freezing the SDK version in this package
API
You can see
SnsTriggerand every available property in the types definition or using your IDE intellisense.
SNS Trigger
This class is compatible with @janiscommerce/api-session. If it's instanciated using
getSessionInstance, a message attributejanis-clientwith the session'sclientCodewill be automatically added to every event.The event
contentwill be JSON-stringified before sendingThe event
attributescan be either Strings or Arrays. It's important to note that using other data types may cause issues or inconsistencies in the implemented filter policies. Ensure that the values provided for the attributes are always of the expected type to avoid errors in message processing.
Note: This behavior applies from version 1.1.0 onward.
The
payloadFixedPropertiesevent (available since v1.0.3) must be an array of strings containing the properties that must be mandatorily sent in the content. This is to improve error management, as these properties will allow us to identify which data failed and make a decision accordingly.
Important Changes from Version 1.0.3 to Latest
Publish single event
const { SnsTrigger } = require('@janiscommerce/sns');
const snsTrigger = this.session.getSessionInstance(SnsTrigger);
const result = await snsTrigger.publishEvent('topicName', {
content: {
id: '1'
},
attributes: {
source: 'user',
platforms: ['mobile', 'web']
},
payloadFixedProperties: ['id']
});
/**
* Sample Output
*
* {
* MessageId: '8563a94f-59f3-4843-8b16-a012867fe97e',
* SequenceNumber: '' // For FIFO topics only
* }
*/Publish multiple events
This method will send multiple events in one SDK call. It will also separate in batches when the total size limit of 256KB payload size is exceeded. Batches will be sent with a smart concurrency protocol (optimizing calls with a maximum of 25 concurrent calls).
const { SnsTrigger } = require('@janiscommerce/sns');
const snsTrigger = this.session.getSessionInstance(SnsTrigger);
const result = await snsTrigger.publishEvents('topicName', [
{
content: {
foo: 'foo'
},
attributes: {
source: 'user',
platform: 'mobile'
},
payloadFixedProperties: ['id']
},
{
content: {
bar: 'bar'
},
attributes: {
source: 'user',
platform: 'mobile'
},
payloadFixedProperties: ['id']
}
]);
/**
* Sample Output
*
* {
* successCount: 1,
* failedCount: 1,
* success: [
* {
* Id: '1',
* messageId: '8563a94f-59f3-4843-8b16-a012867fe97e'
* }
* ],
* failed: [
* {
* Id: '2',
* errorCode: 'SNS001',
* errorMessage: 'SNS Failed'
* }
* ]
* }
*/12 months ago
10 months ago
1 year ago
6 months ago
6 months ago
1 year ago
1 year ago
1 year ago