Local S3 Integration

Read and write Amazon S3 from your local workflows

Run your state machines and Lambda functions locally while accessing real S3 buckets — no deployment, no stack updates, no waiting.
Local S3 mock support coming soon for fully offline development.

Thrubit — S3-Integrated Workflow Execution
Profile default
Region us-east-1
S3 Access ● Live AWS
Last S3 Operation
Bucketmy-documents-prod
Keyreports/2024-q4.pdf
Duration43ms
GenerateReport SUCCEEDED
Report generated: 2024-q4.pdf
Duration: 18ms
UploadReportToS3 S3 SUCCEEDED
Bucket: my-documents-prod
Key: reports/2024-q4.pdf
ETag: "d41d8cd9…" · Duration: 43ms
NotifyTeam SUCCEEDED
SNS notification dispatched
Duration: 12ms
Real
Reads and writes to your actual S3 buckets
0
Deploys needed to test S3 integration
Both
State machines & Lambda functions
Soon
Local S3 mock for fully offline development

Trusted by teams at

You shouldn't have to deploy your stack just to test an S3 read

Before Thrubit, testing a workflow that touched S3 meant pushing code, waiting for CloudFormation, configuring execution roles, and hoping the IAM policy was right — all just to see if your GetObject selector was correct.

Before Thrubit

Deploy. Wait. Check CloudWatch. Repeat.

Every iteration on an S3-integrated workflow required a full deploy cycle — SAM build, CloudFormation update, execution role sync — just to verify your ResultSelector mapped the right keys from a GetObject response.

With Thrubit

Run locally. Hit real S3. Iterate instantly.

Open your state machine in Thrubit and run it. Your workflow executes locally while S3 calls go directly to your real buckets using your configured AWS profile. No deployment, no role sync, no CloudWatch waiting.

Your local execution reaches real S3 — automatically

When you run a state machine or invoke a Lambda in Thrubit, S3 calls are passed through to the real AWS API using the profile and region configured in your settings. No changes to your workflow definition, no environment variable overrides, no code modifications needed.

  • Works for both Step Functions native S3 integrations (arn:aws:states:::s3:getObject, s3:putObject) and direct SDK calls inside Lambda
  • Uses the same AWS profile and region as the rest of your Thrubit configuration
  • IAM permissions on your local profile apply — so you catch access issues before they reach production
  • No queue setup, no mock configuration — it works with real S3 out of the box
AWS Profile
S3 calls forwarded to real AWS using local credentials
● Live
Mock Bedrock
Intercept Bedrock calls with mock responses
Real AWS Mock
Mock SQS
Intercept sendMessage calls with mock MessageId
Real AWS Mock
🪣 S3 reads and writes use your real buckets. Local S3 mock is coming soon.
LIVE S3 RESPONSE
GetObject → my-documents-prod
Input
{
 "Bucket":
  "my-documents-prod",
 "Key":
  "templates/invoice.json"
}
Response
{
 "ContentType":
  "application/json",
 "ContentLength":
  2048,
 "ETag":
  "\"d41d8…\"",
 "Body":
  "eyJ0eXBl…"
}

Actual S3 API responses — not stubs

Because Thrubit passes S3 calls through to real AWS, you get real responses — actual object content, real ETags, correct ContentType headers, and accurate error messages when permissions or keys are wrong. Your ResultSelector mappings work against real data from the start.

  • GetObject returns the real Body, ETag, ContentType, ContentLength, and user metadata from your bucket
  • PutObject returns the actual ETag and VersionId after the object is written to your bucket
  • Permission errors reflect your real IAM policies — so you catch access issues before they reach production
  • No translation between mock and real formats — what you test locally is exactly what runs in production

S3 in state machines and Lambda — both work locally

S3 shows up in two places in Step Functions architectures: as a native service integration in the ASL, and as direct SDK calls inside Lambda functions. Thrubit handles both, passing requests through to your real buckets in either case.

  • ASL-level integrations like arn:aws:states:::s3:getObject and s3:putObject are handled natively by the Thrubit execution engine
  • Lambda-side AWS.S3.getObject(), putObject(), and other SDK calls reach real S3 through your configured profile
  • S3 Event payloads used as workflow inputs can be simulated by passing an S3 event object directly in the execution input
  • Presigned URL generation works locally — your profile's credentials sign the URL, which remains valid for the configured expiry window
