diff --git a/_/amazon/template.yml b/_/amazon/template.yml index 14fddaa..a3fa352 100644 --- a/_/amazon/template.yml +++ b/_/amazon/template.yml @@ -14,6 +14,7 @@ Resources: CompatibleRuntimes: - nodejs16.x - nodejs18.x + - nodejs20.x node16: Type: AWS::Serverless::Function diff --git a/bin/aws.tar.br b/bin/al2.tar.br similarity index 100% rename from bin/aws.tar.br rename to bin/al2.tar.br diff --git a/bin/al2023.tar.br b/bin/al2023.tar.br index 6f8a2cf..167f912 100644 Binary files a/bin/al2023.tar.br and b/bin/al2023.tar.br differ diff --git a/source/helper.ts b/source/helper.ts index 222ea2d..ed67330 100644 --- a/source/helper.ts +++ b/source/helper.ts @@ -26,13 +26,17 @@ export const isValidUrl = (input: string) => { export const isRunningInAwsLambda = () => { if ( process.env["AWS_EXECUTION_ENV"] && - process.env["AWS_EXECUTION_ENV"].includes("AWS_Lambda_nodejs") + process.env["AWS_EXECUTION_ENV"].includes("AWS_Lambda_nodejs") && + !process.env["AWS_EXECUTION_ENV"].includes("20.x") ) { + console.log("in aws"); return true; } else if ( process.env["AWS_LAMBDA_JS_RUNTIME"] && - process.env["AWS_LAMBDA_JS_RUNTIME"].includes("nodejs") + process.env["AWS_LAMBDA_JS_RUNTIME"].includes("nodejs") && + !process.env["AWS_LAMBDA_JS_RUNTIME"].includes("20.x") ) { + console.log("in aws"); return true; } return false; @@ -43,6 +47,13 @@ export const isRunningInAwsLambdaNode20 = () => { process.env["AWS_EXECUTION_ENV"] && process.env["AWS_EXECUTION_ENV"].includes("20.x") ) { + console.log("in aws 20"); + return true; + } else if ( + process.env["AWS_LAMBDA_JS_RUNTIME"] && + process.env["AWS_LAMBDA_JS_RUNTIME"].includes("20.x") + ) { + console.log("in aws 20"); return true; } return false; diff --git a/source/index.ts b/source/index.ts index 1d9e197..a04143a 100644 --- a/source/index.ts +++ b/source/index.ts @@ -55,21 +55,40 @@ if (isRunningInAwsLambda()) { } if (process.env["LD_LIBRARY_PATH"] === undefined) { - process.env["LD_LIBRARY_PATH"] = "/tmp/aws/lib"; + process.env["LD_LIBRARY_PATH"] = "/tmp/al2/lib"; } else if ( - process.env["LD_LIBRARY_PATH"].startsWith("/tmp/aws/lib") !== true || - process.env["LD_LIBRARY_PATH"].startsWith("/tmp/al2023/lib") !== true + process.env["LD_LIBRARY_PATH"].startsWith("/tmp/al2/lib") !== true ) { process.env["LD_LIBRARY_PATH"] = [ ...new Set([ - isRunningInAwsLambdaNode20() ? "/tmp/al2023/lib" : undefined, - "/tmp/aws/lib", + "/tmp/al2/lib", ...process.env["LD_LIBRARY_PATH"].split(":"), ]), ].join(":"); } } +if (isRunningInAwsLambdaNode20()) { + if (process.env["FONTCONFIG_PATH"] === undefined) { + process.env["FONTCONFIG_PATH"] = "/tmp/fonts"; + } + + if (process.env["LD_LIBRARY_PATH"] === undefined) { + process.env["LD_LIBRARY_PATH"] = "/tmp/al2023/lib"; + } else if ( + process.env["LD_LIBRARY_PATH"].startsWith("/tmp/al2023/lib") !== true + ) { + process.env["LD_LIBRARY_PATH"] = [ + ...new Set([ + "/tmp/al2023/lib", + ...process.env["LD_LIBRARY_PATH"].split(":"), + ]), + ].join(":"); + } +} + +console.log("LD", process.env["LD_LIBRARY_PATH"]); + class Chromium { /** * Determines the headless mode that chromium will run at @@ -317,10 +336,10 @@ class Chromium { } if (isRunningInAwsLambda()) { // If running in AWS Lambda, extract more required files - promises.push(LambdaFS.inflate(`${input}/aws.tar.br`)); - if (isRunningInAwsLambdaNode20()) { - promises.push(LambdaFS.inflate(`${input}/al2023.tar.br`)); - } + promises.push(LambdaFS.inflate(`${input}/al2.tar.br`)); + } + if (isRunningInAwsLambdaNode20()) { + promises.push(LambdaFS.inflate(`${input}/al2023.tar.br`)); } // Await all extractions