-
Notifications
You must be signed in to change notification settings - Fork 31
/
deploy.sh
executable file
·45 lines (34 loc) · 1.1 KB
/
deploy.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
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/bash
BUCKET="YOUR_BUCKET_NAME" # bucket name
FILENAME="deployment-package.zip" # upload key
TMP_FOLDER="/tmp/lambda-env-tmp/" # will be cleaned
OUTPUT_FOLDER="/tmp/lambda-env/" # will be cleaned
HERE=${BASH_SOURCE%/*} # relative path to this file's folder
LAMBDA_FOLDER="$HERE/lambda/" # relative path
PYTHON_ENV_FILE="$HERE/dependencies.zip" # relative path
OUTPUT_FILE="$OUTPUT_FOLDER/$FILENAME"
# create target folders
mkdir $TMP_FOLDER
mkdir $OUTPUT_FOLDER
# unzip environment to temporary folder (quietly)
echo "Unzipping environment"
unzip -q $PYTHON_ENV_FILE -d $TMP_FOLDER
# copy lambda function stuff to temporary folder
echo "Copying aws_lambda files"
cp -r $LAMBDA_FOLDER/* $TMP_FOLDER
# move there
echo "Zipping everything together"
cd $TMP_FOLDER
# zip everything to output folder (recursively and quietly)
zip -r -q $OUTPUT_FILE ./*
# move back
cd -
# upload to S3
echo "Uploading to S3"
aws s3 cp --acl public-read $OUTPUT_FILE s3://$BUCKET/$FILENAME
echo "https://s3.amazonaws.com/$BUCKET/$FILENAME"
# clean everything
echo "Cleaning"
rm -rf $TMP_FOLDER
rm -rf $OUTPUT_FOLDER
echo "Done"