Python SDK for fakecloud — local AWS cloud emulator
Project description
fakecloud
Python SDK for fakecloud — a local AWS cloud emulator.
This package provides async and sync clients for the fakecloud introspection and simulation API (/_fakecloud/* endpoints), letting you inspect sent emails, published messages, Lambda invocations, and more from your tests.
Installation
pip install fakecloud
Quick start
Async
import asyncio
from fakecloud import FakeCloud
async def main():
async with FakeCloud("http://localhost:4566") as fc:
# Check server health
health = await fc.health()
print(health.status, health.version)
# List sent SES emails
emails = await fc.ses.get_emails()
for email in emails.emails:
print(f"{email.from_addr} -> {email.to}: {email.subject}")
# List SNS messages
messages = await fc.sns.get_messages()
for msg in messages.messages:
print(f"{msg.topic_arn}: {msg.message}")
# Inspect Lambda invocations
invocations = await fc.lambda_.get_invocations()
for inv in invocations.invocations:
print(f"{inv.function_arn}: {inv.payload}")
# Reset all state between tests
await fc.reset()
asyncio.run(main())
Sync
from fakecloud import FakeCloudSync
with FakeCloudSync("http://localhost:4566") as fc:
health = fc.health()
print(health.status)
emails = fc.ses.get_emails()
for email in emails.emails:
print(email.subject)
API reference
FakeCloud / FakeCloudSync
Top-level client. Pass base_url (default http://localhost:4566).
| Method | Description |
|---|---|
health() |
Server health check |
reset() |
Reset all service state |
reset_service(service) |
Reset a single service |
Service sub-clients
Access via properties on the main client:
| Property | Service | Methods |
|---|---|---|
lambda_ |
Lambda | get_invocations(), get_warm_containers(), evict_container(name) |
ses |
SES | get_emails(), simulate_inbound(req) |
sns |
SNS | get_messages(), get_pending_confirmations(), confirm_subscription(req) |
sqs |
SQS | get_messages(), tick_expiration(), force_dlq(queue_name) |
events |
EventBridge | get_history(), fire_rule(req) |
s3 |
S3 | get_notifications(), tick_lifecycle() |
dynamodb |
DynamoDB | tick_ttl() |
secretsmanager |
SecretsManager | tick_rotation() |
cognito |
Cognito | get_user_codes(pool_id, username), get_confirmation_codes(), confirm_user(req), get_tokens(), expire_tokens(req), get_auth_events() |
rds |
RDS | get_instances() |
elasticache |
ElastiCache | get_clusters(), get_replication_groups(), get_serverless_caches() |
stepfunctions |
Step Functions | get_executions() |
apigatewayv2 |
API Gateway v2 | get_requests() |
Error handling
All methods raise FakeCloudError on non-2xx responses:
from fakecloud.client import FakeCloudError
try:
await fc.health()
except FakeCloudError as e:
print(e.status, e.body)
pytest fixture example
import pytest
from fakecloud import FakeCloudSync
@pytest.fixture(autouse=True)
def reset_fakecloud():
fc = FakeCloudSync()
fc.reset()
yield fc
fc.close()
def test_email_sent(reset_fakecloud):
# ... your code that sends an email via SES ...
emails = reset_fakecloud.ses.get_emails()
assert len(emails.emails) == 1
assert emails.emails[0].subject == "Welcome"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fakecloud-0.8.0.tar.gz.
File metadata
- Download URL: fakecloud-0.8.0.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3133f6b06305b7fc898ea1dbdab8607de5c15c9bcffabc4dbb64200ac874e98c
|
|
| MD5 |
0ba4a20487acfc7955eec8e13552f9c1
|
|
| BLAKE2b-256 |
8acc24999c728803dd9751a3aa7b81191da1e3682b966fc3788a169b94f6e1bc
|
File details
Details for the file fakecloud-0.8.0-py3-none-any.whl.
File metadata
- Download URL: fakecloud-0.8.0-py3-none-any.whl
- Upload date:
- Size: 22.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a2df3f7ab61673fd0df26155b05baec4e36bbd1d8bf12dcea06ac0c5a4b3d647
|
|
| MD5 |
4d1e55265bf2e1dd27f3b3dc2806fff0
|
|
| BLAKE2b-256 |
fece4b44c09b86136f1747af9783ea17053b33e5a6fd162b2aa811e1a3a4c9a0
|