@goldwasserexchange/aws-lenses

Ramda lenses for AWS Lambda events

Usage no npm install needed!

<script type="module">
  import goldwasserexchangeAwsLenses from 'https://cdn.skypack.dev/@goldwasserexchange/aws-lenses';
</script>

README

aws-lenses

Ramda lenses for AWS Lambda events

Usage

Example with SNS

import { view } from 'ramda';
import { messageJson } from '@goldwasserexchange/aws-lenses/services/sns'

// Lambda function triggered by SNS
export default async (event) => {
  const message = view(messageJson, event);
  // ...
}

Example with SQS

import { map, view } from 'ramda';
import { records } from '@goldwasserexchange/aws-lenses/services/common';
import { bodyJson } from '@goldwasserexchange/aws-lenses/services/sqs';

// Lambda function triggered by SQS
export default async (event) => {
  const bodies = compose(map(view(bodyJson)), view(records))(event)
  // ...
}

Example with S3

import { S3 } from 'aws-sdk';
import { view } from 'ramda';
import { bucketName, objectKey } from '@goldwasserexchange/aws-lenses/services/s3';

const s3 = new S3();

// Lambda function triggered by S3
export default async (event) => {
  const data = await s3.getObject({
    Bucket: view(bucketName, event),
    Key: view(objectKey, event)
  }).promise();
  // ...
}

Example with SES with S3 action and SNS notification

import { S3 } from 'aws-sdk';
import { view } from 'ramda';
import { messageJson } from '@goldwasserexchange/aws-lenses/services/sns';
import { actionBucketName, actionObjectKey } from '@goldwasserexchange/aws-lenses/services/ses';

const s3 = new S3();

// Lambda function triggered by SNS
export default async (event) => {
  const message = view(messageJson, event);

  const emailData = await s3.getObject({
    Bucket: view(actionBucketName, message),
    Key: view(actionObjectKey, message)
  }).promise();
  // ...
}