gopherstack

command module
v1.8.2 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2026 License: MIT Imports: 1 Imported by: 0

README

Gopherstack

150+ AWS services. One Go binary. Milliseconds, not minutes.

CI Release codecov CodeFactor OpenSSF Scorecard Go Reference

PARITY entries AWS services parity go license

Gopherstack is a lightweight, in-memory AWS cloud stack you can run locally. It emulates 150+ AWS service APIs in a single Go binary — no AWS account, no credentials, no network calls — so you can develop and test against realistic AWS behaviour in milliseconds.

Point any AWS SDK, the AWS CLI, Terraform, or the CDK at http://localhost:8000 and it just works. Beyond simple CRUD mocks, Gopherstack implements real cross-service integration: Event Source Mappings, EventBridge Scheduler, EventBridge Pipes, DynamoDB Streams → Lambda, SNS → SQS fan-out, and container-backed Lambda execution.

[!TIP] Gopherstack is significantly faster and lighter than LocalStack, making it ideal for unit and integration tests where speed is critical.

[!IMPORTANT] This project is vibe coded. 🚀 It's built for speed, performance, and developer experience.


Quick Start

Pull and run the image:

docker run -p 8000:8000 ghcr.io/blackbirdworks/gopherstack:latest

Open the built-in web dashboard:

http://localhost:8000/dashboard

Then point any AWS tooling at the endpoint — no credentials required:

aws dynamodb list-tables --endpoint-url http://localhost:8000
aws s3 mb s3://my-bucket --endpoint-url http://localhost:8000

Installation

Docker

docker pull ghcr.io/blackbirdworks/gopherstack:latest
docker run -p 8000:8000 ghcr.io/blackbirdworks/gopherstack:latest

The API and the dashboard are both served on port 8000.

Desktop app

Each release also ships gopherstack-desktop, a native window around the same server and dashboard (system webview, no browser needed). Download gopherstack-desktop_<version>_<OS>_<arch> from the releases page:

  • macOS: unzip and open Gopherstack.app (unsigned; right-click, Open on first launch)
  • Windows: unzip and run gopherstack-desktop.exe (needs the WebView2 runtime, preinstalled on Windows 11)
  • Linux: extract and run gopherstack-desktop (needs libgtk-3 and libwebkit2gtk-4.1)

It serves on port 8000 if free, otherwise a random loopback port, and accepts the same flags and environment variables as the headless binary (e.g. --port). Build it locally with task build-desktop (CGO and the webview libraries are required; the headless binary stays pure Go).

Docker Compose

services:
  gopherstack:
    image: ghcr.io/blackbirdworks/gopherstack:latest
    ports:
      - "8000:8000"
    environment:
      - LOG_LEVEL=info
docker compose up -d

For Lambda support the container needs access to a container runtime — see docs/docker.md.

Testcontainers (Go)

Gopherstack ships a reusable Testcontainers for Go module so you can spin up the whole stack from any Go test suite:

go get github.com/blackbirdworks/gopherstack/modules/gopherstack
import (
    "context"
    "testing"

    "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/testcontainers/testcontainers-go"

    gopherstack "github.com/blackbirdworks/gopherstack/modules/gopherstack"
)

func TestMyService(t *testing.T) {
    ctx := context.Background()

    container, err := gopherstack.Run(ctx, gopherstack.DefaultImage)
    if err != nil {
        t.Fatal(err)
    }
    defer testcontainers.TerminateContainer(container)

    endpoint, err := container.BaseURL(ctx)
    if err != nil {
        t.Fatal(err)
    }

    cfg, _ := config.LoadDefaultConfig(ctx,
        config.WithRegion("us-east-1"),
        config.WithCredentialsProvider(
            credentials.NewStaticCredentialsProvider("test", "test", ""),
        ),
    )

    ddb := dynamodb.NewFromConfig(cfg, func(o *dynamodb.Options) {
        o.BaseEndpoint = aws.String(endpoint)
    })

    // … use ddb in your tests
}

Pass environment variables with gopherstack.WithEnv:

container, err := gopherstack.Run(ctx, gopherstack.DefaultImage,
    gopherstack.WithEnv(map[string]string{
        "LOG_LEVEL": "debug",
        "DEMO":      "true",
    }),
)

As a Go library

Use the in-memory backends directly, without any HTTP server:

import "github.com/blackbirdworks/gopherstack/services/dynamodb"

db := dynamodb.NewInMemoryDB()
// Use db for your application logic…

From source

git clone https://github.com/blackbirdworks/gopherstack.git
cd gopherstack
go run .            # serves on :8000

Features

Web Dashboard

A built-in UI at http://localhost:8000/dashboard for inspecting and managing local state:

  • DynamoDB — list tables, view details (keys, indexes, item count), run Query and Scan, create tables
  • S3 — list buckets, browse files with folder support, upload/download, manage versioning, view object metadata
  • Cloud switcher — a top-nav dropdown scopes the dashboard to AWS, Azure or GCP; Azure pages cover Resource Manager, Blob Storage and Queue Storage

Desktop App

gopherstack-desktop runs the full emulator and its dashboard as a native app on macOS, Windows and Linux, with no browser or terminal needed. It's built with Wails on the system webview, so it adds only a few MB over the headless binary, and it ships with every release next to the headless gopherstack. See Desktop app for install steps.

Configuration

Every setting has a CLI flag and (usually) an equivalent env var; a flag always wins. When --persist is enabled, values loaded from the persisted config file sit between the two: precedence is defaults < persisted config < env vars / CLI flags.

Server
Flag Env var Default Description
--port PORT 8000 HTTP server port.
--region REGION us-east-1 Mock AWS region (also honors AWS_REGION / AWS_DEFAULT_REGION, see below).
--log-level LOG_LEVEL info Log level: debug, info, warn, or error.
--data-dir GOPHERSTACK_DATA_DIR (empty) Directory for persistence data files. Empty resolves to ~/.gopherstack/data, or /data inside a container.
--account-id ACCOUNT_ID 000000000000 Mock AWS account ID used in ARNs.
--persist PERSIST false Enable snapshot-based persistence across restarts.
--demo DEMO false Load demo data on startup.
--enforce-iam GOPHERSTACK_ENFORCE_IAM false Evaluate every request against attached IAM policies.
--tls TLS false Serve over HTTPS (self-signed certificate unless --tls-cert/--tls-key are set).
--tls-cert TLS_CERT (empty) Path to a TLS certificate (PEM). Requires --tls-key.
--tls-key TLS_KEY (empty) Path to a TLS private key (PEM).
--compression COMPRESSION on Runtime response compression (on/off). See Response compression.
--validate-sigv4 VALIDATE_SIGV4 false Cryptographically validate AWS SigV4 request signatures (opt-in).
--sigv4-secret SIGV4_SECRET test Secret access key SigV4 validation signs against (only used with --validate-sigv4).
--dns-addr DNS_ADDR (empty) Address for the embedded DNS server (e.g. :10053). Empty disables it.
--dns-resolve-ip DNS_RESOLVE_IP 127.0.0.1 IP address synthetic hostnames resolve to.
--port-range-start PORT_RANGE_START 10000 Start of the port range used for allocated resource endpoints.
--port-range-end PORT_RANGE_END 10100 End (exclusive) of that port range.
--iot-mqtt-port IOT_MQTT_PORT 1883 TCP port of the embedded IoT MQTT broker. 0 picks a free port.
--iot-mqtt-auth IOT_MQTT_AUTH false Opt-in: the IoT MQTT port speaks mutual TLS, clients must present an ACTIVE registered certificate, and CONNECT/PUBLISH/SUBSCRIBE/RECEIVE are authorised by the IoT policies attached to it.
--init-script INIT_SCRIPTS (none) Shell script(s) to run on startup (repeatable flag / comma-separated env var).
--init-dir INIT_DIR (none) Extra init-hook root with boot.d/start.d/ready.d/shutdown.d of .sh/.py scripts, run in lexicographic order (repeatable). /etc/localstack/init and /etc/gopherstack/init are always checked. Scripts get AWS_ENDPOINT_URL, AWS_DEFAULT_REGION and dummy credentials; .py needs python3.
--init-timeout INIT_TIMEOUT 30s Per-script timeout for init hooks.
--s3-bucket S3_BUCKETS (none) S3 bucket(s) to create on startup (repeatable flag / comma-separated env var).
--janitor-timeout JANITOR_TIMEOUT 30s Per-task timeout for the global janitor loop (TTL sweeps, cleaners). 0 disables it.
--latency-ms LATENCY_MS 0 Inject random latency [0,N) ms per request. 0 disables it.
--auto-purge-ttl AUTO_PURGE_TTL (disabled) If set, automatically reset all services on a timer (e.g. 10m).
(none) GOPHERSTACK_PPROF_ADDR (empty) Opt-in pprof debug address (e.g. localhost:6060) for local profiling / PGO capture. Off unless set; never enable in shared environments.
AWS credentials & region overrides

Gopherstack's own AWS SDK clients read a few standard AWS environment variables, so tooling that already exports them (e.g. awslocal) works without remapping. These are not flags.

Env var Default Description
AWS_DEFAULT_REGION (unset) Highest-precedence region override — wins over AWS_REGION and --region/REGION.
AWS_REGION (unset) Region override — wins over --region/REGION but loses to AWS_DEFAULT_REGION.
AWS_ACCESS_KEY_ID dummy Used for Gopherstack's own internal AWS SDK clients. Incoming request credentials are never validated.
AWS_SECRET_ACCESS_KEY dummy Paired with AWS_ACCESS_KEY_ID for Gopherstack's internal SDK clients. Incoming request credentials are never validated.
Per-service engine & provider selection

A single switch picks the default for every container-backed engine (RDS/Aurora, MSK, MQ, OpenSearch, Elasticsearch, DocumentDB, Neptune, Redshift, EKS, ElastiCache, MemoryDB, CodeBuild, Timestream for InfluxDB, ECS tasks). auto probes the Docker then Podman socket once at startup (5s bound, result logged) and uses real containers when one is reachable, otherwise stays on the stub; it never fails startup. Per-service flags or env vars always override it. See docs/engines.md.

Flag Env var Default Description
--engines GOPHERSTACK_ENGINES stub Global engine default: stub, auto (docker/podman if reachable, else stub), or docker.
--ecs-runtime GOPHERSTACK_ECS_RUNTIME (follows --engines) ECS task runtime: none or docker.
--elasticache-engine ELASTICACHE_ENGINE embedded ElastiCache engine mode: embedded (miniredis), stub, or docker.
--memorydb-engine MEMORYDB_ENGINE embedded MemoryDB engine mode: embedded (miniredis per cluster, ACL passwords enforced via AUTH), stub, or docker (no server, as ElastiCache).
--kafka-engine KAFKA_ENGINE stub MSK engine mode: stub (metadata only) or docker (real single-node apache/kafka broker per provisioned cluster; KAFKA_BROKER_HOST overrides the advertised host, default 127.0.0.1; ports bind loopback only unless it is non-loopback, then all interfaces).
--eks-engine EKS_ENGINE stub EKS engine mode: stub (metadata only) or docker (one privileged single-node rancher/k3s container per cluster, tag mapped from the requested version; DescribeCluster returns the real endpoint and CA; clusters accept the static admin bearer token EKS_CLUSTER_TOKEN, default gopherstack-eks-cluster-token; EKS_CLUSTER_HOST sets the advertised host, default 127.0.0.1, and the port binds loopback only unless it is non-loopback, which then requires EKS_CLUSTER_TOKEN; EKS_K3S_IMAGE overrides the image).
--mq-engine MQ_ENGINE stub Amazon MQ engine mode: stub (metadata only) or docker (one rabbitmq:3.13.7-management or apache/activemq-classic:5.18.7 container per broker with a user; plaintext endpoints; MQ_BROKER_HOST overrides the advertised host, default 127.0.0.1; ports bind loopback only unless it is non-loopback, then all interfaces).
--transfer-sftp TRANSFER_SFTP false Serve a real SFTP listener per Transfer Family server.
--transfer-sftp-host TRANSFER_SFTP_HOST 127.0.0.1 Host the Transfer Family SFTP listener binds to.
--transparent-dns TRANSPARENT_DNS false Resolve *.amazonaws.com (and .com.cn, api.aws) to this server and serve HTTPS for them.
--transparent-https-addr TRANSPARENT_HTTPS_ADDR :443 HTTPS listen address for real AWS endpoint names.
--transparent-dns-skip TRANSPARENT_DNS_SKIP none Names/zones that keep resolving upstream (e.g. sts.amazonaws.com).
--transparent-dns-upstream TRANSPARENT_DNS_UPSTREAM /etc/resolv.conf Upstream resolvers host:port for non-AWS names.
--transparent-container-dns TRANSPARENT_CONTAINER_DNS --dns-resolve-ip unless loopback DNS IP handed to spawned containers.
--transparent-ca-dir TRANSPARENT_CA_DIR ephemeral Directory to persist the CA so it is trusted once.
--transparent-container-ca-path TRANSPARENT_CONTAINER_CA_PATH temp file (skipped when containerised) CA PEM path visible to the Docker daemon; required to inject the CA when gopherstack itself runs in Docker.
--rds-engine RDS_ENGINE stub RDS engine mode: stub (metadata only) or docker (real postgres/mysql/mariadb container per DB instance, one per Aurora cluster; Data API stays on SQLite; RDS_DB_HOST overrides the advertised host, default 127.0.0.1; ports bind loopback only unless it is non-loopback, then all interfaces).
--docdb-engine DOCDB_ENGINE stub DocumentDB engine mode: stub (metadata only) or docker (one plaintext mongo container per cluster, mongo:4.4 for 3.6/4.0 and mongo:5.0 for 5.0; DOCDB_HOST overrides the advertised host, default 127.0.0.1; ports bind loopback only unless it is non-loopback, then all interfaces).
--redshift-engine REDSHIFT_ENGINE stub Redshift engine mode: stub (metadata only) or docker (one postgres:17 container per provisioned cluster with MasterUsername/MasterUserPassword/DBName; Endpoint reports the published 127.0.0.1 port and the Redshift Data API runs SQL against it; REDSHIFT_HOST overrides the advertised host; Serverless workgroups stay metadata-only).
--neptune-engine NEPTUNE_ENGINE stub Neptune engine mode: stub (metadata only) or docker (one tinkerpop/gremlin-server container per cluster, TinkerPop 3.4.13 for engine 1.0/1.1, 3.5.7 for 1.2, 3.6.8 for 1.3, 3.7.3 later; Endpoint, ReaderEndpoint, Port and member instances report the published 127.0.0.1 port, Gremlin over WebSocket at /gremlin; NEPTUNE_HOST overrides the advertised host; no IAM auth or openCypher).
--opensearch-engine OPENSEARCH_ENGINE stub OpenSearch engine mode: stub (API-only) or docker.
--elasticsearch-engine ELASTICSEARCH_ENGINE stub Elasticsearch engine mode: stub (API-only) or docker.
--ec2-provider EC2_PROVIDER inmemory EC2 compute provider: inmemory (stub) or docker (launches real containers as instances).
--ec2-docker-image EC2_DOCKER_IMAGE amazonlinux:2 Docker image used by the EC2 docker provider.
--ec2-docker-network EC2_DOCKER_NETWORK (empty) Docker network EC2-docker containers attach to. Empty uses the daemon default bridge.
--ec2-docker-ssh-host-ip EC2_DOCKER_SSH_HOST_IP 127.0.0.1 Host IP that mapped EC2-docker SSH ports bind to.
--ec2-docker-ssh-port-min EC2_DOCKER_SSH_PORT_MIN 0 Lower bound of the host port range for EC2-docker SSH mapping (0 = let Docker pick).
--ec2-docker-ssh-port-max EC2_DOCKER_SSH_PORT_MAX 0 Upper bound of that host port range.
Lambda & containers

