Skip to content

feat(aws): add DynamoDB Local setup skill for local development and testing #118

@giuseppe-trisciuoglio

Description

@giuseppe-trisciuoglio

Feature type

  • New Skill

Target plugin

  • developer-kit-aws

Problem / motivation

As a developer working with AWS DynamoDB, I need a reliable local development environment that allows me to:

  • Run integration tests without hitting AWS cloud services (avoiding costs and network latency)
  • Develop and test DynamoDB-related features offline
  • Set up consistent local environments across team members
  • Quickly prototype DynamoDB table schemas and operations

Currently, setting up DynamoDB Local requires manual configuration of Docker containers, docker-compose files, and connection strings - a process that is error-prone and time-consuming, especially when onboarding new developers or setting up new projects.

Proposed solution

Create a new skill called dynamodb-local under developer-kit-aws that automates the setup and configuration of DynamoDB Local for both existing and new projects.

Skill Name

dynamodb-local (or aws-dynamodb-local-setup)

Expected Behavior

The skill should:

  1. For new projects:

    • Generate a complete docker-compose.yml with DynamoDB Local configuration
    • Create necessary directory structure for data persistence
    • Provide sample configuration files for different languages (Java, Python, TypeScript, etc.)
    • Include connection string templates and environment variable examples
  2. For existing projects:

    • Analyze the project structure to detect the programming language/framework
    • Add DynamoDB Local configuration without breaking existing setups
    • Update application configuration files (application.yml, .env, etc.) with local endpoint
    • Provide migration instructions
  3. Docker Configuration:
    Based on AWS documentation, use the official amazon/dynamodb-local:latest image with:

    services:
      dynamodb-local:
        command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
        image: "amazon/dynamodb-local:latest"
        container_name: dynamodb-local
        ports:
          - "8000:8000"
        volumes:
          - "./docker/dynamodb:/home/dynamodblocal/data"
        working_dir: /home/dynamodblocal
  4. Language-specific configurations:

    • Java/Spring Boot: Update application-local.yml with spring.dynamodb.endpoint
    • Python/Boto3: Provide boto3.client() configuration snippet
    • TypeScript: Provide AWS SDK v3 client configuration
    • AWS CLI: Show --endpoint-url http://localhost:8000 usage
  5. Testing integration:

    • Provide examples for setting up test containers with DynamoDB Local
    • Include test utilities for table creation/cleanup

Example Prompts That Should Trigger This Skill

  • "Help me set up DynamoDB Local for my project"
  • "I need to run DynamoDB locally for testing"
  • "Add DynamoDB Local docker configuration"
  • "Configure local DynamoDB for integration tests"
  • "Set up DynamoDB Local for my Spring Boot application"

Alternatives considered

  1. Manual setup: Developers manually copy-paste Docker configurations - inconsistent and error-prone
  2. DynamoDB Local in jar: Using the standalone JAR version - more complex setup than Docker
  3. Third-party DynamoDB emulators: Less reliable than AWS official solution
  4. Testcontainers: Good for tests, but doesn't solve the general development environment need

Additional context

AWS Documentation References

Connection Requirements

For local development, the following credentials are typically used (dummy values):

  • AWS_ACCESS_KEY_ID: 'DUMMYIDEXAMPLE'
  • AWS_SECRET_ACCESS_KEY: 'DUMMYEXAMPLEKEY'
  • REGION: 'us-east-1' (or any region)

Related Skills

This skill would complement existing AWS-related skills:

  • aws-rds-spring-boot-integration - similar pattern for database local setup
  • aws-cloudformation-dynamodb - for table schema definition

Testing Verification

After setup, developers should be able to:

# Start DynamoDB Local
docker-compose up -d dynamodb-local

# Verify connection
aws dynamodb list-tables --endpoint-url http://localhost:8000

Priority: Medium (enhances developer experience, reduces cloud costs during development)
Complexity: Low to Medium (well-documented AWS patterns, similar to existing RDS skill)

Metadata

Metadata

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions