HUAWEI CLOUD OBS → STACKIT OBJECT STORAGE · TUTORIAL

Huawei OBS zu STACKIT Object Storage am Beispiel

Ein OBS-Bucket wird zu einem STACKIT-Object-Storage-Bucket mit S3-API: Clients ändern Endpunkt und Zugangsdaten, Lifecycle-, Replikations- und Zugriffseinstellungen werden geprüft. Dieses Tutorial wendet StackToIT auf drei Buckets und einen Verschlüsselungsschlüssel an, zeigt, was der Lauf benennt und ordnet, und gleicht dann jede OBS-Einstellung des Beispiels mit dem ab, was die STACKIT-Dokumentation aufführt. So wissen Sie, wo die eigentliche Arbeit liegt, bevor das erste Byte kopiert wird.

Drei Buckets und ein Schlüssel als Eingabe

Eine kleine Huawei-Cloud-Umgebung, für diese Seite geschrieben und am 4. November 2026 von StackToIT bewertet. Links der Media-Bucket mit Versionierung, CORS, Lifecycle-Regeln und serverseitiger Verschlüsselung. Rechts ein öffentlicher Website-Bucket und ein Log-Bucket.

Media-Bucketmain.tf
resource "huaweicloud_obs_bucket" "media" {
  bucket        = "acme-media"
  storage_class = "STANDARD"
  acl           = "private"
  versioning    = true
  encryption    = true
  sse_algorithm = "kms"
  kms_key_id    = huaweicloud_kms_key.obs.id

  cors_rule {
    allowed_origins = ["https://www.acme.example"]
    allowed_methods = ["GET", "HEAD"]
    allowed_headers = ["*"]
    expose_headers  = ["ETag"]
    max_age_seconds = 3000
  }

  lifecycle_rule {
    name    = "archive-originals"
    prefix  = "originals/"
    enabled = true

    transition {
      days          = 60
      storage_class = "WARM"
    }
    transition {
      days          = 180
      storage_class = "COLD"
    }
    expiration {
      days = 1095
    }
  }

  lifecycle_rule {
    name    = "old-versions"
    enabled = true

    noncurrent_version_expiration {
      days = 90
    }
  }

  tags = {
    team = "web"
  }
}
Website- und Log-Bucketmain.tf
resource "huaweicloud_obs_bucket" "site" {
  bucket = "acme-site"
  acl    = "public-read"

  website {
    index_document = "index.html"
    error_document = "error.html"
  }
}

resource "huaweicloud_obs_bucket" "logs" {
  bucket        = "acme-logs"
  storage_class = "WARM"
  acl           = "log-delivery-write"
}

Was der Lauf festgehalten hat

Auszüge aus assessment.json, die Werte genau so, wie der Lauf sie geschrieben hat. Links der Media-Bucket, rechts der Verschlüsselungsschlüssel, von dem er abhängt.

Media-Bucketassessment.json
{
  "id": "huaweicloud_obs_bucket.media",
  "result": {
    "class": "RECONFIGURE",
    "confidence": "MEDIUM",
    "target": {
      "service": "STACKIT Object Storage",
      "resources": [
        "stackit_objectstorage_bucket",
        "stackit_objectstorage_credentials_group",
        "stackit_objectstorage_credential"
      ]
    },
    "reason": "An OBS bucket becomes a STACKIT Object Storage bucket with an S3 API. Clients change endpoint and credentials; lifecycle, replication and access settings need review."
  }
}
Verschlüsselungsschlüsselassessment.json
{
  "id": "huaweicloud_kms_key.obs",
  "result": {
    "class": "RECONFIGURE",
    "confidence": "MEDIUM",
    "target": {
      "service": "STACKIT KMS",
      "resources": [
        "stackit_kms_keyring",
        "stackit_kms_key"
      ]
    },
    "reason": "A KMS key becomes a STACKIT KMS key. Key material of the source does not move, so data encrypted with it is re-encrypted."
  }
}
  • Gleiche Begründung für jeden Bucket

    Website- und Log-Bucket erhalten dieselbe Klasse, dasselbe Ziel und dieselbe Begründung wie der Media-Bucket. Der Lauf beurteilt einzelne Bucket-Einstellungen nicht; er benennt sie.

  • Einstellungen benannt, nicht bewertet

    Beim Media-Bucket listet der Lauf 20 Einstellungen für Ihre Architekten, darunter acl, versioning, encryption, kms_key_id, cors_rule.allowed_origins, lifecycle_rule.transition.storage_class und tags. Der Website-Bucket hat 4, darunter website.index_document; der Log-Bucket 3.

  • Drei STACKIT-Objekte je Bucket

    Das Ziel eines Buckets besteht aus Bucket, Credentials Group und Credential. Die Zugangsdaten sind neu: Von den OBS-Zugriffsschlüsseln wird nichts übernommen.

  • Der Schlüssel zieht nicht um

    Schlüsselmaterial der Quelle wird nicht übertragen, daher werden damit verschlüsselte Daten im Ziel neu verschlüsselt. Der Schlüssel ist eine eigene Einheit mit STACKIT KMS als Ziel.

