awsim

package module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 19, 2026 License: MIT Imports: 0 Imported by: 0

README

awsim logo

Go Version License Release Lint Integration Tests

A lightweight AWS service emulator written in Go.
Designed for CI/CD environments where authentication-free local AWS testing is needed.

Features

  • No authentication required - Perfect for CI environments
  • Single binary - Easy to distribute and deploy
  • Docker support - Run as a container
  • Lightweight - Fast startup, minimal resource usage
  • AWS SDK v2 compatible - Works seamlessly with Go AWS SDK v2

Supported Services (71 services)

Storage

Service Description
S3 Object storage
S3 Control S3 account-level operations
S3 Tables S3 table buckets
DynamoDB NoSQL database
ElastiCache In-memory caching
MemoryDB Redis-compatible database
Glacier Archive storage
EBS Block storage

Compute

Service Description
Lambda Serverless functions
Batch Batch computing
EC2 Virtual machines
Elastic Beanstalk Application deployment

Container

Service Description
ECS Container orchestration
ECR Container registry
EKS Kubernetes service

Database

Service Description
RDS Relational database service

Messaging & Integration

Service Description
SQS Message queuing
SNS Pub/Sub messaging
EventBridge Event bus
Kinesis Real-time streaming
Firehose Data delivery
MQ Message broker (ActiveMQ/RabbitMQ)
Pipes Event-driven integration
MSK (Kafka) Managed streaming for Kafka

Security & Identity

Service Description
IAM Identity and access management
KMS Key management
Secrets Manager Secret storage
ACM Certificate management
Cognito User authentication
Security Lake Security data lake
STS Security token service

Monitoring & Logging

Service Description
CloudWatch Metrics and alarms
CloudWatch Logs Log management
X-Ray Distributed tracing
CloudTrail API audit logging

Networking & Content Delivery

Service Description
CloudFront CDN
Global Accelerator Network acceleration
API Gateway API management
Route 53 DNS service
Route 53 Resolver DNS resolver
ELBv2 Load balancing
App Mesh Service mesh

Application Integration

Service Description
Step Functions Workflow orchestration
AppSync GraphQL API
SES v2 Email service
Scheduler Task scheduling
Amplify Full-stack application hosting

Management & Configuration

Service Description
SSM Systems Manager
Config Resource configuration
CloudFormation Infrastructure as code
Organizations Multi-account management
Service Quotas Service limit management
CodeConnections Source code connections
Backup Centralized backup service

Analytics & ML

Service Description
Athena SQL query service
Glue ETL service
Comprehend NLP service
Rekognition Image/video analysis
SageMaker Machine learning
Forecast Time-series forecasting
Data Exchange Data marketplace
Entity Resolution Entity matching

Developer Tools

Service Description
CodeGuru Profiler Application profiling
CodeGuru Reviewer Automated code review

Other Services

Service Description
Cost Explorer Cost analysis
DLM Data lifecycle manager
Directory Service Microsoft AD
EMR Serverless Big data processing
FinSpace Financial data management
GameLift Game server hosting
Resilience Hub Application resilience

Quick Start

docker run -p 4566:4566 ghcr.io/sivchari/awsim:latest

Binary

# Build
make build

# Run
./bin/awsim

Docker Compose

services:
  awsim:
    image: ghcr.io/sivchari/awsim:latest
    ports:
      - "4566:4566"

Usage Examples

S3

package main

import (
    "context"
    "strings"

    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/credentials"
    "github.com/aws/aws-sdk-go-v2/service/s3"
)

func main() {
    cfg, _ := config.LoadDefaultConfig(context.TODO(),
        config.WithRegion("us-east-1"),
        config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("test", "test", "")),
    )

    client := s3.NewFromConfig(cfg, func(o *s3.Options) {
        o.BaseEndpoint = aws.String("http://localhost:4566")
        o.UsePathStyle = true
    })

    // Create bucket
    client.CreateBucket(context.TODO(), &s3.CreateBucketInput{
        Bucket: aws.String("my-bucket"),
    })

    // Put object
    client.PutObject(context.TODO(), &s3.PutObjectInput{
        Bucket: aws.String("my-bucket"),
        Key:    aws.String("hello.txt"),
        Body:   strings.NewReader("Hello, World!"),
    })
}

SQS

package main

import (
    "context"
    "fmt"

    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/credentials"
    "github.com/aws/aws-sdk-go-v2/service/sqs"
)

