DocsAWS 101BlogServices

S3

Object storage with bucket-scoped sub-resources — policies, versioning, lifecycle, CORS, ACLs, notifications, object lock, range requests.

REST-XML multi-tenant 25 operations

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.