S3
Object storage with bucket-scoped sub-resources — policies, versioning, lifecycle, CORS, ACLs, notifications, object lock, range requests, and Glacier / Deep Archive restore (RestoreObject).
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
74 operations exposed by this service as of MiniStack 1.5.8. Extracted directly from the handler dispatch in the source module.
AbortMultipartUpload
CompleteMultipartUpload
CopyObject
CreateBucket
CreateMultipartUpload
DeleteBucket
DeleteBucketCors
DeleteBucketEncryption
DeleteBucketLifecycle
DeleteBucketOwnershipControls
DeleteBucketPolicy
DeleteBucketReplication
DeleteBucketTagging
DeleteBucketWebsite
DeleteObject
DeleteObjects
DeleteObjectTagging
DeletePublicAccessBlock
GetBucketAccelerateConfiguration
GetBucketAcl
GetBucketCors
GetBucketEncryption
GetBucketLifecycleConfiguration
GetBucketLocation
GetBucketLogging
GetBucketNotificationConfiguration
GetBucketOwnershipControls
GetBucketPolicy
GetBucketReplication
GetBucketRequestPayment
GetBucketTagging
GetBucketVersioning
GetBucketWebsite
GetObject
GetObjectAcl
GetObjectAttributes
GetObjectLegalHold
GetObjectLockConfiguration
GetObjectRetention
GetObjectTagging
GetPublicAccessBlock
HeadBucket
HeadObject
ListBuckets
ListMultipartUploads
ListObjects
ListObjectsV2
ListObjectVersions
ListParts
PostObject
PutBucketAccelerateConfiguration
PutBucketAcl
PutBucketCors
PutBucketEncryption
PutBucketLifecycleConfiguration
PutBucketLogging
PutBucketNotificationConfiguration
PutBucketOwnershipControls
PutBucketPolicy
PutBucketReplication
PutBucketRequestPayment
PutBucketTagging
PutBucketVersioning
PutBucketWebsite
PutObject
PutObjectAcl
PutObjectLegalHold
PutObjectLockConfiguration
PutObjectRetention
PutObjectTagging
PutPublicAccessBlock
RestoreObject
UploadPart
UploadPartCopy
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
- S3 state is account-scoped but not region-isolated: buckets and objects are shared across regions within an account (create-bucket in eu-west-1, read it from us-east-1). Use unique bucket names if your tests exercise two regions.
- SSE headers are validated, stored and echoed (including SSE-C key/MD5 checks on reads), but no real cryptography runs — object bytes are stored as sent.
- Replication delivers: a write matching an Enabled rule's prefix lands in the destination bucket, the source answers x-amz-replication-status COMPLETED (FAILED when the destination is unusable) and the replica REPLICA. Delete-marker replication is not modeled.
- Notification configuration accepted; events are dispatched to SQS, SNS, Lambda, and (with EventBridgeConfiguration) EventBridge with AWS's documented detail-types.
- Glacier / Deep Archive restore is emulated: an object in GLACIER or DEEP_ARCHIVE is unreadable (InvalidObjectState) until RestoreObject completes, which happens in seconds rather than AWS's hours; GLACIER_IR stays readable.
Source
ministack/services/s3.py
Read the source to verify the ops list above — dispatch tables and handler functions are the ground truth.