Docs / Work with files

Upload a file. Get the same file back.
Upload a file. Get the same file back.

Connect an S3 client, upload a file and verify the downloaded bytes match. Run the steps on your own computer.

Before you begin

You need a provisioned customer service and its private credentials. Never enter secret keys into this documentation page.
1
An active customer service
Open your storage service in the WHMCS client area. Its Keldra panel shows the endpoint and service credentials.
2
A private bucket
If your product includes a starting bucket, use that bucket. Otherwise open Create a bucket in the Keldra service panel and choose Create private bucket. Note its exact name.
3
Your chosen S3 client
For command-line steps, install AWS CLI v2 or curl with AWS Signature Version 4 support. Use a local shell; these commands use POSIX shell syntax.

1. Configure your client

Configure your S3 access key and secret locally when prompted. Use eu-west-1 as the region and json as the output format. Replace your-private-bucket with the exact bucket name from your service.
aws configure --profile keldra export S3_ENDPOINT='https://eu-west-1.keldra.store' export BUCKET='your-private-bucket'
Expected: AWS CLI saves the keldra profile locally. Keep that credentials file private. S3_ENDPOINT and BUCKET contain only nonsecret connection details.

2. Upload a file

Create a small local file, then upload it to your private bucket. Keep hello.txt for the final comparison.
printf 'Hello from Keldra\n' > hello.txt aws --profile keldra --endpoint-url "$S3_ENDPOINT" \ s3 cp hello.txt "s3://$BUCKET/hello.txt"
Expected: AWS CLI prints an upload confirmation for hello.txt. An AccessDenied response is not a successful upload.

3. Download it

Fetch that object into a different local file so you can compare it with the original.
aws --profile keldra --endpoint-url "$S3_ENDPOINT" \ s3 cp "s3://$BUCKET/hello.txt" downloaded.txt
Expected: AWS CLI prints a download confirmation and downloaded.txt appears in your working directory.

4. Verify the result

Compare the downloaded bytes with the original file. This check runs locally, not on this documentation website.
cmp hello.txt downloaded.txt
Expected: cmp prints nothing and exits with status 0 when the files match. Any reported difference needs investigation.

Your completion checklist

Mark what you have verified yourself. These page-local checkboxes do not run commands or inspect your storage.

Need help?

Access denied or unable to connect?
Check the complete endpoint, eu-west-1 region and exact bucket name. Confirm the service is active and the key pair belongs to that service. Review configured bucket permissions. Do not make the bucket public to work around a credential error.
The files differ?
Confirm you downloaded the same object key into downloaded.txt, not an error response or an older local file. Repeat the download and compare again. Keep both files until you understand the difference.

Next goal: move an existing bucket

Inventory the source first, configure destination permissions and indexes, and check transfer charges. To export current originals from your configured bucket to a local directory, use the command below. Version history and permission/index configuration need separate migration steps.
aws --profile keldra --endpoint-url "$S3_ENDPOINT" \ s3 sync "s3://$BUCKET/" ./export/

Next goal: control who can access data

Start private. Give each service its own credentials, then configure groups, roles and resource permissions for applications that need finer-grained access. Test both an allowed and denied identity.

Manage customer services

Use the module’s service controls in WHMCS to suspend, restore or terminate access. Suspension blocks new authentication; existing sessions can last until expiry. Termination revokes service credentials without automatically deleting stored files.

Your goal

Upload a file to your private bucket and get the same file back. Complete the checklist only after checking the results on your computer.
Where are my credentials?
Open your storage service in the WHMCS client area. Use that service’s S3 credentials, not your WHMCS login. For AWS CLI, configure them locally with:
aws configure --profile keldra
Troubleshoot this tutorial →