DocsAWS 101BlogServices

S3

Object storage with bucket-scoped sub-resources — policies, versioning, lifecycle, CORS, ACLs, notifications, object lock, range requests, and Glacier / Deep Archive restore (RestoreObject).

REST-XML multi-tenant 74 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

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.