AWS CLI
The AWS CLI works with Fil One out of the box. Install it, configure your credentials, and use --endpoint-url https://s3.<region>.filonecontent.com on every command — or set it as a profile default so you never have to type it.
Examples here use eu-west-1, the default region. For a bucket in us-east-1, use https://s3.us-east-1.filonecontent.com and region us-east-1. The endpoint, the region, and your access key must all refer to the same region — set up one profile per region if you use both.
Installation
Use AWS CLI v2. Version 1 (pip install awscli) does not read endpoint_url from ~/.aws/config, so the profile setup below silently won't work — install v2 instead:
brew install awscli
# or follow the official installer for your platform:
# https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
Confirm you have v2:
aws --version # should print aws-cli/2.x
Configuration
Option 1: Named profile (recommended)
Add a filone profile to your AWS config files so you don't have to pass --endpoint-url on every command:
# ~/.aws/config
[profile filone]
endpoint_url = https://s3.eu-west-1.filonecontent.com
region = eu-west-1
s3 =
addressing_style = path
The addressing_style = path line is required: Fil One only supports path-style URLs, and the CLI defaults to virtual-hosted style even with a custom endpoint, which fails with a DNS or 404-shaped error.
# ~/.aws/credentials
[filone]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
Then use --profile filone (or AWS_PROFILE=filone) on every command:
aws s3 ls --profile filone
Or set it for your shell session:
export AWS_PROFILE=filone
aws s3 ls
Option 2: Default profile with env vars
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
export AWS_DEFAULT_REGION=eu-west-1
There is no environment variable for addressing style, so set path-style once in your config (it applies to the default profile):
aws configure set default.s3.addressing_style path
Then pass --endpoint-url on each command:
aws s3 ls --endpoint-url https://s3.eu-west-1.filonecontent.com
Core operations
Create a bucket
CreateBucket is region-dependent. It is not available in eu-west-1 — use the Fil One dashboard there, via Buckets → Create bucket. In us-east-1, with a key that has the CreateBucket permission:
aws s3 mb s3://my-bucket --profile filone
Note that versioning and Object Lock can only be set when the bucket is created, and only from the dashboard. See Buckets.
Upload a file
aws s3 cp report.pdf s3://my-bucket/reports/report.pdf --profile filone
Upload a directory
aws s3 sync ./local-folder s3://my-bucket/folder/ --profile filone
List objects
aws s3 ls s3://my-bucket/ --profile filone
# Recursive listing with sizes
aws s3 ls s3://my-bucket/ --recursive --human-readable --profile filone
Download a file
aws s3 cp s3://my-bucket/reports/report.pdf ./report.pdf --profile filone
Download a directory
aws s3 sync s3://my-bucket/folder/ ./local-folder --profile filone
Delete an object
aws s3 rm s3://my-bucket/reports/report.pdf --profile filone
Delete a bucket
DeleteBucket support depends on the region. In us-east-1 you can remove an empty bucket with a key that has the DeleteBucket permission:
aws s3 rb s3://my-bucket --profile filone
In eu-west-1 the operation is not available over the S3 API. Delete the bucket from the Fil One dashboard instead, via the bucket's actions menu in Buckets (Owner and Admin roles only). See Buckets.
Multipart uploads
The AWS CLI handles multipart uploads automatically. You can configure the threshold:
# Set multipart threshold to 100 MB (default is 8 MB)
# Note: use the bare "s3." key with --profile; the "default." prefix is only for the default profile
aws configure set s3.multipart_threshold 100MB --profile filone
aws configure set s3.multipart_chunksize 50MB --profile filone
Cleanup incomplete multipart uploads
# List incomplete uploads
aws s3api list-multipart-uploads --bucket my-bucket --profile filone
# Abort a specific incomplete upload
aws s3api abort-multipart-upload \
--bucket my-bucket \
--key large-file.zip \
--upload-id YOUR_UPLOAD_ID \
--profile filone
See the S3 Compatibility Reference for the full list of supported operations.