S3 Chelak is a local development tool that emulates the AWS S3 API's interface. This allows you to test your S3 integrations without connecting to AWS, which is useful for offline development and testing. It's designed to behave as much as possible like AWS S3, with the ability to store and retrieve objects, among other functions.
- Emulates the S3 ListBuckets (so far)
- Error handling similar to the AWS S3 API.
$ git clone https://github.com/oneslash/s3-chelak.git
$ cd s3-chelak
$ cargo build
Start the server:
$ cargo run
Parameters:
-
server_url
(Default:"localhost"
): Defines the URL at which the server will be running. You can modify this value according to your needs. -
server_port
(Default:"9090"
): This is the port number on which the server will listen for requests. If you have another service running on the default port, you may want to change this. -
working_folder
(Default:"/tmp/s3-server"
): This is the directory where the server will store all the data. If you wish to have the data stored in a different location, you can modify this value.
$ ./s3-chelak --server-url "my_custom_url" --server-port "8080" --working-folder "/path/to/my/folder"
AWS S3 API Name | Implemented |
---|---|
AbortMultipartUpload | ❌ |
CompleteMultipartUpload | ❌ |
CopyObject | ❌ |
CreateBucket | ✅ |
CreateMultipartUpload | ❌ |
DeleteBucket | ❌ |
DeleteBucketAnalyticsConfiguration | ❌ |
DeleteBucketCors | ❌ |
DeleteBucketEncryption | ❌ |
DeleteBucketIntelligentTieringConfiguration | ❌ |
DeleteBucketInventoryConfiguration | ❌ |
DeleteBucketLifecycle | ❌ |
DeleteBucketMetricsConfiguration | ❌ |
DeleteBucketOwnershipControls | ❌ |
DeleteBucketPolicy | ❌ |
DeleteBucketReplication | ❌ |
DeleteBucketTagging | ❌ |
DeleteBucketWebsite | ❌ |
DeleteObject | ❌ |
DeleteObjectTagging | ❌ |
DeleteObjects | ❌ |
DeletePublicAccessBlock | ❌ |
GetBucketAccelerateConfiguration | ❌ |
GetBucketAcl | ❌ |
GetBucketAnalyticsConfiguration | ❌ |
GetBucketCors | ❌ |
GetBucketEncryption | ❌ |
GetBucketIntelligentTieringConfiguration | ❌ |
GetBucketInventoryConfiguration | ❌ |
GetBucketLifecycle | ❌ |
GetBucketLifecycleConfiguration | ❌ |
GetBucketLocation | ❌ |
GetBucketLogging | ❌ |
GetBucketMetricsConfiguration | ❌ |
GetBucketNotification | ❌ |
GetBucketNotificationConfiguration | ❌ |
GetBucketOwnershipControls | ❌ |
GetBucketPolicy | ❌ |
GetBucketPolicyStatus | ❌ |
GetBucketReplication | ❌ |
GetBucketRequestPayment | ❌ |
GetBucketTagging | ❌ |
GetBucketVersioning | ❌ |
GetBucketWebsite | ❌ |
GetObject | ✅ |
GetObjectAcl | ❌ |
GetObjectLegalHold | ❌ |
GetObjectLockConfiguration | ❌ |
GetObjectRetention | ❌ |
GetObjectTagging | ❌ |
GetObjectTorrent | ❌ |
GetPublicAccessBlock | ❌ |
HeadBucket | ❌ |
HeadObject | ✅ |
ListBucketAnalyticsConfigurations | ❌ |
ListBucketIntelligentTieringConfigurations | ❌ |
ListBucketInventoryConfigurations | ❌ |
ListBucketMetricsConfigurations | ❌ |
ListBuckets | ✅ |
ListMultipartUploads | ❌ |
ListObjectVersions | ❌ |
ListObjects | ❌ |
ListObjectsV2 | ❌ |
ListParts | ❌ |
PutBucketAccelerateConfiguration | ❌ |
PutBucketAcl | ❌ |
PutBucketAnalyticsConfiguration | ❌ |
PutBucketCors | ❌ |
PutBucketEncryption | ❌ |
PutBucketIntelligentTieringConfiguration | ❌ |
PutBucketInventoryConfiguration | ❌ |
PutBucketLifecycle | ❌ |
PutBucketLifecycleConfiguration | ❌ |
PutBucketLifecycleConfiguration | ❌ |
PutBucketLogging | ❌ |
PutBucketMetricsConfiguration | ❌ |
PutBucketNotification | ❌ |
PutBucketNotificationConfiguration | ❌ |
PutBucketOwnershipControls | ❌ |
PutBucketPolicy | ❌ |
PutBucketReplication | ❌ |
PutBucketRequestPayment | ❌ |
PutBucketTagging | ❌ |
PutBucketVersioning | ❌ |
PutBucketWebsite | ❌ |
PutObject | ✅ |
PutObjectAcl | ❌ |
PutObjectLegalHold | ❌ |
PutObjectLockConfiguration | ❌ |
PutObjectRetention | ❌ |
PutObjectTagging | ❌ |
PutPublicAccessBlock | ❌ |
RestoreObject | ❌ |
SelectObjectContent | ❌ |
UploadPart | ❌ |
UploadPartCopy | ❌ |
WriteGetObjectResponse | ❌ |
This project is licensed under the MIT License. See the LICENSE.md file for details.
- AWS for their comprehensive and well-documented S3 API.