Skip to content

Instantly share code, notes, and snippets.

@cnnrrss
Last active May 10, 2022 01:23
Show Gist options
  • Save cnnrrss/af3dd98e17c64ff1fe8d4a1388b7d11a to your computer and use it in GitHub Desktop.
Save cnnrrss/af3dd98e17c64ff1fe8d4a1388b7d11a to your computer and use it in GitHub Desktop.
Makefile template for an AWS Lambda with Go 1.x runtime
ORG := FT
TENANT := dev-cnnrrss
GIT_EMAIL := $(shell git config user.email)
ARTIFACTS_BUCKET := artifacts-$(TENANT)
PACKAGE=$(shell basename $(PWD))
SHORT_COMMIT := $(shell git rev-parse --short HEAD)
BRANCH := $(shell git branch --show)
DATE := $(shell date -u +.%Y%m%d.%H%M%S)
VERSION := $(SHORT_COMMIT)$(DATE)
AWS_REGION := $(shell aws configure get region)
BUILD_FLAGS := -ldflags "-X main.ServiceName=api -X main.CommitHash=$(SHORT_COMMIT) -X main.GitBranch=$(BRANCH)"
RESOURCE_TAGS := tenant=$(TENANT) build=$(SHORT_COMMIT) orgname=$(ORG) owneremail=$(GIT_EMAIL) component=$(PACKAGE)
unit-test:
go test -v -cover ./...
integration-test:
go test -tags integration ./...
build:
CGO_ENABLED=0 go build $(BUILD_FLAGS) -o .build/main cmd/*.go
build-linux:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o .build/main ./cmd/** && zip -j .build/function.zip .build/main
update-schema:
yarn build && aws s3 cp .build/schema.graphql s3://$(ARTIFACTS_BUCKET)/schema/$(SHORT_COMMIT)/schema.graphql
upload-lambda:
aws s3 cp ./.build/function.zip s3://$(ARTIFACTS_BUCKET)/lambda/api/$(SHORT_COMMIT)/function.zip
update-lambda:
aws lambda update-function-code --function-name $(ORG)-$(TENANT)-lambda --zip-file fileb://.build/function.zip
deploy-db:
aws cloudformation deploy \
--region $(AWS_REGION) \
--stack-name $(ORG)-$(TENANT)-db \
--capabilities CAPABILITY_NAMED_IAM \
--template-file ./cfn-templates/db.yaml \
--parameter-overrides OrgName=$(ORG) Tenant=$(TENANT) CommitHash=$(SHORT_COMMIT) Service=db \
--no-fail-on-empty-changeset \
--tags $(RESOURCE_TAGS)
#update-schema upload-lambda
deploy-api:
aws cloudformation deploy \
--region $(AWS_REGION) \
--stack-name $(ORG)-$(PACKAGE)-$(TENANT)-api \
--capabilities CAPABILITY_NAMED_IAM \
--template-file cfn-templates/api.yaml \
--parameter-overrides OrgName=$(ORG) Tenant=$(TENANT) CommitHash=$(SHORT_COMMIT) LambdaBucket=$(ARTIFACTS_BUCKET) Service=api \
--no-fail-on-empty-changeset \
--tags $(RESOURCE_TAGS)
.PHONY: unit-test integration-test build build-linux update-schema update-lambda deploy-db deploy-api
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment