Docs

Configurer un client S3

AWS CLI, boto3, mc et rclone contre s3.arkya.gg. Un paramètre particulier à connaître pour que les uploads passent.

Paramètres communs

Tout client S3 a besoin de trois choses :

  • Endpoint : https://s3.arkya.gg
  • Région : auto (ou vide / us-east-1, ce sont des alias)
  • Credentials : l'access key et le secret émis dans l'espace client ou via ark bucket keys … create

Un gotcha à connaître

Le point d'entrée Arkya refuse les uploads chunked STREAMING-AWS4-HMAC-SHA256-PAYLOAD. Les SDK AWS récents l'utilisent par défaut et obtiennent alors un 400 InvalidRequest. Désactive le chunked avant tout upload, comme indiqué dans chaque exemple ci-dessous.

AWS CLI

Depuis la v2, l'AWS CLI envoie des checksums intégrés qui déclenchent le mode chunked. Désactive-les :

Terminal
export AWS_ACCESS_KEY_ID=ARKYA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_DEFAULT_REGION=auto
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required

aws --endpoint-url https://s3.arkya.gg s3 cp fichier.txt s3://mon-bucket/
aws --endpoint-url https://s3.arkya.gg s3 ls s3://mon-bucket/
aws --endpoint-url https://s3.arkya.gg s3 rm s3://mon-bucket/fichier.txt

Permanent dans ~/.aws/config :

ini
[default]
region = auto
request_checksum_calculation = when_required

boto3 (Python)

Python
import boto3
from botocore.config import Config

s3 = boto3.client(
    "s3",
    endpoint_url="https://s3.arkya.gg",
    aws_access_key_id="ARKYA...",
    aws_secret_access_key="...",
    region_name="auto",
    config=Config(
        signature_version="s3v4",
        request_checksum_calculation="when_required",
    ),
)

s3.upload_file("fichier.txt", "mon-bucket", "fichier.txt")
s3.list_objects_v2(Bucket="mon-bucket")

MinIO Client (mc)

Terminal
mc alias set arkya https://s3.arkya.gg ARKYA... <secret>
mc cp fichier.txt arkya/mon-bucket/
mc ls arkya/mon-bucket/
mc rm arkya/mon-bucket/fichier.txt

mc n'utilise pas de chunked streaming par défaut — aucune option à poser.

rclone

Dans ~/.config/rclone/rclone.conf :

ini
[arkya]
type = s3
provider = Other
endpoint = https://s3.arkya.gg
region = auto
access_key_id = ARKYA...
secret_access_key = ...
disable_checksum = true
no_check_bucket = true

Puis :

Terminal
rclone copy ./dossier arkya:mon-bucket/
rclone ls arkya:mon-bucket/
rclone sync arkya:mon-bucket/ ./local-backup

Terraform (fournisseur AWS)

hcl
provider "aws" {
  region     = "auto"
  access_key = var.arkya_access_key
  secret_key = var.arkya_secret_key

  endpoints {
    s3 = "https://s3.arkya.gg"
  }

  skip_credentials_validation = true
  skip_region_validation      = true
  skip_requesting_account_id  = true
  s3_use_path_style           = true
}

Formes d'URL supportées

Deux styles d'URL fonctionnent :

  • Path-style : https://s3.arkya.gg/<bucket>/<clé>
  • Virtual-hosted-style : https://<bucket>.s3.arkya.gg/<clé>

La plupart des SDK choisissent automatiquement. Pour forcer path-style (recommandé avec Terraform ou certains buckets au nom non-DNS-safe), voir l'option de ton SDK (s3_use_path_style, AddressingStyle.PATH, --path-style…).