Quickstart

Get from zero to your first uploaded object in five minutes.

1. Create an account

Sign up at /signup. You will verify your email, optionally enter your VAT/UEN tax ID (required for TH and SG B2B tax-invoice rendering), and create your first bucket.

2. Generate an access key

From the customer console, go to Keys. Click "Generate access key". You will see a key pair like:

Access Key ID:     BGSAKIA47KQ8M8YHUNQQ
Secret Access Key: 5XCh+RKx5xV4FRu3iqXmK0c7zM4M3z1L8XzNAAA1

Copy the secret key immediately. We display it only once and store only an encrypted form on our side; you will not be able to recover it later. If you lose it, rotate it.

3. Configure your S3 endpoint

Use the endpoint matching the region of your bucket:

RegionEndpoint
Bangkok (ap-southeast-1-bkk)https://s3.bkk.bangmod.storage
Singapore (ap-southeast-1-sg)https://s3.sg.bangmod.storage

Path-style (https://endpoint/bucket/key) and virtual-hosted style (https://bucket.endpoint/key) are both supported.

4. Upload your first object

Python (boto3)

import boto3

s3 = boto3.client(
    's3',
    endpoint_url='https://s3.bkk.bangmod.storage',
    aws_access_key_id='BGSAKIA…',
    aws_secret_access_key='…',
    region_name='ap-southeast-1-bkk',
)

s3.put_object(Bucket='my-bucket', Key='hello.txt', Body=b'Hello BangmodStorage')

Go (aws-sdk-go-v2)

cfg, _ := config.LoadDefaultConfig(ctx,
    config.WithRegion("ap-southeast-1-bkk"),
    config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
        "BGSAKIA…", "…", "")),
)
client := s3.NewFromConfig(cfg, func(o *s3.Options) {
    o.BaseEndpoint = aws.String("https://s3.bkk.bangmod.storage")
    o.UsePathStyle = true
})
_, err := client.PutObject(ctx, &s3.PutObjectInput{
    Bucket: aws.String("my-bucket"),
    Key:    aws.String("hello.txt"),
    Body:   strings.NewReader("Hello BangmodStorage"),
})

JavaScript / Node (@aws-sdk/client-s3)

import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';

const s3 = new S3Client({
  region: 'ap-southeast-1-bkk',
  endpoint: 'https://s3.bkk.bangmod.storage',
  credentials: { accessKeyId: 'BGSAKIA…', secretAccessKey: '…' },
  forcePathStyle: true,
});

await s3.send(new PutObjectCommand({
  Bucket: 'my-bucket', Key: 'hello.txt',
  Body: 'Hello BangmodStorage',
}));

AWS CLI

aws configure set aws_access_key_id BGSAKIA…
aws configure set aws_secret_access_key …
aws configure set region ap-southeast-1-bkk

echo "Hello BangmodStorage" > hello.txt
aws s3api put-object \
  --endpoint-url https://s3.bkk.bangmod.storage \
  --bucket my-bucket --key hello.txt --body hello.txt

s3cmd

s3cmd --configure
# Access key:        BGSAKIA…
# Secret key:        …
# S3 endpoint:       s3.bkk.bangmod.storage
# DNS-style bucket:  %(bucket)s.s3.bkk.bangmod.storage
# Use HTTPS:         yes

s3cmd put hello.txt s3://my-bucket/hello.txt

rclone

# In ~/.config/rclone/rclone.conf:
[bangmod]
type = s3
provider = Other
access_key_id = BGSAKIA…
secret_access_key = …
endpoint = https://s3.bkk.bangmod.storage
region = ap-southeast-1-bkk

rclone copy hello.txt bangmod:my-bucket/

5. What's next

  • Set bucket lifecycle rules (object expiration, multi-part cleanup).
  • Configure CORS for browser-side uploads.
  • Generate presigned URLs for time-limited public download links.
  • Add team members from Members.
  • Set up billing alerts on the Billing page.