Common Issues and Solutions
This page lists known issues when using the AWS CLI (s3api
and s3
) with Akave O3 and provides tested workarounds or solutions.
Issue: Uploads fail due to checksum validation headers (AWS CLI v2.23.0+)
Error:
An error occurred (InvalidArgument) when calling the PutObject operation: Unsupported header ‘x-amz-sdk-checksum-algorithm’ received for this API call.
Cause:
In AWS CLI v2.23.0+ and v1.37.0+, aws s3 cp
and aws s3api put-object
automatically include checksum headers like x-amz-sdk-checksum-algorithm
and x-amz-checksum-crc64nvme
, even when not required.
This behavior breaks compatibility with third-party S3-compatible endpoints like Akave O3.
Workaround 1: Downgrade AWS CLI
Use a known working version such as:
- AWS CLI v2.22.35 or older
- AWS CLI v1.36.40 or older
Run:
aws --version
Workaround 2: Update config file
In ~/.aws/config
, add the following under your O3 profile:
[profile o3]
region = akave-network
request_checksum_calculation = WHEN_REQUIRED
response_checksum_validation = WHEN_REQUIRED
Then use the profile in your commands:
aws s3 cp ./file.txt s3://my-akave-bucket/ \
--profile o3 \
--endpoint-url https://o3-rc2.akave.xyz
Workaround 3: Explicitly specify a supported checksum (e.g., CRC32)
aws s3api put-object \
--bucket my-akave-bucket \
--key example.txt \
--body ./example.txt \
--checksum-algorithm CRC32 \
--endpoint-url https://o3-rc2.akave.xyz
Why this matters:
Versions between 2.23.0 and 2.23.5 (and 1.37.0 in CLI v1) are not compatible with Akave or many third-party S3 APIs unless configuration is modified or CLI is updated.
Issue: Downloading Versioned Files from O3 Results in Directory Structure
Error:
If you are running a self-hosted instance of Akave O3 and enable bucket versioning, the object names in the Akave Network include version tags appended to them.
For example for an object file.txt:
- file.txt/null
- file.txt/V1
- file.txt/V2
- etc.
When downloading the file using the akavecli, the file will be downloaded with the version tag as the file name, while the file name is the name of the directory.
For example after downloading:
cd file.txt
Shows a directory containing the version tag:
V1
Cause:
The akavecli interprets the value following a “/” character as a directory, so it creates a directory with the name of the file and downloads the file into it.
Workaround:
If you want to download this file using the akavecli, you must follow these steps:
- Create a directory with your file name
mkdir file.txt
- Perform the download using the akavecli
akavecli ipc file download <bucket-name> file.txt/null . --node-address=connect.akave.ai:5500 --private-key "your-private-key"
This will create a file inside your new directory named
null
,V1
,V2
or whatever version it is, andyour-private-key
in this case is the private key used for your O3 instance.
- Move into that directory
cd file.txt
- Rename the downloaded file (e.g., null, V1, etc.) to a temporary name and move it up one level
mv * ../file.tmp
- Return to the parent directory and remove the temporary directory
cd ..
rmdir file.txt
- Rename the file back to it’s original file name (file.txt in this example)
mv file.tmp file.txt
Still having issues?
Try adding --debug
to your command and refer to the Debugging S3 Requests section.