Skip to content

Instantly share code, notes, and snippets.

aws cloudformation deploy \
--stack-name pdf2png-app \
--template-file template.yml \
--parameter-overrides ImageUri=<accountid>.dkr.ecr.us-east-1.amazonaws.com/pdf2png-app:v1 \
--capabilities CAPABILITY_IAM
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Parameters:
ImageUri:
Type: String
Resources:
ConversionFunction:
Type: AWS::Serverless::Function
docker run -v "$HOME/.aws":/root/.aws \
-e AWS_REGION=us-east-1 -e AWS_PROFILE=myprofile \
-p 9000:8080 \
pdf2png-test
FROM alpine:3.12 AS rie-image
RUN apk add --no-cache curl && \
cd / && \
curl -sSL -O https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/download/v1.0/aws-lambda-rie && \
chmod +x /aws-lambda-rie
FROM pdf2png
FROM golang:1-alpine3.12 AS build-image
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY *.go ./
RUN go build -tags lambda.norpc -ldflags="-s -w" main.go
func main() {
os.Chdir("/tmp") // Change working directory to /tmp so we can write files
if len(os.Args) > 1 && os.Args[1] == "--test" {
pdf2png()
} else {
lambda.Start(handler)
}
}
FROM golang:1-alpine3.12 AS build-image
WORKDIR /app
COPY *.go ./
RUN go build main.go
FROM alpine:3.12
package main
import (
"os"
"os/exec"
"strings"
)
func main() {
os.Chdir("/tmp") // Change working directory to /tmp so we can write files
@mhart
mhart / test.sh
Last active February 13, 2020 18:31
AWS internal error creating a 200MiB Lambda Layer
# Try to create a 200MiB layer
head -c 209715200 /dev/random > file.dat
rm -f layer.zip && zip layer.zip file.dat
aws s3 cp layer.zip s3://my-bucket/my-key
aws lambda publish-layer-version --cli-connect-timeout 0 --layer-name large-200MiB-dep --content S3Bucket=my-bucket,S3Key=my-key
# Results in:
# An error occurred (ServiceException) when calling the PublishLayerVersion operation (reached max retries: 2): An error occurred and the request cannot be processed.
# One byte less and it works (`aws lambda publish-layer-version` takes about 60 secs)
@mhart
mhart / plistToOpml.js
Last active October 13, 2019 02:18
Quick hack to convert from NetNewsWire 3.x to something you can import into 5.x
// First, create a new directory, copy this file into it, and run: `npm install xml2js`
// Then `plutil -convert xml1 ~/Library/Application\ Support/NetNewsWire/Subscriptions.plist`
// Then `node plistToOpml.js > exported.opml`
// Then File->Import Subscriptions... in NetNewsWire 5.x
const fs = require('fs')
const xml2js = require('xml2js')
const data = fs.readFileSync(`${process.env.HOME}/Library/Application Support/NetNewsWire/Subscriptions.plist`, 'utf8')