S3
Object storage with bucket-scoped sub-resources — policies, versioning, lifecycle, CORS, ACLs, notifications, per-version object lock, access points, Multi-Region Access Points, Object Lambda, 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
104 operations exposed by this service as of MiniStack 1.5.31. Extracted directly from the handler dispatch in the source module.
AbortMultipartUpload
CompleteMultipartUpload
CopyObject
CreateAccessPoint
CreateAccessPointForObjectLambda
CreateBucket
CreateMultipartUpload
CreateMultiRegionAccessPoint
DeleteAccessPoint
DeleteAccessPointForObjectLambda
DeleteAccessPointPolicy
DeleteAccessPointPolicyForObjectLambda
DeleteBucket
DeleteBucketCors
DeleteBucketEncryption
DeleteBucketLifecycle
DeleteBucketOwnershipControls
DeleteBucketPolicy
DeleteBucketReplication
DeleteBucketTagging
DeleteBucketWebsite
DeleteMultiRegionAccessPoint
DeleteObject
DeleteObjectAnnotation
DeleteObjects
DeleteObjectTagging
DeletePublicAccessBlock
DescribeMultiRegionAccessPointOperation
GetAccessPoint
GetAccessPointConfigurationForObjectLambda
GetAccessPointForObjectLambda
GetAccessPointPolicy
GetAccessPointPolicyForObjectLambda
GetBucketAccelerateConfiguration
GetBucketAcl
GetBucketCors
GetBucketEncryption
GetBucketLifecycleConfiguration
GetBucketLocation
GetBucketLogging
GetBucketNotificationConfiguration
GetBucketOwnershipControls
GetBucketPolicy
GetBucketReplication
GetBucketRequestPayment
GetBucketTagging
GetBucketVersioning
GetBucketWebsite
GetMultiRegionAccessPoint
GetMultiRegionAccessPointPolicy
GetMultiRegionAccessPointRoutes
GetObject
GetObjectAcl
GetObjectAnnotation
GetObjectAttributes
GetObjectLegalHold
GetObjectLockConfiguration
GetObjectRetention
GetObjectTagging
GetPublicAccessBlock
HeadBucket
HeadObject
ListAccessPoints
ListAccessPointsForObjectLambda
ListBuckets
ListMultipartUploads
ListMultiRegionAccessPoints
ListObjectAnnotations
ListObjects
ListObjectsV2
ListObjectVersions
ListParts
PostObject
PutAccessPointConfigurationForObjectLambda
PutAccessPointPolicy
PutAccessPointPolicyForObjectLambda
PutBucketAccelerateConfiguration
PutBucketAcl
PutBucketCors
PutBucketEncryption
PutBucketLifecycleConfiguration
PutBucketLogging
PutBucketNotificationConfiguration
PutBucketOwnershipControls
PutBucketPolicy
PutBucketReplication
PutBucketRequestPayment
PutBucketTagging
PutBucketVersioning
PutBucketWebsite
PutMultiRegionAccessPointPolicy
PutObject
PutObjectAcl
PutObjectAnnotation
PutObjectLegalHold
PutObjectLockConfiguration
PutObjectRetention
PutObjectTagging
PutPublicAccessBlock
RestoreObject
SubmitMultiRegionAccessPointRoutes
UploadPart
UploadPartCopy
WriteGetObjectResponse
CloudFormation
The CloudFormation engine provisions these resource types via this service:
AWS::S3::AccessPoint
AWS::S3::Bucket
AWS::S3::BucketPolicy
AWS::S3::MultiRegionAccessPoint
AWS::S3ObjectLambda::AccessPoint
AWS::S3ObjectLambda::AccessPointPolicy
See CloudFormation engine for intrinsic support and lifecycle details.
Known limitations
- Bucket names are global, as on AWS, and each bucket keeps its home region: a request signed for another region gets 301 PermanentRedirect with x-amz-bucket-region.
- 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 markers replicate for V1 rules and for V2 rules with DeleteMarkerReplication enabled.
- 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.