Back

Blog details

AIOZ Storage CLI Quickstart with AWS CLI Commands and Flags

AIOZ Network
6 min readAugust 16, 2026
aioz-storage
AIOZ Storage cover: AIOZ Storage CLI Quickstart

The AIOZ Storage CLI is the standard AWS CLI with one extra flag: --endpoint-url https://s3.aiozstorage.network. You configure it once with your access grant keys, then run the usual aws s3 commands. Two settings need care on recent CLI versions: path-style addressing and upload checksums.

TL;DR:

  • Install the AWS CLI, run aws configure with your AIOZ Storage access key and secret, and add --endpoint-url https://s3.aiozstorage.network to each command.
  • Or put endpoint_url in a profile, so plain aws s3 ls talks to AIOZ Storage.
  • Keep path-style addressing: bucket subdomains of s3.aiozstorage.network don't resolve in DNS.
  • Recent AWS tools add a streamed CRC checksum to uploads. In our test the endpoint rejected that request with MissingContentLength, so set request_checksum_calculation = when_required.

Updated Oct 19, 2026: added a table of how CLI settings differ between Amazon S3 and AIOZ Storage, a profile that sets everything once, real output from a test against the endpoint, and fixes for the errors you're most likely to hit.

Is There a Dedicated AIOZ Storage CLI?

No. The AIOZ Storage CLI docs use the AWS CLI, pointed at our S3 endpoint. You install it from AWS's own guide and authenticate with the same access key and secret you'd use in an SDK.

Installing and Configuring the AWS CLI

The docs link to AWS's install and configure pages, since there's no AIOZ installer:

# Install (see AWS's official guide for your OS)
# https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html

aws configure

aws configure asks for an access key ID, a secret access key, a default region and an output format. Paste the key pair from your AIOZ Storage access grant and use us-east-1 as the region, the value the AIOZ SDK docs sign with.

You can pass the endpoint on every command, or set it once. A named profile is the cleanest way, because it also holds the two settings below:

# ~/.aws/config
[profile aioz]
region = us-east-1
endpoint_url = https://s3.aiozstorage.network
request_checksum_calculation = when_required
s3 =
    addressing_style = path

# ~/.aws/credentials
[aioz]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
export AWS_PROFILE=aioz
aws s3 ls                              # lists your buckets on AIOZ Storage
aws s3 cp ./report.pdf s3://my-bucket  # no --endpoint-url needed now

The endpoint_url profile setting and the AWS_ENDPOINT_URL and AWS_ENDPOINT_URL_S3 environment variables are standard AWS CLI v2 options. A --endpoint-url flag on the command line overrides them.

How Do AWS CLI Settings Differ Between Amazon S3 and AIOZ Storage?

The commands are the same on both, and what changes is the setup around them:

SettingAmazon S3AIOZ Storage
Endpointnone, the CLI picks one per region--endpoint-url https://s3.aiozstorage.network or endpoint_url in the profile
Regionthe bucket's real regionus-east-1 for signing
Addressing styleauto (virtual-hosted)path style; bucket subdomains don't resolve
Upload checksumsdefault when_supported worksset when_required (see our test below)
CredentialsIAM user or role keysaccess key and secret from an access grant
Rate limitper-prefix S3 limits100 requests per second per account

What We Saw When We Tested the Endpoint

The AWS CLI is built on botocore, the same library as boto3. On Oct 19, 2026 we used botocore 1.43.107 with a fake key against s3.aiozstorage.network. A fake key can't upload anything, but the error tells you how far a request got. InvalidAccessKeyId means the request passed the endpoint's checks up to the key lookup, as the output shows:

botocore 1.43.107
addressing_style=auto (default) list_objects_v2: url=https://s3.aiozstorage.network/my-bucket?list-type=2&encoding-type=url -> InvalidAccessKeyId
addressing_style=auto (default) put_object: url=https://s3.aiozstorage.network/my-bucket/hello.txt -> MissingContentLength: You must provide the Content-Length HTTP header.
addressing_style=virtual list_objects_v2: url=https://my-bucket.s3.aiozstorage.network/?list-type=2&encoding-type=url -> EndpointConnectionError: Could not connect to the endpoint URL
request_checksum_calculation=when_supported: sent Transfer-Encoding: chunked, Content-Encoding: aws-chunked, X-Amz-Trailer: x-amz-checksum-crc32 -> MissingContentLength
request_checksum_calculation=when_required: sent Content-Length: 5 -> InvalidAccessKeyId

Three things follow from this run. With a custom endpoint, botocore's default auto mode already used path style, while forcing virtual failed because my-bucket.s3.aiozstorage.network doesn't exist in DNS. The default checksum mode streamed the upload without a Content-Length header, and the endpoint rejected it before checking the key. With when_required, the same upload sent Content-Length and got as far as the key check.

We didn't run the AWS CLI binary itself, and we had no real key, so a full upload is unconfirmed. AWS's data integrity guide lists the AWS CLI v2 among the tools that now checksum uploads by default, which is why the profile above sets when_required. If you'd rather not edit the profile, export AWS_REQUEST_CHECKSUM_CALCULATION=WHEN_REQUIRED does the same for one shell.

Terminal window showing lines of command-line code

Bucket Operations

# Create a bucket
aws s3 --endpoint-url https://s3.aiozstorage.network mb s3://my-bucket

# List your buckets
aws s3 --endpoint-url https://s3.aiozstorage.network ls

