Sign inSign up

francisdinhtrung/aws-tool-web

By francisdinhtrung

•Updated 16 days ago

Self-hosted AWS web UI: DynamoDB Studio, S3 browser, CloudWatch Logs, SQS, Lambda, Step Functions

Image
0

413

francisdinhtrung/aws-tool-web repository overview

⁠AWS Tool Web

Self-hosted web UI for everyday AWS work, running in a single container:

  • DynamoDB Studio – a browser-based replacement for Amazon DynamoDB NoSQL Workbench
  • S3 browser – file-manager style bucket/object explorer
  • CloudWatch Logs – log viewer, live tail and Logs Insights
  • SQS – queue manager (send, poll, DLQ redrive)
  • Lambda – function console (inline code editor, test events, metrics, configuration, triggers, versions & aliases, function URLs)
  • Step Functions – workflow console (definition editor with a live graph, executions state by state, single-state testing, versions & aliases)
  • AWS profile manager – edit ~/.aws/config and ~/.aws/credentials from the UI

Works with real AWS accounts as well as DynamoDB Local, LocalStack, MinIO, ElasticMQ and Step Functions Local.

Source code, issues and docs: https://github.com/francisdinhtrung/aws-tool-web⁠

⁠Quick start

docker run -d --name aws-tool-web \
  -p 127.0.0.1:8080:8080 \
  -v ~/.aws:/root/.aws \
  -v aws-tool-web-data:/data \
  francisdinhtrung/aws-tool-web:1.2.0

Open http://localhost:8080⁠

Mount ~/.aws read-only (-v ~/.aws:/root/.aws:ro) if you don't want the app to edit your profiles. When it does write, the previous file is backed up as *.bak.

⁠Docker Compose (with DynamoDB Local)
services:
  aws-tool-web:
    image: francisdinhtrung/aws-tool-web:1.2.0
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ~/.aws:/root/.aws
      - aws-tool-web-data:/data
    environment:
      DEFAULT_ENDPOINTS: "DynamoDB Local=http://dynamodb-local:8000"
  dynamodb-local:
    image: amazon/dynamodb-local
volumes:
  aws-tool-web-data:

⁠Features

AreaWhat you get
ConnectionsCreate/edit/rename/delete AWS profiles (access keys, SSO, assume role, credential_process). Custom endpoints (DynamoDB Local, LocalStack). Default credential chain (env vars, EC2/ECS role). Connection test.
DynamoDB tablesCreate tables (GSI, LSI, on-demand/provisioned, streams, table class, deletion protection), delete, overview, settings (capacity, TTL, PITR, tags, backups).
Explore itemsScan/Query on table, GSI, LSI with filters, projection, paging, consumed RCU. Create/edit/clone/delete items (form, DynamoDB JSON or plain JSON). Bulk delete. Export CSV/JSON.
Operation builderAll item, batch, transaction and PartiQL operations, with code generation for Python (boto3), JavaScript (SDK v3) and AWS CLI.
PartiQL editorSingle, batch and transaction statements, history, export.
Import / ExportCSV, JSON, DynamoDB JSON, JSON lines; batch write with retry.
Data modeler & VisualizerWorkbench-compatible models (import/export NoSQL Workbench .json), facets, sample data, commit to DynamoDB, export CloudFormation. Aggregate view by partition key / GSI.
S3 browserBuckets, folders, drag & drop upload (multipart), download, copy/move/rename, preview (image, video, audio, PDF, text), edit text files, metadata, tags, versions, pre-signed URLs, bucket policy/CORS/lifecycle.
CloudWatch LogsLog groups, filter patterns, time ranges, histogram, level highlighting, JSON view, context lines, live tail, export, shareable URLs, Logs Insights with saved queries and charts.
SQSStandard/FIFO queues, send/poll/delete messages, purge, settings, DLQ redrive, access policy, tags.
LambdaCreate functions (inline starter code, .zip, S3, container image; pick or create the execution role). Browse, edit and deploy the code package in the browser. Test events with templates, sync/async invoke, response, log tail and REPORT stats. CloudWatch metrics and recent invocations. Memory, timeout, /tmp, runtime, handler, env vars, layers, VPC, logging, X-Ray, DLQ. Event source mappings, resource policy, versions, weighted aliases, function URLs (CORS), reserved/provisioned concurrency, async destinations, tags. Layers.
Step FunctionsState machines (Standard/Express) from templates with a live graph preview and static checks. Start, stop, redrive and re-run executions; execution view with the graph colored per state, per-state input/output, event history, Map runs. Definition editor with validation, single-state testing (TestState), versions and weighted aliases, logging, X-Ray, tags. Activities.

⁠Environment variables

VariableDefaultDescription
PORT8080HTTP port
AWS_DIR/root/.awsDirectory containing config and credentials
DATA_DIR/dataWhere connections and data models are stored (mount a volume)
DEFAULT_ENDPOINTSComma-separated Name=URL endpoints created on first start
APP_USERNAME / APP_PASSWORDadmin / (empty)Set APP_PASSWORD to enable HTTP Basic Auth
ALLOWED_HOSTSlocalhost,127.0.0.1,[::1]Allowed hostnames (DNS-rebinding protection). * allows all

⁠Security

Anyone who can reach this app has the full permissions of the AWS credentials it can read.

  • Bind to 127.0.0.1 (as in the examples above). If you expose it on a server, set APP_PASSWORD, add your hostname to ALLOWED_HOSTS and put it behind HTTPS.
  • Secret keys are never sent to the browser.
  • All mutating API calls require an X-Requested-With header (CSRF protection).

⁠Notes

  • SSO: run aws sso login --profile <name> on the host; the container reuses the token cache in ~/.aws/sso/cache.
  • MFA prompts and credential_process binaries missing from the container are not supported; use temporary credentials or SSO.
  • DynamoDB Local on the host: use endpoint http://host.docker.internal:8000.

⁠Tags

  • 1.2.0, latest – adds the Step Functions console. Multi-arch: linux/amd64, linux/arm64
  • 1.1.1 – project renamed to AWS Tool Web, English UI and docs
  • 1.1.0 – adds the Lambda console
  • 1.0.0 – DynamoDB, S3, CloudWatch Logs, SQS

License: MIT. Developed by Trung.Vu

Tag summary

Content type

Image

Digest

sha256:96c72a0c3…

Size

62.6 MB

Last updated

16 days ago

docker pull francisdinhtrung/aws-tool-web