AdministrationProtokollunterstützung

OpenStack-Swift-API

Erstellen Sie RustFS mit der optionalen Swift-API und binden Sie die OpenStack-Keystone-Authentifizierung an.

RustFS kann auf demselben HTTP-Endpunkt wie die S3-API eine mit OpenStack Swift kompatible API bereitstellen. Diese Anleitung zeigt, wie Sie das optionale Feature swift erstellen, die Keystone-Tokenvalidierung konfigurieren und grundlegende Konto-, Container- und Objektoperationen prüfen.

Kompatibilitätsumfang

Die Swift-Unterstützung ist optional und deckt nicht jedes Verhalten von OpenStack Swift ab. HEAD-Anfragen auf Kontoebene und Listenformate außer JSON sind nicht implementiert. Prüfen Sie Ihren Client-Workflow, bevor Sie die API produktiv einsetzen.

Zuordnung von Swift zu RustFS

Swift-Anfragen verwenden den Pfad /v1/AUTH_<project-id>/... am S3-API-Endpunkt von RustFS:

Swift-RessourceAnfragepfadRustFS-Zuordnung
Konto/v1/AUTH_<project-id>Das authentifizierte Keystone-Projekt
Container/v1/AUTH_<project-id>/<container>Ein projektisolierter RustFS-Bucket
Objekt/v1/AUTH_<project-id>/<container>/<object>Ein Objekt im zugeordneten Bucket

Die Projekt-ID in der URL muss mit der Projekt-ID im validierten Keystone-Token übereinstimmen. RustFS akzeptiert das Token in X-Auth-Token oder X-Storage-Token.

Die bestätigten Kernoperationen sind:

BereichOperationen
KontoContainer auflisten, Kontometadaten aktualisieren
ContainerErstellen, auflisten, untersuchen, Metadaten aktualisieren, löschen
ObjektHochladen, herunterladen, Bereich herunterladen, untersuchen, Metadaten aktualisieren, kopieren, löschen

Mit Swift-Unterstützung erstellen

Swift gehört nicht zum standardmäßigen RustFS-Featuresatz. Erstellen Sie das Feature ausdrücklich aus dem Repository rustfs/rustfs:

cargo build --release --features swift

Das erzeugte Binary stellt Swift-Pfade an der konfigurierten S3-API-Adresse bereit. Es gibt keinen separaten Swift-Listener und keinen Swift-spezifischen Port.

Keystone konfigurieren

Aktivieren Sie Keystone und legen Sie vor dem Start von RustFS den Authentifizierungsendpunkt fest:

export RUSTFS_KEYSTONE_ENABLE=true
export RUSTFS_KEYSTONE_AUTH_URL=https://keystone.example.com
export RUSTFS_KEYSTONE_VERSION=v3
export RUSTFS_KEYSTONE_VERIFY_SSL=true
VariableZweckStandardwert
RUSTFS_KEYSTONE_ENABLEAktiviert die Keystone-Tokenvalidierung.false
RUSTFS_KEYSTONE_AUTH_URLLegt den Keystone-Authentifizierungsendpunkt fest; bei aktiviertem Keystone erforderlich.Nicht gesetzt
RUSTFS_KEYSTONE_VERSIONWählt die Keystone-API-Version.v3
RUSTFS_KEYSTONE_VERIFY_SSLPrüft das TLS-Zertifikat von Keystone.true
RUSTFS_KEYSTONE_CACHE_SIZELegt die maximale Anzahl der Token-Cache-Einträge fest.10000
RUSTFS_KEYSTONE_CACHE_TTLLegt die Lebensdauer des Token-Caches in Sekunden fest.300
RUSTFS_KEYSTONE_TIMEOUTLegt das Zeitlimit für Keystone-Anfragen in Sekunden fest.30

Wir empfehlen, die TLS-Prüfung aktiviert zu lassen. Wenn Keystone ein übergebenes Token ablehnt, gibt RustFS 401 Unauthorized zurück und verwendet für diese Anfrage keine lokalen Anmeldedaten als Rückfall.

API prüfen

Beziehen Sie ein bereichsgebundenes Token und eine Projekt-ID von Keystone und setzen Sie anschließend diese Shell-Variablen:

export SWIFT_TOKEN='<your-keystone-token>'
export SWIFT_ACCOUNT='AUTH_<your-project-id>'
export SWIFT_URL="http://localhost:9000/v1/${SWIFT_ACCOUNT}"

Listen Sie die für das Projekt sichtbaren Container auf:

curl --fail-with-body \
	--header "X-Auth-Token: ${SWIFT_TOKEN}" \
	"${SWIFT_URL}"

Erstellen Sie my-bucket, laden Sie hello.txt hoch und laden Sie das Objekt wieder herunter:

curl --fail-with-body --request PUT \
	--header "X-Auth-Token: ${SWIFT_TOKEN}" \
	"${SWIFT_URL}/my-bucket"

curl --fail-with-body --request PUT \
	--header "X-Auth-Token: ${SWIFT_TOKEN}" \
	--upload-file /path/to/hello.txt \
	"${SWIFT_URL}/my-bucket/hello.txt"

curl --fail-with-body \
	--header "X-Auth-Token: ${SWIFT_TOKEN}" \
	"${SWIFT_URL}/my-bucket/hello.txt"

Eine Anfrage an ein AUTH_<project-id>-Konto, das nicht zum Token-Projekt passt, erhält 403 Forbidden.

Nächste Schritte

On this page