Object Storage
Sliplane Object Storage gives your team S3-compatible buckets for files, uploads, backups, generated assets, and other data that does not belong on a server volume.
How it works
Section titled “How it works”Object Storage is managed at the team level. Buckets are not tied to a specific project, server, or service.
From the Sliplane dashboard, open Object Storage in the main navigation. From there you can create buckets, view existing buckets, and manage access keys for each bucket.
Each bucket has:
- a globally unique bucket name
- a region
- an S3-compatible endpoint
- optional versioning
- optional object locking
- one or more access keys
Regions
Section titled “Regions”Object Storage is currently available in these regions:
| Region ID | Region | City |
|---|---|---|
ger | Germany | Frankfurt |
us-east | US East | New York |
Choose the region closest to your application or users.
Create a bucket
Section titled “Create a bucket”In the dashboard, go to Object Storage and click Create Bucket.
Choose a bucket name, region, and whether you want to enable versioning or object locking.
Bucket names must follow S3 naming rules:
- 3 to 63 characters
- lowercase letters, numbers, dots, and hyphens
- must start and end with a letter or number
- must be globally unique
Create an access key
Section titled “Create an access key”Open a bucket and create an access key for it.
Access keys are scoped to exactly one bucket and have full read/write access to that bucket. They can list buckets and see whether other buckets exist in the same team, but they cannot access objects in other buckets.
Use the bucket
Section titled “Use the bucket”Use the bucket endpoint, bucket name, access key ID, and secret access key with any S3-compatible client.
Configure your environment
Section titled “Configure your environment”The AWS CLI and AWS SDKs read credentials and endpoint configuration automatically from either environment variables or a named profile. You can also pass these values explicitly in your code as function parameters, but using environment variables or a profile is more portable and works across all clients.
You can find the endpoint URL in the Sliplane dashboard where your bucket is located. Many clients call this a custom endpoint, endpoint URL, or S3-compatible endpoint.
Option 1: Environment variables
Section titled “Option 1: Environment variables”export AWS_ACCESS_KEY_ID="your_access_key_id"export AWS_SECRET_ACCESS_KEY="your_secret_access_key"export AWS_ENDPOINT_URL="https://your_bucket_endpoint"export AWS_REGION="auto"setx AWS_ACCESS_KEY_ID your_access_key_idsetx AWS_SECRET_ACCESS_KEY your_secret_access_keysetx AWS_ENDPOINT_URL https://your_bucket_endpointsetx AWS_REGION auto$Env:AWS_ACCESS_KEY_ID="your_access_key_id"$Env:AWS_SECRET_ACCESS_KEY="your_secret_access_key"$Env:AWS_ENDPOINT_URL="https://your_bucket_endpoint"$Env:AWS_REGION="auto"That’s it. Now, you’re good to go.
Option 2: AWS profile
Section titled “Option 2: AWS profile”Add a named profile to your AWS configuration files. On Linux and macOS these live in ~/.aws/; on Windows they live in %USERPROFILE%\.aws\.
~/.aws/credentials:
[sliplane]aws_access_key_id = your_access_key_idaws_secret_access_key = your_secret_access_key~/.aws/config:
[profile sliplane]endpoint_url = https://your_bucket_endpointregion = autoThen export the profile to your environment:
export AWS_PROFILE=sliplanesetx AWS_PROFILE sliplane$Env:AWS_PROFILE="sliplane"Quick start
Section titled “Quick start”With the environment variables in place, you can start managing buckets and objects from the AWS CLI or any AWS SDK. Here are a few examples to get you started.
# List bucketsaws s3 ls
# Upload a fileaws s3 cp ./hello.txt s3://my-bucket/
# Download a fileaws s3 cp s3://my-bucket/hello.txt ./hello.txtimport { S3Client, ListBucketsCommand, PutObjectCommand, ListObjectsV2Command, GetObjectCommand,} from "@aws-sdk/client-s3"import { getSignedUrl } from "@aws-sdk/s3-request-presigner"
const s3 = new S3Client({})const BUCKET_NAME = "my-bucket"
// List bucketsconst { Buckets } = await s3.send(new ListBucketsCommand({}))console.log(Buckets)
// Upload a fileawait s3.send( new PutObjectCommand({ Bucket: BUCKET_NAME, Key: "hello.txt", Body: "Hello, Sliplane!", }),)
// List objects in the bucketconst list = await s3.send( new ListObjectsV2Command({ Bucket: BUCKET_NAME }),)console.log(list.Contents)
// Get a presigned URL for the objectconst url = await getSignedUrl( s3, new GetObjectCommand({ Bucket: BUCKET_NAME, Key: "hello.txt", }), { expiresIn: 120 },)console.log(url)import boto3
s3 = boto3.client("s3")
# List bucketsfor bucket in s3.list_buckets()["Buckets"]: print(bucket["Name"])
# Upload a files3.upload_file("./hello.txt", "my-bucket", "hello.txt")package main
import ( "context" "fmt"
"github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3")
func main() { ctx := context.Background()
sdkConfig, _ := config.LoadDefaultConfig(ctx)
s3Client := s3.NewFromConfig(sdkConfig)
result, _ := s3Client.ListBuckets(ctx, &s3.ListBucketsInput{}) for _, b := range result.Buckets { fmt.Println(*b.Name) }}import software.amazon.awssdk.services.s3.S3Client;
public class HelloS3 { public static void main(String[] args) { S3Client s3 = S3Client.builder().build();
s3.listBuckets().buckets().forEach(b -> System.out.println(b.name())); }}AWS CLI and SDK guides
Section titled “AWS CLI and SDK guides”The following table lists the official AWS CLI and SDK guides for popular languages and frameworks.
| Language or framework | Library | Documentation |
|---|---|---|
| CLI | AWS CLI | Custom endpoints in the AWS CLI |
| JavaScript / TypeScript | AWS SDK for JavaScript v3, @aws-sdk/client-s3 | Amazon S3 examples using SDK for JavaScript v3 |
| Python | boto3 | boto3 S3 reference |
| Go | AWS SDK for Go v2, service/s3 | Amazon S3 examples using SDK for Go v2 |
| Java | AWS SDK for Java 2.x | Work with Amazon S3 |
| .NET | AWS SDK for .NET, AWSSDK.S3 | Using Amazon S3 with the AWS SDK for .NET |
| PHP | AWS SDK for PHP | AWS SDK for PHP S3Client |
| Ruby | AWS SDK for Ruby, aws-sdk-s3 | AWS SDK for Ruby S3 client |
| Rust | AWS SDK for Rust, aws-sdk-s3 | Amazon S3 examples using SDK for Rust |
| Kotlin | AWS SDK for Kotlin | Work with Amazon S3 using the AWS SDK for Kotlin |
| Laravel | Laravel filesystem S3 driver | Laravel S3 driver configuration |
| Rails | Active Storage S3 service | Rails Active Storage S3 service |
| Django | django-storages S3 backend | django-storages Amazon S3 backend |
You can also manage buckets and access keys through the Sliplane API.
Infrastructure provider
Section titled “Infrastructure provider”Object Storage is provided in partnership with ImpossibleCloud GmbH, a German company with over 140PB of capacity that is also ISO 27001 certified.
You create and manage buckets and access keys in Sliplane, and Sliplane handles billing for your team.