Skip to content

AIC Cloud Object Storage — Get Started

Fully S3-compatible. Works with every AWS SDK, MinIO client, or any tool that speaks S3. Use path-style addressing (bucket in path, not subdomain). No egress fees from India.

Endpoint & credentials

Python — boto3

# pip install boto3
import boto3
from botocore.client import Config

s3 = boto3.client(
    "s3",
    endpoint_url="https://s3.aiccloud.online",
    aws_access_key_id="YOUR_ACCESS_KEY",
    aws_secret_access_key="YOUR_SECRET_KEY",
    region_name="us-east-1",
    config=Config(signature_version="s3v4", s3={"addressing_style": "path"}),
)

# Upload
s3.upload_file("local-photo.jpg", "your-bucket", "photos/2026/07/photo.jpg")

# Download
s3.download_file("your-bucket", "photos/2026/07/photo.jpg", "/tmp/copy.jpg")

# Presigned URL (valid 5 min)
url = s3.generate_presigned_url("get_object",
    Params={"Bucket": "your-bucket", "Key": "photos/2026/07/photo.jpg"},
    ExpiresIn=300)
print(url)

Node.js — AWS SDK v3

// npm i @aws-sdk/client-s3 @aws-sdk/s3-request-presigner
import { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
import { readFileSync } from "fs";

const s3 = new S3Client({
  endpoint: "https://s3.aiccloud.online",
  region: "us-east-1",
  credentials: {
    accessKeyId: "YOUR_ACCESS_KEY",
    secretAccessKey: "YOUR_SECRET_KEY",
  },
  forcePathStyle: true,
});

// Upload
await s3.send(new PutObjectCommand({
  Bucket: "your-bucket",
  Key: "photos/2026/07/photo.jpg",
  Body: readFileSync("local-photo.jpg"),
}));

// Presigned URL
const url = await getSignedUrl(s3,
  new GetObjectCommand({ Bucket: "your-bucket", Key: "photos/2026/07/photo.jpg" }),
  { expiresIn: 300 });
console.log(url);

PHP — AWS SDK

// composer require aws/aws-sdk-php
use Aws\S3\S3Client;

$s3 = new S3Client([
    'endpoint' => 'https://s3.aiccloud.online',
    'region' => 'us-east-1',
    'version' => 'latest',
    'use_path_style_endpoint' => true,
    'credentials' => [
        'key' => 'YOUR_ACCESS_KEY',
        'secret' => 'YOUR_SECRET_KEY',
    ],
]);

$s3->putObject([
    'Bucket' => 'your-bucket',
    'Key' => 'photos/photo.jpg',
    'SourceFile' => '/path/to/local.jpg',
]);

Go — minio-go

// go get github.com/minio/minio-go/v7
import (
    "context"
    "github.com/minio/minio-go/v7"
    "github.com/minio/minio-go/v7/pkg/credentials"
)

client, _ := minio.New("s3.aiccloud.online", &minio.Options{
    Creds:  credentials.NewStaticV4("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY", ""),
    Secure: true,
})

// Upload
client.FPutObject(context.Background(), "your-bucket", "photos/photo.jpg",
    "/path/to/local.jpg", minio.PutObjectOptions{ContentType: "image/jpeg"})

CLI — mc (MinIO client)

# Install: https://min.io/docs/minio/linux/reference/minio-mc.html
mc alias set aic https://s3.aiccloud.online YOUR_ACCESS_KEY YOUR_SECRET_KEY

# Upload a file
mc cp local-photo.jpg aic/your-bucket/photos/photo.jpg

# Upload a folder recursively
mc mirror ./my-folder aic/your-bucket/backups/

# List
mc ls aic/your-bucket/photos/

# Download
mc cp aic/your-bucket/photos/photo.jpg /tmp/copy.jpg

# Get disk usage
mc du aic/your-bucket

CLI — aws-cli

# ~/.aws/credentials
[aic]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

# Upload
aws --profile aic --endpoint-url https://s3.aiccloud.online s3 cp local.jpg s3://your-bucket/photos/photo.jpg

# Sync folder
aws --profile aic --endpoint-url https://s3.aiccloud.online s3 sync ./my-folder s3://your-bucket/backups/

# List
aws --profile aic --endpoint-url https://s3.aiccloud.online s3 ls s3://your-bucket/

Bucket policies & permissions

Each bucket you create is scoped to your access key only — no one else can list, read, or write to it. Standard S3 bucket policies (ACLs, IAM policies) work if you need to grant public reads or delegate access.

Encryption at rest

All buckets get server-side encryption (SSE-S3) enabled by default. Uploaded objects are encrypted transparently.

Quotas & billing

Support

Any issue with your bucket? Reach us on WhatsApp +91 70221 52606 or open a ticket from your dashboard.

Chat with us

We reply within minutes