SDK Examples
Cloodsy S3 works with any S3-compatible SDK. Here are examples for popular languages.
Python (boto3)
Setup
pip install boto3
Basic Operations
import boto3
s3 = boto3.client(
"s3",
endpoint_url="http://localhost:9000",
aws_access_key_id="your-access-key",
aws_secret_access_key="your-secret-key",
region_name="us-east-1",
)
# Upload a file
s3.upload_file("photo.jpg", "photos", "photo.jpg")
# Download a file
s3.download_file("photos", "photo.jpg", "downloaded.jpg")
# List objects
response = s3.list_objects_v2(Bucket="photos")
for obj in response.get("Contents", []):
print(f"{obj['Key']} ({obj['Size']} bytes)")
# Delete an object
s3.delete_object(Bucket="photos", Key="photo.jpg")
Upload with metadata
s3.put_object(
Bucket="photos",
Key="photo.jpg",
Body=open("photo.jpg", "rb"),
ContentType="image/jpeg",
Metadata={"author": "jane", "camera": "nikon"},
)
Go
Setup
go get github.com/aws/aws-sdk-go
Basic Operations
package main
import (
"fmt"
"os"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
)
func main() {
sess := session.Must(session.NewSession(&aws.Config{
Endpoint: aws.String("http://localhost:9000"),
Region: aws.String("us-east-1"),
Credentials: credentials.NewStaticCredentials("your-access-key", "your-secret-key", ""),
S3ForcePathStyle: aws.Bool(true),
}))
svc := s3.New(sess)
// List buckets
result, _ := svc.ListBuckets(nil)
for _, b := range result.Buckets {
fmt.Println(*b.Name)
}
// Upload a file
uploader := s3manager.NewUploader(sess)
file, _ := os.Open("photo.jpg")
defer file.Close()
uploader.Upload(&s3manager.UploadInput{
Bucket: aws.String("photos"),
Key: aws.String("photo.jpg"),
Body: file,
})
}
JavaScript (AWS SDK v3)
Setup
npm install @aws-sdk/client-s3
Basic Operations
import { S3Client, PutObjectCommand, ListObjectsV2Command } from "@aws-sdk/client-s3";
import { readFileSync } from "fs";
const s3 = new S3Client({
endpoint: "http://localhost:9000",
region: "us-east-1",
credentials: {
accessKeyId: "your-access-key",
secretAccessKey: "your-secret-key",
},
forcePathStyle: true,
});
// Upload
await s3.send(new PutObjectCommand({
Bucket: "photos",
Key: "photo.jpg",
Body: readFileSync("photo.jpg"),
}));
// List objects
const response = await s3.send(new ListObjectsV2Command({
Bucket: "photos",
}));
for (const obj of response.Contents ?? []) {
console.log(`${obj.Key} (${obj.Size} bytes)`);
}