-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sh
31 lines (28 loc) · 988 Bytes
/
build.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env bash
# Variable setup
set -e -x
bucket=$(aws ssm get-parameter --name "/tf_state/bucket_name" --query 'Parameter.Value' --output text)
projectName=${PWD##*/}
stateS3Key="${projectName}/prod/state.json"
awsRegion="${AWS_DEFAULT_REGION:-us-west-2}"
# Zip python dependencies in docker container for Lambda Layer
docker run -it -d --name dummypython python:3.9-slim /bin/bash
docker cp Pipfile dummypython:/
docker cp Pipfile.lock dummypython:/
cat <<EOM | docker exec -i dummypython /bin/bash
export PIPENV_VENV_IN_PROJECT=1
apt-get update && apt-get install -y zip
pip install pipenv
pipenv install
mkdir python && cp -r .venv/lib python/
zip -mrqX lambda_layer.zip python -x *__pycache__* .*
EOM
docker cp dummypython:lambda_layer.zip infra/lambda_layer.zip
docker rm -f dummypython
# Build AWS infra
cd infra
terraform init \
-backend-config="bucket=${bucket}" \
-backend-config="key=${stateS3Key}" \
-backend-config="region=${awsRegion}"
terraform apply -auto-approve