State Machine

ASL Native Integrations

  • s3:getObject
  • s3:putObject
  • s3:deleteObject
  • s3:listObjectsV2
  • s3:copyObject
  • s3:headObject
Lambda SDK

Direct SDK Calls

  • S3.getObject()
  • S3.putObject()
  • S3.deleteObject()
  • S3.listObjectsV2()
  • S3.copyObject()
  • S3.getSignedUrl()

The S3 operations your workflows actually use

Thrubit supports the full range of S3 operations used in production Step Functions architectures — from simple reads and writes to presigned URL generation and bucket listing for Map state fan-outs.

GetObject
Single object reads from any bucket
Returns real object content with Body, ETag, ContentType, ContentLength, and user metadata. The most common S3 operation in document processing workflows.
PutObject
Single and multipart object writes
Writes objects to your real bucket and returns the actual ETag and — if versioning is enabled — the VersionId. Server-side encryption and storage class settings pass through correctly.
ListObjectsV2
Prefix-filtered bucket listing
Returns real object listings with Contents, IsTruncated, and NextContinuationToken — essential for fan-out patterns that process multiple objects using Map states.
CopyObject & DeleteObject
Object lifecycle management
Copy objects between prefixes or buckets, and delete objects after processing. Both return real responses and make actual changes to your bucket — useful for archive and cleanup workflow states.
HeadObject
Metadata checks without download
Returns real object metadata — ContentType, ETag, LastModified, custom metadata — without fetching the body. Common in existence-check Choice states before processing.
GetSignedUrl
Presigned URL generation
Generates real presigned URLs using your local profile's credentials. The URLs work against the real S3 API for the configured expiry window — valid for testing download link generation workflows.
Coming Soon

Local S3 mock — fully offline development

The next evolution for S3 in Thrubit: toggle S3 to local mock mode and run your entire workflow with zero AWS access. Instant responses. Full schema compatibility. Per-execution in-memory bucket state for object reads, writes, listings, and deletes — all without touching a real bucket.

Local bucket simulation Per-execution in-memory bucket state — write an object and read it back in the same execution
Same schema, zero real calls Responses match real S3 exactly — your ResultSelector mappings and Lambda parsing just work
1-click toggle Switch between real and mock S3 the same way as Bedrock and SQS — no code changes
No credentials required Develop and test S3-integrated workflows with zero AWS access needed

Access real S3 from your first local run

No additional setup required beyond a configured AWS profile. Your local executions read and write real S3 buckets automatically.

Configure your AWS profile

In Thrubit's Settings, select the AWS profile and region you use for development. Any IAM permissions your profile has are available to your local executions — including S3 read and write access to your buckets.

Open your state machine

Load your state machine from your local SAM template.yaml. Thrubit reads your ASL definition and resolves Lambda functions locally — including those that make S3 SDK calls inside their handlers.

Run and watch S3 calls execute

Start an execution with your input. S3 task states execute against real AWS using your configured profile. Each state's inputs, outputs, and S3 response fields are visible in the real-time execution panel.

Iterate without redeploying

Update your ASL definition or Lambda handler and run again immediately — no SAM build, no CloudFormation update, no execution role sync. Your changes take effect on the next run.

Stop deploying just to test your S3 integration.

Download Thrubit and run your first S3-integrated state machine locally in under five minutes — real S3 reads and writes, zero deployment required.

What teams are saying

Real feedback from engineers, trainers and decision makers.

★★★★★

“Thrubit cut our Step Functions debugging cycle from 15 minutes per iteration down to seconds. The visual trace is worth the price alone. It’s become an essential part of our development workflow.”

Photo of Senior Software Engineer
Kim V.
Software Engineer at Cozy Code Creations
★★★★★

“I was looking for ways to make Step Functions and Lambdas more tangible for students. Thrubit makes it significantly easier to visualize workflows and experiment locally, accelerating real understanding.”

Photo of Certified AWS Trainer
John L.
Certified AWS Trainer
★★★★★

“Thrubit saves us over $24k a year & protects us from surprise AWS bills. One rogue state machine once cost us 10x our typical month. With Thrubit, that risk is gone and our developers iterate faster.”

Photo of Co-Owner at WordHerd
Lisa H.
Co-Owner at WordHerd