Reihenfolge und offene Datenentscheidung

Aus technical-sequencing.md und data-movement.md desselben Laufs. Der Media-Bucket wartet auf den Schlüssel; die beiden anderen Buckets hängen von nichts ab.

Wellenmigration/technical-sequencing.md
## Wave 1 — 3 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_kms_key.obs` | RECONFIGURE / MEDIUM | STACKIT KMS |
| `huaweicloud_obs_bucket.logs` | RECONFIGURE / MEDIUM | STACKIT Object Storage |
| `huaweicloud_obs_bucket.site` | RECONFIGURE / MEDIUM | STACKIT Object Storage |

## Wave 2 — 1 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_obs_bucket.media` | RECONFIGURE / MEDIUM | STACKIT Object Storage |
Zustandsbehaftete Einheitenmigration/data-movement.md
| Unit | Source service | Target service | Application | Mechanism | State | Data class | RPO | Downtime tolerance |
|---|---|---|---|---|---|---|---|---|
| huaweicloud_obs_bucket.logs | huaweicloud_obs_bucket | STACKIT Object Storage |  | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |
| huaweicloud_obs_bucket.media | huaweicloud_obs_bucket | STACKIT Object Storage |  | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |
| huaweicloud_obs_bucket.site | huaweicloud_obs_bucket | STACKIT Object Storage |  | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |
  • Verfahren bewusst offen

    Der Lauf führt die drei Buckets als zustandsbehaftete Einheiten und hält das Verfahren als UNKNOWN mit dem Stand DECISION REQUIRED fest. Größe, Änderungsrate, tolerierte Ausfallzeit und Wiederanlaufpunkt stehen nicht im Terraform und sind daher als unbekannt vermerkt.

  • Der Schlüssel ist keine Dateneinheit

    Der Verschlüsselungsschlüssel ist nicht als zustandsbehaftet gelistet. Die damit geschützten Daten werden beim Kopieren des Media-Buckets neu verschlüsselt; planen Sie diesen Schritt zusammen mit dem Media-Bucket.

  • Verantwortliche

    Die drei Buckets bilden ein Arbeitspaket beim Storage Architect; der Schlüssel ist ein eigenes Paket, dessen Verantwortlichen der Lauf offen lässt.

So wird die Umgebung zugeordnet

Huawei-Cloud-RessourceSTACKIT-ZielMigrationsklasse
OBS-Bucket (Media, Website, Logs)STACKIT Object Storage: Bucket, Credentials Group, CredentialRekonfigurieren
KMS-SchlüsselSTACKIT KMS: Key Ring und SchlüsselRekonfigurieren

Klassen, wie der Lauf sie entschieden hat, jeweils mit Konfidenz MEDIUM. Der KMS-Schlüssel und zwei der Buckets ziehen in Welle 1 um, der Media-Bucket in Welle 2.

Was jede OBS-Einstellung bei STACKIT braucht

Der Lauf benennt diese Einstellungen; die Tabelle gleicht sie mit den STACKIT-Seiten aus der Quellenliste ab. „Aufgeführt“ heißt, die Seite führt die Operation auf. Eine nicht aufgeführte Operation ist eine Frage an STACKIT, keine Antwort.

