Zum Hauptinhalt springen

Libraries verwenden

Alle gängigen S3-SDKs funktionieren mit dem centron Object Storage. Entscheidend sind drei Einstellungen: Endpoint, Region und Zugangsdaten.

Beispielwerte: Endpoint s3.internet1.de, Region .

Zugangsdaten

Hinterlegen Sie Access/Secret Key in Umgebungsvariablen und lesen Sie sie im Code aus – niemals hart codieren.

Python (boto3)

pip install boto3
import os
import boto3

s3 = boto3.client(
"s3",
endpoint_url="https://s3.internet1.de",
region_name=" ",
aws_access_key_id=os.environ["S3_ACCESS_KEY"],
aws_secret_access_key=os.environ["S3_SECRET_KEY"],
)

# Buckets auflisten
for b in s3.list_buckets()["Buckets"]:
print(b["Name"])

# Upload / Download
s3.upload_file("bericht.pdf", "mein-bucket", "dokumente/bericht.pdf")
s3.download_file("mein-bucket", "dokumente/bericht.pdf", "kopie.pdf")

# Presigned URL (1 Stunde gültig)
url = s3.generate_presigned_url(
"get_object",
Params={"Bucket": "mein-bucket", "Key": "dokumente/bericht.pdf"},
ExpiresIn=3600,
)
print(url)

JavaScript / Node.js (AWS SDK v3)

npm install @aws-sdk/client-s3
import { S3Client, PutObjectCommand, GetObjectCommand, ListBucketsCommand } from "@aws-sdk/client-s3";
import { readFile } from "node:fs/promises";

const s3 = new S3Client({
endpoint: "https://s3.internet1.de",
region: " ",
credentials: {
accessKeyId: process.env.S3_ACCESS_KEY,
secretAccessKey: process.env.S3_SECRET_KEY,
},
});

// Buckets auflisten
const { Buckets } = await s3.send(new ListBucketsCommand({}));
console.log(Buckets.map((b) => b.Name));

// Upload
await s3.send(new PutObjectCommand({
Bucket: "mein-bucket",
Key: "bilder/logo.png",
Body: await readFile("./logo.png"),
ContentType: "image/png",
}));

Go (aws-sdk-go-v2)

package main

import (
"context"
"fmt"
"os"

"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://s3.internet1.de"),
Region: " ",
Credentials: credentials.NewStaticCredentialsProvider(
os.Getenv("S3_ACCESS_KEY"), os.Getenv("S3_SECRET_KEY"), ""),
})

out, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{})
if err != nil {
panic(err)
}
for _, b := range out.Buckets {
fmt.Println(*b.Name)
}
}

PHP (AWS SDK for PHP)

composer require aws/aws-sdk-php
<?php
require 'vendor/autoload.php';

use Aws\S3\S3Client;

$s3 = new S3Client([
'version' => 'latest',
'region' => ' ',
'endpoint' => 'https://s3.s3.internet1.de',
'use_path_style_endpoint' => false,
'credentials' => [
'key' => getenv('S3_ACCESS_KEY'),
'secret' => getenv('S3_SECRET_KEY'),
],
]);

$s3->putObject([
'Bucket' => 'mein-bucket',
'Key' => 'daten/export.csv',
'SourceFile' => './export.csv',
]);

Hinweise für alle SDKs

  • Adressierung: Falls ein SDK standardmäßig Path-style verwendet oder Probleme mit Virtual-hosted-style hat, den entsprechenden Schalter setzen (use_path_style_endpoint, forcePathStyle o. ä.).
  • Multipart: Große Uploads erledigen die SDKs automatisch über Multipart – Schwellwerte sind konfigurierbar.
  • Retries/Timeouts: Für produktive Anwendungen sinnvolle Retry- und Timeout-Werte konfigurieren.

Verwandte Themen