AWS Lambda-specific Node.js wrapper around the Obscura browser binary.
This package exists so Lambda consumers can install a Lambda-compatible
obscura build directly, without carrying the default desktop/server targets
from @chegger/node-obscura.
The Lambda artifact in this repo is built from upstream Obscura
v0.1.5 (dist/build-metadata.json records the exact tag and checksum).
npm install @chegger/node-obscura-aws-lambdaSupported target:
- Linux x64, intended for AWS Lambda
nodejs24.x
const { chromium } = require('playwright-core');
const { startObscura } = require('@chegger/node-obscura-aws-lambda');
async function main() {
const obscura = await startObscura({ stealth: true });
const browser = await chromium.connectOverCDP(obscura.endpoint);
try {
const context = browser.contexts()[0] || (await browser.newContext());
const page = await context.newPage();
await page.goto('https://example.com');
console.log(await page.title());
} finally {
await browser.close();
await obscura.close();
}
}
main().catch((error) => {
console.error(error);
process.exit(1);
});If you use CDK NodejsFunction, force Docker bundling so the postinstall step
runs in a Linux x64 Lambda-like environment and includes the downloaded binary
in the deployment artifact:
const myLambdaFunction = new lambda.NodejsFunction(this, 'MyLambdaFunction', {
// ...
runtime: l.Runtime.NODEJS_24_X,
architecture: l.Architecture.X86_64,
bundling: {
forceDockerBundling: true,
nodeModules: ['@chegger/node-obscura-aws-lambda'],
},
});The runtime API intentionally mirrors @chegger/node-obscura.
Returns the installed Lambda-specific Obscura binary path.
Starts obscura serve and resolves when the CDP endpoint is ready.
Options:
port?: numberhost?: stringstealth?: booleanstartupTimeoutMs?: numberextraArgs?: string[]
Returns:
{
endpoint: string;
wsEndpoint: string;
close: () => Promise<void>;
}This repo is Docker-first. You do not need Rust installed locally for the main build flow.
npm run build:artifactThat script will:
- clone the upstream
obscurasource - build it inside an Amazon Linux 2023 Docker image
- package
obscuraandobscura-workerinto:dist/obscura-x86_64-linux-lambda.tar.gz - write a checksum and build metadata
npm run smoke:testThis runs the built binary inside the AWS Lambda Node 24 base image and waits
for /json/version to come up.
Runtime install:
OBSCURA_AWS_LAMBDA_RELEASE_TAGoverrides the package release tag to download. Default:v${package.version}OBSCURA_AWS_LAMBDA_DOWNLOAD_BASE_URLoverrides the binary download base URLNODE_OBSCURA_AWS_LAMBDA_SKIP_DOWNLOAD=1skips binary download during install
Build scripts:
OBSCURA_UPSTREAM_REPOoverrides the upstream Obscura git repoOBSCURA_UPSTREAM_TAGoverrides the upstream Obscura git tagOBSCURA_CARGO_FEATURESoverrides Cargo features. Default:stealthOBSCURA_LAMBDA_DOCKER_TAGoverrides the local Docker builder image tagOBSCURA_LAMBDA_ARCHIVEoverrides the archive path used by the smoke testOBSCURA_LAMBDA_SMOKE_IMAGEoverrides the Lambda base image used by the smoke test
MIT for this wrapper package. Obscura itself remains Apache-2.0 under its upstream project.