OBS-Einstellung im BeispielWas die STACKIT-Dokumentation aufführtWas zu entscheiden ist
versioning = trueVersionierung ist aufgeführt (get und put). Ein Objekt kann höchstens 1.000 Versionen haben.Versionierung im neuen Bucket vor dem Kopieren aktivieren. Prüfen Sie, ob Ihr Kopierwerkzeug ältere Versionen mitnimmt oder nur aktuelle.
lifecycle_rule mit Ablauf in Tagen und noncurrent_version_expirationLifecycle ist aufgeführt. Die Referenz beschreibt den Ablauf aktueller Versionen (Tage oder Datum) und den Ablauf nicht aktueller Versionen.Diese Regeln neu anlegen; sie haben ein direktes Gegenstück.
lifecycle_rule mit Übergängen nach WARM und COLDDie Lifecycle-Referenz führt keine Übergangsaktion auf.Entscheiden Sie, ob die Daten in einer Klasse bleiben oder auf anderem Weg ablaufen oder archiviert werden. Das ist die größte Designänderung im Beispiel.
storage_class STANDARD, WARM, COLD (Huawei: Standard, Infrequent Access, Archive)Die für diesen Leitfaden gelesenen Seiten beschreiben keine Speicherklassen.Einstellung streichen und die Daten, die in den günstigeren Klassen lagen, neu kalkulieren.
cors_ruleCORS ist aufgeführt (get, put, delete), und die Dokumentation hat eine eigene CORS-Anleitung.Regel mit den nach dem Umzug gültigen Origins neu anlegen.
acl = public-read und der website-BlockBucket-ACLs sind nur lesend (get) aufgeführt, eine Website-Konfiguration ist nicht aufgeführt. Bucket Policies sind aufgeführt (get, put, delete), mit Anleitung.Klären Sie mit STACKIT, wie eine öffentliche statische Seite ausgeliefert wird, bevor Sie sich darauf verlassen; andernfalls liefern Sie die Seite über ein anderes Frontend aus und halten den Bucket privat.
acl = log-delivery-writeEine Bucket-Logging-Operation ist nicht aufgeführt.Anderen Weg für Zugriffslogs wählen, etwa am Frontend oder in der Anwendung.
encryption = true mit sse_algorithm = kms und kms_key_idVerschlüsselung ist aufgeführt (get, put, delete). Laut Verschlüsselungsanleitung sind alle gespeicherten Daten im Ruhezustand mit AES256 verschlüsselt; zusätzlich gibt es serverseitige Verschlüsselung je Objekt mit vom Speicher-Backend verwalteten Schlüsseln oder mit einem selbst bereitgestellten Schlüssel (SSE-C). STACKIT KMS erwähnt die Anleitung nicht.Zuerst das Verschlüsselungsmodell festlegen: Der OBS-Schlüssel zieht nicht um; die Daten werden daher beim Einspielen neu verschlüsselt.
Bucket-Namen3 bis 63 Zeichen; Buchstaben, Ziffern und Bindestriche; systemweit eindeutig, nicht nur im Projekt; Punkte werden nicht empfohlen.Jeden Namen auf Verfügbarkeit prüfen. STACKIT rät von Punkten ab; Namen mit Punkten, wie sie bei Website-Buckets üblich sind, erhalten daher einen neuen Namen.

Quellseite: die Terraform-Provider-Dokumentation zu huaweicloud_obs_bucket (Speicherklassen, ACL-Werte, Website, Logging, Lifecycle). Zielseite: die STACKIT-Seiten der Quellenliste.

Einen Bucket umziehen, der Reihe nach

