{"id":43765,"library":"resolve-snapshot-postgresql-serverless","title":"resolve-snapshot-postgres-serverless","description":"Adapter for storing event-sourced snapshots in AWS Aurora Serverless PostgreSQL 10.7. Version 0.23.2 is stable with monthly releases. Requires peer dependency on aws-sdk and Node >=10.9. Alternative to in-memory or DynamoDB snapshot stores within the reSolve CQRS framework.","status":"active","version":"0.23.2","language":"javascript","source_language":"en","source_url":"https://github.com/reimagined/resolve","tags":["javascript","cqrs","eventsourcing","es","ddd"],"install":[{"cmd":"npm install resolve-snapshot-postgresql-serverless","lang":"bash","label":"npm"},{"cmd":"yarn add resolve-snapshot-postgresql-serverless","lang":"bash","label":"yarn"},{"cmd":"pnpm add resolve-snapshot-postgresql-serverless","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Used to communicate with AWS RDS Data Service (Secrets Manager, RDS)","package":"aws-sdk","optional":false}],"imports":[{"note":"Package uses default export; CommonJS require is supported for Node >=10.9 but ESM is preferred.","wrong":"const createSnapshotAdapter = require('resolve-snapshot-postgres-serverless')","symbol":"createSnapshotAdapter","correct":"import createSnapshotAdapter from 'resolve-snapshot-postgres-serverless'"},{"note":"No TypeScript types shipped; define your own or use JSDoc.","wrong":"","symbol":"SnapshotAdapterType","correct":"import createSnapshotAdapter from 'resolve-snapshot-postgres-serverless'"},{"note":"Namespace import works for ESM; avoid mixing default and namespace imports.","wrong":"const snapshot = require('resolve-snapshot-postgres-serverless')","symbol":"none (entire module as namespace)","correct":"import * as snapshot from 'resolve-snapshot-postgres-serverless'"}],"quickstart":{"code":"import createSnapshotAdapter from 'resolve-snapshot-postgres-serverless';\n\nconst snapshotAdapter = createSnapshotAdapter({\n  awsSecretStoreArn: process.env.AWS_SECRET_STORE_ARN ?? '',\n  dbClusterOrInstanceArn: process.env.DB_CLUSTER_ARN ?? '',\n  databaseName: process.env.DATABASE_NAME ?? 'snapshots',\n  tableName: process.env.TABLE_NAME ?? 'snapshots',\n  region: process.env.AWS_REGION ?? 'us-east-1',\n  bucketSize: 100\n});\n\nasync function main() {\n  const key = 'snapshot:aggregateId:123';\n  await snapshotAdapter.saveSnapshot(key, { data: { version: 1 } });\n  const snapshot = await snapshotAdapter.loadSnapshot(key);\n  console.log(snapshot);\n  await snapshotAdapter.drop(key);\n  await snapshotAdapter.dispose();\n}\n\nmain().catch(console.error);","lang":"typescript","description":"Demonstrates creating a snapshot adapter for Aurora Serverless PostgreSQL, saving, loading, dropping a snapshot, and disposing."},"warnings":[{"fix":"Use exact version or ^0.23.2 instead of ^0.0.0","message":"Version 0.x API may change without major version bump; pin exact version in package.json.","severity":"breaking","affected_versions":">=0.0.0"},{"fix":"Install aws-sdk@2.x: npm install aws-sdk@^2","message":"The 'aws-sdk' peer dependency is v2; AWS SDK v3 is not supported. Consider using v2 or fork for v3.","severity":"deprecated","affected_versions":">=0.0.0"},{"fix":"Enable Data API when creating the Aurora Serverless cluster.","message":"Requires AWS RDS Data API enabled on the Aurora cluster; otherwise connections fail.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Set bucketSize based on expected snapshot count (typical range 10-1000).","message":"The 'bucketSize' parameter affects performance; misconfiguration can lead to slow snapshot retrieval.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Manually create table with schema: (id text PRIMARY KEY, snapshot jsonb, timestamp bigint)","message":"Database table must exist; adapter does not auto-create it.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'0.23.2':20 '10.7':18 '10.9':35 'adapt':6 'altern':36 'aurora':15 'aw':14,31 'aws-sdk':30 'cqrs':48,51 'ddd':54 'depend':28 'dynamodb':42 'es':53 'event':10 'event-sourc':9 'eventsourc':52 'framework':49 'in-memori':38 'javascript':50 'memori':40 'month':24 'node':34 'peer':27 'postgr':4 'postgresql':17 'releas':25 'requir':26 'resolv':2,47 'resolve-snapshot-postgres-serverless':1 'sdk':32 'serverless':5,16 'snapshot':3,12,43 'sourc':11 'stabl':22 'store':8,44 'version':19 'within':45","created_at":"2026-06-05T17:01:22.258970+00:00","updated_at":"2026-06-05T17:01:22.258970+00:00","problems":[{"fix":"Run: npm install resolve-snapshot-postgres-serverless","cause":"Package not installed or not in node_modules.","error":"Error: Cannot find module 'resolve-snapshot-postgres-serverless'"},{"fix":"Use: import createSnapshotAdapter from 'resolve-snapshot-postgres-serverless'","cause":"Incorrect import: using require instead of default import.","error":"TypeError: createSnapshotAdapter is not a function"},{"fix":"Ensure all required parameters are passed: awsSecretStoreArn, dbClusterOrInstanceArn, databaseName, region.","cause":"Required parameter not provided to createSnapshotAdapter.","error":"MissingRequiredParameter: Missing required key 'awsSecretStoreArn' in params"},{"fix":"Attach policy AWSLambdaVPCAccessExecutionRole or custom policy with rds-data:ExecuteStatement.","cause":"IAM role or user lacks permissions for RDS Data API.","error":"AccessDeniedException: User: arn:aws:iam::... is not authorized to perform: rds-data:ExecuteStatement"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/reimagined/resolve/tree/master/packages/adapters/snapshot-adapters/resolve-snapshot-postgres-serverless#readme","github":"https://github.com/reimagined/resolve","docs":null,"changelog":null,"pypi":null,"npm":"resolve-snapshot-postgresql-serverless","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}