AWS CLI
The AWS CLI works with Fil One out of the box. Install it, configure your credentials, and use --endpoint-url https://eu-west-1.s3.fil.one on every command — or set it as a profile default so you never have to type it.
Installation
pip install awscli
# or
brew install awscli
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://eu-west-1.s3.fil.one
region = eu-west-1
# ~/.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
Then pass --endpoint-url on each command:
aws s3 ls --endpoint-url https://eu-west-1.s3.fil.one
Core operations
Create a bucket
Bucket creation is not supported through the S3 API. Use the Fil One dashboard — go to Buckets → Create Bucket.
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
Bucket deletion is managed through the Fil One dashboard. The DeleteBucket S3 API operation is not supported and returns AccessDenied.
Multipart uploads
The AWS CLI handles multipart uploads automatically. You can configure the threshold:
# Set multipart threshold to 100 MB (default is 8 MB)
aws configure set default.s3.multipart_threshold 100MB --profile filone
aws configure set default.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.