From f9a48486846a75abb76e5da4e15d89ccefd0aaaa Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Wed, 23 Nov 2022 10:38:03 +0800 Subject: [PATCH] AWS Lambda: set 500ms timeouts on s3 requests to work around latency spikes. --- serverless/aws/package-lock.json | 3 ++- serverless/aws/package.json | 5 +++-- serverless/aws/src/index.ts | 6 +++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/serverless/aws/package-lock.json b/serverless/aws/package-lock.json index b2f9a7b..f038f61 100644 --- a/serverless/aws/package-lock.json +++ b/serverless/aws/package-lock.json @@ -8,7 +8,8 @@ "name": "pmtiles-aws", "version": "0.0.0", "dependencies": { - "@aws-sdk/client-s3": "^3.213.0" + "@aws-sdk/client-s3": "^3.213.0", + "@aws-sdk/node-http-handler": "^3.212.0" }, "devDependencies": { "@types/aws-lambda": "^8.10.108", diff --git a/serverless/aws/package.json b/serverless/aws/package.json index 24475b4..1436dd0 100644 --- a/serverless/aws/package.json +++ b/serverless/aws/package.json @@ -10,9 +10,10 @@ "private": true, "scripts": { "tsc": "tsc --noEmit --watch", - "build": "esbuild src/index.ts --target=es2020 --outfile=dist/index.mjs --format=esm --bundle --platform=node --target=node18 --external:@aws-sdk/client-s3 --banner:js=//$(git describe --always) && cd dist && zip lambda_function.zip index.mjs" + "build": "esbuild src/index.ts --target=es2020 --outfile=dist/index.mjs --format=esm --bundle --platform=node --target=node18 --external:@aws-sdk/client-s3 --external:@aws-sdk/node-http-handler --banner:js=//$(git describe --always) && cd dist && zip lambda_function.zip index.mjs" }, "dependencies": { - "@aws-sdk/client-s3": "^3.213.0" + "@aws-sdk/client-s3": "^3.213.0", + "@aws-sdk/node-http-handler": "^3.212.0" } } diff --git a/serverless/aws/src/index.ts b/serverless/aws/src/index.ts index 05403ed..f11e87a 100644 --- a/serverless/aws/src/index.ts +++ b/serverless/aws/src/index.ts @@ -17,9 +17,13 @@ import https from "https"; import zlib from "zlib"; import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; +import { NodeHttpHandler } from "@aws-sdk/node-http-handler"; // the region should default to the same one as the function -const s3client = new S3Client({}); +const s3client = new S3Client({requestHandler:new NodeHttpHandler({ + connectionTimeout: 500, + socketTimeout: 500 +})}); async function nativeDecompress( buf: ArrayBuffer,