reshuffle-aws-connectors
Version:
A set of Reshuffle connectors for AWS services
58 lines (47 loc) • 1.62 kB
JavaScript
const crypto = require('crypto')
const { HttpConnector, Reshuffle } = require('reshuffle')
const { AWSLambdaConnector } = require('reshuffle-aws-connectors')
const app = new Reshuffle()
const awsLambdaConnector = new AWSLambdaConnector(app, {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_DEFAULT_REGION,
})
const httpConnector = new HttpConnector(app)
async function main() {
const funcName = `function-${crypto.randomBytes(8).toString('hex')}`
console.log('Deploying Lambda function:', funcName)
await awsLambdaConnector.createFromCode(funcName, `
exports.handler = async (event) => {
const str = event.str || 'Hello, world!'
const response = {
lower: str.toLowerCase(),
upper: str.toUpperCase(),
}
return {
statusCode: 200,
body: JSON.stringify(response),
}
}
`)
httpConnector.on({ method: 'GET', path:'/go' }, async (event) => {
const qid = await awsLambdaConnector.enqueue(funcName, [
{ str: 'Bruce Banner' },
{ str: 'Natasha Romanova' },
{ str: 'Toni Stark' },
])
return event.res.json({ qid })
})
awsLambdaConnector.on({ type: 'QueueComplete' }, async (event) => {
console.log('Queue processing complete:', event.qid)
const count = event.payloads.length
for (let i = 0; i < count; i++) {
console.log(event.payloads[i], '->', event.resolutions[i])
}
console.log('Deleting Lambda function')
await awsLambdaConnector.delete(funcName)
process.exit(0)
})
app.start(8000)
}
main()