The core Lambda/container-runtime flags — LAMBDA_DOCKER_HOST, LAMBDA_POOL_SIZE, LAMBDA_IDLE_TIMEOUT, CONTAINER_RUNTIME — are documented in Lambda configuration below. A few more exist:

Flag Env var Default Description
--lambda-max-runtimes LAMBDA_MAX_RUNTIMES 50 Maximum number of simultaneous per-function Lambda runtimes.
(none) LAMBDA_HOT_RELOAD_BUCKET hot-reload Magic S3 bucket name whose S3Key is a local directory mounted live (Lambda hot reloading).
(none) LAMBDA_HOT_RELOAD_ROOTS home dir and temp dir Path-list (: separated) of absolute directories hot-reload S3Keys must live under; others are rejected.
--lambda-hot-reload-interval-ms LAMBDA_HOT_RELOAD_INTERVAL_MS 250 Minimum milliseconds between hot-reload change scans.
--lambda-disable-hot-reload LAMBDA_DISABLE_HOT_RELOAD false Disable Lambda hot reloading from local directories.
--lambda-keep-containers LAMBDA_KEEP_CONTAINERS false If true, keep Lambda containers alive for debugging.
(none) CONTAINER_HOST (empty) Generic container endpoint override (e.g. a Podman socket URL). Takes precedence over runtime auto-detection.
--ecs-runtime GOPHERSTACK_ECS_RUNTIME (unset = no-op) Set to docker to run ECS tasks as real containers; also driven by --engines. Unset or any other value is a no-op runner.
(none) GOPHERSTACK_ENABLE_LOCAL_REGISTRY false (set to 1 to enable) Run a real embedded Docker Registry v2 backend for ECR instead of the in-memory stub.
Per-service tuning (janitor intervals & TTLs)

Most services expose a background "janitor" tick interval and TTLs for evicting stale data. These have CLI flags too (run gopherstack serve --help for exact names) but are most commonly set via env var:

