-
Notifications
You must be signed in to change notification settings - Fork 189
Expand file tree
/
Copy pathdeploy-lambda.sh
More file actions
executable file
·47 lines (40 loc) · 1.41 KB
/
Copy pathdeploy-lambda.sh
File metadata and controls
executable file
·47 lines (40 loc) · 1.41 KB
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
45
46
47
#!/bin/bash
set -euo pipefail
FUNCTION_NAME="${1:?Usage: deploy-lambda.sh <function-name>}"
MAX_DIRECT_UPLOAD_BYTES=50000000
REPOSITORY_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$REPOSITORY_DIR"
./gradlew :lambda-worker:worker:shadowJar
JAR_FILES=(lambda-worker/worker/build/libs/lambda-worker-*-all.jar)
if (( ${#JAR_FILES[@]} != 1 )) || [[ ! -f "${JAR_FILES[0]}" ]]; then
echo "Expected exactly one Lambda Worker artifact in lambda-worker/worker/build/libs." >&2
printf 'Found: %s\n' "${JAR_FILES[@]}" >&2
exit 1
fi
JAR_FILE="${JAR_FILES[0]}"
if stat -f%z "$JAR_FILE" >/dev/null 2>&1; then
JAR_SIZE="$(stat -f%z "$JAR_FILE")"
else
JAR_SIZE="$(stat -c%s "$JAR_FILE")"
fi
if [[ -n "${LAMBDA_CODE_S3_BUCKET:-}" ]]; then
S3_KEY="${LAMBDA_CODE_S3_KEY:-lambda-worker/$(basename "$JAR_FILE")}"
aws s3 cp "$JAR_FILE" "s3://$LAMBDA_CODE_S3_BUCKET/$S3_KEY"
aws lambda update-function-code \
--function-name "$FUNCTION_NAME" \
--s3-bucket "$LAMBDA_CODE_S3_BUCKET" \
--s3-key "$S3_KEY" \
--query 'FunctionArn' \
--output text
exit 0
fi
if (( JAR_SIZE > MAX_DIRECT_UPLOAD_BYTES )); then
echo "Artifact is ${JAR_SIZE} bytes, which is too large for direct Lambda upload." >&2
echo "Set LAMBDA_CODE_S3_BUCKET and rerun to upload through S3." >&2
exit 1
fi
aws lambda update-function-code \
--function-name "$FUNCTION_NAME" \
--zip-file "fileb://$JAR_FILE" \
--query 'FunctionArn' \
--output text