SNS Wrapper
npm install @janiscommerce/sns
# Install as devDependency if you run your code in AWS Lambda, which already includes the SDK
npm install --dev @aws-sdk/client-sns@3
Why? This is to avoid installing the SDK in production and freezing the SDK version in this package
You can see
SnsTrigger
and every available property in the types definition or using your IDE intellisense.
This class is compatible with @janiscommerce/api-session. If it's instanciated using
getSessionInstance
, a message attributejanis-client
with the session'sclientCode
will be automatically added to every event.
The event
content
will be JSON-stringified before sending
const { SnsTrigger } = require('@janiscommerce/sns');
const snsTrigger = new SnsTrigger();
const result = await snsTrigger.publishEvent('topicName', {
content: {
id: '1'
},
attributes: {
source: 'user',
platform: 'mobile'
}
});
/**
* Sample Output
*
* {
* MessageId: '8563a94f-59f3-4843-8b16-a012867fe97e',
* SequenceNumber: '' // For FIFO topics only
* }
*/
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 = new SnsTrigger();
const result = await snsTrigger.publishEvents('topicName', [
{
content: {
id: '1'
},
attributes: {
source: 'user',
platform: 'mobile'
}
},
{
content: {
id: '2'
},
attributes: {
source: 'user',
platform: 'mobile'
}
}
]);
/**
* Sample Output
*
* {
* successCount: 1,
* failedCount: 1,
* outputs: [
* {
* success: true,
* messageId: '8563a94f-59f3-4843-8b16-a012867fe97e'
* },
* {
* success: false,
* errorCode: '',
* errorMessage: ''
* }
* ]
* }
*/