Skip to main content

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()

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fakecloud-0.5.1.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fakecloud-0.5.1-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file fakecloud-0.5.1.tar.gz.

File metadata

  • Download URL: fakecloud-0.5.1.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for fakecloud-0.5.1.tar.gz
Algorithm Hash digest
SHA256 7f750769078b45e9559011843d36f91a556de485817f37772e71959d3ad36c09
MD5 e3daf8e9e666e083233986e981b6e196
BLAKE2b-256 8d9c7c45302841b546b6aeea8f5f93d17bfa5f7b2b653eff5a9230d9d2f11106

See more details on using hashes here.

File details

Details for the file fakecloud-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: fakecloud-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for fakecloud-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 43a60d47fd74ddeda4a37af407e4ae2e9a5a98a17c74f2074d56fb17efcfc0e5
MD5 f1eed9b78b3ea0c732e964fa8dd48e39
BLAKE2b-256 68f45584339e6ec921b24ce71762b590bac0aeb71d8e34066c2b4adc66c23270

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page