@@ -4,29 +4,56 @@ set -euo pipefail
4
4
5
5
RUNTIME_PATH=" 2018-06-01/runtime"
6
6
7
+ # Response
7
8
sendInitError () {
8
- ERROR_MESSAGE=$1
9
- ERROR_TYPE=$2
10
- ERROR=" {\" errorMessage\" : \" $ERROR_MESSAGE \" , \" errorType\" : \" $ERROR_TYPE \" }"
11
- curl -X POST -d " $ERROR " " http://${AWS_LAMBDA_RUNTIME_API} /${RUNTIME_PATH} /invocation/$REQUEST_ID /error" > /dev/null
12
- echo " ERROR" >&2
13
- exit 1
9
+ ERROR_MESSAGE=$1
10
+ ERROR_TYPE=$2
11
+ ERROR=" {\" errorMessage\" : \" $ERROR_MESSAGE \" , \" errorType\" : \" $ERROR_TYPE \" }"
12
+ echo $ERROR >&2
13
+ curl -sS -X POST -d " $ERROR " " http://${AWS_LAMBDA_RUNTIME_API} /${RUNTIME_PATH} /init/error" > /dev/null
14
+ exit 1
15
+ }
16
+
17
+ sendRuntimeError () {
18
+ ERROR_MESSAGE=$1
19
+ ERROR_TYPE=$2
20
+ REQUEST_ID=$3
21
+ ERROR=" {\" errorMessage\" : \" $ERROR_MESSAGE \" , \" errorType\" : \" $ERROR_TYPE \" }"
22
+ echo $ERROR >&2
23
+ curl -sS -X POST -d " $ERROR " " http://${AWS_LAMBDA_RUNTIME_API} /${RUNTIME_PATH} /invocation/${REQUEST_ID} /error"
24
+ }
25
+
26
+ sendResponse () {
27
+ RESPONSE=$1
28
+ curl -sS -X POST -d " $RESPONSE " " http://${AWS_LAMBDA_RUNTIME_API} /${RUNTIME_PATH} /invocation/${REQUEST_ID} /response" > /dev/null
29
+ }
30
+
31
+ # Make sure file exists and it can be sourced
32
+ {
33
+ [[ ! -f $LAMBDA_TASK_ROOT /" $( echo $_HANDLER | cut -d. -f1) .sh" ]] && . $LAMBDA_TASK_ROOT /" $( echo $_HANDLER | cut -d. -f1) .sh"
34
+ } || {
35
+ sendInitError " Failed to load handler '$( echo $_HANDLER | cut -d. -f2) ' from module '$( echo $_HANDLER | cut -d. -f1) '" " InvalidHandlerException"
14
36
}
15
37
16
38
# Initialization
17
39
source $LAMBDA_TASK_ROOT /" $( echo $_HANDLER | cut -d. -f1) .sh"
18
- if [[ $? -ne 0 ]]; then
19
- sendInitError " Handler Not Found" " InvalidHandlerException"
20
- fi
21
40
22
41
# Processing
23
42
while true
24
43
do
25
44
HEADERS=" $( mktemp) "
26
- EVENT_DATA=$( curl -sS -LD " $HEADERS " -X GET " http://${AWS_LAMBDA_RUNTIME_API} /${RUNTIME_PATH} /invocation/next" )
45
+ EVENT_DATA=$( curl -sS -LD " $HEADERS " -X GET " http://${AWS_LAMBDA_RUNTIME_API} /${RUNTIME_PATH} /invocaion/next" )
46
+ if [[ $? != 0 ]]; then
47
+ echo " INIT ERROR" >&2
48
+ sendInitError " There was a problem retriving invocations" " InternalRuntimeException"
49
+ fi
27
50
REQUEST_ID=$( grep -Fi Lambda-Runtime-Aws-Request-Id " $HEADERS " | tr -d ' [:space:]' | cut -d: -f2)
28
51
RESPONSE=$( $( echo " $_HANDLER " | cut -d. -f2) " $EVENT_DATA " )
29
- echo $?
30
- echo " RESPONSE::::"
31
- curl -sS -X POST -d " $RESPONSE " " http://${AWS_LAMBDA_RUNTIME_API} /${RUNTIME_PATH} /invocation/${REQUEST_ID} /response" > /dev/null
52
+ if [[ $? -eq 0 ]]; then
53
+ echo " GOOD RESPONSE" >&2
54
+ sendResponse $RESPONSE
55
+ else
56
+ echo " BAD RESPONSE" >&2
57
+ sendRuntimeError " ErrorMessage" " ErrorType" $REQUEST_ID
58
+ fi
32
59
done
0 commit comments