Utilisation de l'API S3
Le stockage objet ZSoftly est compatible S3. Tout outil ou SDK prenant en charge S3 fonctionne avec celui-ci.
Points de terminaison :
| Région | Point de terminaison |
|---|---|
| YUL (Montreal) | https://objects.yul.zcp.zsoftly.ca |
| YOW (Ottawa) | https://objects.yow.zcp.zsoftly.ca |
Les exemples ci-dessous utilisent le point de terminaison YUL. Remplacez-le par YOW si votre compartiment se trouve à Ottawa.
Se connecter et lister les compartiments
Section intitulée « Se connecter et lister les compartiments »Configurez votre client avec le point de terminaison régional et vos clés d’accès, puis listez vos compartiments. Choisissez votre langage :
# Store your credentials onceaws configure set aws_access_key_id <access-key>aws configure set aws_secret_access_key <secret-key>
# List bucketsaws s3 ls --endpoint-url https://objects.yul.zcp.zsoftly.caimport boto3
s3 = boto3.client( "s3", endpoint_url="https://objects.yul.zcp.zsoftly.ca", aws_access_key_id="<access-key>", aws_secret_access_key="<secret-key>",)
for bucket in s3.list_buckets()["Buckets"]: print(bucket["Name"])import { S3Client, ListBucketsCommand } from '@aws-sdk/client-s3';
const client = new S3Client({ endpoint: 'https://objects.yul.zcp.zsoftly.ca', region: 'us-east-1', credentials: { accessKeyId: '<access-key>', secretAccessKey: '<secret-key>' }, forcePathStyle: true,});
const { Buckets } = await client.send(new ListBucketsCommand({}));for (const b of Buckets ?? []) console.log(b.Name);import { S3Client, ListBucketsCommand, type Bucket } from '@aws-sdk/client-s3';
const client = new S3Client({ endpoint: 'https://objects.yul.zcp.zsoftly.ca', region: 'us-east-1', credentials: { accessKeyId: '<access-key>', secretAccessKey: '<secret-key>' }, forcePathStyle: true,});
const { Buckets } = await client.send(new ListBucketsCommand({}));Buckets?.forEach((b: Bucket) => console.log(b.Name));package main
import ( "context" "fmt"
"github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/credentials" "github.com/aws/aws-sdk-go-v2/service/s3")
func main() { client := s3.New(s3.Options{ BaseEndpoint: aws.String("https://objects.yul.zcp.zsoftly.ca"), Region: "us-east-1", Credentials: credentials.NewStaticCredentialsProvider("<access-key>", "<secret-key>", ""), UsePathStyle: true, })
out, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{}) if err != nil { panic(err) } for _, b := range out.Buckets { fmt.Println(*b.Name) }}using Amazon.S3;
var config = new AmazonS3Config{ ServiceURL = "https://objects.yul.zcp.zsoftly.ca", ForcePathStyle = true,};using var client = new AmazonS3Client("<access-key>", "<secret-key>", config);
var response = await client.ListBucketsAsync();foreach (var bucket in response.Buckets){ Console.WriteLine(bucket.BucketName);}import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;import software.amazon.awssdk.regions.Region;import software.amazon.awssdk.services.s3.S3Client;import software.amazon.awssdk.services.s3.S3Configuration;
import java.net.URI;
public class ListBuckets { public static void main(String[] args) { S3Client s3 = S3Client.builder() .endpointOverride(URI.create("https://objects.yul.zcp.zsoftly.ca")) .region(Region.US_EAST_1) .credentialsProvider(StaticCredentialsProvider.create( AwsBasicCredentials.create("<access-key>", "<secret-key>"))) .serviceConfiguration(S3Configuration.builder() .pathStyleAccessEnabled(true).build()) .build();
s3.listBuckets().buckets().forEach(b -> System.out.println(b.name())); }}require "aws-sdk-s3"
s3 = Aws::S3::Client.new( endpoint: "https://objects.yul.zcp.zsoftly.ca", region: "us-east-1", access_key_id: "<access-key>", secret_access_key: "<secret-key>", force_path_style: true)
s3.list_buckets.buckets.each { |b| puts b.name }<?phprequire "vendor/autoload.php";
use Aws\S3\S3Client;
$s3 = new S3Client([ "version" => "latest", "region" => "us-east-1", "endpoint" => "https://objects.yul.zcp.zsoftly.ca", "use_path_style_endpoint" => true, "credentials" => [ "key" => "<access-key>", "secret" => "<secret-key>", ],]);
foreach ($s3->listBuckets()["Buckets"] as $bucket) { echo $bucket["Name"] . "\n";}Opérations courantes
Section intitulée « Opérations courantes »Une fois votre client (ou AWS CLI) configuré, toutes les opérations S3 standard fonctionnent. Avec AWS CLI :
# Create a bucketaws s3 mb s3://my-bucket --endpoint-url https://objects.yul.zcp.zsoftly.ca
# Upload a fileaws s3 cp ./file.txt s3://my-bucket/ --endpoint-url https://objects.yul.zcp.zsoftly.ca
# Download a fileaws s3 cp s3://my-bucket/file.txt ./file.txt --endpoint-url https://objects.yul.zcp.zsoftly.ca
# List objects in a bucketaws s3 ls s3://my-bucket/ --endpoint-url https://objects.yul.zcp.zsoftly.ca
# Delete an objectaws s3 rm s3://my-bucket/file.txt --endpoint-url https://objects.yul.zcp.zsoftly.cas3cmd est un client en ligne de commande autonome pour le stockage
compatible S3. Installez-le, puis créez ~/.s3cfg :
[default]access_key = <access-key>secret_key = <secret-key>host_base = objects.yul.zcp.zsoftly.cahost_bucket = objects.yul.zcp.zsoftly.cause_https = TrueCe fichier contient votre clé secrète. Limitez donc ses autorisations :
chmod 600 ~/.s3cfgDéfinir host_bucket sur la même valeur que host_base, sans espace réservé pour le compartiment,
force l’adressage path-style requis par le service. Pour un compartiment à Ottawa, utilisez
objects.yow.zcp.zsoftly.ca.
Exécutez les commandes courantes :
s3cmd ls # list your bucketss3cmd mb s3://my-bucket # create a buckets3cmd put ./file.txt s3://my-bucket/ # upload a files3cmd get s3://my-bucket/file.txt . # download a files3cmd sync ./local-dir/ s3://my-bucket/dir/ # sync a folders3cmd rm s3://my-bucket/file.txt # delete an objectVoir aussi : Clés d’accès, Créer un compartiment