Env var Default Description
ATHENA_JANITOR_INTERVAL 1m Athena janitor tick interval.
ATHENA_EXECUTION_TTL 24h TTL for completed Athena query executions.
BACKUP_JANITOR_INTERVAL 1m Backup janitor tick interval.
BACKUP_JOB_TTL 24h TTL for completed Backup jobs.
BATCH_JANITOR_INTERVAL 1m Batch janitor tick interval.
BATCH_INACTIVE_JOB_DEF_TTL 24h TTL for inactive Batch job definitions.
BATCH_COMPLETED_JOB_TTL 24h TTL for completed or failed Batch jobs.
CLOUDWATCHLOGS_JANITOR_INTERVAL 1m CloudWatch Logs janitor tick interval.
CLOUDWATCHLOGS_MAX_RETENTION_DAYS 14 Global max log retention for groups without an explicit policy.
CODEBUILD_JANITOR_INTERVAL 1m CodeBuild janitor tick interval.
CODEBUILD_BUILD_TTL 24h TTL for completed CodeBuild builds.
DYNAMODB_REGION us-east-1 Default region for DynamoDB (independent of --region).
DYNAMODB_JANITOR_INTERVAL 500ms DynamoDB janitor tick interval.
DYNAMODB_TTL_SWEEP_BATCH_SIZE 1000 Max items checked per TTL sweep lock acquisition.
DYNAMODB_CREATE_DELAY 0s Simulated CREATING→ACTIVE delay. 0 disables the lifecycle transition.
DYNAMODB_ENFORCE_THROUGHPUT false Enforce provisioned RCU/WCU limits (token bucket per table).
EC2_JANITOR_INTERVAL 1m EC2 janitor tick interval.
EC2_TERMINATED_TTL 1h TTL for terminated EC2 instances.
EC2_CANCELLED_SPOT_TTL 6h TTL for cancelled EC2 spot requests.
EMR_JANITOR_INTERVAL 1m EMR janitor tick interval.
EMR_TERMINATED_TTL 1h TTL for terminated EMR clusters.
FIS_JANITOR_INTERVAL 1m FIS janitor tick interval.
FIS_EXPERIMENT_TTL 24h TTL for completed FIS experiments.
KINESIS_JANITOR_INTERVAL 1m Kinesis janitor tick interval.
KMS_JANITOR_INTERVAL 1m KMS janitor tick interval.
REDSHIFTDATA_JANITOR_INTERVAL 1m Redshift Data janitor tick interval.
REDSHIFTDATA_STATEMENT_TTL 24h TTL for completed Redshift Data statements.
S3_REGION us-east-1 Default region for S3 (independent of --region).
S3_JANITOR_INTERVAL 500ms S3 janitor tick interval.
S3_COMPRESSION_MIN_BYTES 1024 Minimum object size for gzip compression. 0 compresses everything.
SES_JANITOR_INTERVAL 1m SES janitor tick interval.
SES_INBOUND_ENABLED false Run an SMTP listener that applies the active SES receipt rule set to received mail.
SES_INBOUND_ADDR 127.0.0.1:2525 Listen address of the SES inbound SMTP server.
SES_INBOUND_MAX_SIZE 41943040 Maximum SES inbound message size in bytes.
SES_EMAIL_TTL 24h TTL for stored sent emails.
SMTP_HOST unset Relay SES/SESv2 mail to this SMTP server (host[:port], port 25 default) as well as the simulator.
SMTP_USER unset SMTP login username; sent only over STARTTLS or to localhost.
SMTP_PASS unset SMTP login password.
SFN_EXECUTION_RETENTION 24h How long Step Functions execution history is retained.
SFN_JANITOR_INTERVAL 1m Step Functions janitor tick interval.
SFN_TASK_TOKEN_TTL 1h Max lifetime of an unreceived Step Functions task token.
SSM_JANITOR_INTERVAL 30s SSM janitor tick interval.
SSM_COMMAND_TTL 1h TTL for SendCommand results (matches AWS's 1h default).
STS_JANITOR_INTERVAL 30s STS janitor tick interval.
XRAY_JANITOR_INTERVAL 1m X-Ray janitor tick interval.
XRAY_TRACE_TTL 30m TTL for stored X-Ray traces.
Lifecycle realism (transitional-state dwell)

By default resources settle instantly. Set a dwell to make Creating/Processing/Pending/InProgress states observable to SDK waiters. --lifecycle-delay is the default for every row below; a per-service value overrides it. All default to 0s (CloudFront keeps its built-in 100ms).

Flag Env Effect
--lifecycle-delay GOPHERSTACK_LIFECYCLE_DELAY Default dwell for all rows below, ELASTICSEARCH_PROCESSING_DELAY and DYNAMODB_CREATE_DELAY.
--lifecycle-opensearch-processing OPENSEARCH_PROCESSING_DELAY OpenSearch domain Processing=true window.
--es-processing-delay ELASTICSEARCH_PROCESSING_DELAY Elasticsearch domain Processing=true window.
--lifecycle-elasticache ELASTICACHE_LIFECYCLE_DELAY ElastiCache creating window.
--lifecycle-memorydb MEMORYDB_LIFECYCLE_DELAY MemoryDB cluster creating window.
--lifecycle-lambda-activation LAMBDA_ACTIVATION_DELAY Lambda function Pending window.
--lifecycle-lambda-provisioned-concurrency LAMBDA_PROVISIONED_CONCURRENCY_DELAY Provisioned concurrency IN_PROGRESS window.
--lifecycle-ecs-start / --lifecycle-ecs-stop ECS_START_DELAY / ECS_STOP_DELAY Per-phase ECS task start/stop delay (no container runtime).
--lifecycle-mediastore MEDIASTORE_ACTIVATION_DELAY MediaStore container CREATING/DELETING window.
--lifecycle-efs EFS_ACTIVATION_DELAY EFS file system creating window.
--lifecycle-redshift REDSHIFT_ACTIVATION_DELAY Redshift cluster creating window.
--lifecycle-redshiftdata REDSHIFTDATA_LIFECYCLE_DELAY Redshift Data statement SUBMITTED/STARTED window before FINISHED.
--lifecycle-redshiftserverless REDSHIFTSERVERLESS_LIFECYCLE_DELAY Redshift Serverless workgroup CREATING/MODIFYING/DELETING and namespace MODIFYING/DELETING window.
--lifecycle-dax DAX_LIFECYCLE_DELAY DAX cluster/node creating/modifying/deleting window (built-in 1s).
--lifecycle-pinpoint PINPOINT_LIFECYCLE_DELAY Pinpoint export/import job CREATED/PROCESSING window before COMPLETED.
--lifecycle-autoscaling AUTOSCALING_LAUNCH_DELAY Auto Scaling instance Pending window (with an InProgress activity) before InService.
--lifecycle-vpclattice VPCLATTICE_LIFECYCLE_DELAY VPC Lattice service/target group/association CREATE_IN_PROGRESS (and deletes DELETE_IN_PROGRESS) and registered-target INITIAL/DRAINING window.
--lifecycle-kafkaconnect KAFKACONNECT_LIFECYCLE_DELAY MSK Connect connector/custom plugin transitional window (built-in 500ms create, 300ms delete).
--lifecycle-grafana GRAFANA_LIFECYCLE_DELAY Grafana workspace CREATING/UPDATING window (built-in 100ms).
--lifecycle-acmpca ACMPCA_AUDIT_REPORT_DELAY ACM PCA audit report CREATING window.
--lifecycle-accessanalyzer ACCESSANALYZER_LIFECYCLE_DELAY IAM Access Analyzer analyzer CREATING window.
--lifecycle-appstream APPSTREAM_LIFECYCLE_DELAY AppStream fleet and image builder STARTING/STOPPING/PENDING window.
--lifecycle-fis FIS_LIFECYCLE_DELAY FIS experiment state step delay (built-in 10ms).
--lifecycle-dsql DSQL_LIFECYCLE_DELAY Aurora DSQL cluster and stream transitional window (built-in 750ms clusters, 500ms streams).
--lifecycle-workmail WORKMAIL_LIFECYCLE_DELAY WorkMail transitional window.
--lifecycle-personalize PERSONALIZE_LIFECYCLE_DELAY Personalize resource CREATE PENDING/IN PROGRESS window.
--lifecycle-opsworks OPSWORKS_LIFECYCLE_DELAY OpsWorks instance transitional window.
--lifecycle-outposts OUTPOSTS_TRANSITION_DELAY Outposts transitional window (built-in 100ms).
--lifecycle-support SUPPORT_CASE_PROGRESS_DELAY Support case progress window.
--lifecycle-macie2 MACIE2_LIFECYCLE_DELAY Macie one-time classification job RUNNING window before COMPLETE (built-in 5s).
--lifecycle-detective DETECTIVE_LIFECYCLE_DELAY Detective investigation RUNNING window before SUCCESSFUL.
--lifecycle-eks EKS_LIFECYCLE_DELAY EKS transitional-state window (built-in 100ms).
--lifecycle-cloudcontrol CLOUDCONTROL_OPERATION_DELAY Cloud Control Create/Update/DeleteResource IN_PROGRESS window.
--lifecycle-mediapackage MEDIAPACKAGE_HARVEST_JOB_DELAY MediaPackage harvest job IN_PROGRESS window (built-in 1s).
--lifecycle-mwaa MWAA_LIFECYCLE_DELAY MWAA environment CREATING/UPDATING/DELETING window.
--lifecycle-omics OMICS_LIFECYCLE_DELAY HealthOmics workflow/store/share/run and import/export/activation job per-hop window.
--lifecycle-resiliencehub RESILIENCEHUB_LIFECYCLE_DELAY Resilience Hub assessment/import/resolution per-hop window (built-in 100ms).
--lifecycle-databrew DATABREW_LIFECYCLE_DELAY DataBrew job run STARTING-to-SUCCEEDED window (built-in 100ms).
--lifecycle-mgn MGN_LIFECYCLE_DELAY Application Migration Service replication/job/import per-hop window (built-in 100ms).
--lifecycle-forecast FORECAST_LIFECYCLE_DELAY Forecast resource CREATE_PENDING/CREATE_IN_PROGRESS window.
--lifecycle-networkmonitor NETWORKMONITOR_LIFECYCLE_DELAY Network Monitor monitor and probe PENDING window.
--lifecycle-route53-recovery ROUTE53_RECOVERY_LIFECYCLE_DELAY Route 53 ARC control plane PENDING and PENDING_DELETION window for clusters, control panels, routing controls and safety rules.
--lifecycle-arczonalshift ARCZONALSHIFT_PRACTICE_RUN_DURATION ARC zonal shift practice run ACTIVE window; 0 keeps the built-in 30m; ignores the global delay.
--lifecycle-managedblockchain MANAGEDBLOCKCHAIN_LIFECYCLE_DELAY Managed Blockchain network/member/node CREATING window.
--lifecycle-cleanrooms CLEANROOMS_LIFECYCLE_DELAY Clean Rooms protected query and job SUBMITTED window.
--lifecycle-resourcegroups RESOURCEGROUPS_LIFECYCLE_DELAY Resource Groups transitional window.
--lifecycle-serverlessrepo SERVERLESSREPO_LIFECYCLE_DELAY Serverless Application Repository template PREPARING window.
--lifecycle-codeconnections CODECONNECTIONS_LIFECYCLE_DELAY CodeConnections connection handshake and host setup PENDING window.
--lifecycle-codestarconnections CODESTARCONNECTIONS_LIFECYCLE_DELAY CodeStar Connections connection handshake and host setup PENDING window; hosts stay PENDING when 0.
--lifecycle-docdb DOCDB_LIFECYCLE_DELAY DocumentDB cluster/instance creating window.
--lifecycle-neptune NEPTUNE_LIFECYCLE_DELAY Neptune cluster/instance creating window.
--lifecycle-kafka KAFKA_LIFECYCLE_DELAY MSK cluster CREATING/UPDATING window.
--lifecycle-awsconfig AWSCONFIG_LIFECYCLE_DELAY AWS Config conformance pack CREATE_IN_PROGRESS window.
--lifecycle-inspector2 INSPECTOR2_LIFECYCLE_DELAY Inspector2 ENABLING/DISABLING window.
--lifecycle-apprunner APPRUNNER_OPERATION_DELAY App Runner service OPERATION_IN_PROGRESS window after create/update/pause/resume/deploy/delete.
--lifecycle-fsx FSX_LIFECYCLE_DELAY FSx file system/backup/volume/snapshot CREATING window.
--lifecycle-networkmanager NETWORKMANAGER_LIFECYCLE_DELAY Network Manager PENDING/DELETING window (built-in 100ms).
--lifecycle-organizations ORGANIZATIONS_LIFECYCLE_DELAY Organizations CreateAccount/CreateGovCloudAccount IN_PROGRESS window before SUCCEEDED/FAILED.
--lifecycle-account ACCOUNT_LIFECYCLE_DELAY Account region ENABLING/DISABLING window (built-in 100ms).
--lifecycle-comprehend COMPREHEND_LIFECYCLE_DELAY Comprehend async job and classifier/recognizer training stage window.
--lifecycle-rekognition REKOGNITION_LIFECYCLE_DELAY Rekognition stream processor, project version and dataset transitional window.
--lifecycle-textract TEXTRACT_ASYNC_JOB_DELAY Textract async job IN_PROGRESS window (built-in 200ms; ignores the global delay).
--lifecycle-translate TRANSLATE_LIFECYCLE_DELAY Translate batch job and parallel data stage window.
--lifecycle-polly POLLY_LIFECYCLE_DELAY Polly speech synthesis task stage window.
--lifecycle-transcribe TRANSCRIBE_LIFECYCLE_DELAY Transcribe job, vocabulary and language model IN_PROGRESS/PENDING window.
--lifecycle-iotanalytics IOTANALYTICS_LIFECYCLE_DELAY IoT Analytics channel/datastore/dataset CREATING and dataset content CREATING window.
--lifecycle-iotwireless IOTWIRELESS_LIFECYCLE_DELAY IoT Wireless FUOTA task FuotaSession_Waiting/In_FuotaSession stage window.
--lifecycle-workspaces WORKSPACES_LIFECYCLE_DELAY WorkSpaces PENDING / directory REGISTERING window.
--lifecycle-quicksight QUICKSIGHT_CREATION_DELAY QuickSight dashboard/analysis/data source CREATION_IN_PROGRESS window.
--lifecycle-quicksight-ingestion QUICKSIGHT_INGESTION_DELAY QuickSight manual ingestion RUNNING window (built-in 1s; ignores the global delay).
--lifecycle-kinesisanalyticsv2 KINESISANALYTICSV2_LIFECYCLE_DELAY Managed Flink application STARTING/STOPPING/UPDATING window.
--lifecycle-sagemaker SAGEMAKER_LIFECYCLE_DELAY SageMaker transitional-state window (unset keeps the built-in dwell).
--lifecycle-bedrock BEDROCK_JOB_COMPLETION_DELAY Bedrock job InProgress window (unset keeps the built-in window).
--lifecycle-bedrockagent BEDROCKAGENT_LIFECYCLE_DELAY Bedrock Agents CREATING/PREPARING/UPDATING and ingestion window.
--lifecycle-elasticbeanstalk ELASTICBEANSTALK_LIFECYCLE_DELAY Elastic Beanstalk environment Launching/Updating/Terminating window.
--lifecycle-route53resolver ROUTE53RESOLVER_LIFECYCLE_DELAY Route 53 Resolver endpoint CREATING/UPDATING and rule association CREATING window.
--lifecycle-directoryservice DIRECTORYSERVICE_LIFECYCLE_DELAY Directory Service Requested/Creating, restore and trust/snapshot/share/setting transitions (unset keeps the built-in sub-second dwell).
--lifecycle-medialive MEDIALIVE_LIFECYCLE_DELAY MediaLive channel/multiplex CREATING/STARTING/STOPPING/DELETING window.
--lifecycle-cloudfront CLOUDFRONT_DEPLOY_DELAY CloudFront distribution InProgress window (default 100ms).
--lifecycle-ssm-command / --lifecycle-ssm-automation SSM_COMMAND_EXEC_DELAY / SSM_AUTOMATION_EXEC_DELAY SendCommand / automation InProgress window.
(none) DYNAMODB_CREATE_DELAY DynamoDB table CREATING window.

DynamoDB

  • In-memory storage — blazing fast tables and items
  • Secondary indexes — full Global (GSI) and Local (LSI) secondary index support
  • Rich querying — sort-key conditions, pagination (Limit, ExclusiveStartKey), ordering
  • Efficient scanning — filtering and projection with DynamoDB expressions
  • Expression support — expression attribute values and names
  • Streams — change capture that can drive Lambda via Event Source Mappings

S3

  • Bucket management — full lifecycle for versioned and unversioned buckets
  • Object operations — Get, Put, Head, List, multipart uploads
  • Versioning & tagging — first-class object versioning and metadata tagging
  • Data integrity — automatic checksums (CRC32, CRC32C, SHA1, SHA256)
  • Compression — integrated gzip compression for efficient memory usage

Lambda (Zip and Image packaging)

Gopherstack runs real Lambda functions in containers, supporting both Zip (PackageType: Zip) and container image (PackageType: Image) packaging.

  • Zip functions — the archive is extracted and run on the matching AWS runtime base image, so standard managed runtimes work unmodified: python3.9–python3.13, nodejs18.x/20.x/22.x, java11/17/21, dotnet8/dotnet9, ruby3.2/3.3, and provided.al2/provided.al2023
  • Image functions — provide an ImageUri (an AWS base image or your own)
  • Lambda Runtime API — full implementation, so standard AWS base images work as-is
  • Invocation modes — RequestResponse (sync) and Event (async / fire-and-forget)
  • Warm container pool — configurable per-function pool to cut cold starts
  • Reserved concurrency — enforced for both sync and async calls
  • Async realism — AWS-realistic retry semantics and dead-letter queues (via SNS/SQS)
  • Environment variables — passed straight through to the container

[!IMPORTANT] Both packaging modes require a running Docker (or Podman) daemon to execute invocations. S3-based code delivery and direct Go binary execution on the host are not supported. All other Gopherstack services work without Docker.

# Create an image-based Lambda function
aws lambda create-function \
    --endpoint-url http://localhost:8000 \
    --function-name my-function \
    --package-type Image \
    --code ImageUri=public.ecr.aws/lambda/python:3.12 \
    --role arn:aws:iam::000000000000:role/my-role

# Invoke synchronously
aws lambda invoke \
    --endpoint-url http://localhost:8000 \
    --function-name my-function \
    --payload '{"key":"value"}' \
    response.json

# List functions
aws lambda list-functions --endpoint-url http://localhost:8000
Lambda configuration
Flag Env var Default Description
--lambda-docker-host LAMBDA_DOCKER_HOST 172.17.0.1 Host/IP that Lambda containers use to reach Gopherstack's Runtime API
--lambda-pool-size LAMBDA_POOL_SIZE 3 Maximum warm containers per function
--lambda-idle-timeout LAMBDA_IDLE_TIMEOUT 10m Idle container lifetime before reaping
--lambda-container-runtime CONTAINER_RUNTIME docker Container runtime: docker, podman, or auto
Using Podman

Podman works as a drop-in replacement for Docker via its Docker-compatible API socket.

# Enable the Podman socket for your user (rootless, Linux)
systemctl --user enable --now podman.socket

# Point Gopherstack at Podman
export CONTAINER_RUNTIME=podman

# Optional: override the socket path
export CONTAINER_HOST=unix://${XDG_RUNTIME_DIR}/podman/podman.sock

Rootless networking note: in rootless Podman the Docker bridge (172.17.0.1) is not available — use the host's routable IP or host.containers.internal:

export LAMBDA_DOCKER_HOST=host.containers.internal

Set CONTAINER_RUNTIME=auto to probe Docker first, then Podman, and use whichever socket is reachable.

Event Source Mappings (ESM)

Automatically trigger Lambda functions from DynamoDB Streams — Gopherstack manages the polling and invocation for you once an ESM exists. Respects batch size, starting position (TRIM_HORIZON, LATEST), and enable/disable state.

EventBridge Scheduler & Pipes

  • Scheduler — recurring or one-time scheduled tasks that trigger AWS targets (Lambda, SQS, SNS, and more)
  • Pipes — point-to-point integrations from sources (SQS) to targets (Lambda, Step Functions) with optional filtering and enrichment

Performance & Scalability

  • O(1) ARN indexing — tagging and resource lookup use a centralized ARN index, so operations stay fast with thousands of resources
  • Memory optimization — struct field alignment and efficient data structures keep the footprint small
  • Profile-guided optimization — the binary ships with a PGO profile captured from real workloads (see PGO)

Response compression

Responses are compressed at runtime (never at build time) when the client asks via Accept-Encoding; the server prefers zstd, then br, then gzip when weights tie.

  • Dashboard — assets and JSON API responses of at least 1 KiB are compressed; embedded assets are compressed once per coding and cached in memory. Streams (SSE, Connect/gRPC), Range, HEAD and already-encoded responses are never touched.
  • AWS APIs — SDK clients send Accept-Encoding: identity, so nothing changes for them. Only DynamoDB answers gzip to clients that opt in (EnableAcceptEncodingGzip), with X-Amz-Crc32 computed over the compressed bytes like the real service. No other AWS service, S3 object body or proxied Lambda/API Gateway response is compressed.
  • Opt out — --compression off (or COMPRESSION=off) disables all of it.

Examples

Complete, runnable examples live in examples/ — each ships a docker-compose.yml and a demo.sh so you can run it end to end.

Example What it demonstrates Requires
apigw-websocket-chat Real-time chat over API Gateway WebSockets with a Node.js Lambda backend OpenTofu, Node.js (wscat)
cognito-api-auth Securing API Gateway with a Cognito User Pool authorizer and JWTs OpenTofu, Bash
ddb-lambda-chain 3-table event pipeline where DynamoDB Streams trigger a Go Lambda Go, Bash
ec2-docker Provisioning EC2 instances and running SSH commands against them Bash (ssh, dig)
elasticache-valkey ElastiCache Valkey cluster reachable via embedded DNS Bash (valkey-cli/redis-cli)
eventbridge-sqs Routing custom EventBridge events to an SQS queue OpenTofu
kinesis-lambda-aggregator Kinesis stream invoking a Node.js Lambda that aggregates into DynamoDB OpenTofu, Bash
s3-access-logs Configuring S3 server access logging OpenTofu
s3-lambda-processor S3 uploads triggering a Go Lambda to process the object OpenTofu, Go, Bash
sns-sqs-fanout Pub/sub fan-out from SNS to multiple SQS queues OpenTofu
stepfunctions-order-workflow Order-processing state machine orchestrated by Step Functions OpenTofu, Bash

Running one:

cd examples/kinesis-lambda-aggregator
docker compose up -d
./demo.sh

See examples/README.md for prerequisites and teardown.

Services

Every service links to its own page with a coverage breakdown — audited operations, known gaps, deferred items and resource-leak status — generated from that service's PARITY.md audit.

Parity is the overall grade recorded by that service's most recent audit. PARITY Entries is the number of ops: entries audited in that service's PARITY.md -- a hand-grouped audit unit, not a raw operation count (one entry can name more than one real operation); a dash means the service is tracked by feature family instead. Run task docs to refresh this table.

Compute

Service Parity PARITY Entries Notes
App Runner A 37 clean
Auto Scaling A 66 1 gap; 2 structural gaps
Batch A 45 3 structural gaps
EC2 A — 22 families; 3 gaps; 18 structural gaps; 5 deferred
Elastic Beanstalk A 47 4 structural gaps
Lambda A — 10 families; 10 structural gaps

Containers

Service Parity PARITY Entries Notes
ECR A 58 2 structural gaps; 2 deferred
ECS A 65 5 structural gaps
EKS A 70 2 gaps; 5 structural gaps; 1 deferred

Storage

Service Parity PARITY Entries Notes
Backup A 66 2 gaps; 3 structural gaps
Data Lifecycle Manager A 8 clean
EFS A 31 4 gaps; 1 deferred
FSx A — 13 families; 2 structural gaps
S3 A 26 4 gaps; 4 structural gaps
S3 Control A 44 3 gaps; 6 structural gaps; 2 deferred
S3 Files B 21 7 gaps; 1 structural gap
S3 Glacier A 33 clean
S3 Tables A 49 clean

Database

Service Parity PARITY Entries Notes
DAX A 21 1 structural gap; 1 deferred
DocumentDB A 55 2 gaps; 5 structural gaps; 1 deferred
DynamoDB A — 15 families; 1 gap; 3 structural gaps; 2 deferred
DynamoDB Streams A 4 clean
ElastiCache A 75 2 gaps; 4 structural gaps; 1 deferred
MemoryDB A 45 3 gaps; 2 structural gaps; 3 deferred
Neptune A — 13 families; 5 gaps; 2 structural gaps; 2 deferred
QLDB Removed — removed service
QLDB Session Removed — removed service
RDS A 52 4 gaps; 7 structural gaps
RDS Data A 7 4 structural gaps
Redshift A 9 5 gaps; 5 structural gaps
Redshift Data A 12 4 structural gaps; 1 deferred
Timestream Query A 12 2 structural gaps; 1 deferred
Timestream Write A 19 1 structural gap

Networking & Content Delivery

Service Parity PARITY Entries Notes
API Gateway A 123 2 gaps; 1 structural gap; 2 deferred
API Gateway Management API A 3 2 deferred
API Gateway v2 A 77 5 gaps; 1 structural gap
ARC Zonal Shift A 15 1 structural gap
App Mesh A 38 1 structural gap
Cloud Map A 30 4 structural gaps; 1 deferred
CloudFront A 60 2 gaps; 4 structural gaps; 4 deferred
CloudWatch Network Monitor A 12 1 deferred
ELB (Classic) A 29 1 gap; 1 deferred
ELBv2 A 51 2 gaps; 2 structural gaps; 2 deferred
Route 53 A 67 3 deferred
Route 53 Recovery Cluster A 4 clean
Route 53 Recovery Control Config A 25 1 structural gap
Route 53 Recovery Readiness A 32 1 structural gap
Route 53 Resolver A 72 4 gaps; 1 structural gap; 1 deferred
VPC Lattice A 73 1 gap; 3 structural gaps

Messaging & Integration

Service Parity PARITY Entries Notes
Amazon MQ A 25 2 structural gaps; 1 deferred
AppSync A 74 8 gaps; 1 structural gap; 2 deferred
EventBridge A 66 2 gaps; 3 structural gaps; 2 deferred
EventBridge Pipes A 10 2 structural gaps
EventBridge Scheduler A 12 1 gap
Pinpoint A 51 2 structural gaps; 3 deferred
SES A 71 2 gaps; 3 structural gaps; 1 deferred
SES v2 A 112 2 gaps; 2 structural gaps
SNS A 34 1 structural gap; 1 deferred
SQS A 20 2 gaps; 1 structural gap
SWF A 39 clean
Step Functions A 37 4 gaps; 3 structural gaps
WorkMail A 92 2 gaps; 3 structural gaps

Analytics

Service Parity PARITY Entries Notes
Athena A 26 7 gaps; 6 structural gaps; 1 deferred
Clean Rooms A — 17 families; 5 structural gaps
EMR A 65 7 structural gaps
EMR Serverless A 22 1 structural gap
Elasticsearch A 51 1 structural gap
Glue A 59 2 gaps; 5 structural gaps; 2 deferred
Glue DataBrew A 44 1 structural gap
Kinesis A 39 1 gap; 5 structural gaps
Kinesis Analytics A 20 clean
Kinesis Analytics v2 A 33 3 gaps; 1 structural gap; 1 deferred
Kinesis Data Firehose A 12 4 structural gaps
Lake Formation A 61 1 gap; 2 structural gaps
Managed Streaming for Kafka A 64 4 gaps; 1 structural gap
Managed Workflows for Apache Airflow A 12 2 gaps; 1 structural gap; 1 deferred
OpenSearch A 19 1 structural gap
QuickSight A 81 3 gaps; 7 structural gaps

Security

Service Parity PARITY Entries Notes
ACM A 39 1 gap; 4 structural gaps; 1 deferred
ACM PCA A 23 1 structural gap
Detective A 29 4 structural gaps; 2 deferred
GuardDuty A 66 3 structural gaps
Inspector A 13 4 structural gaps; 1 deferred
KMS A 54 1 gap; 1 structural gap; 1 deferred
Macie A 81 clean
Secrets Manager A 24 1 structural gap; 2 deferred
Security Hub A 116 2 gaps; 4 structural gaps
Shield A 36 1 structural gap; 1 deferred
Verified Permissions A 34 2 gaps; 1 structural gap
WAF A 4 3 structural gaps
WAFv2 A 59 2 gaps; 2 structural gaps

Identity & Access

Service Parity PARITY Entries Notes
Cognito Identity A 23 1 gap; 4 deferred
Cognito Identity Provider A 68 6 gaps; 3 structural gaps
Directory Service A 80 1 gap; 2 structural gaps; 1 deferred
IAM A 38 2 gaps; 4 structural gaps
IAM Access Analyzer A 39 1 gap; 5 structural gaps; 1 deferred
IAM Identity Center (SSO) A 56 1 gap
IAM Identity Center OIDC B 4 1 gap; 1 structural gap
IAM Identity Center Portal B 4 2 gaps; 1 structural gap
IAM Roles Anywhere A 30 1 gap; 2 structural gaps
Identity Store A 19 2 gaps; 1 deferred
STS A 11 1 structural gap; 1 deferred

Management & Governance

Service Parity PARITY Entries Notes
Account A 16 3 structural gaps; 1 deferred
AppConfig A 56 2 gaps; 1 structural gap
AppConfig Data A 2 clean
Application Auto Scaling A 14 1 gap; 2 structural gaps; 2 deferred
Cloud Control API A 8 1 gap; 3 structural gaps
CloudFormation A 73 6 gaps; 2 structural gaps
CloudTrail A 60 2 gaps; 4 structural gaps
CloudWatch A 50 1 structural gap; 16 deferred
CloudWatch Logs A 86 5 gaps; 9 structural gaps
Config A 102 4 gaps; 2 structural gaps; 1 deferred
Cost Explorer A 37 1 gap; 5 structural gaps; 2 deferred
Fault Injection Simulator A 26 2 structural gaps; 1 deferred
OpsWorks A 32 1 gap; 2 structural gaps; 1 deferred
Organizations A 63 2 structural gaps
Resource Access Manager A 36 2 gaps; 1 structural gap; 2 deferred
Resource Groups A 23 2 structural gaps
Resource Groups Tagging API A 9 2 structural gaps; 1 deferred
Systems Manager A 105 5 gaps; 14 structural gaps

Developer Tools

Service Parity PARITY Entries Notes
Amplify A 37 3 structural gaps
CodeArtifact A 48 3 gaps; 3 structural gaps
CodeBuild A 59 3 gaps; 2 structural gaps; 1 deferred
CodeCommit A 79 1 gap; 1 structural gap
CodeConnections A 27 1 gap
CodeDeploy A 47 3 structural gaps; 1 deferred
CodePipeline A 22 3 gaps; 7 structural gaps; 1 deferred
CodeStar Connections A 27 1 gap; 2 structural gaps
Serverless Application Repository A 14 clean
X-Ray A 38 2 gaps; 6 structural gaps; 1 deferred

Machine Learning

Service Parity PARITY Entries Notes
Bedrock A 80 1 gap; 3 structural gaps
Bedrock Agent A 77 2 gaps; 3 structural gaps; 2 deferred
Bedrock Runtime A 11 3 gaps; 5 structural gaps
Comprehend A 28 1 gap; 1 structural gap; 1 deferred
Forecast A 21 1 gap
Personalize A 74 clean
Polly A 10 clean
Rekognition A 50 3 structural gaps; 3 deferred
SageMaker A 69 1 gap; 11 structural gaps
SageMaker Runtime A 3 1 structural gap
Textract A 25 2 structural gaps; 1 deferred
Transcribe A 43 2 structural gaps
Translate A 19 1 gap; 2 structural gaps

Media

Service Parity PARITY Entries Notes
MediaConvert A 34 2 structural gaps; 1 deferred
MediaLive A — 26 families; 2 gaps; 1 structural gap
MediaPackage A 19 1 deferred
MediaStore A 21 1 gap
MediaStore Data A 5 1 gap; 1 structural gap; 1 deferred
MediaTailor A 48 3 gaps; 2 structural gaps

IoT

Service Parity PARITY Entries Notes
IoT Analytics A 34 1 gap; 1 structural gap
IoT Core A 88 9 gaps; 5 structural gaps
IoT Data Plane A 11 1 structural gap; 1 deferred
IoT Wireless A 21 2 structural gaps

Migration & Transfer

Service Parity PARITY Entries Notes
DataSync A 53 2 gaps; 3 structural gaps; 1 deferred
Database Migration Service A 97 3 gaps; 3 structural gaps
Transfer Family A — 20 families; 2 structural gaps

Azure

Service Parity PARITY Entries Notes
Azure Blob Storage C 19 8 gaps; 3 deferred
Azure Cosmos DB B 18 9 gaps
Azure Key Vault B 15 5 gaps
Azure Queue Storage C 11 7 gaps; 1 deferred
Azure Service Bus B 17 4 gaps; 2 deferred
Azure Table Storage C 13 6 gaps; 3 deferred

GCP

Service Parity PARITY Entries Notes
Cloud IAM B 31 5 gaps
Cloud Scheduler B 10 5 gaps
Cloud Tasks B 20 3 gaps
Google Cloud Firestore B 15 4 gaps
Google Cloud KMS B 35 4 gaps
Google Cloud Pub/Sub B 35 6 gaps
Google Cloud Storage B 23 8 gaps
Google Secret Manager B 15 4 gaps

Other

Service Parity PARITY Entries Notes
Amp B 44 11 gaps; 2 structural gaps
AppStream 2.0 A 44 5 structural gaps
Appintegrations B 23 4 gaps; 1 structural gap
Azurearm B 16 8 gaps; 3 deferred
Azurestoragevhost B 2 2 gaps; 1 deferred
Bcmdataexports B 12 6 gaps
Bedrockagentcorecontrol B 171 13 gaps; 2 structural gaps
Budgets B 26 9 gaps
Cloudfrontkeyvaluestore A 6 2 structural gaps
Cloudhsmv2 B 18 9 gaps; 3 structural gaps
Codegurureviewer B 14 6 gaps; 2 structural gaps
Connect B 141 34 gaps; 2 structural gaps
Cur B 7 6 gaps
Directconnect A 64 8 structural gaps; 1 deferred
Dsql A 16 3 structural gaps
Ecrpublic A 23 3 structural gaps
Globalaccelerator B 56 7 gaps; 2 structural gaps
Grafana A 25 1 structural gap
HealthOmics A — 25 families; 5 structural gaps; 1 deferred
Kafkaconnect A 19 3 gaps; 3 structural gaps
Kinesisvideo A 32 3 structural gaps
Lightsail A — 28 families; 1 gap; 6 structural gaps; 2 deferred
Managed Blockchain A 27 3 structural gaps
Marketplaceentitlementservice B 1 3 gaps; 1 structural gap
Marketplacemetering B 4 5 gaps; 2 structural gaps
Mgn A 95 1 gap; 8 structural gaps; 1 deferred
Networkfirewall B 85 4 gaps; 3 structural gaps
Networkmanager A 95 4 gaps; 2 structural gaps
Oam B 15 4 gaps; 1 structural gap
Outposts A 43 2 gaps; 7 structural gaps
Pricing B 5 4 gaps
Resiliencehub A 63 7 structural gaps
Resourceexplorer2 B 27 13 gaps; 1 structural gap
Rum B 20 9 gaps; 2 structural gaps
S3vectors B 21 8 gaps; 1 structural gap
Servicecatalog B 89 14 gaps; 1 structural gap
Servicequotas B 26 8 gaps; 1 structural gap
Support A 16 1 structural gap; 1 deferred
Timestreaminfluxdb B 24 10 gaps; 2 structural gaps
WorkSpaces A 34 4 gaps; 2 structural gaps

Using Gopherstack

AWS CLI

Everything works with the standard AWS CLI — just pass --endpoint-url:

# DynamoDB
aws dynamodb create-table \
    --endpoint-url http://localhost:8000 \
    --table-name Users \
    --attribute-definitions AttributeName=ID,AttributeType=S \
    --key-schema AttributeName=ID,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

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

# S3
aws s3 mb s3://my-bucket --endpoint-url http://localhost:8000
aws s3 cp myfile.txt s3://my-bucket/ --endpoint-url http://localhost:8000
aws s3 ls s3://my-bucket/ --endpoint-url http://localhost:8000

Alternatively set AWS_ENDPOINT_URL=http://localhost:8000 once and drop the flag.

Terraform / OpenTofu

Point the AWS provider at Gopherstack by overriding the service endpoints. No real credentials are needed — any non-empty string works.

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region                      = "us-east-1"
  access_key                  = "test"
  secret_key                  = "test"
  skip_credentials_validation = true
  skip_metadata_api_check     = true
  skip_requesting_account_id  = true

  endpoints {
    dynamodb       = "http://localhost:8000"
    s3             = "http://localhost:8000"
    sqs            = "http://localhost:8000"
    sns            = "http://localhost:8000"
    ssm            = "http://localhost:8000"
    kms            = "http://localhost:8000"
    secretsmanager = "http://localhost:8000"
    iam            = "http://localhost:8000"
    sts            = "http://localhost:8000"
    lambda         = "http://localhost:8000"
    cloudformation = "http://localhost:8000"
    cloudwatch     = "http://localhost:8000"
    cloudwatchlogs = "http://localhost:8000"
    stepfunctions  = "http://localhost:8000"
    eventbridge    = "http://localhost:8000"
    apigateway     = "http://localhost:8000"
  }
}