func main() {
    cfg, _ := config.LoadDefaultConfig(context.TODO(),
        config.WithRegion("us-east-1"),
        config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("test", "test", "")),
    )

    client := sqs.NewFromConfig(cfg, func(o *sqs.Options) {
        o.BaseEndpoint = aws.String("http://localhost:4566")
    })

    // Create queue
    result, _ := client.CreateQueue(context.TODO(), &sqs.CreateQueueInput{
        QueueName: aws.String("my-queue"),
    })

    // Send message
    client.SendMessage(context.TODO(), &sqs.SendMessageInput{
        QueueUrl:    result.QueueUrl,
        MessageBody: aws.String("Hello from SQS!"),
    })

    // Receive message
    messages, _ := client.ReceiveMessage(context.TODO(), &sqs.ReceiveMessageInput{
        QueueUrl: result.QueueUrl,
    })

    for _, msg := range messages.Messages {
        fmt.Println(*msg.Body)
    }
}

DynamoDB

package main

import (
    "context"

    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/credentials"
    "github.com/aws/aws-sdk-go-v2/service/dynamodb"
    "github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
)

func main() {
    cfg, _ := config.LoadDefaultConfig(context.TODO(),
        config.WithRegion("us-east-1"),
        config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("test", "test", "")),
    )

    client := dynamodb.NewFromConfig(cfg, func(o *dynamodb.Options) {
        o.BaseEndpoint = aws.String("http://localhost:4566")
    })

    // Create table
    client.CreateTable(context.TODO(), &dynamodb.CreateTableInput{
        TableName: aws.String("users"),
        KeySchema: []types.KeySchemaElement{
            {AttributeName: aws.String("id"), KeyType: types.KeyTypeHash},
        },
        AttributeDefinitions: []types.AttributeDefinition{
            {AttributeName: aws.String("id"), AttributeType: types.ScalarAttributeTypeS},
        },
        BillingMode: types.BillingModePayPerRequest,
    })

    // Put item
    client.PutItem(context.TODO(), &dynamodb.PutItemInput{
        TableName: aws.String("users"),
        Item: map[string]types.AttributeValue{
            "id":   &types.AttributeValueMemberS{Value: "user-1"},
            "name": &types.AttributeValueMemberS{Value: "Alice"},
        },
    })
}

Secrets Manager

package main

import (
    "context"
    "fmt"

    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/credentials"
    "github.com/aws/aws-sdk-go-v2/service/secretsmanager"
)

func main() {
    cfg, _ := config.LoadDefaultConfig(context.TODO(),
        config.WithRegion("us-east-1"),
        config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("test", "test", "")),
    )

    client := secretsmanager.NewFromConfig(cfg, func(o *secretsmanager.Options) {
        o.BaseEndpoint = aws.String("http://localhost:4566")
    })

    // Create secret
    client.CreateSecret(context.TODO(), &secretsmanager.CreateSecretInput{
        Name:         aws.String("my-secret"),
        SecretString: aws.String(`{"username":"admin","password":"secret123"}`),
    })

    // Get secret
    result, _ := client.GetSecretValue(context.TODO(), &secretsmanager.GetSecretValueInput{
        SecretId: aws.String("my-secret"),
    })

    fmt.Println(*result.SecretString)
}

Configuration

Environment variables:

Variable Default Description
AWSIM_HOST 0.0.0.0 Server bind address
AWSIM_PORT 4566 Server port
AWSIM_LOG_LEVEL info Log level (debug, info, warn, error)

Development

# Run tests
make test

# Run integration tests
make test-integration

# Lint
make lint

# Build
make build

Contributing

Contributions are welcome! Please see the issues for planned features and improvements.

License

MIT License

Documentation

Overview

Package awsim provides a lightweight AWS service emulator for CI/CD environments.

Index

Constants

View Source
const Version = "0.4.0"

Version is the current version of awsim.

Variables

