Skip to content

Troubleshooting

When something isn’t working, start here. This page covers the fastest diagnostic checks, then guides you to the right sub-page based on the symptom you’re seeing.

Run through these first — they catch the majority of issues:

  1. Bedrock
    Amazon Bedrock — a fully managed service for accessing foundation models (embedding and LLM) via a unified API.
    model access enabled?
    — Both Titan Embeddings V2 and your LLM must be enabled in the Bedrock console for the deployment region.
  2. Correct region? — S3 Vectors, Bedrock models, and inference profiles are not available in all regions. Confirm your terraform.tfvars region matches where you enabled model access.
  3. Bootstrap ingest completed? — Check the Lambda
    AWS Lambda — serverless compute. This project uses two functions: ingest (RSS → embed → store) and query (search → answer).
    ingest function logs for success. An empty corpus means queries return no results.
  4. Cognito
    Amazon Cognito — a user authentication service providing user pools, JWT tokens, and group-based authorization.
    user confirmed?
    — Users must be in CONFIRMED status. An unconfirmed user cannot authenticate to the API.
  5. Terraform apply finished cleanly? — Partial applies leave resources in inconsistent states. Check for errors in the apply output.

Use the table below to find the right troubleshooting path based on what you’re experiencing.

SymptomLikely causeWhere to look

Deployment failed (terraform apply errors)

Missing permissions, region not supported, or resource limits

Check Terraform output; see Common Issues

Query returns empty resultsCorpus not ingested, time filter too narrow, or vector index empty

Check corpus status below; see Common Issues

AccessDeniedException errors

Bedrock model access not enabled or IAM policy missing permissions

See Bedrock Errors

Web UI not loading or blank page

Amplify
AWS Amplify — a managed hosting service for static web applications. Used to host the briefing UI SPA.
deployment incomplete or CORS mismatch

Check Amplify console and CORS config; see Common Issues

Ingest Lambda timeoutBedrock throttling or slow RSS feeds exceeding 480s limit

See Bedrock Errors (throttling section)

ThrottlingException from Bedrock

Too many concurrent embedding or LLM requests

See Bedrock Errors

401 / 403 from API Gateway
Amazon API Gateway — a managed HTTP API service with JWT authorization, CORS, and throttling. Routes requests to the Query Lambda.

Expired or invalid JWT token, user not confirmedRe-authenticate; check Cognito user status

Each Lambda function writes to a dedicated CloudWatch log group. The naming pattern is:

Terminal window
/aws/lambda/<project-prefix>-ingest
/aws/lambda/<project-prefix>-query

To tail logs for the ingest function:

Terminal window
aws logs tail "/aws/lambda/$(terraform output -raw ingest_function_name)" --follow

To tail logs for the query function:

Terminal window
aws logs tail "/aws/lambda/$(terraform output -raw query_function_name)" --follow

The query Lambda exposes a /status endpoint through API Gateway
Amazon API Gateway — a managed HTTP API service with JWT authorization, CORS, and throttling. Routes requests to the Query Lambda.
that returns the current vector count and index health.

Terminal window
# Get the API endpoint
API_URL="$(terraform output -raw api_endpoint)"
# Check status (no auth required for /status)
curl -s "$API_URL/status" | jq .

You can also verify directly that vectors exist in the S3 Vectors
Amazon S3 Vectors — a purpose-built vector storage capability within S3 that enables similarity search over embeddings without a separate vector database.
index:

Terminal window
aws s3vectors list-vectors \
--vector-bucket-name "$(terraform output -raw vector_bucket_name)" \
--index-name "$(terraform output -raw vector_index_name)"

If the vector count is zero, the ingest function hasn’t run successfully. Re-trigger it:

Terminal window
aws lambda invoke \
--function-name "$(terraform output -raw ingest_function_name)" \
/tmp/ingest-out.json
cat /tmp/ingest-out.json | jq .