Godwin Vincent cd0a29d2ae
Device management agent - AgentCore runtime, observability, frontend added (#241)
* updated README.md file with bearer token generation

* updated README.md file with bearer token generation-removed client id and secret credentials

* removed hardcoded domain

* added agent runtime, frontend, observability and agentcore identity

* update README.md file to reflect frontend testing
2025-08-13 09:31:29 -07:00
..

Device Management Module

This module implements the core functionality of the Device Management system, including the Lambda function that handles all MCP server tools, DynamoDB models, and testing utilities.

Components

  • lambda_function.py: Main Lambda handler that implements all MCP tools
  • dynamodb_models.py: DynamoDB table definitions and initialization
  • synthetic_data.py: Script to generate synthetic test data
  • test_lambda.py: Script to test the Lambda function locally
  • deploy.sh: Deployment script for the Lambda function
  • requirements.txt: Python dependencies

Setup

  1. Create a .env file in this directory with the following variables:
# AWS configuration
AWS_REGION=us-west-2

# Lambda configuration
LAMBDA_FUNCTION_NAME=DeviceManagementLambda
LAMBDA_ROLE_NAME=DeviceManagementLambdaRole

# Agent Gateway IAM configuration
AGENT_GATEWAY_POLICY_NAME=AgentGatewayAccess
AGENT_GATEWAY_ROLE_NAME=AgentGatewayAccessRole
  1. Install the required Python packages:
pip install -r requirements.txt

Deployment

You can deploy the Lambda function using the provided deployment script:

chmod +x deploy.sh
./deploy.sh

The deployment script performs the following actions:

  • Packages the Lambda function code with dependencies
  • Creates an IAM role with necessary permissions (if it doesn't exist)
  • Creates or updates the Lambda function
  • Configures the function with appropriate memory and timeout settings

DynamoDB Tables

The function uses the following DynamoDB tables in the configured AWS region:

  • Devices: Device inventory and status
  • DeviceSettings: Device configuration settings
  • WifiNetworks: WiFi network configurations
  • Users: User accounts and profiles
  • UserActivities: User activity logs

Generate Test Data

To populate the tables with synthetic test data:

python synthetic_data.py

Test the Lambda Function

You can test the Lambda function locally using the provided test script:

python test_lambda.py

This script tests all available tools and verifies that they work correctly.

IAM Permissions

The Lambda function requires the following IAM permissions:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:Query",
        "dynamodb:Scan",
        "dynamodb:UpdateItem"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-west-2:*:table/Devices",
        "arn:aws:dynamodb:us-west-2:*:table/DeviceSettings",
        "arn:aws:dynamodb:us-west-2:*:table/WifiNetworks",
        "arn:aws:dynamodb:us-west-2:*:table/Users",
        "arn:aws:dynamodb:us-west-2:*:table/UserActivities",
        "arn:aws:dynamodb:us-west-2:*:table/UserActivities/index/ActivityTypeIndex"
      ]
    }
  ]
}

Available MCP Tools

The Lambda function exposes the following MCP tools:

  1. list_devices: Lists all devices in the system
  2. get_device_settings: Retrieves settings for a specific device
  3. list_wifi_networks: Lists WiFi networks for a specific device
  4. list_users: Lists all users in the system
  5. query_user_activity: Queries user activity within a time period
  6. update_wifi_ssid: Updates the SSID for a WiFi network
  7. update_wifi_security: Updates the security type for a WiFi network

Integration with Other Modules

  • Gateway Module: The Lambda function is the target for the gateway created in the gateway module.
  • Frontend Module: The frontend communicates with this Lambda function through the gateway.