# Delete an empty bucket
aws s3 --endpoint-url https://s3.aiozstorage.network rb s3://my-bucket

rb only removes empty buckets, so add --force to delete a bucket and everything in it, the same as on Amazon S3, and keep in mind that each account can hold up to 100 buckets.

Object Operations

# List objects in a bucket
aws s3 --endpoint-url https://s3.aiozstorage.network ls s3://my-bucket

# Upload a file
aws s3 --endpoint-url https://s3.aiozstorage.network cp ./local-file.txt s3://my-bucket

# Download a file
aws s3 --endpoint-url https://s3.aiozstorage.network cp s3://my-bucket/local-file.txt ./downloaded.txt

# Copy an object within AIOZ Storage
aws s3 --endpoint-url https://s3.aiozstorage.network cp s3://my-bucket/file.txt s3://my-bucket/file-copy.txt

# Delete one object
aws s3 --endpoint-url https://s3.aiozstorage.network rm s3://my-bucket/local-file.txt

# Delete every object under a prefix
aws s3 --endpoint-url https://s3.aiozstorage.network rm s3://my-bucket/ --recursive

cp works in both directions: it uploads when s3:// is the destination and downloads when it's the source. Add --recursive to copy a whole folder or prefix. A big recursive copy sends up to 10 requests at a time by default. With many small files that can pass 100 requests per second, so lower max_concurrent_requests in the profile if you hit the limit.

How Do I Fix Common AWS CLI Errors with AIOZ Storage?

  • Could not connect to the endpoint URL with the bucket in the hostname: set addressing_style = path in the profile.
  • MissingContentLength on cp or put-object: set request_checksum_calculation = when_required or export AWS_REQUEST_CHECKSUM_CALCULATION=WHEN_REQUIRED.
  • InvalidAccessKeyId: the key pair is wrong or from another profile. Check aws configure list --profile aioz.
  • Requests reach AWS instead of AIOZ: the endpoint isn't set for that command. Add --endpoint-url or use the aioz profile.

How AIOZ Storage Handles CLI Access

We run one S3 endpoint, https://s3.aiozstorage.network, for the CLI, the SDKs and tools like rclone. Your CLI keys come from an access grant, and objects are encrypted server-side on arrival. The usage limits page sets 100 requests per second, 100 buckets and 100 sub-users per account.

What the docs don't cover yet: aws s3api features beyond the listed bucket and object commands, such as versioning or Object Lock. The docs' encryption page also mentions an "AIOZ Storage CLI" for end-to-end encryption, which isn't documented or published yet.

Next step: the AIOZ Storage CLI docs list every command shown here.

Frequently Asked Questions

Is there a dedicated AIOZ Storage CLI?
No. You use the standard AWS CLI with --endpoint-url https://s3.aiozstorage.network.

Do I need separate keys for the CLI and the SDKs?
No. The same access key and secret from your access grant work in the CLI, the SDKs and Postman.

How do I stop typing --endpoint-url on every command?
Set endpoint_url in a named profile, or export AWS_ENDPOINT_URL_S3=https://s3.aiozstorage.network for the session.

Why does aws s3 cp fail with MissingContentLength?
Recent AWS tools stream uploads with a checksum trailer and no Content-Length, and the endpoint rejected that in our test. Set request_checksum_calculation = when_required.

Do I need addressing_style = path?
Set it to be safe, even though in our test the default auto mode already chose path style with a custom endpoint, and virtual-hosted style failed because bucket subdomains don't resolve.

Does aws s3 rb delete a bucket that still has files in it?
Not by default, but adding --force deletes the bucket and its contents together.

Can aws s3 cp copy whole folders?
Yes, add --recursive to copy a local directory or a bucket prefix in one command.

References

We only send updates when meaningful changes ship, and you can unsubscribe anytime

Related Content

blog thumbnail

How to Create a Bucket and Upload a File on AIOZ Storage

Create a bucket and upload a file on AIOZ Storage in five steps: sign up, set a passphrase, add credits, and upload. Plus what the passphrase cannot recover.

aioz-storage
5 min readOctober 20, 2026
blog thumbnail

AIOZ Storage Rate Limit: Working Within 100 Requests/s

The AIOZ Storage rate limit is 100 requests per second. See what the docs do and don't say, and how to stay under it with boto3 retries and a limiter.

aioz-storage
7 min readOctober 16, 2026
blog thumbnail

What AIOZ Storage Erasure Coding Covers and What It Doesn't

AIOZ Storage erasure coding splits each object into pieces on DePIN nodes, so it survives node loss. See what it covers, what it doesn't, and what to back up.

aioz-storage
6 min readOctober 14, 2026
blog thumbnail

How to Rename a File in an S3 Bucket on AIOZ Storage

Rename a file in an S3 bucket on AIOZ Storage from the dashboard, then move, delete and download files, and see which actions the docs say are not supported.

aioz-storage
5 min readOctober 13, 2026
blog thumbnail

AIOZ Storage llms.txt: Docs Built for Super Intelligence

AIOZ Storage publishes llms.txt, a 46-link docs index, and llms-full.txt, all docs in one 164 KB file. See what each file contains and when to use which.

aioz-storage
6 min readOctober 09, 2026
blog thumbnail

Vector Database vs Agent Memory on AIOZ Storage: A Guide

Vector database vs agent memory on AIOZ Storage: use the vector database for control over embeddings and metadata, Memory for simple Record and Recall calls.

aioz-storage
6 min readOctober 06, 2026