This section is empty.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
cmd
awsim command
Package main is the entry point for the awsim CLI.
Package main is the entry point for the awsim CLI.
internal
server
Package server provides the HTTP server for awsim.
Package server provides the HTTP server for awsim.
service
Package service provides interfaces and utilities for AWS service implementations.
Package service provides interfaces and utilities for AWS service implementations.
service/acm
Package acm provides ACM service emulation for awsim.
Package acm provides ACM service emulation for awsim.
service/amplify
Package amplify implements the AWS Amplify service handlers.
Package amplify implements the AWS Amplify service handlers.
service/apigateway
Package apigateway provides API Gateway service emulation for awsim.
Package apigateway provides API Gateway service emulation for awsim.
service/appmesh
Package appmesh provides the AWS App Mesh service implementation.
Package appmesh provides the AWS App Mesh service implementation.
service/appsync
Package appsync provides AWS AppSync service emulation for awsim.
Package appsync provides AWS AppSync service emulation for awsim.
service/athena
Package athena provides Athena service emulation for awsim.
Package athena provides Athena service emulation for awsim.
service/backup
Package backup provides an AWS Backup service emulator.
Package backup provides an AWS Backup service emulator.
service/batch
Package batch provides AWS Batch service emulation for awsim.
Package batch provides AWS Batch service emulation for awsim.
service/ce
Package ce provides AWS Cost Explorer service emulation.
Package ce provides AWS Cost Explorer service emulation.
service/cloudformation
Package cloudformation provides CloudFormation service emulation for awsim.
Package cloudformation provides CloudFormation service emulation for awsim.
service/cloudfront
Package cloudfront provides CloudFront service emulation for awsim.
Package cloudfront provides CloudFront service emulation for awsim.
service/cloudtrail
Package cloudtrail provides a mock implementation of AWS CloudTrail.
Package cloudtrail provides a mock implementation of AWS CloudTrail.
service/cloudwatch
Package cloudwatch provides CloudWatch metrics service emulation for awsim.
Package cloudwatch provides CloudWatch metrics service emulation for awsim.
service/cloudwatchlogs
Package cloudwatchlogs provides CloudWatch Logs service emulation for awsim.
Package cloudwatchlogs provides CloudWatch Logs service emulation for awsim.
service/codeconnections
Package codeconnections provides AWS CodeConnections service emulation.
Package codeconnections provides AWS CodeConnections service emulation.
service/codeguruprofiler
Package codeguruprofiler implements the AWS CodeGuru Profiler service.
Package codeguruprofiler implements the AWS CodeGuru Profiler service.
service/codegurureviewer
Package codegurureviewer implements the AWS CodeGuru Reviewer service.
Package codegurureviewer implements the AWS CodeGuru Reviewer service.
service/cognito
Package cognito provides AWS Cognito Identity Provider service emulation.
Package cognito provides AWS Cognito Identity Provider service emulation.
service/comprehend
Package comprehend provides an in-memory implementation of AWS Comprehend.
Package comprehend provides an in-memory implementation of AWS Comprehend.
service/configservice
Package configservice provides a mock implementation of AWS Config.
Package configservice provides a mock implementation of AWS Config.
service/dataexchange
Package dataexchange provides an AWS Data Exchange service emulator.
Package dataexchange provides an AWS Data Exchange service emulator.
service/dlm
Package dlm provides Data Lifecycle Manager service emulation for awsim.
Package dlm provides Data Lifecycle Manager service emulation for awsim.
service/dynamodb
Package dynamodb provides DynamoDB service emulation for awsim.
Package dynamodb provides DynamoDB service emulation for awsim.
service/ebs
Package ebs provides AWS EBS direct API service emulation.
Package ebs provides AWS EBS direct API service emulation.
service/ec2
Package ec2 provides EC2 service emulation for awsim.
Package ec2 provides EC2 service emulation for awsim.
service/ecr
Package ecr provides a mock implementation of AWS Elastic Container Registry.
Package ecr provides a mock implementation of AWS Elastic Container Registry.
service/ecs
Package ecs implements the Amazon ECS service emulator.
Package ecs implements the Amazon ECS service emulator.
service/eks
Package eks provides an EKS service emulator.
Package eks provides an EKS service emulator.
service/elasticache
Package elasticache implements the ElastiCache service handlers.
Package elasticache implements the ElastiCache service handlers.
service/elasticbeanstalk
Package elasticbeanstalk provides AWS Elastic Beanstalk service emulation.
Package elasticbeanstalk provides AWS Elastic Beanstalk service emulation.
service/elbv2
Package elbv2 provides ELB v2 service emulation for awsim.
Package elbv2 provides ELB v2 service emulation for awsim.
service/emrserverless
Package emrserverless provides the EMR Serverless service implementation.
Package emrserverless provides the EMR Serverless service implementation.
service/entityresolution
Package entityresolution provides an AWS Entity Resolution service emulator.
Package entityresolution provides an AWS Entity Resolution service emulator.
service/eventbridge
Package eventbridge provides AWS EventBridge service emulation.
Package eventbridge provides AWS EventBridge service emulation.
service/finspace
Package finspace provides an in-memory implementation of AWS FinSpace.
Package finspace provides an in-memory implementation of AWS FinSpace.
service/firehose
Package firehose provides a mock implementation of Amazon Data Firehose.
Package firehose provides a mock implementation of Amazon Data Firehose.
service/forecast
Package forecast provides Amazon Forecast service emulation.
Package forecast provides Amazon Forecast service emulation.
service/gamelift
Package gamelift provides a mock implementation of AWS GameLift.
Package gamelift provides a mock implementation of AWS GameLift.
service/glacier
Package glacier provides AWS Glacier service emulation.
Package glacier provides AWS Glacier service emulation.
service/globalaccelerator
Package globalaccelerator provides AWS Global Accelerator service emulation.
Package globalaccelerator provides AWS Global Accelerator service emulation.
service/glue
Package glue provides AWS Glue service emulation for awsim.
Package glue provides AWS Glue service emulation for awsim.
service/iam
Package iam provides IAM service emulation for awsim.
Package iam provides IAM service emulation for awsim.
service/kafka
Package kafka provides an MSK (Managed Streaming for Apache Kafka) service emulator.
Package kafka provides an MSK (Managed Streaming for Apache Kafka) service emulator.
service/kinesis
Package kinesis provides a mock implementation of AWS Kinesis Data Streams.
Package kinesis provides a mock implementation of AWS Kinesis Data Streams.
service/kms
Package kms provides AWS KMS service emulation.
Package kms provides AWS KMS service emulation.
service/lambda
Package lambda provides Lambda service emulation for awsim.
Package lambda provides Lambda service emulation for awsim.
service/memorydb
Package memorydb provides AWS MemoryDB service emulation.
Package memorydb provides AWS MemoryDB service emulation.
service/mq
Package mq provides Amazon MQ service emulation for awsim.
Package mq provides Amazon MQ service emulation for awsim.
service/organizations
Package organizations provides AWS Organizations service emulation.
Package organizations provides AWS Organizations service emulation.
service/pipes
Package pipes implements the AWS EventBridge Pipes service emulation.
Package pipes implements the AWS EventBridge Pipes service emulation.
service/rds
Package rds implements the RDS service handlers.
Package rds implements the RDS service handlers.
service/rekognition
Package rekognition provides AWS Rekognition service emulation.
Package rekognition provides AWS Rekognition service emulation.
service/resiliencehub
Package resiliencehub provides an in-memory implementation of AWS Resilience Hub.
Package resiliencehub provides an in-memory implementation of AWS Resilience Hub.
service/route53
Package route53 provides an implementation of AWS Route 53 service.
Package route53 provides an implementation of AWS Route 53 service.
service/route53resolver
Package route53resolver provides Route 53 Resolver service emulation for awsim.
Package route53resolver provides Route 53 Resolver service emulation for awsim.
service/s3
Package s3 provides S3 service emulation for awsim.
Package s3 provides S3 service emulation for awsim.
service/s3control
Package s3control implements the AWS S3 Control service.
Package s3control implements the AWS S3 Control service.
service/s3tables
Package s3tables provides S3 Tables service emulation for awsim.
Package s3tables provides S3 Tables service emulation for awsim.
service/sagemaker
Package sagemaker provides SageMaker service emulation for awsim.
Package sagemaker provides SageMaker service emulation for awsim.
service/scheduler
Package scheduler provides EventBridge Scheduler service emulation for awsim.
Package scheduler provides EventBridge Scheduler service emulation for awsim.
service/secretsmanager
Package secretsmanager provides Secrets Manager service emulation for awsim.
Package secretsmanager provides Secrets Manager service emulation for awsim.
service/securitylake
Package securitylake provides an in-memory implementation of AWS Security Lake.
Package securitylake provides an in-memory implementation of AWS Security Lake.
service/servicequotas
Package servicequotas provides AWS Service Quotas service emulation.
Package servicequotas provides AWS Service Quotas service emulation.
service/sesv2
Package sesv2 provides SES v2 service emulation for awsim.
Package sesv2 provides SES v2 service emulation for awsim.
service/sfn
Package sfn provides a mock implementation of AWS Step Functions.
Package sfn provides a mock implementation of AWS Step Functions.
service/sns
Package sns provides SNS service emulation for awsim.
Package sns provides SNS service emulation for awsim.
service/sqs
Package sqs provides SQS service emulation for awsim.
Package sqs provides SQS service emulation for awsim.
service/ssm
Package ssm provides SSM Parameter Store service emulation for awsim.
Package ssm provides SSM Parameter Store service emulation for awsim.
service/sts
Package sts implements the AWS Security Token Service handlers.
Package sts implements the AWS Security Token Service handlers.
service/xray
Package xray provides AWS X-Ray service emulation for awsim.
Package xray provides AWS X-Ray service emulation for awsim.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL