Skip to content

Instantly share code, notes, and snippets.

@seansullivan
seansullivan / docker-compose.yml
Last active December 21, 2020 19:41
Docker Composer Persist Local Dynamo
version: "1"
services:
dynamodb_local:
container_name: "dynamodb_local"
image: "amazon/dynamodb-local:latest"
ports:
- "8000:8000"
command:
["-jar", "DynamoDBLocal.jar", "-sharedDb", "-dbPath", /tmp/dynamolocal]
volumes:
@seansullivan
seansullivan / read-schedule.js
Created September 4, 2019 23:45
async operation in loop on async cursor (for await)
const readline = require('readline');
const fs = require('fs');
const sleep = ms => {
return new Promise(resolve => setTimeout(resolve, ms))
}
(async () => {
var lineReader = readline.createInterface({
input: fs.createReadStream(`${__dirname}/schedule.txt`),
@seansullivan
seansullivan / uuidv4_type.js
Created April 29, 2019 22:29
GraphQL UUIDv4 Custom Scalar Type
const validator = require('validator');
const UUIDv4Error = 'Invalid UUIDv4';
const validateUUIDv4 = value => validator.isUUID(value, 4);
exports.UUIDv4 = new GraphQLScalarType({
name: 'UUIDv4',
description: 'Valid UUIDv4',
@seansullivan
seansullivan / policy.json
Created March 19, 2019 03:50
Policy for S3 Bucket for Static Website Hosting
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
@seansullivan
seansullivan / parseCsv.js
Created November 2, 2018 21:42
Parse CSV File with Node.js
const fs = require('fs');
const parse = require('csv-parse');
/**
* Retrieve data to process
*
* @return {Promise}
*/
const getData = (csvFilenameToParse) => {
return new Promise((resolve, reject) => {
@seansullivan
seansullivan / kinesis_stream_getRecords.js
Created September 14, 2018 18:24
Consume Kinesis Stream
const STREAM_NAME = 'ssullivan-kinesis-fu';
const REGION = 'us-west-2';
const AWS = require('aws-sdk');
const kinesis = new AWS.Kinesis({ region: REGION });
const getRecordsFromShard = async (streamName) => {
const { Shards: [ { ShardId: shardId } ] } = await kinesis.listShards({ 'StreamName': streamName }).promise();
@seansullivan
seansullivan / load_dynamo.js
Created August 28, 2018 19:28
Load Local Dynamo from CloudFormation Template
const AWS = require('aws-sdk');
const _ = require('lodash');
const dynamoEndpoint = 'http://localhost:8000';
console.log(`Establishing connection to local dynamo with endpoint: ${dynamoEndpoint}`);
const dynamoDBClient = new AWS.DynamoDB({
endpoint: dynamoEndpoint
});
@seansullivan
seansullivan / car.js
Last active June 28, 2018 16:51
Component Cross Talk
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
class Car extends Component {
state = {
direction: null
};
constructor(props) {
super(props);
@seansullivan
seansullivan / async_action_for_items.js
Last active September 5, 2019 17:16
Perform Async Action over Items using Async/Await
const results = await items.reduce(async (previousPromise, item) => {
const collection = await previousPromise;
try {
const result = await doSomethingAsync(item);
collection.successes.push(result);
} catch(e) {
collection.errors.push(e);
}
@seansullivan
seansullivan / consume_kinesis.js
Last active June 30, 2021 18:58
Log Records from AWS Kinesis Stream with Node.js
const AWS = require('aws-sdk');
AWS.config.setPromisesDependency(require('Q').Promise);
const _ = require('lodash');
const moment = require('moment');
const kinesis = new AWS.Kinesis({region: 'us-east-1'});
const streamName = 'my-stream';