reshuffle-aws-connectors
Version:
A set of Reshuffle connectors for AWS services
179 lines (130 loc) • 4.86 kB
Markdown
[](https://github.com/reshufflehq/reshuffle-aws-connectors) |
[](https://www.npmjs.com/package/reshuffle-aws-connectors) |
[](https://github.com/reshufflehq/reshuffle/blob/master/examples/aws/sqs-messages.js)
`npm install reshuffle-aws-connectors`
This [Reshuffle](https://github.com/reshufflehq/reshuffle) connector can be used to interact with AWS SQS queues.
[](https://docs.aws.amazon.com/sqs/index.html).
The following code listens to new messages in the queue. When a message arrives it logs the details of the message event.
```js
const { HttpConnector, Reshuffle } = require('reshuffle')
const { AWSSQSConnector } = require('reshuffle-aws-connectors')
const queueUrl = 'https://sqs.<region>.amazonaws.com/<id>/<queue_name>'
const app = new Reshuffle()
const sqsConnector = new AWSSQSConnector(app, {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_REGION
})
sqsConnector.on({ queueUrl }, (event, app) => {
console.log('new message', event)
//{ MessageId: '71c06956-76e1-4a8c-bc00-ed910566f36e', ReceiptHandle: 'AQEBTL1CTtn1clJ0XMSmRtpz7...', MD5OfBody: '9a72c70562843b823c2c9cad30665fe4', Body: 'Message from Reshuffle to queue' }
})
app.start()
```
[](
_Connector events_:
[](
_Connector actions_:
[](
_SDK_:
[](
```js
const app = new Reshuffle()
const awsSQSConnector = new AWSSQSConnector(app, {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_DEFAULT_REGION,
})
```
_Event parameters:_
```typescript
interface AWSSQSConnectorEventOptions {
queueUrl: string // SQS queue url
deleteAfterReceive?: boolean // default to true
}
```
_Handler inputs:_
```typescript
(event: MESSAGE, app: Reshuffle) => void
interface MESSAGE {
MessageId?: string
ReceiptHandle?: string
MD5OfBody?: string
Body?: string
Attributes?: MessageSystemAttributeMap
MD5OfMessageAttributes?: string
MessageAttributes?: MessageBodyAttributeMap
}
```
_Example:_
```js
(event, app) => {
console.log('new message received', event)
// 'new message received', { MessageId: '71c06956-76e1-4a8c-bc00-ed910566f36e', ReceiptHandle:
// 'AQEBTL1CTtn1clJ0XMSmRtpz7...', MD5OfBody: '9a72c70562843b823c2c9cad30665fe4', Body: 'Message
// from Reshuffle to queue' }
}
```
This event is triggered when new messages are received from the queue.
Reshuffle checks for new messages every minute.
Per default, it deletes the messages from the queue once retrieved.
Set `deleteAfterReceive` to `false` to prevent this.
__Note:__ if you do so, events can be triggered several times for the same message depending on your queue strategy.
Most of the actions are provided via the [sdk](
_Definition:_
```ts
(params: AWS.SQS.Types.SendMessageRequest) => Promise<PromiseResult<AWS.SQS.SendMessageResponse, AWS.AWSError>>
export interface SendMessageRequest {
QueueUrl: string
MessageBody: string
DelaySeconds?: Integer
MessageAttributes?: MessageBodyAttributeMap
MessageSystemAttributes?: MessageBodySystemAttributeMap
MessageDeduplicationId?: string
MessageGroupId?: string
}
export interface SendMessageResult {
MD5OfMessageBody?: string
MD5OfMessageAttributes?: string
MD5OfMessageSystemAttributes?: string
MessageId?: string
SequenceNumber?: string
}
```
Go [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) for sendMessage AWS documentation.
_Usage:_
```js
const params = {
MessageBody: 'Message from Reshuffle to AWS SQS!',
QueueUrl: 'https://sqs.us-east-1.amazonaws.com/<project_id>/<queue_name>',
}
const response = await sqsConnector.sendMessage(params)
console.log(response.MessageId)
```
Returns an AWS SQS client instance
Full list of available actions in [NODE AWS SQS client](https://github.com/aws/aws-sdk-js/blob/master/clients/sqs.d.ts)
_Definition:_
```ts
() => AWS.SQS
```
_Usage:_
```js
const sqs = await sqsConnector.sdk()
```
_Example:_
Receive messages from queue
```js
const response = await sqsConnector.sdk().receiveMessage({ QueueUrl }).promise()
console.log(response.Messages)
```
For more examples, go [here](https://github.com/reshufflehq/reshuffle/tree/master/examples/aws/sqs-messages.js).