Skip to content

Amplify monitoring

This example demonstrates how to monitor AWS Amplify data operations using @ddb-lib/amplify.

Source code

View the complete source code: examples/amplify/with-monitoring.ts

Topics covered

  • AmplifyMonitor setup
  • Statistics collection for Amplify operations
  • Performance recommendations
  • Anti-pattern detection
  • Cost tracking

Code overview

import { generateClient } from 'aws-amplify/data'
import { AmplifyMonitor } from '@ddb-lib/amplify'
import { AntiPatternDetector, RecommendationEngine } from '@ddb-lib/stats'
import type { Schema } from '../amplify/data/resource'

// Initialize with monitoring
const client = generateClient<Schema>()
const monitor = new AmplifyMonitor(client)

// Perform operations (automatically monitored)
await monitor.create('User', {
  id: '123',
  name: 'John Doe'
})

const user = await monitor.get('User', { id: '123' })

// Get statistics
const stats = monitor.getStats()
const summary = stats.getSummary()

console.log('Total operations:', summary.totalOperations)
console.log('RCU consumed:', summary.totalRCU)
console.log('WCU consumed:', summary.totalWCU)

// Detect issues
const detector = new AntiPatternDetector(stats)
const issues = detector.detectAll()

for (const issue of issues) {
  console.log(`⚠️  ${issue.type}: ${issue.message}`)
}

// Get recommendations
const engine = new RecommendationEngine(stats)
const recommendations = engine.getRecommendations()

for (const rec of recommendations) {
  console.log(`💡 ${rec.title}`)
}

Running the example

# From the repository root
npx tsx examples/amplify/with-monitoring.ts

Prerequisites

  • AWS Amplify Gen 2 project
  • Amplify data schema configured
  • AWS credentials configured