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 :
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.txtPermanent dans ~/.aws/config :
[default]
region = auto
request_checksum_calculation = when_requiredboto3 (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)
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.txtmc n'utilise pas de chunked streaming par défaut — aucune option à poser.
rclone
Dans ~/.config/rclone/rclone.conf :
[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 = truePuis :
rclone copy ./dossier arkya:mon-bucket/
rclone ls arkya:mon-bucket/
rclone sync arkya:mon-bucket/ ./local-backupTerraform (fournisseur AWS)
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…).