Terraform uses path-style S3 URLs, so set use_path_style = true on the S3 provider/resource when creating aws_s3_bucket resources.

docker compose up -d   # or: go run .
terraform init
terraform apply

AWS CDK

CDK synthesises CloudFormation locally and deploys it via the AWS SDK, so pointing the SDK at Gopherstack is enough:

export AWS_ENDPOINT_URL=http://localhost:8000
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
export AWS_DEFAULT_REGION=us-east-1
export CDK_DEFAULT_ACCOUNT=000000000000
export CDK_DEFAULT_REGION=us-east-1

docker compose up -d   # start Gopherstack
cdk bootstrap          # creates the CDKToolkit stack via CloudFormation
cdk deploy

AWS_ENDPOINT_URL is picked up automatically by the AWS SDK v2 used by the CDK CLI.

Documentation

Development

Prerequisites: Go 1.26+, Docker or Podman (only for Lambda invocations), AWS CLI (optional).

task all             # lint + all tests with coverage
task test            # unit tests (short mode)
task total-coverage  # unit + integration + E2E with combined coverage
task lint            # linters
task docs            # regenerate the service docs from each PARITY.md
task pgo             # regenerate the PGO profile

Versioning

Releases are tagged v1.<major>.<minor> — a major bump moves the middle number, a minor bump moves the last one. Releases are cut from the Release workflow, which only offers those two increments.

