S3
Object storage with bucket-scoped sub-resources — policies, versioning, lifecycle, CORS, ACLs, notifications, object lock, range requests.
Quick start
import boto3
s3 = boto3.client("s3", endpoint_url="http://localhost:4566",
region_name="us-east-1",
aws_access_key_id="test", aws_secret_access_key="test")
s3.create_bucket(Bucket="demo")
s3.put_object(Bucket="demo", Key="hi.txt", Body=b"hello")
print(s3.get_object(Bucket="demo", Key="hi.txt")["Body"].read())
Supported operations
25 operations exposed by this service as of MiniStack 1.4.6. Extracted directly from the handler dispatch in the source module.
CopyObject
CreateBucket
DeleteBucket
DeleteBucketReplication
DeleteObject
DeleteObjects
GetBucketReplication
GetObject
GetObjectLegalHold
GetObjectLockConfiguration
GetObjectRetention
HeadBucket
HeadObject
ListBuckets
ListObjectsV1
ListObjectsV2
ListObjectVersions
ListParts
PutBucketReplication
PutObject
PutObjectLegalHold
PutObjectLockConfiguration
PutObjectRetention
RequestPayment
UploadPart
CloudFormation
The CloudFormation engine provisions these resource types via this service:
AWS::S3::Bucket
AWS::S3::BucketPolicy
See CloudFormation engine for intrinsic support and lifecycle details.
Known limitations
- SSE-KMS encryption keys are stored per object but encryption/decryption is a silent no-op — ciphertext equals plaintext.
- Replication configuration accepted; no cross-bucket replication is performed.
- Notification configuration accepted; events are only dispatched for SQS/SNS/Lambda targets that MiniStack tracks.
Source
ministack/services/s3.py
Read the source to verify the ops list above — dispatch tables and handler functions are the ground truth.