Produkty, których dotyczy
myQNAPcloud Object
Czym jest myQNAPcloud Object?
myQNAPcloud Object to usługa przechowywania obiektów w chmurze, zaprojektowana w celu zapewnienia wysokowydajnego, niezawodnego i bezpiecznego przechowywania danych dla szerokiego zakresu zastosowań i przypadków użycia. Usługa ta została stworzona, aby być w pełni kompatybilną z Amazon Web Service Simple Storage Service (AWS S3) API, zapewniając płynną integrację z aplikacjami kompatybilnymi z S3 i urządzeniami bramowymi.
myQNAPcloud Object jest dostosowany dla osób prywatnych i organizacji poszukujących ekonomicznej i wydajnej infrastruktury przechowywania danych. Zaprojektowany do współpracy z aplikacjami kompatybilnymi z S3, myQNAPcloud Object umożliwia użytkownikom wykorzystanie znanych narzędzi i przepływów pracy, jednocześnie czerpiąc korzyści z niezawodności i elastyczności ekosystemu QNAP.
Informacje o przewodniku po myQNAPcloud Object S3 API
Chociaż myQNAPcloud Object jest ściśle zgodny z AWS S3, niektóre funkcje mogły zostać ulepszone lub zaimplementowane inaczej. Ten przewodnik ma na celu wyjaśnienie tych niuansów, aby pomóc użytkownikom zmaksymalizować potencjał myQNAPcloud Object.
Ten przewodnik zawiera przykłady dotyczące dostępu do zasobników w określonych regionach myQNAPcloud Object. Więcej informacji na temat punktów końcowych specyficznych dla regionu i adresów URL usług znajdziesz w sekcji „Service URLs for myQNAPcloud Object Storage Regions”.
Uwaga
Wprowadzenie do REST API
Oznaczenie hosta
myQNAPcloud Object obsługuje zarówno żądania w stylu ścieżki (path-style), jak i w stylu wirtualnym (virtual-style), podobnie jak AWS S3. Wymagana jest unikalna nazwa hosta (na przykład, s3.us-east-1.myqnapcloud.io w porównaniu do s3.amazonaws.com). Zalecamy używanie żądań w stylu ścieżki (path-style), jak pokazano we wszystkich przykładach w tym przewodniku (np. http://s3.us-east-1.myqnapcloud.io/my-bucket/my-object), ponieważ żądania w stylu ścieżki zapewniają większą elastyczność w nazywaniu zasobników, unikając konfliktów nazw domen.
Zawsze spójny
W przeciwieństwie do modelu silnej spójności AWS S3, myQNAPcloud Object zapewnia „zawsze spójny” widok wszystkich operacji. Gwarantuje to, że każda operacja następująca po innej zapewni spójne wyniki. Na przykład, po usunięciu obiektu (operacja DELETE), wykonanie kolejnego żądania HEAD zawsze potwierdzi usunięcie obiektu, eliminując potrzebę dodatkowego programowania w celu oczekiwania na zakończenie operacji.
Uwierzytelnianie żądań
myQNAPcloud Object obsługuje zarówno autonomiczne, jak i sygnaturowe wersje 2 i 4, kompatybilne z AWS S3, dla nagłówków i parametrów zapytania. Podczas gdy wersja sygnatury 4 oferuje lepsze bezpieczeństwo, wymaga więcej zasobów obliczeniowych ze względu na narzut związany z obliczaniem skrótu SHA256. Jeśli wydajność jest kluczowa, można użyć wersji sygnatury 2, gdzie MD5 (zwracane jako nagłówek ETag) zapewnia integralność danych.
Dla żądań podpisywania w wersji 4, wszystkie regiony są obsługiwane dla żądań podpisywania myQNAPcloud Object.
myQNAPcloud Object nie obsługuje podpisywania sygnatur dla przesyłania plików z przeglądarki ani żądań formularzy HTML, ponieważ te operacje nie są obecnie obsługiwane.
Dla podpisywania w wersji 2, następujące klucze podzasobów są określone jako parametry zapytania w żądaniach:
Odpowiedzi błędów
Wszędzie tam, gdzie to możliwe, myQNAPcloud Object używa odpowiedzi błędów kompatybilnych z AWS S3. Dodatkowe kody błędów mogą być również dostarczone dla rozszerzonej funkcjonalności.
Kody błędów HTTP
Kod błędu | Opis obiektu myQNAPcloud | Kod statusu HTTP
Niedostępne | Tymczasowo niedostępne | 503
Nie do odzyskania | Dane nie do odzyskania |
Nie zaimplementowano | Nie zaimplementowano | 501
Nie znaleziono encji DB | Nie ma takiej encji | 404
Znaleziono encję DB | Encja już istnieje | 409
Błąd rozłączenia | Połączenie zamknięte | 410
Status Wewnętrzny błąd serwera | Błąd wewnętrzny: Wystąpił błąd wewnętrzny. Skontaktuj się z obsługą klienta. | 500
Status Zabronione | Odmowa dostępu | 403
Dostęp zabroniony
Konto nieaktywne
Problem z kontem
Blokada uwierzytelnienia: Zbyt wiele prób dostępu do konta z nieprawidłowymi danymi uwierzytelniającymi. Spróbuj ponownie za pięć minut.
Nieprawidłowy identyfikator klucza dostępu: Podany identyfikator klucza dostępu AWS nie istnieje w naszych rejestrach.
Nieprawidłowy kod uwierzytelnienia: Kod uwierzytelnienia dla urządzenia jest nieprawidłowy.
Zbyt duża rozbieżność czasu żądania: Różnica między czasem żądania a bieżącym czasem jest zbyt duża.
Nieprawidłowy stan obiektu: Operacja jest nieprawidłowa dla bieżącego stanu obiektu.
Status Złe żądanie | Nieprawidłowo sformułowany nagłówek autoryzacji | 400
Błąd parametrów zapytania autoryzacji
Nieprawidłowy skrót: Podany `Content-MD5` nie zgadza się z tym, co otrzymaliśmy.
Złe żądanie: Wystąpił błąd podczas analizowania żądania HTTP.
Niekompletny podpis: Żądanie musi zawierać podpis zgodny ze standardami AWS.
Nieprawidłowa akcja
Nieprawidłowy argument
Nieprawidłowy skrót: Podany `Content-MD5` był nieprawidłowy.
Nieprawidłowe dane wejściowe
Nieprawidłowa wartość parametru: Dla parametru wejściowego podano nieprawidłową wartość lub wartość spoza zakresu.
Nieprawidłowe żądanie
Nieprawidłowo sformułowana polityka
Nieprawidłowo sformułowany dokument polityki
Naruszenie polityki haseł
Błąd walidacji
Niezgodność `X Amz Content SHA256`: Podany nagłówek `x-amz-content-sha256` nie zgadza się z obliczonym.
Szyfrowanie niedozwolone: Klucze szyfrowania dostarczone przez użytkownika są niedozwolone w tej operacji.
Obiekt został zapisany przy użyciu szyfrowania po stronie serwera. Aby pobrać obiekt, należy podać prawidłowe parametry.
Encja zbyt duża: Proponowane przesłanie jest większe niż maksymalny dozwolony rozmiar.
Encja zbyt mała: Proponowane przesłanie jest mniejsze niż minimalny dozwolony rozmiar.
Nielegalne żądanie zgodności
Wyjątek nieprawidłowej konfiguracji wersji: Konfiguracja wersji określona w żądaniu jest nieprawidłowa.
Niekompletna treść: Nie podano liczby bajtów określonej przez nagłówek HTTP `Content-Length`.
Nieprawidłowe żądanie ACL: Podczas ustawiania ACL należy podać tylko jeden z nagłówków ACL lub treść XML.
Nieprawidłowy argument
Nieprawidłowa nazwa zasobnika: Określony zasobnik jest nieprawidłowy.
Błąd nieprawidłowego algorytmu szyfrowania: Określone żądanie szyfrowania jest nieprawidłowe. Obsługiwana wartość: AES256.
Nieprawidłowa kolejność części: Lista części nie była w kolejności rosnącej. Części muszą być uporządkowane według numeru części.
Nieprawidłowa część: Nie można było znaleźć jednej lub więcej określonych części. Część mogła nie zostać przesłana, lub określony tag encji może nie pasować do tagu encji części.
Nieprawidłowy dokument polityki: Treść formularza nie spełnia warunków określonych w dokumencie polityki.
Błąd zbyt długiego klucza: Twój klucz jest zbyt długi.
Zasobnik logowania ten sam właściciel: Docelowy zasobnik logowania musi mieć tego samego właściciela co zasobnik, który jest logowany.
Nieprawidłowo sformułowany XML: Podany XML nie był poprawnie sformułowany lub nie przeszedł walidacji względem naszego opublikowanego schematu.
Metadane zbyt duże: Nagłówki metadanych przekraczają maksymalny dozwolony rozmiar metadanych.
Przekroczenie limitu czasu żądania: Połączenie gniazda z serwerem nie zostało odczytane ani zapisane w okresie limitu czasu.
Zbyt wiele zasobników: Próbowano utworzyć więcej zasobników niż dozwolono.
Zbyt wiele komponentów: Obiekt złożony nie może mieć więcej niż 1024 komponentów.
Nie do rozwiązania uprawnienie według adresu e-mail: Podany adres e-mail nie pasuje do żadnego zarejestrowanego konta.
Przekroczono limit miejsca na dysku: Twoje konto przekroczyło limit miejsca na dysku.
Konto zasobnika nieaktywne: Konto, które jest właścicielem tego zasobnika, jest nieaktywne.
Status Zniknął | Połączenie zamknięte: Połączenie sieciowe zostało zamknięte. | 410
Status Encja nieprzetwarzalna | Dane nie do odzyskania: Dane w żądaniu są nie do odzyskania. Skontaktuj się z obsługą klienta. | 422
Status Konflikt | Konflikt usuwania | 409
Encja już istnieje
Encja tymczasowo niemodyfikowalna: Encja jest tymczasowo niemodyfikowalna. Spróbuj ponownie później.
Przekroczono limit
Operacja przerwana: Obecnie trwa sprzeczna operacja warunkowa na tym zasobie. Spróbuj ponownie.
Zasobnik już istnieje
Zasobnik nie jest pusty
Ustawienia zgodności zablokowane: Ustawienia zgodności są teraz zablokowane i nie można ich zmienić.
Status Nie znaleziono | Nie ma takiej encji | 404
Brak takiej konfiguracji cyklu życia: Konfiguracja cyklu życia nie istnieje.
Brak takiego zasobnika: Określony zasobnik nie istnieje.
Brak takiej polityki zasobnika: Polityka zasobnika nie istnieje.
Brak takiego klucza: Określony klucz nie istnieje.
Brak takiej konfiguracji replikacji: Konfiguracja replikacji nie istnieje.
Błąd braku takiego zestawu tagów: Z zasobnikiem nie jest powiązany żaden zestaw tagów.
Brak takiego przesłania: Określone przesłanie nie istnieje. Identyfikator przesłania może być nieprawidłowy, lub przesłanie mogło zostać przerwane lub zakończone.
Brak takiej wersji: Określona wersja nie istnieje.
Status Nie zaimplementowano | Nie zaimplementowano: Podany nagłówek implikuje funkcjonalność, która nie jest zaimplementowana. | 501
Status Usługa niedostępna | Tymczasowo niedostępne: Zasoby dla tej operacji są tymczasowo niedostępne. Spróbuj ponownie później. | 503
Status Znaleziono | Klucz już istnieje | 302
Status Metoda niedozwolona | Metoda niedozwolona: Ta metoda jest niedozwolona dla innych niż właściciel konta. | 405
Metoda niedozwolona: Określona metoda jest niedozwolona dla tego zasobu.
Status Wymagana długość | Brak długości treści: Musisz podać nagłówek HTTP `Content-Length`. | 411
TCP Error Codes
myQNAPcloud Object obsługuje następujące kody błędów TCP:
Nieobsługiwane w myQNAPcloud Object
Operacja | Opis
SOAP | AWS S3 wycofało obsługę SOAP, a myQNAPcloud Object nie obsługuje żadnych operacji SOAP.
Operacje na zasobnikach z API S3 myQNAPcloud Object
Operacje na zasobnikach obejmują: usuwanie, zmianę nazwy i logowanie zasobników, a także obsługę współdzielenia zasobów między domenami (CORS), politykę cyklu życia, blokowanie obiektów i zgodność.
Wymuszone usuwanie zasobnika
AWS S3 nie pozwoli na usunięcie zasobnika, jeśli zawiera on obiekty, które nie zostały usunięte.
myQNAPcloud Object udostępnia opcję wymuszonego usuwania, która najpierw usuwa wszystkie obiekty w zasobniku, a następnie usuwa zasobnik. Usunięcie obiektów podlega wymaganiom polityki i zgodności dla zasobnika.
Aby użyć opcji wymuszonego usuwania, wystarczy dodać ją jako ciąg zapytania. Na przykład:
Zwykły tekstKopiuj
Zmiana nazwy zasobnika
AWS S3 nie obsługuje zmiany nazw zasobników. Obsługuje jedynie zmianę nazw obiektów w zasobniku.
myQNAPcloud Object obsługuje zmianę nazw zasobników. Nowa nazwa zasobnika nie może być już używana, aby zmiana nazwy zakończyła się sukcesem. Wywołujący musi posiadać uprawnienie polityki `s3:CreateBucket` do zmiany nazwy zasobnika.
Aby zmienić nazwę zasobnika, użyj metody HTTP `MOVE` wraz z polem nagłówka „Destination”, aby podać nową nazwę zasobnika. Na przykład:
Zwykły tekstKopiuj
Usuwanie z MFA (uwierzytelnianie wieloskładnikowe)
myQNAPcloud Object obsługuje nagłówek „x-amz-mfa” podczas:
Maksymalna liczba zasobników
Standardowy AWS S3 obsługuje tylko 100 zasobników.
myQNAPcloud Object pozwala na maksymalnie 1000 zasobników na konto, a liczba ta może zostać zwiększona poprzez skontaktowanie się z Obsługą Klienta myQNAPcloud Object.
Logowanie zasobników
myQNAPcloud Object obsługuje logowanie zasobników, które tworzy tekstowy plik dziennika wszystkich dostępów do zasobnika. Format pliku dziennika jest identyczny z plikiem dziennika AWS S3.
Logowanie zasobników myQNAPcloud Object nie wymaga żadnych ustawień uprawnień ACL do przechowywania dzienników w zasobniku docelowym. Chociaż można nadać ustawienia uprawnień w żądaniu logowania lub w ACL, nie są one wymagane do działania logowania w myQNAPcloud Object. Jednakże zasobnik, który jest celem dla plików dziennika, musi znajdować się na tym samym koncie co logowany zasobnik.
Obsługa współdzielenia zasobów między domenami (CORS) dla zasobników
Dla kompatybilności z dostępem przeglądarki do myQNAPcloud Object jako serwera WWW, serwer myQNAPcloud Object zwróci nagłówki CORS, gdy nagłówek „Origin” zostanie podany w żądaniu HTTP. Dodatkowo, serwer obsługuje metodę HTTP `OPTIONS` dla zasobników lub obiektów, aby zwrócić nagłówki CORS potrzebne do testu wstępnego przeglądarki przed uzyskaniem dostępu do myQNAPcloud Object.
W odróżnieniu od AWS, myQNAPcloud Object zwraca ustawienia, które umożliwią przeglądarce pełny dostęp do myQNAPcloud Object. Dlatego myQNAPcloud Object nie obsługuje funkcji AWS, które umożliwiają `PUT` i `GET` na zasobniku z parametrem „cors” w adresie URL. Należy pamiętać, że zezwolenie przeglądarce na pełny dostęp do danych nie wpływa na bezpieczeństwo dostępu do żadnych obiektów, a wszystkie polityki dostępu będą nadal egzekwowane.
Poniżej przedstawiono nagłówki HTTP zwracane domyślnie, gdy nagłówek „Origin” zostanie podany w żądaniu HTTP:
Zwykły tekstKopiuj
Polityka cyklu życia
Funkcja Cyklu Życia ustanawia politykę cyklu życia z regułami definiującymi działania, które myQNAPcloud Object ma podjąć w trakcie życia obiektu. Ta funkcja zastępuje potrzebę ręcznego usuwania obiektu po okresie przechowywania.
Konfigurowanie ustawień cyklu życia
Ustawienia cyklu życia dla zasobnika są konfigurowane za pomocą polecenia „put-bucket-lifecycle-configuration”. Na przykład:
Zwykły tekstKopiuj
Oto inny przykład:
Plain textCopyBrak treści odpowiedzi dla tego wywołania.
Pobieranie ustawień cyklu życia
Ustawienia cyklu życia dla zasobnika można pobrać za pomocą polecenia "get-bucket-lifecycle-configuration". Na przykład:
Plain textCopyOto inny przykład:
Plain textCopy
Usuwanie ustawień cyklu życia
Ustawienia cyklu życia dla zasobnika można usunąć za pomocą polecenia "delete-bucket-lifecycle". Na przykład:
Plain textCopyBrak treści odpowiedzi dla tego wywołania.
Blokada obiektu
myQNAPcloud Object obsługuje blokadę obiektu, która zapobiega usunięciu lub nadpisaniu wersji obiektu przez określony czas lub bezterminowo.
Tag | Opis
ObjectLockConfiguration | Jest to obowiązkowy tag poziomu głównego dla konfiguracji blokady obiektu.
ObjectLockEnabled | Ten tag musi być skonfigurowany jako Enabled.
Rule | Określa to regułę blokady obiektu dla zasobnika. Wymaga zarówno trybu, jak i okresu. Okres może być określony w dniach (Days) lub latach (Years), ale należy wybrać tylko jeden. Nie można jednocześnie określać dni i lat.
Mode | powinien być COMPLIANCE lub GOVERNANCE.
Ustawienia blokady obiektu dla zasobnika są określane za pomocą ciągu zapytania „?object-lock” wraz z ustawieniami blokady obiektu jako treścią XML w żądaniu. Na przykład:
Plain textCopyUstawienia blokady obiektu dla zasobnika można pobrać, uzyskując zasobnik za pomocą ciągu zapytania „?object-lock”. Na przykład:
Plain textCopyTreść odpowiedzi:
Plain textCopyIstnieją również ustawienia blokady obiektu dla każdego obiektu opisane w Operations on Objects.
Ustawienia blokady obiektu dla zasobnika można wyczyścić za pomocą ciągu zapytania "?object-lock". Na przykład:
Plain textCopyTreść odpowiedzi:
Plain textCopy
myQNAPcloud Object Compliance
myQNAPcloud Object obsługuje politykę zgodności, która zapobiega usuwaniu obiektów i dostarcza dodatkowych informacji, aby udowodnić, że oryginalne dane nie zostały zmodyfikowane od momentu zapisu. Funkcja zgodności może być wymagana do spełnienia pewnych wymogów regulacyjnych, ale jest również przydatna do zapobiegania przypadkowemu usunięciu danych.
Compliance różni się od ustawienia blokady obiektu dla zasobnika.
Możesz ustawić politykę zgodności dla dowolnego zasobnika, kontrolując wszystkie obiekty przechowywane w tym zasobniku. Określ politykę zgodności zasobnika za pomocą następujących tagów XML.
Tag | Opis
Status | Wartość "enabled" lub "disabled" odpowiednio włącza lub wyłącza funkcję compliance. Włączenie natychmiast zastosuje się do wszystkich obiektów w zasobniku.
LockTime | Czas, w którym ustawienia compliance są "zablokowane" – ustawień nie można zmniejszyć za pomocą żadnego wywołania API. Po zablokowaniu ustawień nie można ich odblokować bez interwencji QNAP Customer Support. Czas blokady pozwala na obsługę dwóch przypadków użycia:
ConditionalHold | Wartość logiczna ("true" lub "false") wskazująca, czy nowo utworzone obiekty są umieszczane w conditional hold, co oznacza, że nie mogą zostać usunięte, dopóki conditional hold nie zostanie jawnie wyłączony. Wartością domyślną jest false, jeśli ten parametr nie zostanie podany. Należy pamiętać, że to ustawienie może zostać zmienione nawet po zablokowaniu ustawień.
Ustawienia compliance dla zasobnika są określane za pomocą ciągu zapytania „?compliance” wraz z ustawieniami compliance jako treść XML w żądaniu. Na przykład:
Plain textCopyPo włączeniu compliance dla zasobnika, polityka jest natychmiast stosowana do wszystkich obiektów w zasobniku. Próba usunięcia obiektu przed retention period zwróci błąd.
Ustawienia compliance dla zasobnika można pobrać, uzyskując zasobnik za pomocą ciągu zapytania „?compliance”. Na przykład:
Plain textCopyTreść odpowiedzi:
Plain textCopyIstnieją również ustawienia compliance dla każdego obiektu opisane w Operations on Objects.
Operations on Buckets Not Supported in myQNAPcloud Object
Operacja | Opis
Bucket Tagging | Bucket tagging jest obecnie niedostępny w myQNAPcloud Object.
Bucket Website | Konfiguracja witryny jest niedostępna w myQNAPcloud Object. Biorąc pod uwagę charakter myQNAPcloud Object jako długoterminowego magazynu obiektów, nie przewidujemy obsługi operacji witryn internetowych na zasobnikach. Nagłówek "x-amz-website-redirect-location" jest ignorowany we wszystkich żądaniach obiektów.
Bucket Accelerate | myQNAPcloud Object nie implementuje podzasobu AWS S3 bucket accelerate.
Bucket Request Payment | myQNAPcloud Object nie obsługuje użycia podzasobu "requestPayment" dla zasobników.
Metrics Configuration | myQNAPcloud Object nie obsługuje operacji odbierania jednominutowych CloudWatch metrics, ustawiania CloudWatch alarms i dostępu do CloudWatch dashboards w celu przeglądania operacji i wydajności pamięci masowej Amazon S3 w czasie zbliżonym do rzeczywistego.
S3 Block Public Access | myQNAPcloud Object nie obsługuje operacji centralnego blokowania istniejącego publicznego dostępu (niezależnie od tego, czy jest on możliwy za pośrednictwem ACL czy polityki) i upewniania się, że nowo utworzone elementy nie otrzymają przypadkowo publicznego dostępu.
S3 Select | myQNAPcloud Object nie obsługuje S3 Select API.
Operations on Objects With myQNAPcloud Object S3 API
Operations on Objects obejmują zmianę nazw, komponowanie, dołączanie i usuwanie obiektów, a także encryption, storage class, object locking i compliance.
Renaming Objects
myQNAPcloud Object obsługuje funkcjonalność przenoszenia obiektu – w efekcie zmiany nazwy obiektu poprzez zmianę klucza. Eliminuje to dwuetapowy proces polegający najpierw na skopiowaniu obiektu, a następnie usunięciu oryginalnego obiektu. Wywołujący musi mieć uprawnienie s3
utObject w zasobniku, aby zmieniać nazwy obiektów.
Aby zmienić nazwy obiektów, użyj metody HTTP MOVE wraz z następującymi parametrami w nagłówkach żądania, które wpływają na operację przenoszenia.
Overwrite | Wartość logiczna, która, gdy jest „true”, pozwala na nadpisywanie obiektów docelowych tym samym kluczem. W przeciwnym razie generowany jest błąd, a oryginalny klucz nie zostaje zmieniony.
X-Wasabi-Quiet | Wartość logiczna, która, gdy jest „true”, powoduje, że treść XML statusu zwrotnego wyświetla tylko klucze, które napotkały błędy. W przeciwnym razie wszystkie zmienione nazwy obiektów są podane w statusie. Wartość domyślna to „false”.
X-Wasabi-Prefix | Wartość logiczna, która, gdy jest „true”, oznacza, że wartości podane dla źródła w URL i miejsca docelowego są prefiksami – pasują do lewej części kluczy. Koncepcyjnie, pomyśl o prefiksie jako o folderze obiektów. W przeciwnym razie, tylko obiekty (w tym wszystkie wersje), które dokładnie pasują do klucza, zostaną zmienione. Wartość domyślna to „false”.
Wywołanie zwróci wyniki jako treść XML odpowiedzi. Wyniki obejmują następujące elementy dla każdego zmienionego obiektu:
Poniżej znajduje się przykład, który zmienia nazwy wszystkich obiektów zaczynających się od prefiksu „TestMove-Dir2/” na nowy prefiks „TestMove-Dir2-Renamed/”.
Zwykły tekstKopiuj
Treść odpowiedzi:
Zwykły tekstKopiuj
Tworzenie obiektów złożonych
`myQNAPcloud Object` oferuje funkcję tworzenia nowego obiektu, który składa się z innych obiektów. Obiekt złożony jest tworzony nie poprzez kopiowanie oryginalnych obiektów danych, lecz poprzez łączenie obiektu złożonego z obiektami danych. Jest to sprzeczne z `AWS S3`, który nie oferuje sposobu na tworzenie obiektów złożonych. Operacja `myQNAPcloud Object` jest znacznie szybsza i nie wymaga wielu kopii oryginalnych danych. Oryginalne obiekty złożone mogą zostać usunięte w dowolnym momencie, a system zachowa oryginalne dane tak długo, jak istnieją jakiekolwiek łącza do tych danych.
Tworzenie obiektów złożonych jest alternatywą dla używania funkcji `multi-part upload` do tworzenia obiektów większych niż 5 GB. Wywołujący musi posiadać uprawnienie `s3
utObject policy` na zasobniku, aby tworzyć obiekty złożone. Obiekty złożone mogą być tworzone z innych obiektów złożonych, jak również z oryginalnych obiektów danych. Jednakże, całkowita liczba oryginalnych obiektów danych nie może przekroczyć 32 w żadnym pojedynczym obiekcie złożonym. Obiekty złożone mogą łączyć się tylko z innymi obiektami w tym samym zasobniku.
Operacja tworzenia obiektu złożonego odbywa się za pomocą metody `HTTP PUT` z parametrem ciągu zapytania „?compose”, aby wskazać, że obiekt składa się z obiektów podanych w treści `XML`. Treść `XML` zawiera listę kluczy obiektów i, opcjonalnie, `ID` wersji, które tworzą nowy obiekt. Jeśli `ID` wersji nie jest podane, używana jest najnowsza wersja obiektu. Nowy obiekt będzie wyglądał jak jeden obiekt ze wszystkimi połączonymi obiektami danych połączonymi. Nowy obiekt złożony nie ma wartości `ETag` (tj. `MD5`), która jest `MD5` połączonych obiektów, lecz jest wynikiem haszowania wszystkich `MD5` obiektów danych razem (podobnie jak obliczenia wykonywane po zakończeniu obiektów `multi-part`). Obiekty złożone nie mogą mieć kluczy szyfrowania dostarczonych przez użytkownika. Jednakże, wszystkie dane są przechowywane zaszyfrowane w spoczynku.
Opłata pobierana jest tylko za metadane używane w obiektach złożonych. Oryginalne dane używane w połączonych obiektach są naliczane według standardowej stawki, dopóki wszystkie obiekty złożone, które łączą się z oryginalnym obiektem danych, nie zostaną usunięte.
Poniżej znajduje się przykład, który tworzy nowy obiekt „TestComp” z trzech obiektów: „TestCompose-Data-1”, „TestCompose-Data-2” i „TestCompose-Data-3”.
Zwykły tekstKopiuj
Dołączanie do obiektów
`AWS S3` nie oferuje sposobu na dołączanie do obiektów.
Dołączanie do istniejącego obiektu jest inną formą tworzenia obiektu złożonego (patrz `Tworzenie obiektów złożonych`). Wywołanie przesyła dane w treści do tymczasowego obiektu, a następnie tworzy nowy obiekt złożony, składający się z danych z oryginalnego obiektu z dołączonymi nowo przesłanymi danymi. Jeśli zasobnik jest wersjonowany, tworzona jest nowa wersja obiektu złożonego, zachowując oryginalne dane. Gdy nie jest wersjonowany, nowo utworzony obiekt złożony zastępuje oryginalny obiekt. Wywołujący musi posiadać uprawnienie `s3
utObject policy` na zasobniku, aby dołączać do obiektów. Dodatkowo, dla zasobnika bez wersjonowania, może być wymagane uprawnienie `s3
eleteObject policy` do zastąpienia oryginalnego obiektu.
Podobnie jak w przypadku obiektów złożonych, można dołączyć dane do dowolnego obiektu tylko 1023 razy, ponieważ każde dołączenie tworzy łącze do przesłanych danych. Należy uważać, aby nie dołączać małych ilości danych wiele razy do obiektu, ponieważ każde przesłane dane dołączone tworzą nowy obiekt podlegający minimalnym opłatom za rozmiar i mogą spowolnić wydajność z powodu małego odczytu danych. Operacja dołączania odbywa się za pomocą metody `HTTP PUT` z parametrem ciągu zapytania „?append”. Dane do dołączenia są przesyłane w treści żądania.
Poniżej znajduje się przykład, który dołącza ciąg znaków „<appended data>” do istniejącego obiektu „TestAppend-Object”.
Plain textCopy
PUT Object Copy Uses Link
Zazwyczaj, aby zmienić nazwy obiektów przy użyciu protokołu AWS S3, obiekt jest przesyłany z jedną wartością klucza. Następnie wykonywana jest operacja PUT z nową wartością klucza skopiowaną z oryginalnej wartości klucza, a obiekt dla oryginalnej wartości klucza jest usuwany.
myQNAPcloud Object automatycznie optymalizuje tę sekwencję poprzez połączenie nowego obiektu wartości klucza z oryginalnymi danymi z wartości klucza kopii. Pozwala to uniknąć tworzenia kolejnej kopii danych, co skutkowałoby wyższymi opłatami za przechowywanie. Ponieważ myQNAPcloud Object używa linków do oryginalnych danych, można kopiować obiekty dowolnego rozmiaru, aż do limitu 5 TB, i nie wymaga to użycia wieloczęściowego przesyłania.
Delete Object MFADelete
Jeśli opcja MFADelete jest włączona w wersjonowaniu zasobnika, „x-amz-mfa” nie jest wymagane, jeśli poświadczenia dostępu zostały podpisane przy użyciu MFA (zobacz także MFA (Multi-Factor Authentication) Delete).
Jeśli rejestrowanie zasobnika jest włączone, usunięcie wielu obiektów utworzy osobny wpis w dzienniku dla każdego usuniętego obiektu.
GET Object Response Headers
Każdy nagłówek w żądaniu GET obiektu, który zaczyna się od „response-”, zostanie zwrócony jako nagłówek odpowiedzi (bez ciągu znaków „response-”).
Object Server-Side Encryption
myQNAPcloud Object szyfruje wszystkie dane przechowywane w spoczynku niezależnie od żądanego szyfrowania. System użyje wszelkich kluczy szyfrujących dostarczonych przez wywołującego, jeśli zostaną podane, lub wygeneruje losowy klucz szyfrujący klucz dla każdego obiektu, jeśli nie zostanie podany klucz klienta. Jeśli klient dostarczy klucz szyfrujący, podobnie jak w AWS S3, myQNAPcloud Object nie będzie przechowywać kopii klucza klienta w metadanych, a wywołujący musi dostarczyć klucz szyfrujący, aby odczytać dane. Nie jest wymagane żadne działanie ze strony wywołującego, jeśli myQNAPcloud Object dostarcza klucz szyfrujący.
Wywołujący może dostarczyć klucz szyfrujący używając nagłówków x-amz-server-side-encryption-customer-algorithm, x-amz-server-side-encryption-customer-key i x-amz-server-side-encryption-customer-key-MD5. Te parametry działają identycznie jak w AWS S3.
myQNAPcloud Object nie obsługuje usługi zarządzania kluczami. Dlatego „x-amz-server-side-encryption” nie jest obsługiwane wraz z całą funkcjonalnością „aws:kms”. myQNAPcloud Object przechowuje MD5 dla danych, które zawsze są przesłanymi danymi, niezależnie od szyfrowania po stronie serwera.
Object Storage Class
myQNAPcloud Object zapewnia tylko jedną klasę przechowywania, która jest najbardziej podobna do standardowej klasy przechowywania AWS S3. Tam, gdzie klasa przechowywania jest zwracana w dowolnej operacji, myQNAPcloud Object zwróci standardową klasę przechowywania AWS S3.
Operations on Objects Not Supported in myQNAPcloud Object
Object RESTORE | myQNAPcloud Object nie obsługuje wielu klas przechowywania i nie obsługuje żądania POST object RESTORE używanego do przywracania obiektów z innej klasy przechowywania.
Select Object Content | myQNAPcloud Object nie obsługuje operacji filtrowania zawartości obiektu Amazon S3 na podstawie prostego zapytania w języku SQL (Structured Query Language).
S3 Batch Operations | myQNAPcloud Object nie obsługuje S3 Batch Operations do zarządzania obiektami.
Compliance with myQNAPcloud Object S3 API
Ustawienia zgodności dla dowolnego obiektu w zasobniku ze zgodnością mogą być również zmienione w ramach limitów zgodności dla zasobnika. Określ ustawienia zgodności obiektu za pomocą następujących tagów XML.
LegalHold | Wartość logiczna „true” lub „false” do ustawienia statusu blokady prawnej. Gdy obiekt ma status blokady prawnej ustawiony na true, obiekt nie może zostać usunięty niezależnie od okresu przechowywania.
RetentionTime | Czas w formacie ISO określający nowy czas przechowywania dla obiektu, przed którym obiekt nie może zostać usunięty. Zauważ, że nowy czas przechowywania musi być późniejszy niż okres przechowywania określony przez politykę zasobnika, w przeciwnym razie zostanie zwrócony błąd.
Poniżej znajduje się przykład ustawiania zgodności dla obiektu:
Plain textCopy
Ustawienia zgodności dla dowolnego konkretnego obiektu mogą być również pobrane za pomocą ciągu zapytania „?compliance”. Oprócz powyższych ustawień zgodności obiektu, zapytanie zwraca obliczony skrót SHA256 dla obiektu, który może być użyty do stwierdzenia, że obiekt nie został zmodyfikowany. Zauważ, że wartość SHA256 jest dostępna tylko dla obiektów, które są przesyłane jako pojedynczy obiekt i nie jest dostępna dla obiektów wieloczęściowych lub złożonych.
Poniżej znajduje się przykład pobierania zgodności dla obiektu:
Plain textCopy
Treść odpowiedzi:
Plain textCopyUstawienia zgodności obiektu pojawiają się również na listach zasobników, gdy zgodność zasobnika jest włączona.
Object Lock with myQNAPcloud Object S3 API
Możesz dodać lub zaktualizować ustawienia blokady obiektu dla obiektu, używając tagów opisanych poniżej.
RetainUntilDate | Definiuje to czas przechowywania obiektu. Obiekt nie może zostać usunięty przed upływem tego czasu. Należy pamiętać, że czas przechowywania musi być w przyszłości.
LegalHold | Powinno to być `ON` lub `OFF`, bez względu na wielkość liter.
Poniżej przedstawiono przykład ustawiania konfiguracji blokowania obiektu:
Plain textCopy
Poniżej przedstawiono przykład ustawiania blokady prawnej dla obiektu:
Plain textCopy
Poniżej przedstawiono przykład ustawiania trybu zarządzania dla obiektu:
Plain textCopyNagłówek „x-amz-bypass-governance-retention =true” musi być zawsze dołączony, gdy chcesz nadpisać ustawienia zarządzania dla obiektu.
Adresy URL usług dla myQNAPcloud Object Storage Regions
Adresy URL usług myQNAPcloud dla różnych regionów przechowywania myQNAPcloud Object to:
Ameryka
Region | Adres URL usługi
US East 1 (N. Virginia) | s3 .us-east-1.myqnapcloud.io
US Central 1 (Texas) | s3.us-central-1. myqnapcloud.io
US West 1 (Oregon) | s3.us-west-1. myqnapcloud.io
CA Central 1 (Toronto) | s3.ca-central-1. myqnapcloud.io
EMEA
EU Central 1 (Amsterdam) | s3.eu-central-1. myqnapcloud.io
EU Central 2 (Frankfurt) | s3.eu-central-2. myqnapcloud.io
EU West 1 (London) | s3.eu-west-1. myqnapcloud.io
EU West 2 (Paris) | s3.eu-west-2. myqnapcloud.io
EU West 3 (London) | s3.eu-west-3. myqnapcloud.io
EU South 1 (Milan) | s3.eu-south-1. myqnapcloud.io
APAC
AP Northeast 1 (Tokyo) | s3.ap-northeast-1. myqnapcloud.io
AP Northeast 2 (Osaka) | s3.ap-northeast-2. myqnapcloud.io
AP Southeast 1 (Singapore) | s3.ap-southeast-1. myqnapcloud.io
AP Southeast 2 (Sydney) | s3.ap-southeast-2. myqnapcloud.io
Do myQNAPcloud Object Management Console można uzyskać dostęp za pośrednictwem myQNAPcloud Portal.
Jeśli szukasz prawidłowego adresu URL usługi do użycia z aplikacją pamięci masowej innej firmy, powinieneś wybrać ten, który odpowiada lokalizacji Twojego zasobnika.
Pracując z aplikacjami pamięci masowej innych firm, należy pamiętać, że te aplikacje mają różne metody obsługi adresów URL usług regionów przechowywania. Metody te obejmują:
Replikacja obiektów za pomocą myQNAPcloud Object S3 API
GET Object Tagging
myQNAPcloud Object obsługuje funkcjonalność pobierania zestawu tagów obiektu, gdy obiekt:
Gdy obiekt nie ma żadnych tagów
Plain textCopy
Treść odpowiedzi:
Plain textCopy
Plain textCopy
Gdy obiekt ma tagi
Plain textCopy
Treść odpowiedzi:
Plain textCopy
PUT Object Tagging
myQNAPcloud Object obsługuje funkcjonalność dla:
Dodawanie wartości tagu istniejącego obiektu w zasobniku
Plain textCopy
Treść odpowiedzi:
Plain textCopy
Dołączanie wartości tagu istniejącego obiektu w zasobniku
W tym przykładzie istniejący obiekt ma już wartość tagu „key5” – „value5”. Możesz dołączyć nowe pary tagów wraz z istniejącą parą.
Plain textCopy
Treść odpowiedzi:
Zwykły tekstKopiuj
Zwykły tekstKopiuj
Aby umieścić tagi innej wersji, użyj parametru zapytania `versionId`.
DELETE Tagowanie obiektu
Spowoduje to usunięcie całego zestawu tagów z określonego obiektu.
Zwykły tekstKopiuj
Treść odpowiedzi:
Zwykły tekstKopiuj
Zwykły tekstKopiuj
Aby usunąć tagi innej wersji, użyj parametru zapytania `versionId`.
Tagowanie obiektów za pomocą API obiektów myQNAPcloud
GET Tagowanie obiektu
myQNAPcloud Object obsługuje funkcję pobierania zestawu tagów obiektu, gdy obiekt:
Gdy obiekt nie ma żadnych tagów
Zwykły tekstKopiuj
Treść odpowiedzi:
Zwykły tekstKopiuj
Zwykły tekstKopiuj
Gdy obiekt ma tagi
Zwykły tekstKopiuj
Treść odpowiedzi:
Zwykły tekstKopiuj
PUT Tagowanie obiektu
myQNAPcloud Object obsługuje funkcje:
Dodawanie wartości tagu istniejącego obiektu w zasobniku
Zwykły tekstKopiuj
Treść odpowiedzi:
Zwykły tekstKopiuj
Dołączanie wartości tagu istniejącego obiektu w zasobniku
W tym przykładzie istniejący obiekt ma już wartość tagu „key5” – „value5”. Możesz dołączyć nową parę tagów wraz z istniejącą parą.
Zwykły tekstKopiuj
Treść odpowiedzi:
Zwykły tekstKopiuj
Zwykły tekstKopiuj
Aby umieścić tagi innej wersji, użyj parametru zapytania `versionId`.
DELETE Tagowanie obiektu
Spowoduje to usunięcie całego zestawu tagów z określonego obiektu.
Zwykły tekstKopiuj
Treść odpowiedzi:
Zwykły tekstKopiuj
Zwykły tekstKopiuj
Aby usunąć tagi innej wersji, użyj parametru zapytania `versionId`.
Dalsze czytanie
Biorąc pod uwagę jego kompatybilność z AWS S3, oficjalna dokumentacja AWS dla S3 służy jako uzupełniające źródło informacji podczas pracy z myQNAPcloud Object. Szczegóły dotyczące wersji API 2006-03-01 znajdują się w Amazon Simple Storage Service API Reference:
Amazon Simple Storage Service API Reference
myQNAPcloud Object
Czym jest myQNAPcloud Object?
myQNAPcloud Object to usługa przechowywania obiektów w chmurze, zaprojektowana w celu zapewnienia wysokowydajnego, niezawodnego i bezpiecznego przechowywania danych dla szerokiego zakresu zastosowań i przypadków użycia. Usługa ta została stworzona, aby być w pełni kompatybilną z Amazon Web Service Simple Storage Service (AWS S3) API, zapewniając płynną integrację z aplikacjami kompatybilnymi z S3 i urządzeniami bramowymi.
myQNAPcloud Object jest dostosowany dla osób prywatnych i organizacji poszukujących ekonomicznej i wydajnej infrastruktury przechowywania danych. Zaprojektowany do współpracy z aplikacjami kompatybilnymi z S3, myQNAPcloud Object umożliwia użytkownikom wykorzystanie znanych narzędzi i przepływów pracy, jednocześnie czerpiąc korzyści z niezawodności i elastyczności ekosystemu QNAP.
- Kompatybilność: myQNAPcloud Object został zaprojektowany, aby być w pełni kompatybilnym z AWS S3 API, zapewniając, że istniejące aplikacje kompatybilne z AWS S3 mogą działać bezproblemowo.
- Wydajność: myQNAPcloud Object oferuje wysokowydajne rozwiązanie pamięci masowej zoptymalizowane pod kątem niezawodności i wydajności.
Informacje o przewodniku po myQNAPcloud Object S3 API
Chociaż myQNAPcloud Object jest ściśle zgodny z AWS S3, niektóre funkcje mogły zostać ulepszone lub zaimplementowane inaczej. Ten przewodnik ma na celu wyjaśnienie tych niuansów, aby pomóc użytkownikom zmaksymalizować potencjał myQNAPcloud Object.
Ten przewodnik zawiera przykłady dotyczące dostępu do zasobników w określonych regionach myQNAPcloud Object. Więcej informacji na temat punktów końcowych specyficznych dla regionu i adresów URL usług znajdziesz w sekcji „Service URLs for myQNAPcloud Object Storage Regions”.
Uwaga
- Regionalne adresy URL: Podczas uzyskiwania dostępu do zasobników, upewnij się, że używasz adresów URL specyficznych dla regionu przechowywania myQNAPcloud Object, w którym utworzono Twój zasobnik. Użycie nieprawidłowego adresu URL może zezwalać na żądania GET, ale może skutkować błędami dla operacji PUT lub DELETE. Zapoznaj się z [Service URLs for myQNAPcloud Object Storage Regions].
- AWS IAM: W przeciwieństwie do AWS, myQNAPcloud Object nie obsługuje AWS IAM (Identity and Access Management). Dlatego ten przewodnik koncentruje się wyłącznie na kompatybilności z S3 API i nie odnosi się do funkcji związanych z IAM.
Wprowadzenie do REST API
Oznaczenie hosta
myQNAPcloud Object obsługuje zarówno żądania w stylu ścieżki (path-style), jak i w stylu wirtualnym (virtual-style), podobnie jak AWS S3. Wymagana jest unikalna nazwa hosta (na przykład, s3.us-east-1.myqnapcloud.io w porównaniu do s3.amazonaws.com). Zalecamy używanie żądań w stylu ścieżki (path-style), jak pokazano we wszystkich przykładach w tym przewodniku (np. http://s3.us-east-1.myqnapcloud.io/my-bucket/my-object), ponieważ żądania w stylu ścieżki zapewniają większą elastyczność w nazywaniu zasobników, unikając konfliktów nazw domen.
Zawsze spójny
W przeciwieństwie do modelu silnej spójności AWS S3, myQNAPcloud Object zapewnia „zawsze spójny” widok wszystkich operacji. Gwarantuje to, że każda operacja następująca po innej zapewni spójne wyniki. Na przykład, po usunięciu obiektu (operacja DELETE), wykonanie kolejnego żądania HEAD zawsze potwierdzi usunięcie obiektu, eliminując potrzebę dodatkowego programowania w celu oczekiwania na zakończenie operacji.
Uwierzytelnianie żądań
myQNAPcloud Object obsługuje zarówno autonomiczne, jak i sygnaturowe wersje 2 i 4, kompatybilne z AWS S3, dla nagłówków i parametrów zapytania. Podczas gdy wersja sygnatury 4 oferuje lepsze bezpieczeństwo, wymaga więcej zasobów obliczeniowych ze względu na narzut związany z obliczaniem skrótu SHA256. Jeśli wydajność jest kluczowa, można użyć wersji sygnatury 2, gdzie MD5 (zwracane jako nagłówek ETag) zapewnia integralność danych.
Dla żądań podpisywania w wersji 4, wszystkie regiony są obsługiwane dla żądań podpisywania myQNAPcloud Object.
myQNAPcloud Object nie obsługuje podpisywania sygnatur dla przesyłania plików z przeglądarki ani żądań formularzy HTML, ponieważ te operacje nie są obecnie obsługiwane.
Dla podpisywania w wersji 2, następujące klucze podzasobów są określone jako parametry zapytania w żądaniach:
- append
- compose
- force_delete=true
Odpowiedzi błędów
Wszędzie tam, gdzie to możliwe, myQNAPcloud Object używa odpowiedzi błędów kompatybilnych z AWS S3. Dodatkowe kody błędów mogą być również dostarczone dla rozszerzonej funkcjonalności.
Kody błędów HTTP
Kod błędu | Opis obiektu myQNAPcloud | Kod statusu HTTP
Niedostępne | Tymczasowo niedostępne | 503
Nie do odzyskania | Dane nie do odzyskania |
Nie zaimplementowano | Nie zaimplementowano | 501
Nie znaleziono encji DB | Nie ma takiej encji | 404
Znaleziono encję DB | Encja już istnieje | 409
Błąd rozłączenia | Połączenie zamknięte | 410
Status Wewnętrzny błąd serwera | Błąd wewnętrzny: Wystąpił błąd wewnętrzny. Skontaktuj się z obsługą klienta. | 500
Status Zabronione | Odmowa dostępu | 403
Dostęp zabroniony
Konto nieaktywne
Problem z kontem
Blokada uwierzytelnienia: Zbyt wiele prób dostępu do konta z nieprawidłowymi danymi uwierzytelniającymi. Spróbuj ponownie za pięć minut.
Nieprawidłowy identyfikator klucza dostępu: Podany identyfikator klucza dostępu AWS nie istnieje w naszych rejestrach.
Nieprawidłowy kod uwierzytelnienia: Kod uwierzytelnienia dla urządzenia jest nieprawidłowy.
Zbyt duża rozbieżność czasu żądania: Różnica między czasem żądania a bieżącym czasem jest zbyt duża.
Nieprawidłowy stan obiektu: Operacja jest nieprawidłowa dla bieżącego stanu obiektu.
Status Złe żądanie | Nieprawidłowo sformułowany nagłówek autoryzacji | 400
Błąd parametrów zapytania autoryzacji
Nieprawidłowy skrót: Podany `Content-MD5` nie zgadza się z tym, co otrzymaliśmy.
Złe żądanie: Wystąpił błąd podczas analizowania żądania HTTP.
Niekompletny podpis: Żądanie musi zawierać podpis zgodny ze standardami AWS.
Nieprawidłowa akcja
Nieprawidłowy argument
Nieprawidłowy skrót: Podany `Content-MD5` był nieprawidłowy.
Nieprawidłowe dane wejściowe
Nieprawidłowa wartość parametru: Dla parametru wejściowego podano nieprawidłową wartość lub wartość spoza zakresu.
Nieprawidłowe żądanie
Nieprawidłowo sformułowana polityka
Nieprawidłowo sformułowany dokument polityki
Naruszenie polityki haseł
Błąd walidacji
Niezgodność `X Amz Content SHA256`: Podany nagłówek `x-amz-content-sha256` nie zgadza się z obliczonym.
Szyfrowanie niedozwolone: Klucze szyfrowania dostarczone przez użytkownika są niedozwolone w tej operacji.
Obiekt został zapisany przy użyciu szyfrowania po stronie serwera. Aby pobrać obiekt, należy podać prawidłowe parametry.
Encja zbyt duża: Proponowane przesłanie jest większe niż maksymalny dozwolony rozmiar.
Encja zbyt mała: Proponowane przesłanie jest mniejsze niż minimalny dozwolony rozmiar.
Nielegalne żądanie zgodności
Wyjątek nieprawidłowej konfiguracji wersji: Konfiguracja wersji określona w żądaniu jest nieprawidłowa.
Niekompletna treść: Nie podano liczby bajtów określonej przez nagłówek HTTP `Content-Length`.
Nieprawidłowe żądanie ACL: Podczas ustawiania ACL należy podać tylko jeden z nagłówków ACL lub treść XML.
Nieprawidłowy argument
Nieprawidłowa nazwa zasobnika: Określony zasobnik jest nieprawidłowy.
Błąd nieprawidłowego algorytmu szyfrowania: Określone żądanie szyfrowania jest nieprawidłowe. Obsługiwana wartość: AES256.
Nieprawidłowa kolejność części: Lista części nie była w kolejności rosnącej. Części muszą być uporządkowane według numeru części.
Nieprawidłowa część: Nie można było znaleźć jednej lub więcej określonych części. Część mogła nie zostać przesłana, lub określony tag encji może nie pasować do tagu encji części.
Nieprawidłowy dokument polityki: Treść formularza nie spełnia warunków określonych w dokumencie polityki.
Błąd zbyt długiego klucza: Twój klucz jest zbyt długi.
Zasobnik logowania ten sam właściciel: Docelowy zasobnik logowania musi mieć tego samego właściciela co zasobnik, który jest logowany.
Nieprawidłowo sformułowany XML: Podany XML nie był poprawnie sformułowany lub nie przeszedł walidacji względem naszego opublikowanego schematu.
Metadane zbyt duże: Nagłówki metadanych przekraczają maksymalny dozwolony rozmiar metadanych.
Przekroczenie limitu czasu żądania: Połączenie gniazda z serwerem nie zostało odczytane ani zapisane w okresie limitu czasu.
Zbyt wiele zasobników: Próbowano utworzyć więcej zasobników niż dozwolono.
Zbyt wiele komponentów: Obiekt złożony nie może mieć więcej niż 1024 komponentów.
Nie do rozwiązania uprawnienie według adresu e-mail: Podany adres e-mail nie pasuje do żadnego zarejestrowanego konta.
Przekroczono limit miejsca na dysku: Twoje konto przekroczyło limit miejsca na dysku.
Konto zasobnika nieaktywne: Konto, które jest właścicielem tego zasobnika, jest nieaktywne.
Status Zniknął | Połączenie zamknięte: Połączenie sieciowe zostało zamknięte. | 410
Status Encja nieprzetwarzalna | Dane nie do odzyskania: Dane w żądaniu są nie do odzyskania. Skontaktuj się z obsługą klienta. | 422
Status Konflikt | Konflikt usuwania | 409
Encja już istnieje
Encja tymczasowo niemodyfikowalna: Encja jest tymczasowo niemodyfikowalna. Spróbuj ponownie później.
Przekroczono limit
Operacja przerwana: Obecnie trwa sprzeczna operacja warunkowa na tym zasobie. Spróbuj ponownie.
Zasobnik już istnieje
Zasobnik nie jest pusty
Ustawienia zgodności zablokowane: Ustawienia zgodności są teraz zablokowane i nie można ich zmienić.
Status Nie znaleziono | Nie ma takiej encji | 404
Brak takiej konfiguracji cyklu życia: Konfiguracja cyklu życia nie istnieje.
Brak takiego zasobnika: Określony zasobnik nie istnieje.
Brak takiej polityki zasobnika: Polityka zasobnika nie istnieje.
Brak takiego klucza: Określony klucz nie istnieje.
Brak takiej konfiguracji replikacji: Konfiguracja replikacji nie istnieje.
Błąd braku takiego zestawu tagów: Z zasobnikiem nie jest powiązany żaden zestaw tagów.
Brak takiego przesłania: Określone przesłanie nie istnieje. Identyfikator przesłania może być nieprawidłowy, lub przesłanie mogło zostać przerwane lub zakończone.
Brak takiej wersji: Określona wersja nie istnieje.
Status Nie zaimplementowano | Nie zaimplementowano: Podany nagłówek implikuje funkcjonalność, która nie jest zaimplementowana. | 501
Status Usługa niedostępna | Tymczasowo niedostępne: Zasoby dla tej operacji są tymczasowo niedostępne. Spróbuj ponownie później. | 503
Status Znaleziono | Klucz już istnieje | 302
Status Metoda niedozwolona | Metoda niedozwolona: Ta metoda jest niedozwolona dla innych niż właściciel konta. | 405
Metoda niedozwolona: Określona metoda jest niedozwolona dla tego zasobu.
Status Wymagana długość | Brak długości treści: Musisz podać nagłówek HTTP `Content-Length`. | 411
TCP Error Codes
myQNAPcloud Object obsługuje następujące kody błędów TCP:
- Unexpected EOF
- Broken Pipe
- Connection reset by Peer
Nieobsługiwane w myQNAPcloud Object
Operacja | Opis
SOAP | AWS S3 wycofało obsługę SOAP, a myQNAPcloud Object nie obsługuje żadnych operacji SOAP.
Operacje na zasobnikach z API S3 myQNAPcloud Object
Operacje na zasobnikach obejmują: usuwanie, zmianę nazwy i logowanie zasobników, a także obsługę współdzielenia zasobów między domenami (CORS), politykę cyklu życia, blokowanie obiektów i zgodność.
Wymuszone usuwanie zasobnika
AWS S3 nie pozwoli na usunięcie zasobnika, jeśli zawiera on obiekty, które nie zostały usunięte.
myQNAPcloud Object udostępnia opcję wymuszonego usuwania, która najpierw usuwa wszystkie obiekty w zasobniku, a następnie usuwa zasobnik. Usunięcie obiektów podlega wymaganiom polityki i zgodności dla zasobnika.
Aby użyć opcji wymuszonego usuwania, wystarczy dodać ją jako ciąg zapytania. Na przykład:
Kod:
DELETE http://s3.us-east-1.myqnapcloud.io/my-bucket?force_delete=true HTTP/1.1
Zmiana nazwy zasobnika
AWS S3 nie obsługuje zmiany nazw zasobników. Obsługuje jedynie zmianę nazw obiektów w zasobniku.
myQNAPcloud Object obsługuje zmianę nazw zasobników. Nowa nazwa zasobnika nie może być już używana, aby zmiana nazwy zakończyła się sukcesem. Wywołujący musi posiadać uprawnienie polityki `s3:CreateBucket` do zmiany nazwy zasobnika.
Aby zmienić nazwę zasobnika, użyj metody HTTP `MOVE` wraz z polem nagłówka „Destination”, aby podać nową nazwę zasobnika. Na przykład:
Kod:
MOVE http://s3.us-east-1.myqnapcloud.io/my_old_bucket HTTP/1.1
Destination: my_new_bucket
Usuwanie z MFA (uwierzytelnianie wieloskładnikowe)
myQNAPcloud Object obsługuje nagłówek „x-amz-mfa” podczas:
- konfigurowania wersjonowania w zasobniku, lub
- usuwania obiektów za pomocą żądań usunięcia obiektów zgodnych z AWS S3.
Maksymalna liczba zasobników
Standardowy AWS S3 obsługuje tylko 100 zasobników.
myQNAPcloud Object pozwala na maksymalnie 1000 zasobników na konto, a liczba ta może zostać zwiększona poprzez skontaktowanie się z Obsługą Klienta myQNAPcloud Object.
Logowanie zasobników
myQNAPcloud Object obsługuje logowanie zasobników, które tworzy tekstowy plik dziennika wszystkich dostępów do zasobnika. Format pliku dziennika jest identyczny z plikiem dziennika AWS S3.
Logowanie zasobników myQNAPcloud Object nie wymaga żadnych ustawień uprawnień ACL do przechowywania dzienników w zasobniku docelowym. Chociaż można nadać ustawienia uprawnień w żądaniu logowania lub w ACL, nie są one wymagane do działania logowania w myQNAPcloud Object. Jednakże zasobnik, który jest celem dla plików dziennika, musi znajdować się na tym samym koncie co logowany zasobnik.
Obsługa współdzielenia zasobów między domenami (CORS) dla zasobników
Dla kompatybilności z dostępem przeglądarki do myQNAPcloud Object jako serwera WWW, serwer myQNAPcloud Object zwróci nagłówki CORS, gdy nagłówek „Origin” zostanie podany w żądaniu HTTP. Dodatkowo, serwer obsługuje metodę HTTP `OPTIONS` dla zasobników lub obiektów, aby zwrócić nagłówki CORS potrzebne do testu wstępnego przeglądarki przed uzyskaniem dostępu do myQNAPcloud Object.
W odróżnieniu od AWS, myQNAPcloud Object zwraca ustawienia, które umożliwią przeglądarce pełny dostęp do myQNAPcloud Object. Dlatego myQNAPcloud Object nie obsługuje funkcji AWS, które umożliwiają `PUT` i `GET` na zasobniku z parametrem „cors” w adresie URL. Należy pamiętać, że zezwolenie przeglądarce na pełny dostęp do danych nie wpływa na bezpieczeństwo dostępu do żadnych obiektów, a wszystkie polityki dostępu będą nadal egzekwowane.
Poniżej przedstawiono nagłówki HTTP zwracane domyślnie, gdy nagłówek „Origin” zostanie podany w żądaniu HTTP:
Kod:
Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: GET, HEAD, POST, PUT, DELETE, MOVE, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: *
Access-Control-Max-Age: 86400
Polityka cyklu życia
Funkcja Cyklu Życia ustanawia politykę cyklu życia z regułami definiującymi działania, które myQNAPcloud Object ma podjąć w trakcie życia obiektu. Ta funkcja zastępuje potrzebę ręcznego usuwania obiektu po okresie przechowywania.
Konfigurowanie ustawień cyklu życia
Ustawienia cyklu życia dla zasobnika są konfigurowane za pomocą polecenia „put-bucket-lifecycle-configuration”. Na przykład:
Kod:
$ aws s3api put-bucket-lifecycle-configuration --bucket 1-1-1-1 --endpoint-url https://s3.us-east-1.myqnapcloud.io --lifecycle-configuration file://lifecycle.json
{
"Rules": [
{
"Expiration": {
"Days": 1
},
"ID": "lifecycle_rule_1",
"Filter": {
"And": {
"ObjectSizeGreaterThan": 1,
"ObjectSizeLessThan": 21474836480
}
},
"Status": "Enabled"
},
{
"Expiration": {
"Days": 1
},
"ID": "object_lifecycle_rule_bucket_6807766",
"Filter": {
"Prefix": "1"
},
"Status": "Enabled"
}
]
}
Oto inny przykład:
Kod:
PUT https://s3.us-east-1.myqnapcloud.io/1-1-1-1?lifecycle
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<Expiration>
<Days>1</Days>
</Expiration>
<ID>lifecycle_rule_1</ID>
<Filter>
<And>
<ObjectSizeGreaterThan>1</ObjectSizeGreaterThan>
<ObjectSizeLessThan>21474836480</ObjectSizeLessThan>
</And>
</Filter>
<Status>Enabled</Status>
</Rule>
<Rule>
<Expiration>
<Days>1</Days>
</Expiration>
<ID>object_lifecycle_rule_bucket_6807766</ID>
<Filter>
<Prefix>1</Prefix>
</Filter>
<Status>Enabled</Status>
</Rule>
</LifecycleConfiguration>
Pobieranie ustawień cyklu życia
Ustawienia cyklu życia dla zasobnika można pobrać za pomocą polecenia "get-bucket-lifecycle-configuration". Na przykład:
Kod:
$ aws s3api get-bucket-lifecycle-configuration --bucket 1-1-1-1 --endpoint-url https://s3.us-east-1.myqnapcloud.io
{
"Rules": [
{
"Expiration": {
"Days": 1
},
"ID": "lifecycle_rule_1",
"Filter": {
"And": {
"ObjectSizeGreaterThan": 1,
"ObjectSizeLessThan": 21474836480
}
},
"Status": "Enabled"
},
{
"Expiration": {
"Days": 1
},
"ID": "object_lifecycle_rule_bucket_6807766",
"Filter": {
"Prefix": "1"
},
"Status": "Enabled"
}
]
}
Kod:
GET https://s3.us-east-1.myqnapcloud.io/1-1-1-1?lifecycle
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Rule>
<Expiration>
<Days>1</Days>
</Expiration>
<ID>lifecycle_rule_1</ID>
<Filter>
<And>
<ObjectSizeGreaterThan>1</ObjectSizeGreaterThan>
<ObjectSizeLessThan>21474836480</ObjectSizeLessThan>
</And>
</Filter>
<Status>Enabled</Status>
</Rule>
<Rule>
<Expiration>
<Days>1</Days>
</Expiration>
<ID>object_lifecycle_rule_bucket_6807766</ID>
<Filter>
<Prefix>1</Prefix>
</Filter>
<Status>Enabled</Status>
</Rule>
</LifecycleConfiguration>
Usuwanie ustawień cyklu życia
Ustawienia cyklu życia dla zasobnika można usunąć za pomocą polecenia "delete-bucket-lifecycle". Na przykład:
Kod:
$ aws s3api delete-bucket-lifecycle --bucket 1-1-1-1 --endpoint-url https://s3.us-east-1.myqnapcloud.io
Blokada obiektu
myQNAPcloud Object obsługuje blokadę obiektu, która zapobiega usunięciu lub nadpisaniu wersji obiektu przez określony czas lub bezterminowo.
Tag | Opis
ObjectLockConfiguration | Jest to obowiązkowy tag poziomu głównego dla konfiguracji blokady obiektu.
ObjectLockEnabled | Ten tag musi być skonfigurowany jako Enabled.
Rule | Określa to regułę blokady obiektu dla zasobnika. Wymaga zarówno trybu, jak i okresu. Okres może być określony w dniach (Days) lub latach (Years), ale należy wybrać tylko jeden. Nie można jednocześnie określać dni i lat.
Mode | powinien być COMPLIANCE lub GOVERNANCE.
Ustawienia blokady obiektu dla zasobnika są określane za pomocą ciągu zapytania „?object-lock” wraz z ustawieniami blokady obiektu jako treścią XML w żądaniu. Na przykład:
Kod:
PUT https://s3.us-east-1.myqnapcloud.io/qa.objectlock.002/?object-lock HTTP/1.1
<ObjectLockConfiguration>
<ObjectLockEnabled>Enabled</ObjectLockEnabled>
<Rule>
<DefaultRetention>
<Mode>COMPLIANCE</Mode>
<Days>10</Days>
</DefaultRetention>
</Rule>
</ObjectLockConfiguration>
Kod:
GET https://s3.us-east-1.myqnapcloud.io/qa.objectlock.002/?object-lock HTTP/1.1
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<ObjectLockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<ObjectLockEnabled>Enabled</ObjectLockEnabled>
<Rule>
<DefaultRetention>
<Mode>COMPLIANCE</Mode>
<Days>10</Days>
</DefaultRetention>
</Rule>
</ObjectLockConfiguration>
Ustawienia blokady obiektu dla zasobnika można wyczyścić za pomocą ciągu zapytania "?object-lock". Na przykład:
Kod:
PUT https://s3.us-east-1.myqnapcloud.io/qa.objectlock.002/?object-lock HTTP/1.1
Kod:
<ObjectLockConfiguration>
<ObjectLockEnabled>Enabled</ObjectLockEnabled>
<Rule>
<DefaultRetention>
<Mode></Mode>
<Days></Days>
</DefaultRetention>
</Rule>
</ObjectLockConfiguration>
myQNAPcloud Object Compliance
myQNAPcloud Object obsługuje politykę zgodności, która zapobiega usuwaniu obiektów i dostarcza dodatkowych informacji, aby udowodnić, że oryginalne dane nie zostały zmodyfikowane od momentu zapisu. Funkcja zgodności może być wymagana do spełnienia pewnych wymogów regulacyjnych, ale jest również przydatna do zapobiegania przypadkowemu usunięciu danych.
Compliance różni się od ustawienia blokady obiektu dla zasobnika.
Możesz ustawić politykę zgodności dla dowolnego zasobnika, kontrolując wszystkie obiekty przechowywane w tym zasobniku. Określ politykę zgodności zasobnika za pomocą następujących tagów XML.
Tag | Opis
Status | Wartość "enabled" lub "disabled" odpowiednio włącza lub wyłącza funkcję compliance. Włączenie natychmiast zastosuje się do wszystkich obiektów w zasobniku.
LockTime | Czas, w którym ustawienia compliance są "zablokowane" – ustawień nie można zmniejszyć za pomocą żadnego wywołania API. Po zablokowaniu ustawień nie można ich odblokować bez interwencji QNAP Customer Support. Czas blokady pozwala na obsługę dwóch przypadków użycia:
- Testowanie, czy Twoje oprogramowanie działa poprawnie przed zablokowaniem funkcji compliance; lub
- Nigdy nie blokowanie, co oznacza, że dane mogą zostać usunięte po dodatkowym kroku administratora wyłączającego compliance.
- Datą ISO (na przykład, 2016-11-07T15:08:05Z),
- Ciągiem znaków "now", aby wymusić natychmiastowe zablokowanie, lub
- Ciągiem znaków "off", aby nie blokować ustawień compliance. Jest to wartość domyślna.
ConditionalHold | Wartość logiczna ("true" lub "false") wskazująca, czy nowo utworzone obiekty są umieszczane w conditional hold, co oznacza, że nie mogą zostać usunięte, dopóki conditional hold nie zostanie jawnie wyłączony. Wartością domyślną jest false, jeśli ten parametr nie zostanie podany. Należy pamiętać, że to ustawienie może zostać zmienione nawet po zablokowaniu ustawień.
Ustawienia compliance dla zasobnika są określane za pomocą ciągu zapytania „?compliance” wraz z ustawieniami compliance jako treść XML w żądaniu. Na przykład:
Kod:
PUT http://s3.us-east-1.myqnapcloud.io/my-bucket?complianceHTTP./1.1
<BucketComplianceConfiguration>
<Status>enabled</Status>
<LockTime>off</LockTime>
<RetentionDays>365</RetentionDays>
<DeleteAfterRetention>true</DeleteAfterRetention>
</BucketComplianceConfiguration>
Ustawienia compliance dla zasobnika można pobrać, uzyskując zasobnik za pomocą ciągu zapytania „?compliance”. Na przykład:
Kod:
GET http://s3.us-east-1.myqnapcloud.io/my-buck?complianceHTTP/1.1
Kod:
<BucketComplianceConfiguration xml ns="http://s3.amazonaws.com/doc/2006-03-01/">
<Status>enabled</Status>
<LockTime>2016-11-07T15:08:05Z</LockTime>
<IsLocked>false</IsLocked>
<RetentionDays>0</RetentionDays>
<ConditionalHold>false</ConditionalHold>
<DeleteAfterRetention>false</DeleteAfterRetention>
</BucketComplianceConfiguration>
Operations on Buckets Not Supported in myQNAPcloud Object
Operacja | Opis
Bucket Tagging | Bucket tagging jest obecnie niedostępny w myQNAPcloud Object.
Bucket Website | Konfiguracja witryny jest niedostępna w myQNAPcloud Object. Biorąc pod uwagę charakter myQNAPcloud Object jako długoterminowego magazynu obiektów, nie przewidujemy obsługi operacji witryn internetowych na zasobnikach. Nagłówek "x-amz-website-redirect-location" jest ignorowany we wszystkich żądaniach obiektów.
Bucket Accelerate | myQNAPcloud Object nie implementuje podzasobu AWS S3 bucket accelerate.
Bucket Request Payment | myQNAPcloud Object nie obsługuje użycia podzasobu "requestPayment" dla zasobników.
Metrics Configuration | myQNAPcloud Object nie obsługuje operacji odbierania jednominutowych CloudWatch metrics, ustawiania CloudWatch alarms i dostępu do CloudWatch dashboards w celu przeglądania operacji i wydajności pamięci masowej Amazon S3 w czasie zbliżonym do rzeczywistego.
S3 Block Public Access | myQNAPcloud Object nie obsługuje operacji centralnego blokowania istniejącego publicznego dostępu (niezależnie od tego, czy jest on możliwy za pośrednictwem ACL czy polityki) i upewniania się, że nowo utworzone elementy nie otrzymają przypadkowo publicznego dostępu.
S3 Select | myQNAPcloud Object nie obsługuje S3 Select API.
Operations on Objects With myQNAPcloud Object S3 API
Operations on Objects obejmują zmianę nazw, komponowanie, dołączanie i usuwanie obiektów, a także encryption, storage class, object locking i compliance.
Renaming Objects
myQNAPcloud Object obsługuje funkcjonalność przenoszenia obiektu – w efekcie zmiany nazwy obiektu poprzez zmianę klucza. Eliminuje to dwuetapowy proces polegający najpierw na skopiowaniu obiektu, a następnie usunięciu oryginalnego obiektu. Wywołujący musi mieć uprawnienie s3
Aby zmienić nazwy obiektów, użyj metody HTTP MOVE wraz z następującymi parametrami w nagłówkach żądania, które wpływają na operację przenoszenia.
Overwrite | Wartość logiczna, która, gdy jest „true”, pozwala na nadpisywanie obiektów docelowych tym samym kluczem. W przeciwnym razie generowany jest błąd, a oryginalny klucz nie zostaje zmieniony.
X-Wasabi-Quiet | Wartość logiczna, która, gdy jest „true”, powoduje, że treść XML statusu zwrotnego wyświetla tylko klucze, które napotkały błędy. W przeciwnym razie wszystkie zmienione nazwy obiektów są podane w statusie. Wartość domyślna to „false”.
X-Wasabi-Prefix | Wartość logiczna, która, gdy jest „true”, oznacza, że wartości podane dla źródła w URL i miejsca docelowego są prefiksami – pasują do lewej części kluczy. Koncepcyjnie, pomyśl o prefiksie jako o folderze obiektów. W przeciwnym razie, tylko obiekty (w tym wszystkie wersje), które dokładnie pasują do klucza, zostaną zmienione. Wartość domyślna to „false”.
Wywołanie zwróci wyniki jako treść XML odpowiedzi. Wyniki obejmują następujące elementy dla każdego zmienionego obiektu:
- oryginalny klucz źródłowy,
- zmieniony klucz docelowy,
- ID wersji obiektu, oraz
- wszelkie błędy w operacji zmiany nazwy.
Poniżej znajduje się przykład, który zmienia nazwy wszystkich obiektów zaczynających się od prefiksu „TestMove-Dir2/” na nowy prefiks „TestMove-Dir2-Renamed/”.
Kod:
MOVE http://s3.us-east-1.myqnapcloud.io/my_bucket/TestMove-Dir2/HTTP/1.1 Destination:TestMove-Dir2-Renamed/X-Wasabi-Prefix:true
Treść odpowiedzi:
Kod:
<MoveObjectResult> <SourcePrefix>TestMove-Dir2/SourcePrefix> <DestinationPrefix>TestMove-Dir2-Renamed/DestinationPrefix> <MoveObject> <SourceKey>TestMove-Dir2/SourceKey> <DestinationKey>TestMove-Dir2-Renamed/DestinationKey> MoveObject> <MoveObject> <SourceKey>TestMove-Dir2/Dir1/SourceKey> <DestinationKey>TestMove-Dir2-Renamed/Dir1/DestinationKey> MoveObject> <MoveObject> <SourceKey>TestMove-Dir2/Dir1/Obj1SourceKey> <DestinationKey>TestMove-Dir2-Renamed/Dir1/Obj1DestinationKey> MoveObject> <MoveObject> <SourceKey>TestMove-Dir2/Dir1/Obj2SourceKey> <DestinationKey>TestMove-Dir2-Renamed/Dir1/Obj2DestinationKey> MoveObject> <MoveObject> <SourceKey>TestMove-Dir2/Dir2/SourceKey> <DestinationKey>TestMove-Dir2-Renamed/Dir2/DestinationKey> MoveObject> <MoveObject> <SourceKey>TestMove-Dir2/Dir2/Obj1SourceKey> <DestinationKey>TestMove-Dir2-Renamed/Dir2/Obj1DestinationKey> MoveObject> <MoveObject> <SourceKey>TestMove-Dir2/Dir2/Obj2SourceKey> <DestinationKey>TestMove-Dir2-Renamed/Dir2/Obj2DestinationKey> MoveObject> <MoveCount>7MoveCount> MoveObjectResult>
Tworzenie obiektów złożonych
`myQNAPcloud Object` oferuje funkcję tworzenia nowego obiektu, który składa się z innych obiektów. Obiekt złożony jest tworzony nie poprzez kopiowanie oryginalnych obiektów danych, lecz poprzez łączenie obiektu złożonego z obiektami danych. Jest to sprzeczne z `AWS S3`, który nie oferuje sposobu na tworzenie obiektów złożonych. Operacja `myQNAPcloud Object` jest znacznie szybsza i nie wymaga wielu kopii oryginalnych danych. Oryginalne obiekty złożone mogą zostać usunięte w dowolnym momencie, a system zachowa oryginalne dane tak długo, jak istnieją jakiekolwiek łącza do tych danych.
Tworzenie obiektów złożonych jest alternatywą dla używania funkcji `multi-part upload` do tworzenia obiektów większych niż 5 GB. Wywołujący musi posiadać uprawnienie `s3
Operacja tworzenia obiektu złożonego odbywa się za pomocą metody `HTTP PUT` z parametrem ciągu zapytania „?compose”, aby wskazać, że obiekt składa się z obiektów podanych w treści `XML`. Treść `XML` zawiera listę kluczy obiektów i, opcjonalnie, `ID` wersji, które tworzą nowy obiekt. Jeśli `ID` wersji nie jest podane, używana jest najnowsza wersja obiektu. Nowy obiekt będzie wyglądał jak jeden obiekt ze wszystkimi połączonymi obiektami danych połączonymi. Nowy obiekt złożony nie ma wartości `ETag` (tj. `MD5`), która jest `MD5` połączonych obiektów, lecz jest wynikiem haszowania wszystkich `MD5` obiektów danych razem (podobnie jak obliczenia wykonywane po zakończeniu obiektów `multi-part`). Obiekty złożone nie mogą mieć kluczy szyfrowania dostarczonych przez użytkownika. Jednakże, wszystkie dane są przechowywane zaszyfrowane w spoczynku.
Opłata pobierana jest tylko za metadane używane w obiektach złożonych. Oryginalne dane używane w połączonych obiektach są naliczane według standardowej stawki, dopóki wszystkie obiekty złożone, które łączą się z oryginalnym obiektem danych, nie zostaną usunięte.
Poniżej znajduje się przykład, który tworzy nowy obiekt „TestComp” z trzech obiektów: „TestCompose-Data-1”, „TestCompose-Data-2” i „TestCompose-Data-3”.
Kod:
PUT http://s3.wasabisys.com/my_bucket/TestCompose-Object-1?composeHTTP/1.1Content-Type:text/xml
<ComposeRequest>
<Component>
<Key>TestCompose-Data-1</Key>
</Component>
<Component>
<Key>TestCompose-Data-2</Key>
</Component>
<Component>
<Key>TestCompose-Data-3</Key>
</Component>
</ComposeRequest>
Dołączanie do obiektów
`AWS S3` nie oferuje sposobu na dołączanie do obiektów.
Dołączanie do istniejącego obiektu jest inną formą tworzenia obiektu złożonego (patrz `Tworzenie obiektów złożonych`). Wywołanie przesyła dane w treści do tymczasowego obiektu, a następnie tworzy nowy obiekt złożony, składający się z danych z oryginalnego obiektu z dołączonymi nowo przesłanymi danymi. Jeśli zasobnik jest wersjonowany, tworzona jest nowa wersja obiektu złożonego, zachowując oryginalne dane. Gdy nie jest wersjonowany, nowo utworzony obiekt złożony zastępuje oryginalny obiekt. Wywołujący musi posiadać uprawnienie `s3
Podobnie jak w przypadku obiektów złożonych, można dołączyć dane do dowolnego obiektu tylko 1023 razy, ponieważ każde dołączenie tworzy łącze do przesłanych danych. Należy uważać, aby nie dołączać małych ilości danych wiele razy do obiektu, ponieważ każde przesłane dane dołączone tworzą nowy obiekt podlegający minimalnym opłatom za rozmiar i mogą spowolnić wydajność z powodu małego odczytu danych. Operacja dołączania odbywa się za pomocą metody `HTTP PUT` z parametrem ciągu zapytania „?append”. Dane do dołączenia są przesyłane w treści żądania.
Poniżej znajduje się przykład, który dołącza ciąg znaków „<appended data>” do istniejącego obiektu „TestAppend-Object”.
Kod:
PUT http://s3.us-east-1.myqnapcloud.io/my-bucket/TestAppend-Object?appendHTTP/1.1Content-Length:15
PUT Object Copy Uses Link
Zazwyczaj, aby zmienić nazwy obiektów przy użyciu protokołu AWS S3, obiekt jest przesyłany z jedną wartością klucza. Następnie wykonywana jest operacja PUT z nową wartością klucza skopiowaną z oryginalnej wartości klucza, a obiekt dla oryginalnej wartości klucza jest usuwany.
myQNAPcloud Object automatycznie optymalizuje tę sekwencję poprzez połączenie nowego obiektu wartości klucza z oryginalnymi danymi z wartości klucza kopii. Pozwala to uniknąć tworzenia kolejnej kopii danych, co skutkowałoby wyższymi opłatami za przechowywanie. Ponieważ myQNAPcloud Object używa linków do oryginalnych danych, można kopiować obiekty dowolnego rozmiaru, aż do limitu 5 TB, i nie wymaga to użycia wieloczęściowego przesyłania.
Delete Object MFADelete
Jeśli opcja MFADelete jest włączona w wersjonowaniu zasobnika, „x-amz-mfa” nie jest wymagane, jeśli poświadczenia dostępu zostały podpisane przy użyciu MFA (zobacz także MFA (Multi-Factor Authentication) Delete).
Jeśli rejestrowanie zasobnika jest włączone, usunięcie wielu obiektów utworzy osobny wpis w dzienniku dla każdego usuniętego obiektu.
GET Object Response Headers
Każdy nagłówek w żądaniu GET obiektu, który zaczyna się od „response-”, zostanie zwrócony jako nagłówek odpowiedzi (bez ciągu znaków „response-”).
Object Server-Side Encryption
myQNAPcloud Object szyfruje wszystkie dane przechowywane w spoczynku niezależnie od żądanego szyfrowania. System użyje wszelkich kluczy szyfrujących dostarczonych przez wywołującego, jeśli zostaną podane, lub wygeneruje losowy klucz szyfrujący klucz dla każdego obiektu, jeśli nie zostanie podany klucz klienta. Jeśli klient dostarczy klucz szyfrujący, podobnie jak w AWS S3, myQNAPcloud Object nie będzie przechowywać kopii klucza klienta w metadanych, a wywołujący musi dostarczyć klucz szyfrujący, aby odczytać dane. Nie jest wymagane żadne działanie ze strony wywołującego, jeśli myQNAPcloud Object dostarcza klucz szyfrujący.
Wywołujący może dostarczyć klucz szyfrujący używając nagłówków x-amz-server-side-encryption-customer-algorithm, x-amz-server-side-encryption-customer-key i x-amz-server-side-encryption-customer-key-MD5. Te parametry działają identycznie jak w AWS S3.
myQNAPcloud Object nie obsługuje usługi zarządzania kluczami. Dlatego „x-amz-server-side-encryption” nie jest obsługiwane wraz z całą funkcjonalnością „aws:kms”. myQNAPcloud Object przechowuje MD5 dla danych, które zawsze są przesłanymi danymi, niezależnie od szyfrowania po stronie serwera.
Object Storage Class
myQNAPcloud Object zapewnia tylko jedną klasę przechowywania, która jest najbardziej podobna do standardowej klasy przechowywania AWS S3. Tam, gdzie klasa przechowywania jest zwracana w dowolnej operacji, myQNAPcloud Object zwróci standardową klasę przechowywania AWS S3.
Operations on Objects Not Supported in myQNAPcloud Object
Object RESTORE | myQNAPcloud Object nie obsługuje wielu klas przechowywania i nie obsługuje żądania POST object RESTORE używanego do przywracania obiektów z innej klasy przechowywania.
Select Object Content | myQNAPcloud Object nie obsługuje operacji filtrowania zawartości obiektu Amazon S3 na podstawie prostego zapytania w języku SQL (Structured Query Language).
S3 Batch Operations | myQNAPcloud Object nie obsługuje S3 Batch Operations do zarządzania obiektami.
Compliance with myQNAPcloud Object S3 API
Ustawienia zgodności dla dowolnego obiektu w zasobniku ze zgodnością mogą być również zmienione w ramach limitów zgodności dla zasobnika. Określ ustawienia zgodności obiektu za pomocą następujących tagów XML.
LegalHold | Wartość logiczna „true” lub „false” do ustawienia statusu blokady prawnej. Gdy obiekt ma status blokady prawnej ustawiony na true, obiekt nie może zostać usunięty niezależnie od okresu przechowywania.
RetentionTime | Czas w formacie ISO określający nowy czas przechowywania dla obiektu, przed którym obiekt nie może zostać usunięty. Zauważ, że nowy czas przechowywania musi być późniejszy niż okres przechowywania określony przez politykę zasobnika, w przeciwnym razie zostanie zwrócony błąd.
Poniżej znajduje się przykład ustawiania zgodności dla obiektu:
Kod:
PUT http://s3.us-east-1.myqnapcloud.io/my-bucket/my-object?complianceHTTP/1.1
<ObjectComplianceConfiguration>
<ConditionalHold>false</ConditionalHold>
<RetentionTime>2018-03-13T10:45:00Z</RetentionTime>
</ObjectComplianceConfiguration>
Ustawienia zgodności dla dowolnego konkretnego obiektu mogą być również pobrane za pomocą ciągu zapytania „?compliance”. Oprócz powyższych ustawień zgodności obiektu, zapytanie zwraca obliczony skrót SHA256 dla obiektu, który może być użyty do stwierdzenia, że obiekt nie został zmodyfikowany. Zauważ, że wartość SHA256 jest dostępna tylko dla obiektów, które są przesyłane jako pojedynczy obiekt i nie jest dostępna dla obiektów wieloczęściowych lub złożonych.
Poniżej znajduje się przykład pobierania zgodności dla obiektu:
Kod:
GET http://s3.us-east-1.myqnapcloud.io/my-bucket/my-object?complianceHTTP/1.1
Treść odpowiedzi:
Kod:
<ObjectComplianceConfiguration xml ns="http://s3.amazonaws.com/doc/2006-03-01/">
<RetentionTime>2016-10-31T15:08:05Z</RetentionTime>
<ConditionalHold>false</ConditionalHold>
<LegalHold>false</LegalHold>
<SHA256>14b4be3894e92166b508007b6c2e4fb6e88d3d0ad652c76475089a50ebe6e33b</SHA256>
</ObjectComplianceConfiguration>
Object Lock with myQNAPcloud Object S3 API
Możesz dodać lub zaktualizować ustawienia blokady obiektu dla obiektu, używając tagów opisanych poniżej.
RetainUntilDate | Definiuje to czas przechowywania obiektu. Obiekt nie może zostać usunięty przed upływem tego czasu. Należy pamiętać, że czas przechowywania musi być w przyszłości.
LegalHold | Powinno to być `ON` lub `OFF`, bez względu na wielkość liter.
Poniżej przedstawiono przykład ustawiania konfiguracji blokowania obiektu:
Kod:
PUT https://s3.us-east-1.myqnapcloud.io/qa.objectlock.002/beta_vpn.png?retention&versionId= 001617181245457483475-4ylsTbqqvP
<Retention>
<Mode>compliance</Mode>
<RetainUntilDate>2021-04-06T09:00:45Z</RetainUntilDate>
</Retention>
Poniżej przedstawiono przykład ustawiania blokady prawnej dla obiektu:
Kod:
PUT https://s3.us-east-1.myqnapcloud.io/qa.objectlock.002/beta_vpn.png?legal-hold&versionId=001617181245457483475-4ylsTbqqvP
<LegalHold>
<Status>ON</Status>
</LegalHold>
Poniżej przedstawiono przykład ustawiania trybu zarządzania dla obiektu:
Kod:
PUT https://s3.us-east-1.myqnapcloud.io/qa.objectlock.002/public/ACL.PNG?retention
<Retention>
<Mode>governance</Mode>
<RetainUntilDate>2021-05-20T09:00:45Z</RetainUntilDate>
</Retention>
Adresy URL usług dla myQNAPcloud Object Storage Regions
Adresy URL usług myQNAPcloud dla różnych regionów przechowywania myQNAPcloud Object to:
Ameryka
Region | Adres URL usługi
US East 1 (N. Virginia) | s3 .us-east-1.myqnapcloud.io
US Central 1 (Texas) | s3.us-central-1. myqnapcloud.io
US West 1 (Oregon) | s3.us-west-1. myqnapcloud.io
CA Central 1 (Toronto) | s3.ca-central-1. myqnapcloud.io
EMEA
EU Central 1 (Amsterdam) | s3.eu-central-1. myqnapcloud.io
EU Central 2 (Frankfurt) | s3.eu-central-2. myqnapcloud.io
EU West 1 (London) | s3.eu-west-1. myqnapcloud.io
EU West 2 (Paris) | s3.eu-west-2. myqnapcloud.io
EU West 3 (London) | s3.eu-west-3. myqnapcloud.io
EU South 1 (Milan) | s3.eu-south-1. myqnapcloud.io
APAC
AP Northeast 1 (Tokyo) | s3.ap-northeast-1. myqnapcloud.io
AP Northeast 2 (Osaka) | s3.ap-northeast-2. myqnapcloud.io
AP Southeast 1 (Singapore) | s3.ap-southeast-1. myqnapcloud.io
AP Southeast 2 (Sydney) | s3.ap-southeast-2. myqnapcloud.io
Do myQNAPcloud Object Management Console można uzyskać dostęp za pośrednictwem myQNAPcloud Portal.
Jeśli szukasz prawidłowego adresu URL usługi do użycia z aplikacją pamięci masowej innej firmy, powinieneś wybrać ten, który odpowiada lokalizacji Twojego zasobnika.
Pracując z aplikacjami pamięci masowej innych firm, należy pamiętać, że te aplikacje mają różne metody obsługi adresów URL usług regionów przechowywania. Metody te obejmują:
- Aplikacje, które pozwalają na jawne wprowadzenie adresu URL usługi. Te aplikacje są najbardziej elastyczne, ponieważ możesz łatwo konfigurować nowe adresy URL usług, gdy tylko staną się dostępne.
- Aplikacje, które pozwalają jedynie wybierać z gotowej listy regionów przechowywania. Te aplikacje są najmniej elastyczne, ponieważ jeśli dostawca pamięci masowej wdroży nowy region, musisz poczekać na aktualizację aplikacji, aby uzyskać dostęp do nowego regionu. Jeśli Twoja aplikacja pamięci masowej nie obsługuje wszystkich regionów przechowywania myQNAPcloud Object na swoich predefiniowanych listach regionów, skontaktuj się z dostawcą aplikacji (nie z QNAP), aby poprosić o wsparcie.
- Aplikacje, które pozwalają jedynie wprowadzić zestaw kluczy API, a następnie oferują wszystkie zasobniki na Twoim koncie. Te aplikacje zapewniają elastyczność, ale wymagają pewnych automatycznych przekierowań na poziomie HTTP.
Replikacja obiektów za pomocą myQNAPcloud Object S3 API
GET Object Tagging
myQNAPcloud Object obsługuje funkcjonalność pobierania zestawu tagów obiektu, gdy obiekt:
- Nie ma żadnych tagów
- Ma tagi
Gdy obiekt nie ma żadnych tagów
Kod:
GET https://s3.myqnapcloud.io/my_bucket/Test-object1.txt?tagging
Treść odpowiedzi:
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<Tagging>
<TagSet></TagSet>
</Tagging>
Kod:
Status 200 OK
Gdy obiekt ma tagi
Kod:
GET https://s3.myqnapcloud.io/my_bucket/Test-object2.pdf?tagging
Treść odpowiedzi:
Kod:
<!--?xml version="1.0" encoding="UTF-8"?-->
<Tagging>
<TagSet>
<Tag>
<Key>key2</Key>
<Value>value2</Value>
</Tag>
<Tag>
<Key>key1</Key>
<Value>value1</Value>
</Tag>
</TagSet>
</Tagging>
PUT Object Tagging
myQNAPcloud Object obsługuje funkcjonalność dla:
- Dodawania wartości tagu istniejącego obiektu w zasobniku
- Dołączania wartości tagu istniejącego obiektu w zasobniku
Dodawanie wartości tagu istniejącego obiektu w zasobniku
Kod:
PUT https://s3.myqnapcloud.io/my_bucket/Test-object3.pdf?tagging
Content-Type: text/xml
Treść odpowiedzi:
Kod:
<Tagging xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>tag1</Key>
<Value>value1</Value>
</Tag>
</TagSet>
</Tagging>
Dołączanie wartości tagu istniejącego obiektu w zasobniku
W tym przykładzie istniejący obiekt ma już wartość tagu „key5” – „value5”. Możesz dołączyć nowe pary tagów wraz z istniejącą parą.
Kod:
PUT https://s3.myqnapcloud.io/my_bucket/Test-object4.jpg?tagging
Content-Type: text/xml
Treść odpowiedzi:
Kod:
<Tagging xmlns="http://s3.myqnapcloud.io/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>key5</Key>
<Value>value5</Value>
</Tag>
<Tag>
<Key>key6</Key>
<Value>value6</Value>
</Tag>
</TagSet>
</Tagging>
Kod:
Status 200 OK
Aby umieścić tagi innej wersji, użyj parametru zapytania `versionId`.
DELETE Tagowanie obiektu
Spowoduje to usunięcie całego zestawu tagów z określonego obiektu.
Kod:
DELETE https://s3.myqnapcloud.io/my_bucket/Test-object5.pdf?tagging
Treść odpowiedzi:
Kod:
<pusty>
Kod:
Status 204 Brak zawartości
Aby usunąć tagi innej wersji, użyj parametru zapytania `versionId`.
Tagowanie obiektów za pomocą API obiektów myQNAPcloud
GET Tagowanie obiektu
myQNAPcloud Object obsługuje funkcję pobierania zestawu tagów obiektu, gdy obiekt:
- Nie ma żadnych tagów
- Ma tagi
Gdy obiekt nie ma żadnych tagów
Kod:
GET
https://s3.myqnapcloud.io/my_bucket/Test-object1.txt?tagging
Treść odpowiedzi:
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<Tagging>
<TagSet></TagSet>
</Tagging>
Kod:
Status 200 OK
Gdy obiekt ma tagi
Kod:
GET
https://s3.myqnapcloud.io/my_bucket/Test-object2.pdf?tagging
Treść odpowiedzi:
Kod:
<!--?xml version="1.0" encoding="UTF-8"?-->
<Tagging>
<TagSet>
<Tag>
<Key>key2</Key>
<Value>value2</Value>
</Tag>
<Tag>
<Key>key1</Key>
<Value>value1</Value>
</Tag>
</TagSet>
</Tagging>
PUT Tagowanie obiektu
myQNAPcloud Object obsługuje funkcje:
- Dodawanie wartości tagu istniejącego obiektu w zasobniku
- Dołączanie wartości tagu istniejącego obiektu w zasobniku
Dodawanie wartości tagu istniejącego obiektu w zasobniku
Kod:
PUT
https://s3.myqnapcloud.io/my_bucket/Test-object3.pdf?tagging
Content-Type: text/xml
Treść odpowiedzi:
Kod:
<Tagging xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>tag1</Key>
<Value>value1</Value>
</Tag>
</TagSet>
</Tagging>
Dołączanie wartości tagu istniejącego obiektu w zasobniku
W tym przykładzie istniejący obiekt ma już wartość tagu „key5” – „value5”. Możesz dołączyć nową parę tagów wraz z istniejącą parą.
Kod:
PUT
https://s3.myqnapcloud.io/my_bucket/Test-object4.jpg?tagging
Content-Type: text/xml
Treść odpowiedzi:
Kod:
<Tagging xmlns="http://s3.myqnapcloud.io/doc/2006-03-01/">
<TagSet>
<Tag>
<Key>key5</Key>
<Value>value5</Value>
</Tag>
<Tag>
<Key>key6</Key>
<Value>value6</Value>
</Tag>
</TagSet>
</Tagging>
Kod:
Status 200 OK
Aby umieścić tagi innej wersji, użyj parametru zapytania `versionId`.
DELETE Tagowanie obiektu
Spowoduje to usunięcie całego zestawu tagów z określonego obiektu.
Kod:
DELETE
https://s3.myqnapcloud.io/my_bucket/Test-object5.pdf?tagging
Treść odpowiedzi:
Kod:
<pusty>
Kod:
Status 204 Brak zawartości
Aby usunąć tagi innej wersji, użyj parametru zapytania `versionId`.
Dalsze czytanie
Biorąc pod uwagę jego kompatybilność z AWS S3, oficjalna dokumentacja AWS dla S3 służy jako uzupełniające źródło informacji podczas pracy z myQNAPcloud Object. Szczegóły dotyczące wersji API 2006-03-01 znajdują się w Amazon Simple Storage Service API Reference:
Amazon Simple Storage Service API Reference