The leading 1 is deliberate and stays put. The Go module path is github.com/blackbirdworks/gopherstack with no /vN suffix, and Go requires any module at major version 2 or higher to carry that suffix in its path. A tag like v18.0.0 is therefore invisible to the Go module proxy and pkg.go.dev — staying on the v1.x.y line keeps go get working without rewriting every import across the tree on each release.

v1.0.x is reserved and must never be reused. An earlier release line published v1.0.0–v1.0.18, and proxy.golang.org caches module versions permanently while sum.golang.org records their checksums — re-tagging one of those numbers would serve the old cached code and break checksum verification for anyone fetching it. Releases therefore start at v1.1.0, which also sorts above the highest cached version. The release workflow enforces both rules and refuses to create a tag that violates them.

Profile-Guided Optimization (PGO)

The repo root ships default.pgo, a CPU profile that Go's Profile-Guided Optimization automatically consumes from the main package directory on every go build — no extra flags. It's captured from a representative workload (heavy DynamoDB GSI/LSI and S3 traffic, plus broad multi-service coverage) so the compiler can optimize the real hot paths.

Regenerate it with:

task pgo

This runs scripts/pgo.sh, which builds the server and the cmd/pgoload load generator, runs the server with pprof enabled, captures CPU profiles while driving load against it, and writes the merged result to default.pgo. It validates the profile with go tool pprof and go build -pgo=auto before finishing. Knobs (capture/load duration, concurrency, …) are environment variables — see the header of scripts/pgo.sh.

Per-PR: if your change measurably shifts the server's hot paths, run task pgo and commit the updated default.pgo alongside it.

CI: a weekly workflow (.github/workflows/pgo.yml) also runs task pgo and opens a pull request with a refreshed profile.

License