Die Reihenfolge zwischen den Einheiten legt der Lauf fest; dies ist die Reihenfolge innerhalb eines Buckets. Schritte 1 bis 4 bereiten vor, 5 und 6 übertragen Daten, 7 schließt den Umzug ab.

  1. Object Storage im Zielprojekt aktivieren

    Hier entstehen die vom Lauf benannte Credentials Group und das Credential. Als allgemeine Praxis: eine Credentials Group je Anwendung, damit ein Schlüssel zurückgezogen werden kann, ohne andere zu berühren.

  2. Buckets anlegen

    Verwenden Sie die geprüften Namen. Ein Projekt erlaubt bis zu 1.000 Buckets.

  3. Versionierung, Lifecycle, CORS, Policy und Verschlüsselung neu anlegen

    Die Tabelle oben dient als Checkliste. Tun Sie das vor dem ersten Kopieren, damit die Objekte unter den endgültigen Regeln ankommen.

  4. Übertragungsfenster vereinbaren

    Quota und Rate gelten je Projekt: Die dokumentierte Obergrenze liegt bei 500 MB/s für Up- und Download. Rechnerisch brauchen 10 TB bei dieser Rate mindestens etwa 5,6 Stunden; verstehen Sie das als Untergrenze.

  5. Erste Kopie bei laufender Quelle

    Das rclone-Tutorial von STACKIT kopiert mit rclone copy zwischen zwei S3-Remotes und dem STACKIT-Endpunkt für eu01. rclone hat außerdem einen Huawei-OBS-Provider, dessen Endpunkte dem Muster obs.<Region>.myhuaweicloud.com folgen. Das sind Beispiele verbreiteter Werkzeuge; die Engine führt sie nicht aus.

  6. Kopie wiederholen, dann umstellen

    Kopieren Sie erneut, um Änderungen aufzunehmen, stoppen Sie alle schreibenden Clients, kopieren Sie ein letztes Mal und stellen Sie die Clients auf den neuen Endpunkt und die neuen Zugangsdaten um. Diese Abfolge ist allgemeine Praxis, nichts, was der Lauf für Sie plant.

  7. Prüfen und stilllegen

    Vergleichen Sie Objektzahl und Größe, halten Sie die Quelle schreibgeschützt, bis der Anwendungsverantwortliche abnimmt, und legen Sie dann Quell-Bucket und OBS-Schlüssel still.

Entscheidungen, die Ihre Architekten treffen

  • Öffentliche Website

    Ob der Website-Bucket eine Object-Storage-Seite bleibt oder hinter ein anderes Frontend zieht.

  • Günstigere Klassen

    Was WARM und COLD ersetzt und was das für die Kosten des Media-Archivs bedeutet.

  • Verschlüsselungsmodell

    Sich auf die Verschlüsselung im Ruhezustand verlassen, zusätzlich serverseitige Verschlüsselung mit vom Backend verwalteten Schlüsseln nutzen oder SSE-C mit einem Schlüssel verwenden, den Sie selbst halten, etwa im Secrets Manager. Die für diese Seite gelesene Anleitung beschreibt keine STACKIT-KMS-Schlüssel für Buckets; klären Sie das mit STACKIT, bevor Sie damit planen.

  • Cutover-Verfahren

    Alles auf einmal oder nach Präfix; was die Clients aushalten, während sich der Endpunkt ändert.

Fragen von Storage-Teams

Kopiert StackToIT die Objekte?

Nein. StackToIT liest Terraform, stuft die Buckets ein und führt sie als zustandsbehaftete Einheiten, deren Datenverfahren Sie festlegen. Nichts im Lauf überträgt Daten oder verbindet sich mit einem Cloud-Konto.

Brauchen unsere Anwendungen Codeänderungen?

Meist reicht eine Konfigurationsänderung: Das Ziel ist eine S3-API, Clients ändern also Endpunkt, Zugangsdaten und, wo sie verwendet werden, Bucket-Namen. Was sich auf OBS-spezifisches Verhalten oder auf die in der Tabelle als offen markierten Funktionen stützt, braucht einen genaueren Blick.

Warum zieht der Media-Bucket nach dem Website-Bucket um?

Er verweist auf den KMS-Schlüssel, daher legt der Lauf ihn eine Welle später. Website- und Log-Bucket verweisen auf nichts und liegen daher in Welle 1 neben dem Schlüssel.

Gibt es bei STACKIT einen Lifecycle-Übergang in eine Archivklasse?

Die Lifecycle-Referenz beschreibt den Ablauf aktueller und nicht aktueller Versionen und führt keine Übergangsaktion auf. Prüfen Sie die aktuelle Seite und fragen Sie STACKIT, wenn Archivierung per Lifecycle eine Anforderung ist.

Quellen

Ihr nächster Schritt: STACKIT.

Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.