S3 Pulse for VS Code
S3 Pulse answers “Is my S3 data feed arriving when it should?” It monitors saved S3 prefixes, visualizes arrival cadence, reports backend-computed feed health, and downloads individual objects without handling AWS credentials in TypeScript.
Requirements
- Desktop VS Code or a desktop/remote extension host. Web-only VS Code cannot run the native backend.
- AWS credentials available through the normal AWS SDK credential chain (environment, profile, SSO, role, or instance/container credentials).
- Read access for the watched location: normally
s3:ListBucket and s3:GetObject.
S3 Pulse does not create, upload, delete, or modify S3 resources.
Use
- Open the S3 Pulse activity-bar view.
- Choose Add Feed, then enter an
s3://bucket/prefix/ URI and polling settings.
- Start the feed and open its dashboard.
- Select a row to download it or copy its S3 URI/key. Drag a column header's edge to resize it, or double-click the edge to fit its content.
Feed definitions are persisted in VS Code global state. AWS credentials are never stored there.
Backend discovery
The extension launches one persistent s3pulse serve --stdio process in the extension host. It checks:
s3Pulse.backendPath, if configured; then
bin/<platform>-<architecture>/s3pulse[.exe] inside the installed extension.
The configured path supports ${extensionPath}, ${workspaceFolder}, and ${env:NAME} substitutions. Backend stdout is reserved for newline-delimited JSON-RPC; stderr appears in Output → S3 Pulse.
Build and test
cd extension
npm ci
npm run check
npm test
npm run compile
Unit tests cover the streaming JSON-line decoder and tolerant data normalization. esbuild produces dist/extension.js with no runtime npm dependencies.
Build the Rust backend in release mode and stage it for this platform with
npm run stage-backend -- --release, which copies it to
bin/<platform>-<architecture>/ and sets the executable bit. Then run:
npm run package -- --target darwin-arm64
Use the corresponding VS Code target (darwin-x64, linux-x64, linux-arm64, win32-x64, or win32-arm64) for each artifact. Do not put binaries for unrelated platforms into a platform VSIX.
For backend development, set s3Pulse.backendPath to a local release/debug executable instead of copying it into bin/.