2022.06
Integration von S3 Storage
Diese Seite fasst Informationen fĂŒr die Nutzung von S3 Speichern unter MyCoRe LTS 2022-06 zusammen.
Erstellen eines S3 Test-Storage Minio-Testserver
Allgemeines
Als Testbeispiel soll die Integration eines Minio-S3-Servers an dieser Stelle dokumentiert werden. FĂŒr Produktivsysteme kann
dieser dann durch einen im RZ verfĂŒgbaren S3 Storage erstetzt werden.
Eine Anleitung zur Installation ist unter
Digital Ocean
fĂŒr Ubuntu 22.04 beschieben.
Die folgende Konfiguration steht in /etc/default/minio.
1
2
3
4
|
MINIO_VOLUMES="/data/minio/"
MINIO_OPTS="-C /etc/minio --address {my_host}:9000 --console-address {my_host}:9090"
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=***
|
Somit ist die S3-Schnittstelle unter Port 9000 und die Web-Schnittstelle unter Port 9090 zugreifbar.
FĂŒr das MyCoRe-Repository muss noch der Port 9000 frei geschaltet werden.
Nun mĂŒssen noch ĂŒber die Web-Schnittstelle der Nutzer und Service Account angelegt, entsprechende Buckets angelegt und Daten hochgeladen werden.
Das Plugin
Features
- S3-Viewer: Front-end fĂŒr einen âexternenâ S3-Speicher
- Browsing durch Dateien / Ordner / Archive (ZIP, TAR)
- GUI (Erfassungsmaske) fĂŒr die S3-Konfiguration
Das Ganze ist entwickelt als selbstÀndiges MyCoRe-Plugin:
https://github.com/MyCoRe-Org/s3-mcr-plugin
Funktionsweise / Features:
- Speicherung einer symetrisch verschlĂŒssselten XML-basierten Konfigurationsdatei in einem MyCoRe-Derivate
- Javascript-basierter Datei-Viewer
- Erweiterung der REST-API fĂŒr die Datei-Viewer-Komponente
- Monitoring von VerÀnderungen an den S3-Dateien nach Einbindung in das Repository (Checksummen)
Integration in MyCoRe
- Auschecken: git checkout
https://github.com/MyCoRe-Org/s3-mcr-plugin
- Compilieren: mvn clean install
- Installieren: Kopieren der JAR-Datei in das Lib-Verzeichnis im MyCoRe-Home
- ErgĂ€nzung: ErgĂ€nzen âextensionâ als Eintrag in der Derivate-Types-Klassifikation
ErgÀnzung der MyCoRe-Properties
MCR.FS.Impl.S3=org.mycore.filesystem.s3.XMLS3BucketProvider
MCR.FS.Impl.S3.Key=bucket-crypt
MCR.Crypt.Cipher.bucket-crypt.class=org.mycore.crypt.MCRAESCipher
MCR.Crypt.Cipher.bucket-crypt.KeyFile=%MCR.datadir%/bucket.key
MCR.Crypt.Cipher.bucket-crypt.EnableACL=false
VerschlĂŒsselung erstellen
Symetrische VerschlĂŒsselung von Metadaten wird bereits an anderen Stellen verwendet (VerschlĂŒsselung von Bearbeiterkennungen, Impact Factor, âŠ).
Mittels der MyCoRe-CLI kann ein schlĂŒssel generiert werden: generate keyfile for cipher bucket-crypt.
Einbindung der Daten
Die Daten im S3 können nun ĂŒber ein MyCore-Derivate refernziert werden. HierfĂŒr eis ein Derivate mit einer XML-Datei der folgenden Form erstellt und
hochgeladen werden.
1
2
3
4
5
6
7
8
9
10
11
|
<folder-extension-bind encrypted="false"
class="org.mycore.filesystem.s3.XMLS3BucketProvider">
<XMLS3Bucket>
<protocol>http</protocol>
<endpoint>ub1vm108.ub.uni-rostock.de:9000</endpoint>
<bucket>mycore-aw-kiel-2022</bucket>
<accessKey>CxXncF8Dyk6m18gZ</accessKey>
<secretKey>xxxxxxxxxxxxxxxxxxxxxxxxxx</secretKey>
<directory>resarch-data-03</directory
</XMLS3Bucket>
</folder-extension-bind>
|
Daraus wird eine verschlĂŒsselte Datei generiert:
1
2
3
4
5
6
|
<extension encrypted="true" key="bucket-crypt"
class="org.mycore.filesystem.s3.XMLS3BucketProvider">
QakmDRGARMYe+PXuFkq7SX/Zo9GLOGELKdYE9a66aFmsVCQOuJ+SrNgY
Vi3HQ6L/mHuMHkcak1TTwy4+fF8aMg6hCuct7zfbGGq9xEO6PeBwnD âŠ
+UTKXgIs9QZkjamqs4apezzKXL/MHdFNihQDMXcFpWt7OF1DVasAMQX0
</extension>
|