Files

54 lines
1.6 KiB
Python

"""
Seed the demo tables.
- writes the raw customer record into the customers table (this is the data that
must never leave the "on-prem" zone)
- OPTIONALLY writes a demo vault mapping (CUST_000123 -> cust-0001) so you can
test the RAG Lambda on its own, before Fusion is wired in.
In the real flow Fusion mints a fresh, random token per request and writes the
vault entry itself; the --with-demo-token entry is only a standalone test aid.
Usage:
VAULT_TABLE=hncb-deid-demo-vault CUSTOMERS_TABLE=hncb-deid-demo-customers \
python seed.py --with-demo-token
"""
import argparse
import json
import os
import time
import boto3
ddb = boto3.resource("dynamodb")
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--customers-table", default=os.environ.get("CUSTOMERS_TABLE"))
ap.add_argument("--vault-table", default=os.environ.get("VAULT_TABLE"))
ap.add_argument("--with-demo-token", action="store_true")
args = ap.parse_args()
here = os.path.dirname(__file__)
with open(os.path.join(here, "customers.json"), encoding="utf-8") as f:
customers = json.load(f)
ct = ddb.Table(args.customers_table)
for c in customers:
ct.put_item(Item=c)
print(f"seeded customer {c['customer_id']} ({c['name']})")
if args.with_demo_token:
vt = ddb.Table(args.vault_table)
vt.put_item(Item={
"token": "CUST_000123",
"type": "CUSTOMER",
"value": "cust-0001",
"expires_at": int(time.time()) + 3600,
})
print("seeded demo vault mapping CUST_000123 -> cust-0001 (test aid only)")
if __name__ == "__main__":
main()