Skip to content

Commit d835693

Browse files
committed
Adding ALB Support Out of the Box.
1 parent 76a2d02 commit d835693

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

bootstrap

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ error_reporting(E_ALL | E_STRICT);
55

66
$AWS_LAMBDA_RUNTIME_API = getenv('AWS_LAMBDA_RUNTIME_API');
77

8+
/* https://gist.github.com/henriquemoody/6580488 */
9+
$http_codes = [100=>'Continue',101=>'Switching Protocols',102=>'Processing',200=>'OK',201=>'Created',202=>'Accepted',203=>'Non-Authoritative Information',204=>'No Content',205=>'Reset Content',206=>'Partial Content',207=>'Multi-Status',208=>'Already Reported',226=>'IM Used',300=>'Multiple Choices',301=>'Moved Permanently',302=>'Found',303=>'See Other',304=>'Not Modified',305=>'Use Proxy',306=>'Switch Proxy',307=>'Temporary Redirect',308=>'Permanent Redirect',400=>'Bad Request',401=>'Unauthorized',402=>'Payment Required',403=>'Forbidden',404=>'Not Found',405=>'Method Not Allowed',406=>'Not Acceptable',407=>'Proxy Authentication Required',408=>'Request Timeout',409=>'Conflict',410=>'Gone',411=>'Length Required',412=>'Precondition Failed',413=>'Request Entity Too Large',414=>'Request-URI Too Long',415=>'Unsupported Media Type',416=>'Requested Range Not Satisfiable',417=>'Expectation Failed',418=>'I\'m a teapot',419=>'Authentication Timeout',420=>'Enhance Your Calm',420=>'Method Failure',422=>'Unprocessable Entity',423=>'Locked',424=>'Failed Dependency',424=>'Method Failure',425=>'Unordered Collection',426=>'Upgrade Required',428=>'Precondition Required',429=>'Too Many Requests',431=>'Request Header Fields Too Large',444=>'No Response',449=>'Retry With',450=>'Blocked by Windows Parental Controls',451=>'Redirect',451=>'Unavailable For Legal Reasons',494=>'Request Header Too Large',495=>'Cert Error',496=>'No Cert',497=>'HTTP to HTTPS',499=>'Client Closed Request',500=>'Internal Server Error',501=>'Not Implemented',502=>'Bad Gateway',503=>'Service Unavailable',504=>'Gateway Timeout',505=>'HTTP Version Not Supported',506=>'Variant Also Negotiates',507=>'Insufficient Storage',508=>'Loop Detected',509=>'Bandwidth Limit Exceeded',510=>'Not Extended',511=>'Network Authentication Required',598=>'Network read timeout error',599=>'Network connect timeout error'];
10+
811
function start_webserver() {
912
$pid = pcntl_fork();
1013
switch($pid) {
@@ -137,7 +140,7 @@ while (true) {
137140
array_push($headers, "${name}: ${value}");
138141
}
139142
}
140-
143+
141144
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
142145
}
143146

@@ -202,18 +205,24 @@ while (true) {
202205

203206
$ch = curl_init("http://$AWS_LAMBDA_RUNTIME_API/2018-06-01/runtime/invocation/$invocation_id/response");
204207

208+
$isALB = array_key_exists("elb", $event['requestContext']);
209+
if ($isALB) { // Add Headers For ALB
210+
$status = $response["statusCode"];
211+
$response["statusDescription"] = "$status ". $http_codes[$status];
212+
$response["isBase64Encoded"] = false;
213+
}
205214
$response_json = json_encode($response);
206-
207215
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
208216
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
209217
curl_setopt($ch, CURLOPT_POSTFIELDS, $response_json);
210-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
211-
'Content-Type: application/json',
212-
'Content-Length: ' . strlen($response_json)
213-
));
214-
218+
if (!$isALB){
219+
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
220+
'Content-Type: application/json',
221+
'Content-Length: ' . strlen($response_json)
222+
));
223+
}
215224
curl_exec($ch);
216225
curl_close($ch);
217226
}
218227

219-
?>
228+
?>

0 commit comments

Comments
 (0)