Gopherstack is released under the MIT License.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
acceptguard command
Command acceptguard finds gopherstack handlers that accept a REQUEST member the real pinned aws-sdk-go-v2 Input type does not declare -- the mirror image of every wire bug this campaign has found so far, which were all on the response side (a member emitted under the wrong key, dropped, or invented).
Command acceptguard finds gopherstack handlers that accept a REQUEST member the real pinned aws-sdk-go-v2 Input type does not declare -- the mirror image of every wire bug this campaign has found so far, which were all on the response side (a member emitted under the wrong key, dropped, or invented).
awsgs command
Package main provides awsgs, a thin wrapper around the aws CLI that automatically injects --endpoint-url so every command targets a running Gopherstack instance.
Package main provides awsgs, a thin wrapper around the aws CLI that automatically injects --endpoint-url so every command targets a running Gopherstack instance.
bdaudit command
Command bdaudit finds bd issues whose recorded state disagrees with what git history actually shows, and reports them -- it never writes to bd.
Command bdaudit finds bd issues whose recorded state disagrees with what git history actually shows, and reports them -- it never writes to bd.
bodyclass command
Command bodyclass answers, per operation, what a gopherstack service's restjson1/awsjson1.x response body actually is: wrapped (a genuine key-switch JSON object), flat/payload (the whole body collapses onto one Output member), header-only (no body, everything HTTP-header-bound), or void (no members beyond ResultMetadata).
Command bodyclass answers, per operation, what a gopherstack service's restjson1/awsjson1.x response body actually is: wrapped (a genuine key-switch JSON object), flat/payload (the whole body collapses onto one Output member), header-only (no body, everything HTTP-header-bound), or void (no members beyond ResultMetadata).
cfnattrgen command
Command cfnattrgen generates services/cloudformation's Fn::GetAtt attribute table from the CloudFormation resource specification.
Command cfnattrgen generates services/cloudformation's Fn::GetAtt attribute table from the CloudFormation resource specification.
checkpins command
Command checkpins verifies that every services/<svc>/PARITY.md sdk_module front-matter pin (aws-sdk-go-v2/service/<name>@v<version>, or azure-sdk-for-go/sdk/<path>@v<version> for Azure-backed services) matches the version go.mod actually requires for that module.
Command checkpins verifies that every services/<svc>/PARITY.md sdk_module front-matter pin (aws-sdk-go-v2/service/<name>@v<version>, or azure-sdk-for-go/sdk/<path>@v<version> for Azure-backed services) matches the version go.mod actually requires for that module.
clientcoverage command
Command clientcoverage measures which AWS operations gopherstack's own test suite actually exercises through a real aws-sdk-go-v2 client, as opposed to a raw-body httptest assertion or a direct handler call.
Command clientcoverage measures which AWS operations gopherstack's own test suite actually exercises through a real aws-sdk-go-v2 client, as opposed to a raw-body httptest assertion or a direct handler call.
covledger command
Command covledger reads and queries the bug-class coverage ledger at cmd/covledger/coverage.yaml -- gopherstack-7q13's answer to two consecutive targeting failures on this campaign, both traceable to the same missing thing: which service has been checked for which class of bug lived only in prose, scattered across bd comments, commit subjects and per-service PARITY.md sections under labels chosen ad hoc per pass.
Command covledger reads and queries the bug-class coverage ledger at cmd/covledger/coverage.yaml -- gopherstack-7q13's answer to two consecutive targeting failures on this campaign, both traceable to the same missing thing: which service has been checked for which class of bug lived only in prose, scattered across bd comments, commit subjects and per-service PARITY.md sections under labels chosen ad hoc per pass.
covmerge command
Command covmerge merges Go coverage profiles (as produced by `go test -covermode=atomic -coverprofile=...`) into a single deduplicated profile.
Command covmerge merges Go coverage profiles (as produced by `go test -covermode=atomic -coverprofile=...`) into a single deduplicated profile.
enumcheck command
Command enumcheck finds values gopherstack emits into a wire response field whose real pinned aws-sdk-go-v2 type is a named string enum, but that are not members of that enum's real declared value set -- gopherstack-6flj's guardduty class (GetUsageStatistics.sumByDataSource emitting DetectorFeature names like "S3_DATA_EVENTS" under a field whose real type is the unrelated six-member types.DataSource enum).
Command enumcheck finds values gopherstack emits into a wire response field whose real pinned aws-sdk-go-v2 type is a named string enum, but that are not members of that enum's real declared value set -- gopherstack-6flj's guardduty class (GetUsageStatistics.sumByDataSource emitting DetectorFeature names like "S3_DATA_EVENTS" under a field whose real type is the unrelated six-member types.DataSource enum).
errcodeaudit command
Command errcodeaudit finds an error code string gopherstack emits that names no real AWS error type at all -- the class commit fa0e68c21 fixed by hand in services/ecs, which emitted eleven codes (TaskNotFoundException, ClusterAlreadyExistsException, CapacityProviderNotFoundException, ...) corresponding to no type anywhere in the real pinned SDK.
Command errcodeaudit finds an error code string gopherstack emits that names no real AWS error type at all -- the class commit fa0e68c21 fixed by hand in services/ecs, which emitted eleven codes (TaskNotFoundException, ClusterAlreadyExistsException, CapacityProviderNotFoundException, ...) corresponding to no type anywhere in the real pinned SDK.
errtargetaudit command
Command errtargetaudit finds gopherstack-o46l's class: a REAL, correctly-spelled AWS error code -- present in the pinned SDK, legitimately correct elsewhere in the same service -- emitted by an operation whose OWN error deserializer never declares it.
Command errtargetaudit finds gopherstack-o46l's class: a REAL, correctly-spelled AWS error code -- present in the pinned SDK, legitimately correct elsewhere in the same service -- emitted by an operation whose OWN error deserializer never declares it.
gendocs command
Command gendocs regenerates per-service documentation from each service's PARITY.md audit manifest under services/.
Command gendocs regenerates per-service documentation from each service's PARITY.md audit manifest under services/.
internal/sdkshape
Package sdkshape parses a pinned aws-sdk-go-v2 service module's own generated source (api_op_*.go, types/types.go) into its declared request/response struct shapes: field name, declared Go type, and whether the SDK's doc comment marks it required.
Package sdkshape parses a pinned aws-sdk-go-v2 service module's own generated source (api_op_*.go, types/types.go) into its declared request/response struct shapes: field name, declared Go type, and whether the SDK's doc comment marks it required.
keycheck command
Command keycheck verifies that the string keys a service handler writes into its map[string]<T> wire responses, AND the json struct tags on any locally-declared *Output-suffixed struct it constructs, actually exist in the pinned AWS SDK's own response deserializer -- not the Go field name, the deserializer's literal switch-case string.
Command keycheck verifies that the string keys a service handler writes into its map[string]<T> wire responses, AND the json struct tags on any locally-declared *Output-suffixed struct it constructs, actually exist in the pinned AWS SDK's own response deserializer -- not the Go field name, the deserializer's literal switch-case string.
opcensus command
Command opcensus counts each service's List/Describe/Get operations for gopherstack-6flj (see services/_WRAPPER_KEY_SWEEP_REMAINDER.md).
Command opcensus counts each service's List/Describe/Get operations for gopherstack-6flj (see services/_WRAPPER_KEY_SWEEP_REMAINDER.md).
overwidecandidates command
Command overwidecandidates regenerates the over-wide List-response candidate list for gopherstack-dv4s (see services/_OVERWIDE_CANDIDATES.md).
Command overwidecandidates regenerates the over-wide List-response candidate list for gopherstack-dv4s (see services/_OVERWIDE_CANDIDATES.md).
parityfmtcheck command
Command parityfmtcheck checks two structural invariants of every services/<svc>/PARITY.md that every real consumer of the file (cmd/gendocs, cmd/stampaudit, cmd/staleclaims) depends on but none directly validates: a service: front-matter field that exists and names the directory it's actually in, and no unresolved git merge-conflict marker anywhere in the file.
Command parityfmtcheck checks two structural invariants of every services/<svc>/PARITY.md that every real consumer of the file (cmd/gendocs, cmd/stampaudit, cmd/staleclaims) depends on but none directly validates: a service: front-matter field that exists and names the directory it's actually in, and no unresolved git merge-conflict marker anywhere in the file.
paritylint command
Command paritylint checks the gopherstack-anjf invariant: fix status for every services/<svc>/PARITY.md lives in exactly one place, items_still_open:.
Command paritylint checks the gopherstack-anjf invariant: fix status for every services/<svc>/PARITY.md lives in exactly one place, items_still_open:.
paritymigrate command
Command paritymigrate is gopherstack-anjf's one-off migration: it consolidates every services/<svc>/PARITY.md's scattered open-item fields (gaps:/residual_gaps:) into the single canonical items_still_open: list.
Command paritymigrate is gopherstack-anjf's one-off migration: it consolidates every services/<svc>/PARITY.md's scattered open-item fields (gaps:/residual_gaps:) into the single canonical items_still_open: list.
pgoload command
Command pgoload is a heavy, concurrent load generator for a running Gopherstack server.
Command pgoload is a heavy, concurrent load generator for a running Gopherstack server.
reqfielddiff command
Command reqfielddiff finds SDK request-input fields the emulator never declared at all -- gopherstack-4glf's class, invisible to cmd/reqfieldscan by construction, since that scan enumerates fields the emulator's own decode structs DECLARE and checks each is read: a field with no struct field to enumerate is invisible to it.
Command reqfielddiff finds SDK request-input fields the emulator never declared at all -- gopherstack-4glf's class, invisible to cmd/reqfieldscan by construction, since that scan enumerates fields the emulator's own decode structs DECLARE and checks each is read: a field with no struct field to enumerate is invisible to it.
reqfieldscan command
Command reqfieldscan finds gopherstack request-struct fields that are declared on the wire but never read anywhere in the handling service's package -- gopherstack-4shm's class: a field decoded off the wire and then silently ignored, discarding a parameter or a whole request.
Command reqfieldscan finds gopherstack request-struct fields that are declared on the wire but never read anywhere in the handling service's package -- gopherstack-4shm's class: a field decoded off the wire and then silently ignored, discarding a parameter or a whole request.
requiredoutputfields command
Command requiredoutputfields regenerates the required-response-member ranking for gopherstack-r80d (see services/_REQUIRED_OUTPUT_CANDIDATES.md).
Command requiredoutputfields regenerates the required-response-member ranking for gopherstack-r80d (see services/_REQUIRED_OUTPUT_CANDIDATES.md).
routecollisions command
Command routecollisions regenerates the RouteMatcher over-claim candidate list for gopherstack-op3e (see services/_ROUTE_COLLISIONS.md).
Command routecollisions regenerates the RouteMatcher over-claim candidate list for gopherstack-op3e (see services/_ROUTE_COLLISIONS.md).
routingcorpus command
Command routingcorpus regenerates testdata/routing/corpus.tsv request columns from the pinned aws-sdk-go-v2 sources, keeping recorded expectations per request.
Command routingcorpus regenerates testdata/routing/corpus.tsv request columns from the pinned aws-sdk-go-v2 sources, keeping recorded expectations per request.
staleclaims command
Command staleclaims flags a services/<svc>/PARITY.md open-list entry (gaps:/items_still_open:/residual_gaps:) or "not fixed" Notes paragraph whose named op/field a LATER part of the same file records as fixed -- the shape gopherstack-anjf measured costing three dispatched workers at already-fixed gaps (codebuild, ecr, pipes) plus a near-miss (ecs) and a duplicate bug filing (pipes again).
Command staleclaims flags a services/<svc>/PARITY.md open-list entry (gaps:/items_still_open:/residual_gaps:) or "not fixed" Notes paragraph whose named op/field a LATER part of the same file records as fixed -- the shape gopherstack-anjf measured costing three dispatched workers at already-fixed gaps (codebuild, ecr, pipes) plus a near-miss (ecs) and a duplicate bug filing (pipes again).
stampaudit command
Command stampaudit reports whether each services/<svc>/PARITY.md last_audit_commit stamp still means what the manifest schema says it means (services/_PARITY_TEMPLATE.md: "HEAD when this manifest was written," re-audited via `git diff <last_audit_commit>..HEAD -- services/<svc>/`).
Command stampaudit reports whether each services/<svc>/PARITY.md last_audit_commit stamp still means what the manifest schema says it means (services/_PARITY_TEMPLATE.md: "HEAD when this manifest was written," re-audited via `git diff <last_audit_commit>..HEAD -- services/<svc>/`).
structfielddiff command
Command structfielddiff dumps every field of every <Op>Input, <Op>Output and nested struct the pinned aws-sdk-go-v2 source declares for one or more services, so the fields can be diffed by hand against gopherstack's own wire model.
Command structfielddiff dumps every field of every <Op>Input, <Op>Output and nested struct the pinned aws-sdk-go-v2 source declares for one or more services, so the fields can be diffed by hand against gopherstack's own wire model.
xmlitemwrap command
Command xmlitemwrap finds a specific, mechanically-detectable AWS query/XML wire-shape bug: a plain string list emitted with structure wrapped around each element instead of the real flat <someSet><item>value</item></someSet> shape.
Command xmlitemwrap finds a specific, mechanically-detectable AWS query/XML wire-shape bug: a plain string list emitted with structure wrapped around each element instead of the real flat <someSet><item>value</item></someSet> shape.
zeroguard command
Command zeroguard finds gopherstack Update/Put/Modify handlers that cannot distinguish "the caller omitted this field" from "the caller sent the zero value" and silently resolve the ambiguity the wrong way -- gopherstack-6flj's newest bug class, first confirmed in apigatewayv2.UpdateAuthorizer and fixed in commit 406c1dcc3.
Command zeroguard finds gopherstack Update/Put/Modify handlers that cannot distinguish "the caller omitted this field" from "the caller sent the zero value" and silently resolve the ambiguity the wrong way -- gopherstack-6flj's newest bug class, first confirmed in apigatewayv2.UpdateAuthorizer and fixed in commit 406c1dcc3.
examples
extensions/hello command
Command hello is a minimal gopherstack extension: it serves /hello and observes S3 requests.
Command hello is a minimal gopherstack extension: it serves /hello and observes S3 requests.
internal
app
awstest
Package awstest provides shared HTTP test helpers for service handler tests.
Package awstest provides shared HTTP test helpers for service handler tests.
linklocal
Package linklocal makes the AWS link-local service addresses (169.254.170.2 for ECS task credentials, 169.254.169.254 for EC2 IMDS) reachable from Docker containers without root.
Package linklocal makes the AWS link-local service addresses (169.254.170.2 for ECS task credentials, 169.254.169.254 for EC2 IMDS) reachable from Docker containers without root.
replicator
Package replicator copies resources from a source AWS account or endpoint into a running Gopherstack through the public SDK APIs on both sides.
Package replicator copies resources from a source AWS account or endpoint into a running Gopherstack through the public SDK APIs on both sides.
modules
gopherstack
Package gopherstack provides a Testcontainers module for Gopherstack.
Package gopherstack provides a Testcontainers module for Gopherstack.
pkgs
aadauth
Package aadauth provides a shared, dependency-light emulation of Azure AD (Microsoft Entra ID)'s client-credentials OAuth2 flow: an RSA-signed JWT issuer, JWKS publication, and the two AAD instance/authority discovery documents (openid-configuration and /common/discovery/instance).
Package aadauth provides a shared, dependency-light emulation of Azure AD (Microsoft Entra ID)'s client-credentials OAuth2 flow: an RSA-signed JWT issuer, JWKS publication, and the two AAD instance/authority discovery documents (openid-configuration and /common/discovery/instance).
apptrace
Package apptrace keeps a bounded, in-memory trace of every AWS API call that passes through the router, plus child spans for cross-service deliveries (SNS to SQS, EventBridge targets, ...) linked to the request that triggered them.
Package apptrace keeps a bounded, in-memory trace of every AWS API call that passes through the router, plus child spans for cross-service deliveries (SNS to SQS, EventBridge targets, ...) linked to the request that triggered them.
arn
Package arn provides utilities for building AWS ARNs.
Package arn provides utilities for building AWS ARNs.
awscron
Package awscron implements the field-matching primitives shared by AWS's cron(...) schedule expression dialects: numeric values, three-letter names, *, ?, ranges, steps, and comma lists for a single field, plus AWS's day-of-month/day-of-week OR semantics.
Package awscron implements the field-matching primitives shared by AWS's cron(...) schedule expression dialects: numeric values, three-letter names, *, ?, ranges, steps, and comma lists for a single field, plus AWS's day-of-month/day-of-week OR semantics.
awserr
Package awserr provides shared sentinel errors for AWS service stubs.
Package awserr provides shared sentinel errors for AWS service stubs.
awsid
Package awsid mints AWS-shaped resource IDs.
Package awsid mints AWS-shaped resource IDs.
awsmeta
Package awsmeta defines the Metadata struct that carries AWS request-scoped identity (account, region, partition, request ID) and a helper to populate it from an *http.Request.
Package awsmeta defines the Metadata struct that carries AWS request-scoped identity (account, region, partition, request ID) and a helper to populate it from an *http.Request.
awstime
Package awstime provides helpers for emitting timestamps in the wire format expected by AWS JSON-protocol SDK deserializers.
Package awstime provides helpers for emitting timestamps in the wire format expected by AWS JSON-protocol SDK deserializers.
azureauth
Package azureauth implements Azure Storage's SharedKey and SharedKeyLite Authorization-header scheme: structural parsing of the header, the canonicalization + HMAC-SHA256 signing algorithm described in Microsoft's "Authorize with Shared Key" REST reference, and an explicit, opt-in verification call.
Package azureauth implements Azure Storage's SharedKey and SharedKeyLite Authorization-header scheme: structural parsing of the header, the canonicalization + HMAC-SHA256 signing algorithm described in Microsoft's "Authorize with Shared Key" REST reference, and an explicit, opt-in verification call.
billingexport
Package billingexport holds the cost-line source, S3 sink and file encoders shared by the Cost and Usage Reports and Billing and Cost Management Data Exports emulators.
Package billingexport holds the cost-line source, S3 sink and file encoders shared by the Cost and Usage Reports and Billing and Cost Management Data Exports emulators.
collections
Package collections provides small, type-safe slice and map helpers that the Go standard library's slices and maps packages do not cover.
Package collections provides small, type-safe slice and map helpers that the Go standard library's slices and maps packages do not cover.
compress
Package compress is runtime content-negotiating response compression (zstd, br, gzip) with pooled encoders and an optional cache for immutable assets.
Package compress is runtime content-negotiating response compression (zstd, br, gzip) with pooled encoders and an optional cache for immutable assets.
condeval
Package condeval holds IAM policy / STS trust-policy condition-operator logic shared between services/iam and services/sts: ARN segment-wise matching (ArnEquals/ArnLike/ArnNotEquals/ArnNotLike) and Date operand parsing/comparison (DateEquals/.../DateGreaterThanEquals).
Package condeval holds IAM policy / STS trust-policy condition-operator logic shared between services/iam and services/sts: ARN segment-wise matching (ArnEquals/ArnLike/ArnNotEquals/ArnNotLike) and Date operand parsing/comparison (DateEquals/.../DateGreaterThanEquals).
config
Package config provides centralized AWS configuration shared by all Gopherstack services.
Package config provides centralized AWS configuration shared by all Gopherstack services.
container
Package container provides a runtime-agnostic container integration layer for Gopherstack.
Package container provides a runtime-agnostic container integration layer for Gopherstack.
ctxval
Package ctxval is a type-safe wrapper over context.Context values using generics.
Package ctxval is a type-safe wrapper over context.Context values using generics.
cwmetric
Package cwmetric is the shared shape for services that publish in-process CloudWatch metrics.
Package cwmetric is the shared shape for services that publish in-process CloudWatch metrics.
devtls
Package devtls provides a shared, in-memory self-signed TLS certificate generator for gopherstack's opt-in/mandatory dev HTTPS listeners.
Package devtls provides a shared, in-memory self-signed TLS certificate generator for gopherstack's opt-in/mandatory dev HTTPS listeners.
dns
Package dns provides an embedded DNS server for Gopherstack that resolves synthetic AWS-style hostnames (e.g.
Package dns provides an embedded DNS server for Gopherstack that resolves synthetic AWS-style hostnames (e.g.
dns/dnstest
Package dnstest starts embedded pkgs/dns servers on free ports for tests.
Package dnstest starts embedded pkgs/dns servers on free ports for tests.
docker
Package docker provides a Docker integration layer for Gopherstack.
Package docker provides a Docker integration layer for Gopherstack.
eventpattern
Package eventpattern holds the numeric-comparison and CIDR-matching core shared by EventBridge's and Pipes' event-pattern content filters (eb-event-patterns-content-based-filtering.html).
Package eventpattern holds the numeric-comparison and CIDR-matching core shared by EventBridge's and Pipes' event-pattern content filters (eb-event-patterns-content-based-filtering.html).
events
Package events defines the event system for Gopherstack.
Package events defines the event system for Gopherstack.
extensions
Package extensions runs out-of-process gopherstack extensions: executables or container images that register routes and hooks over a local control API.
Package extensions runs out-of-process gopherstack extensions: executables or container images that register routes and hooks over a local control API.
gcpdispatch
Package gcpdispatch holds helpers shared by the GCP emulators that deliver scheduled HTTP requests.
Package gcpdispatch holds helpers shared by the GCP emulators that deliver scheduled HTTP requests.
gcplro
Package gcplro is an in-memory google.longrunning.Operations server for the GCP emulators.
Package gcplro is an in-memory google.longrunning.Operations server for the GCP emulators.
httpclient
Package httpclient builds outbound HTTP clients that own their transport.
Package httpclient builds outbound HTTP clients that own their transport.
httptarget
Package httptarget holds the pieces shared by services that deliver events to HTTP-style targets (API Gateway REST APIs and EventBridge API destinations).
Package httptarget holds the pieces shared by services that deliver events to HTTP-style targets (API Gateway REST APIs and EventBridge API destinations).
httputils
Package httputils provides reusable HTTP utility components.
Package httputils provides reusable HTTP utility components.
iampolicystream
Package iampolicystream records IAM evaluation events in a bounded ring buffer, fans them out to live subscribers and derives least-privilege policy suggestions from them.
Package iampolicystream records IAM evaluation events in a bounded ring buffer, fans them out to live subscribers and derives least-privilege policy suggestions from them.
idempotency
Package idempotency replays client-token creates: a retry with the same token and parameters returns the resource the first call made.
Package idempotency replays client-token creates: a retry with the same token and parameters returns the resource the first call made.
inithooks
Package inithooks provides support for running user-defined scripts on Gopherstack startup.
Package inithooks provides support for running user-defined scripts on Gopherstack startup.
iso8601
Package iso8601 parses and formats the PnDTnHnMnS/PTnHnMnS subset of ISO 8601 durations used by Azure Service Bus's LockDuration/ DefaultMessageTimeToLive XML properties, and by ARM's equivalent JSON properties on Microsoft.ServiceBus queue/topic/subscription resources.
Package iso8601 parses and formats the PnDTnHnMnS/PTnHnMnS subset of ISO 8601 durations used by Azure Service Bus's LockDuration/ DefaultMessageTimeToLive XML properties, and by ARM's equivalent JSON properties on Microsoft.ServiceBus queue/topic/subscription resources.
lockmetrics
Package lockmetrics provides an instrumented sync.RWMutex that emits Prometheus metrics on every lock acquisition and release.
Package lockmetrics provides an instrumented sync.RWMutex that emits Prometheus metrics on every lock acquisition and release.
logger
Package logger is the project-wide slog wrapper.
Package logger is the project-wide slog wrapper.
odatatable
Package odatatable implements the shared entity CRUD / $filter engine behind Azure Table Storage's and Azure Cosmos DB's Table API OData/JSON wire protocol: both are wire-identical (same entity model, same $filter grammar), differing only in auth and endpoint/path conventions, which stay in each caller's own service package.
Package odatatable implements the shared entity CRUD / $filter engine behind Azure Table Storage's and Azure Cosmos DB's Table API OData/JSON wire protocol: both are wire-identical (same entity model, same $filter grammar), differing only in auth and endpoint/path conventions, which stay in each caller's own service package.
page
Package page provides a generic paginated list type used across service backends.
Package page provides a generic paginated list type used across service backends.
parquetio
Package parquetio reads and writes Parquet files for the SQL engines (Athena, S3 Select, Firehose format conversion).
Package parquetio reads and writes Parquet files for the SQL engines (Athena, S3 Select, Firehose format conversion).
persistence
Package persistence provides a pluggable persistence layer for Gopherstack services.
Package persistence provides a pluggable persistence layer for Gopherstack services.
pods
Package pods saves and loads named, versioned whole-emulator snapshots ("pods") to a local directory or an S3-compatible bucket.
Package pods saves and loads named, versioned whole-emulator snapshots ("pods") to a local directory or an S3-compatible bucket.
portalloc
Package portalloc provides a central port allocator for Gopherstack services.
Package portalloc provides a central port allocator for Gopherstack services.
portalloc/portalloctest
Package portalloctest hands tests port allocators over disjoint, probed-free blocks.
Package portalloctest hands tests port allocators over disjoint, probed-free blocks.
redisengine
Package redisengine runs an in-process Redis-protocol server (miniredis) on an allocator-provided or ephemeral port.
Package redisengine runs an in-process Redis-protocol server (miniredis) on an allocator-provided or ephemeral port.
regionpeers
Package regionpeers lets a single-region service handler serve extra regions by lazily building one sibling handler per non-home region.
Package regionpeers lets a single-region service handler serve extra regions by lazily building one sibling handler per non-home region.
restroute
Package restroute matches REST-JSON requests against smithy-style URI templates and writes AWS REST-JSON errors.
Package restroute matches REST-JSON requests against smithy-style URI templates and writes AWS REST-JSON errors.
roleauth
Package roleauth authorizes AWS-service-initiated calls against the customer role the service acts as.
Package roleauth authorizes AWS-service-initiated calls against the customer role the service acts as.
safemap
Package safemap provides a generic, concurrency-safe map wrapper.
Package safemap provides a generic, concurrency-safe map wrapper.
sdkcheck
Package sdkcheck provides helpers for verifying that gopherstack service handlers cover all operations exposed by the corresponding AWS SDK v2 client.
Package sdkcheck provides helpers for verifying that gopherstack service handlers cover all operations exposed by the corresponding AWS SDK v2 client.
sdktest
Package sdktest holds AWS SDK HTTP client helpers; only test files may import it.
Package sdktest holds AWS SDK HTTP client helpers; only test files may import it.
smtprelay
Package smtprelay delivers emulated SES mail to a real SMTP server using the standard library, asynchronously through a bounded queue.
Package smtprelay delivers emulated SES mail to a real SMTP server using the standard library, asynchronously through a bounded queue.
smtprelay/smtptest
Package smtptest provides a minimal in-process SMTP server for tests.
Package smtptest provides a minimal in-process SMTP server for tests.
store
Package store provides a generic, type-safe keyed collection (Table[V]) that replaces the per-backend map + Init/Reset/Snapshot/Restore boilerplate that every service.InMemoryBackend hand-rolls today (EC2 alone repeats it for ~180 maps).
Package store provides a generic, type-safe keyed collection (Table[V]) that replaces the per-backend map + Init/Reset/Snapshot/Restore boilerplate that every service.InMemoryBackend hand-rolls today (EC2 alone repeats it for ~180 maps).
strs
Package strs provides small, dependency-free case-folding string helpers.
Package strs provides small, dependency-free case-folding string helpers.
tags
Package tags provides a concurrency-safe string tag map for AWS resource annotations.
Package tags provides a concurrency-safe string tag map for AWS resource annotations.
testleak
Package testleak centralises goroutine-leak detection for tests.
Package testleak centralises goroutine-leak detection for tests.
transparent
Package transparent serves gopherstack over HTTPS for unmodified AWS SDKs that target real *.amazonaws.com endpoints (DNS points them at gopherstack).
Package transparent serves gopherstack over HTTPS for unmodified AWS SDKs that target real *.amazonaws.com endpoints (DNS points them at gopherstack).
version
Package version holds the build-time version information injected via ldflags.
Package version holds the build-time version information injected via ldflags.
worker
Package worker is the standard primitive for the background work gopherstack services run: periodic "janitor" sweeps, one-shot delayed state transitions, and tracked goroutines.
Package worker is the standard primitive for the background work gopherstack services run: periodic "janitor" sweeps, one-shot delayed state transitions, and tracked goroutines.
xmlappend
Package xmlappend provides allocation-free XML text/attribute escaping and element helpers, byte-identical to encoding/xml's output, for hot response encoders.
Package xmlappend provides allocation-free XML text/attribute escaping and element helpers, byte-identical to encoding/xml's output, for hot response encoders.
services
acm
amp
Package amp emulates Amazon Managed Service for Prometheus: the control plane and the Prometheus remote-write and HTTP query data plane.
Package amp emulates Amazon Managed Service for Prometheus: the control plane and the Prometheus remote-write and HTTP query data plane.
amp/promql
Package promql implements a PromQL subset: selectors, range functions, aggregations and binary operators.
Package promql implements a PromQL subset: selectors, range functions, aggregations and binary operators.
apigatewaymanagementapi
Package apigatewaymanagementapi provides an in-memory stub for the AWS API Gateway Management API, which is used to send data to connected WebSocket API clients and manage WebSocket connections.
Package apigatewaymanagementapi provides an in-memory stub for the AWS API Gateway Management API, which is used to send data to connected WebSocket API clients and manage WebSocket connections.
appconfig
Package appconfig -- this file implements the experiment RUN half of the A/B-testing family (experiment_definitions.go implements the definition half).
Package appconfig -- this file implements the experiment RUN half of the A/B-testing family (experiment_definitions.go implements the definition half).
appconfigdata
Package appconfigdata provides an in-memory stub for the AWS AppConfigData service, which is used to retrieve deployed configuration data for applications at runtime.
Package appconfigdata provides an in-memory stub for the AWS AppConfigData service, which is used to retrieve deployed configuration data for applications at runtime.
appintegrations
Package appintegrations emulates Amazon AppIntegrations: event and data integrations, their associations, and applications.
Package appintegrations emulates Amazon AppIntegrations: event and data integrations, their associations, and applications.
arczonalshift
Package arczonalshift emulates Application Recovery Controller zonal shift and zonal autoshift.
Package arczonalshift emulates Application Recovery Controller zonal shift and zonal autoshift.
azurequeue
Package azurequeue provides a local, in-memory emulation of Azure Queue Storage's REST+XML wire protocol (queue CRUD plus the full message lifecycle: put/get/peek/delete/update-visibility/clear), Azurite-compatible enough for unmodified azure-sdk-for-go clients to operate against.
Package azurequeue provides a local, in-memory emulation of Azure Queue Storage's REST+XML wire protocol (queue CRUD plus the full message lifecycle: put/get/peek/delete/update-visibility/clear), Azurite-compatible enough for unmodified azure-sdk-for-go clients to operate against.
azureservicebus
Package azureservicebus provides a local, in-memory emulation of Azure Service Bus's Brokered Messaging REST API: queue and topic/subscription CRUD, and the full send/peek-lock/complete/abandon/dead-letter message lifecycle over HTTP+SharedAccessSignature auth.
Package azureservicebus provides a local, in-memory emulation of Azure Service Bus's Brokered Messaging REST API: queue and topic/subscription CRUD, and the full send/peek-lock/complete/abandon/dead-letter message lifecycle over HTTP+SharedAccessSignature auth.
azurestoragevhost
Package azurestoragevhost is a thin translation layer, not a storage service in its own right: it owns one dedicated listener that accepts virtual-hosted-style Azure Storage requests (Host: "{account}.blob.host:port", ".queue.", ".table.") and rewrites them into the path-style requests services/azureblob, services/azurequeue, and services/azuretable already serve (Host: anything, path "/{account}/...").
Package azurestoragevhost is a thin translation layer, not a storage service in its own right: it owns one dedicated listener that accepts virtual-hosted-style Azure Storage requests (Host: "{account}.blob.host:port", ".queue.", ".table.") and rewrites them into the path-style requests services/azureblob, services/azurequeue, and services/azuretable already serve (Host: anything, path "/{account}/...").
azuretable
Package azuretable provides a local, in-memory emulation of Azure Table Storage's REST+JSON/OData wire protocol (table CRUD plus entity insert/get/query/replace/merge/delete, including a hand-written $filter lexer/parser/evaluator), Azurite-compatible enough for unmodified azure-sdk-for-go clients to operate against.
Package azuretable provides a local, in-memory emulation of Azure Table Storage's REST+JSON/OData wire protocol (table CRUD plus entity insert/get/query/replace/merge/delete, including a hand-written $filter lexer/parser/evaluator), Azurite-compatible enough for unmodified azure-sdk-for-go clients to operate against.
bedrockagent
Package bedrockagent provides a local stub for the Amazon Bedrock Agent service.
Package bedrockagent provides a local stub for the Amazon Bedrock Agent service.
bedrockagentcorecontrol
Package bedrockagentcorecontrol emulates the Amazon Bedrock AgentCore control plane.
Package bedrockagentcorecontrol emulates the Amazon Bedrock AgentCore control plane.
ce
Package ce provides an in-memory implementation of the AWS Cost Explorer (Ce) service.
Package ce provides an in-memory implementation of the AWS Cost Explorer (Ce) service.
cloudcontrol
Package cloudcontrol provides an in-memory implementation of the AWS CloudControl API service.
Package cloudcontrol provides an in-memory implementation of the AWS CloudControl API service.
cloudfrontkeyvaluestore
Package cloudfrontkeyvaluestore implements the AWS CloudFront KeyValueStore data-plane API (GetKey/PutKey/DeleteKey/ListKeys/UpdateKeys/ DescribeKeyValueStore).
Package cloudfrontkeyvaluestore implements the AWS CloudFront KeyValueStore data-plane API (GetKey/PutKey/DeleteKey/ListKeys/UpdateKeys/ DescribeKeyValueStore).
cloudhsmv2
Package cloudhsmv2 emulates the AWS CloudHSM v2 control plane: clusters, HSMs and backups.
Package cloudhsmv2 emulates the AWS CloudHSM v2 control plane: clusters, HSMs and backups.
codebuild
Package codebuild implements an in-memory AWS CodeBuild backend.
Package codebuild implements an in-memory AWS CodeBuild backend.
codedeploy
Package codedeploy provides an in-memory implementation of the AWS CodeDeploy service.
Package codedeploy provides an in-memory implementation of the AWS CodeDeploy service.
codegurureviewer
Package codegurureviewer emulates Amazon CodeGuru Reviewer: repository associations, code reviews that run a deterministic static rule set over the repository's real source, recommendations and feedback.
Package codegurureviewer emulates Amazon CodeGuru Reviewer: repository associations, code reviews that run a deterministic static rule set over the repository's real source, recommendations and feedback.
codepipeline
Package codepipeline provides an in-memory implementation of the AWS CodePipeline service.
Package codepipeline provides an in-memory implementation of the AWS CodePipeline service.
codestarconnections
Package codestarconnections provides an in-memory implementation of the AWS CodeStar Connections service.
Package codestarconnections provides an in-memory implementation of the AWS CodeStar Connections service.
cognitoidentity
Package cognitoidentity provides a mock implementation of the AWS Cognito Federated Identities service.
Package cognitoidentity provides a mock implementation of the AWS Cognito Federated Identities service.
cognitoidp
Package cognitoidp provides a mock implementation of the AWS Cognito User Pools service.
Package cognitoidp provides a mock implementation of the AWS Cognito User Pools service.
connect
Package connect emulates the Amazon Connect control plane and the contact records behind its metrics.
Package connect emulates the Amazon Connect control plane and the contact records behind its metrics.
cosmosdb
Package cosmosdb emulates Azure Cosmos DB over its REST+JSON gateway protocol: the Core (SQL) API (databases, containers with hierarchical partition keys and TTL, documents, a SQL query engine with joins, subqueries, aggregates and built-ins, continuation tokens, request-unit accounting) and the Table API.
Package cosmosdb emulates Azure Cosmos DB over its REST+JSON gateway protocol: the Core (SQL) API (databases, containers with hierarchical partition keys and TTL, documents, a SQL query engine with joins, subqueries, aggregates and built-ins, continuation tokens, request-unit accounting) and the Table API.
cur
databrew
Package databrew implements an in-memory AWS Glue DataBrew service backend.
Package databrew implements an in-memory AWS Glue DataBrew service backend.
dax
Package dax provides an in-memory simulation of the Amazon DAX (DynamoDB Accelerator) API.
Package dax provides an in-memory simulation of the Amazon DAX (DynamoDB Accelerator) API.
dax/dataplane
Package dataplane implements enough of the Amazon DAX binary wire protocol to serve the core DynamoDB data-plane operations over a raw TCP socket.
Package dataplane implements enough of the Amazon DAX binary wire protocol to serve the core DynamoDB data-plane operations over a raw TCP socket.
directconnect
Package directconnect emulates the AWS Direct Connect control-plane API (aws-sdk-go-v2/service/directconnect, protocol awsjson1.1 -- a single POST / dispatched by X-Amz-Target: OvertureService.<Op>, not REST).
Package directconnect emulates the AWS Direct Connect control-plane API (aws-sdk-go-v2/service/directconnect, protocol awsjson1.1 -- a single POST / dispatched by X-Amz-Target: OvertureService.<Op>, not REST).
dlm
dms
dynamodb
Package dynamodb implements the AWS DynamoDB mock service.
Package dynamodb implements the AWS DynamoDB mock service.
ec2
ecr
ecs
efs
eks
elb
Package elb provides an in-memory implementation of the AWS Classic Elastic Load Balancing (ELB) service.
Package elb provides an in-memory implementation of the AWS Classic Elastic Load Balancing (ELB) service.
emr
fis
Package fis provides an in-memory implementation of the AWS Fault Injection Service (FIS) API.
Package fis provides an in-memory implementation of the AWS Fault Injection Service (FIS) API.
fsx
grafana
Package grafana emulates the Amazon Managed Grafana control-plane API (aws-sdk-go-v2/service/grafana, protocol restjson1).
Package grafana emulates the Amazon Managed Grafana control-plane API (aws-sdk-go-v2/service/grafana, protocol restjson1).
iam
iot
Package iot provides a mock AWS IoT Core service with an embedded MQTT broker, IoT SQL rules engine, and action dispatch to SQS and Lambda.
Package iot provides a mock AWS IoT Core service with an embedded MQTT broker, IoT SQL rules engine, and action dispatch to SQS and Lambda.
iotdataplane
Package iotdataplane provides the IoT Data Plane HTTP API for publishing messages directly to MQTT topics.
Package iotdataplane provides the IoT Data Plane HTTP API for publishing messages directly to MQTT topics.
kafka
Package kafka provides an in-memory stub of AWS MSK (Managed Streaming for Apache Kafka).
Package kafka provides an in-memory stub of AWS MSK (Managed Streaming for Apache Kafka).
kinesisanalyticsv2
Package kinesisanalyticsv2 provides an in-memory stub of AWS Kinesis Data Analytics v2.
Package kinesisanalyticsv2 provides an in-memory stub of AWS Kinesis Data Analytics v2.
kms
Package kms provides a mock AWS Key Management Service (KMS) implementation.
Package kms provides a mock AWS Key Management Service (KMS) implementation.
lambda
Package lambda provides a mock AWS Lambda service for Gopherstack.
Package lambda provides a mock AWS Lambda service for Gopherstack.
lightsail
Package lightsail emulates the Amazon Lightsail control-plane API (aws-sdk-go-v2/service/lightsail, protocol awsjson1.1 -- a single POST / dispatched by X-Amz-Target: Lightsail_20161128.<Op>, not REST).
Package lightsail emulates the Amazon Lightsail control-plane API (aws-sdk-go-v2/service/lightsail, protocol awsjson1.1 -- a single POST / dispatched by X-Amz-Target: Lightsail_20161128.<Op>, not REST).
marketplaceentitlementservice
Package marketplaceentitlementservice emulates the AWS Marketplace Entitlement Service (GetEntitlements).
Package marketplaceentitlementservice emulates the AWS Marketplace Entitlement Service (GetEntitlements).
marketplacemetering
Package marketplacemetering emulates AWS Marketplace Metering: MeterUsage, BatchMeterUsage, RegisterUsage and ResolveCustomer, with entitlements derived for the Marketplace Entitlement Service.
Package marketplacemetering emulates AWS Marketplace Metering: MeterUsage, BatchMeterUsage, RegisterUsage and ResolveCustomer, with entitlements derived for the Marketplace Entitlement Service.
mgn
mq
Package mq provides an in-memory Amazon MQ with optional docker-backed brokers.
Package mq provides an in-memory Amazon MQ with optional docker-backed brokers.
neptune/opencypher
Package opencypher is an in-process openCypher engine over an in-memory property graph.
Package opencypher is an in-process openCypher engine over an in-memory property graph.
oam
organizations
Package organizations provides an in-memory stub for the AWS Organizations API.
Package organizations provides an in-memory stub for the AWS Organizations API.
outposts
Package outposts emulates the AWS Outposts control-plane API (aws-sdk-go-v2/service/outposts, protocol restjson1).
Package outposts emulates the AWS Outposts control-plane API (aws-sdk-go-v2/service/outposts, protocol restjson1).
ram
rds
resiliencehub
Package resiliencehub emulates the AWS Resilience Hub control-plane API (aws-sdk-go-v2/service/resiliencehub, protocol restjson1).
Package resiliencehub emulates the AWS Resilience Hub control-plane API (aws-sdk-go-v2/service/resiliencehub, protocol restjson1).
resourceexplorer2
Package resourceexplorer2 emulates the AWS Resource Explorer control and search plane.
Package resourceexplorer2 emulates the AWS Resource Explorer control and search plane.
resourcegroupstaggingapi
Package resourcegroupstaggingapi provides a mock implementation of the AWS Resource Groups Tagging API service.
Package resourcegroupstaggingapi provides a mock implementation of the AWS Resource Groups Tagging API service.
route53recoverycluster
Package route53recoverycluster emulates the Route 53 ARC cluster data plane: routing control state reads and updates.
Package route53recoverycluster emulates the Route 53 ARC cluster data plane: routing control state reads and updates.
route53recoverycontrolconfig
Package route53recoverycontrolconfig emulates the Route 53 Application Recovery Controller control plane.
Package route53recoverycontrolconfig emulates the Route 53 Application Recovery Controller control plane.
route53recoveryreadiness
Package route53recoveryreadiness emulates Route 53 Application Recovery Controller readiness checks.
Package route53recoveryreadiness emulates Route 53 Application Recovery Controller readiness checks.
rum
Package rum emulates Amazon CloudWatch RUM: app monitors, the PutRumEvents data plane, raw event queries, metric destinations and definitions, resource policies and tags.
Package rum emulates Amazon CloudWatch RUM: app monitors, the PutRumEvents data plane, raw event queries, metric destinations and definitions, resource policies and tags.
s3
s3vectors
Package s3vectors emulates Amazon S3 Vectors: vector buckets, indexes and exact nearest-neighbour search.
Package s3vectors emulates Amazon S3 Vectors: vector buckets, indexes and exact nearest-neighbour search.
secretsmanager
Package secretsmanager provides a mock AWS Secrets Manager implementation.
Package secretsmanager provides a mock AWS Secrets Manager implementation.
servicecatalog
Package servicecatalog emulates AWS Service Catalog.
Package servicecatalog emulates AWS Service Catalog.
ses
sns
sqs
ssm
sso
stepfunctions/asl
Package asl implements an interpreter for the Amazon States Language (ASL) used by AWS Step Functions to define state machine workflows.
Package asl implements an interpreter for the Amazon States Language (ASL) used by AWS Step Functions to define state machine workflows.
sts
swf
timestreaminfluxdb
Package timestreaminfluxdb emulates Amazon Timestream for InfluxDB: DB instances, clusters, parameter groups and backups, with an opt-in docker engine that runs a real InfluxDB 2 server per instance.
Package timestreaminfluxdb emulates Amazon Timestream for InfluxDB: DB instances, clusters, parameter groups and backups, with an opt-in docker engine that runs a real InfluxDB 2 server per instance.
waf
test
internal/buildcheck
Package buildcheck holds pre-flight checks shared by the test suites under test/ that run the built bin/gopherstack-linux binary in a container (test/terraform and test/integration).
Package buildcheck holds pre-flight checks shared by the test suites under test/ that run the built bin/gopherstack-linux binary in a container (test/terraform and test/integration).
internal/tofu
Package tofu downloads a local OpenTofu binary for test suites that don't find one in PATH.
Package tofu downloads a local OpenTofu binary for test suites that don't find one in PATH.

Jump to

Keyboard shortcuts

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