Jak uzyskać dostęp do Object Storage na NSIS Cloud za pomocą boto3
W tym artykule dowiesz się, jak uzyskać dostęp do Object Storage na NSIS Cloud przy użyciu biblioteki Python boto3.
Zakres artykułu
Wymagania wstępne
Nr 1 Konto
Musisz posiadać konto hostingowe na NSIS Cloud z dostępem do interfejsu Horizon: https://horizon.cloudferro.com/.
Nr 2 Wygenerowane dane uwierzytelniające EC2
Musisz wygenerować dane uwierzytelniające EC2. Więcej informacji znajdziesz tutaj: Jak wygenerować poświadczenia EC2 i zarządzać nimi na NSIS Cloud
Nr 3 Komputer lub maszyna wirtualna z Linuxem lub Windowsem
Artykuł został przygotowany dla systemów Ubuntu 22.04 oraz Windows Server 2022. Inne systemy operacyjne mogą działać poprawnie, ale nie są objęte zakresem tego artykułu i mogą wymagać dostosowania podanych poleceń.
Z artykułu możesz korzystać zarówno na maszynach wirtualnych z Linuxem lub Windowsem, jak i na komputerze lokalnym z jednym z tych systemów.
Aby utworzyć nową maszynę wirtualną hostowaną w chmurze NSIS Cloud, pomocne mogą być następujące artykuły:
Nr 4 Dodatkowe biblioteki Pythona
Poniżej opisano, jak zainstalować Python 3 oraz bibliotekę boto3 w systemach Ubuntu i Windows.
Ubuntu 22.04: użycie virtualenvwrapper i pip
W Pythonie zazwyczaj korzysta się ze środowisk wirtualnych, opisanych w artykule: Jak zainstalować Python virtualenv lub virtualenvwrapper na NSIS Cloud.
Jeśli Twoje środowisko nazywa się managing-files, możesz wejść do niego poleceniem workon, a następnie zainstalować boto3:
workon managing-files
pip3 install boto3
Ubuntu 22.04: użycie apt
Jeśli nie potrzebujesz środowiska wirtualnego i chcesz zainstalować boto3 globalnie, możesz użyć apt. Poniższe polecenie zainstaluje zarówno Python 3, jak i bibliotekę boto3:
sudo apt install python3 python3-boto3
Windows Server 2022
Jeśli korzystasz z systemu Windows, zapoznaj się z tym artykułem: Jak zainstalować Boto3 w Windows na NSIS
Terminologia: kontenery a buckety
Istnieją dwa interfejsy Object Storage:
Swift / Horizon – interfejs Horizon korzysta z API Swift, w którym najwyższy poziom przestrzeni nazw nazywany jest kontenerem.
S3 / boto3 – endpoint zgodny z S3 (używany przez boto3 oraz inne narzędzia S3) wykorzystuje buckety jako najwyższy poziom przestrzeni nazw.
Z technicznego punktu widzenia kontenery i buckety pełnią podobną rolę koncepcyjną (oba są najwyższym poziomem przestrzeni nazw w Object Storage), jednak nie są tym samym zasobem i są zarządzane za pomocą różnych interfejsów API.
Kontener utworzony w interfejsie Horizon nie pojawi się automatycznie jako bucket S3 dla boto3, a bucket utworzony przy użyciu boto3 nie będzie widoczny jako kontener w Horizon.
W tym artykule stosujemy następującą terminologię:
bucket – gdy mówimy o S3 i bibliotece boto3,
kontener – gdy odnosimy się do obiektów Swift widocznych w Horizon.
Jak korzystać z udostępnionych przykładów?
Każdy z przedstawionych przykładów może służyć jako samodzielny fragment kodu. Powinieneś być w stanie:
wpisać kod w edytorze tekstu,
zdefiniować odpowiednie wartości zmiennych,
zapisać go jako plik oraz
uruchomić.
Możesz również traktować te przykłady jako punkt wyjścia do tworzenia własnych skryptów.
Informacja
W wielu przykładach używamy nazw bucketów boto3 lub boto3_11_12_2025_09_31 jako nazw przykładowych.
Jeśli nie posiadasz bucketów o takich nazwach, masz dwie możliwości:
utworzyć bucket o jednej z tych nazw (zob. Tworzenie bucketa), lub
zastąpić nazwy przykładowe nazwą dowolnego istniejącego bucketa, wyświetloną w przykładzie Listowanie bucketów.
Każdy przykład kodu składa się z trzech części:
- niebieski prostokąt Import wymaganych bibliotek
Standardową praktyką w Pythonie jest importowanie wszystkich bibliotek, które będą później wykorzystywane w kodzie. W tym przypadku importowana jest biblioteka boto3, a czasami również inne biblioteki, jeśli są potrzebne.
- czerwony prostokąt Definicja parametrów wejściowych
Typowe wywołanie biblioteki boto3 wygląda następująco:
s3 = boto3.resource(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
- zielony prostokąt Wywołanie boto3
Większość kodu przygotowawczego pozostaje taka sama w kolejnych plikach. Ta ostatnia część to miejsce, w którym wykonywane są konkretne operacje. Czasami będzie to jedna linia kodu, a czasami kilka, często w postaci pętli.
Definicja parametrów i konfiguracja połączenia
W większości przykładów używanych w tym artykule wywołania biblioteki boto3 mają bardzo podobną strukturę. Różnice pomiędzy nimi wynikają głównie z wykonywanej operacji, a nie ze sposobu konfiguracji połączenia.
Poniżej omówiono zmienne, które muszą być zdefiniowane przed uruchomieniem przykładów.
Dla każdego wywołania wymagane są następujące zmienne:
aws_access_key_id – wartość z Wymagań wstępnych Nr 2
aws_secret_access_key – wartość z Wymagań wstępnych Nr 2
endpoint_url – s3.waw4-1.cloudferro.com
region_name – WAW4-1
Inne zmienne mogą być wymagane w zależności od przypadku użycia, na przykład:
bucket_name
path
Upewnij się, że wszystkie wymagane zmienne zostały poprawnie zdefiniowane przed uruchomieniem przykładów.
Uruchamianie kodu Python
Po uzupełnieniu wszystkich wartości zapisz plik z rozszerzeniem .py.
Jednym ze sposobów uruchamiania skryptów Python jest użycie wiersza poleceń. Najpierw przejdź do katalogu, w którym znajduje się plik, a następnie wykonaj polecenie (pamiętaj, aby zastąpić script.py właściwą nazwą pliku):
python3 script.py
python script.py
Upewnij się, że nazwa pliku oraz jego ścieżka zostały przekazane poprawnie. Zwróć szczególną uwagę na spacje oraz inne znaki specjalne.
Ważne
W przedstawionych przykładach, nawet w przypadku potencjalnie destrukcyjnych operacji, nie zostaniesz poproszony o potwierdzenie.
Jeżeli skrypt zapisuje plik, a plik o tej samej nazwie już istnieje w podanej lokalizacji, zostanie on nadpisany.
We wszystkich kolejnych przykładach zakładamy, że odpowiednie buckety oraz obiekty już istnieją, o ile nie zaznaczono inaczej.
Tworzenie bucketa
Aby utworzyć nowy bucket, najpierw wybierz nazwę i przypisz ją do zmiennej bucket_name. W chmurze NSIS Cloud używaj wyłącznie liter, cyfr oraz myślników.
W dalszej części artykułu często używamy nazw boto3 lub boto3_11_12_2025_09_31 jako przykładowych nazw bucketów. Możesz:
utworzyć bucket o jednej z tych nazw i używać go we wszystkich przykładach, lub
wybrać dowolną inną poprawną nazwę bucketa i stosować ją konsekwentnie w kodzie.
boto3_create_bucket.py
import boto3
access_key = ""
secret_key = ""
bucket_name = "boto3"
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
try:
s3 = boto3.resource(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
s3.Bucket(bucket_name).create()
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Pomyślne wykonanie tego kodu nie powinno zwrócić żadnego wyjścia.
Aby sprawdzić, czy bucket został utworzony, możesz między innymi wyświetlić listę bucketów, jak opisano w sekcji Listowanie bucketów poniżej.
Rozwiązywanie problemów podczas tworzenia bucketa
Bucket już istnieje
Jeżeli otrzymasz następujący komunikat:
The following error occurred:
An error occurred (BucketAlreadyExists) when calling the CreateBucket operation: Unknown
oznacza to, że nie możesz użyć tej nazwy, ponieważ bucket o takiej nazwie już istnieje. Wybierz inną nazwę i spróbuj ponownie.
Nieprawidłowe znaki w nazwie
Jeżeli użyjesz niedozwolonych znaków w nazwie bucketa, powinien pojawić się błąd podobny do poniższego:
Invalid bucket name "this bucket should not exist": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$" or be an ARN matching the regex "^arn:(aws).*:(s3|s3-object-lambda):[a-z\-0-9]*:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-.]{1,63}$|^arn:(aws).*:s3-outposts:[a-z\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\-]{1,63}$"
Aby rozwiązać ten problem, wybierz inną nazwę bucketa — w chmurze NSIS Cloud używaj wyłącznie liter, cyfr oraz myślników.
Listowanie bucketów
Ten przykład umożliwia wyświetlenie listy bucketów widocznych dla Twoich danych uwierzytelniających EC2.
boto3_list_buckets.py
import boto3
access_key = ""
secret_key = ""
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
try:
s3 = boto3.client(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
print(s3.list_buckets()["Buckets"])
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Wynikiem powinna być lista słowników, z których każdy zawiera informacje o danym buckecie, zaczynając od jego nazwy.
Jeżeli istnieją już dwa buckety, na przykład my-files oraz my-other-files, wynik może wyglądać następująco:
[{'Name': 'boto3', 'CreationDate': datetime.datetime(2025, 4, 30, 8, 52, 30, 658000, tzinfo=tzutc())},
{'Name': 'mapsrv', 'CreationDate': datetime.datetime(2025, 1, 7, 12, 43, 50, 522000, tzinfo=tzutc())},
{'Name': 'mapsrv-rasters', 'CreationDate': datetime.datetime(2025, 1, 7, 12, 44, 23, 39000, tzinfo=tzutc())}]
Aby uprościć wynik, możesz użyć pętli for i wyświetlić tylko nazwy bucketów, po jednym w każdej linii:
boto3_list_one_by_one.py
import boto3
access_key = ""
secret_key = ""
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
try:
s3 = boto3.client(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
for bucket in s3.list_buckets()["Buckets"]:
print(bucket["Name"])
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Przykładowy wynik działania tego kodu może wyglądać następująco:
boto3
mapsrv
mapsrv-rasters
Jeżeli nie posiadasz żadnych bucketów, wynik będzie pusty.
Sprawdzanie daty utworzenia bucketa
Poniższy przykład umożliwia sprawdzenie daty, w której dany bucket został utworzony. Wprowadź nazwę bucketa do zmiennej bucket_name.
boto3_check_date.py
import boto3
access_key = ""
secret_key = ""
bucket_name = "boto3"
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
try:
s3 = boto3.resource(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
print(s3.Bucket(bucket_name).creation_date)
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Wynik powinien zawierać datę utworzenia bucketa w formacie obiektu datetime w Pythonie:
2024-01-23 14:21:03.070000+00:00
Listowanie plików w buckecie
Aby wyświetlić pliki znajdujące się w buckecie, podaj jego nazwę w zmiennej bucket_name.
boto3_list_files_in_bucket.py
import boto3
access_key = ""
secret_key = ""
bucket_name = "boto3"
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
try:
s3 = boto3.resource(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
bucket = s3.Bucket(bucket_name)
for obj in bucket.objects.filter():
print(obj)
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Wynik powinien zawierać listę Twoich plików, na przykład:
s3.ObjectSummary(bucket_name='my-files', key='some-directory/')
s3.ObjectSummary(bucket_name='my-files', key='some-directory/another-file.txt')
s3.ObjectSummary(bucket_name='my-files', key='some-directory/first-file.txt')
s3.ObjectSummary(bucket_name='my-files', key='some-directory/some-other-directory/')
s3.ObjectSummary(bucket_name='my-files', key='some-directory/some-other-directory/some-other-file.txt')
s3.ObjectSummary(bucket_name='my-files', key='some-directory/some-other-directory/yet-another-file.txt')
s3.ObjectSummary(bucket_name='my-files', key='text-file.txt')
Jeżeli w buckecie nie ma żadnych plików, wynik będzie pusty.
Rozwiązywanie problemów z listowaniem plików w buckecie
Brak dostępu do bucketa
Jeżeli para kluczy nie ma dostępu do wybranego bucketa, powinien pojawić się błąd podobny do:
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListObjects operation: Unknown
W takim przypadku wybierz inny bucket lub inną parę kluczy, jeśli posiadasz taką, która ma dostęp do tego bucketa.
Bucket nie istnieje
Jeżeli wybrany bucket nie istnieje, błąd może wyglądać następująco:
botocore.errorfactory.NoSuchBucket: An error occurred (NoSuchBucket) when calling the ListObjects operation: Unknown
Jeżeli potrzebujesz bucketa o takiej nazwie, spróbuj go utworzyć zgodnie z instrukcją w sekcji Tworzenie bucketa powyżej.
Listowanie plików z konkretnej ścieżki w buckecie
Ten przykład wyświetla tylko obiekty znajdujące się w określonej ścieżce.
Dla zmiennej path obowiązują dwie zasady:
ścieżka musi kończyć się ukośnikiem,
ścieżka nie może zaczynać się ukośnikiem.
Jak zwykle, w zmiennej bucket_name podaj nazwę bucketa.
boto3_list_files_from_path.py
import boto3
access_key = ""
secret_key = ""
bucket_name = "boto3"
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
path = "some-directory/"
try:
s3 = boto3.resource(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
bucket = s3.Bucket(bucket_name)
for obj in bucket.objects.filter(Prefix=path):
print(obj)
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Standardowo powinien pojawić się wynik analogiczny do listowania wszystkich obiektów, jednak jeżeli w wybranej ścieżce nie ma plików, wynik będzie pusty.
Wysyłanie pliku do bucketa
Aby wysłać plik do bucketa, uzupełnij poniższe zmienne:
Nazwa zmiennej |
Co powinna zawierać |
bucket_name |
Nazwa bucketa, do którego chcesz wysłać plik. |
source_file |
Lokalizacja pliku w Twoim lokalnym systemie plików. |
destination_file |
Ścieżka w buckecie, pod którą chcesz wysłać plik. Powinna zawierać tylko litery, cyfry, myślniki i ukośniki. |
Dla zmiennej destination_file obowiązują dwa zastrzeżenia:
Zakończ ją nazwą pliku, który wysyłasz, oraz
Nie zaczynaj ani nie kończ jej ukośnikiem.
Bucket musi już istnieć i być widoczny dla Twoich danych uwierzytelniających EC2. Możesz to zweryfikować, wyświetlając listę bucketów zgodnie z wcześniejszymi przykładami.
Poniżej znajduje się kod:
boto3_upload_files.py
#!/usr/bin/env python3
import boto3
access_key = ""
secret_key = ""
bucket_name = "boto3_11_12_2025_09_31" # zamień na nazwę swojego bucketa
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
source_file = "onefile_11_12_2025_09_45.txt"
destination_file = "onefile_11_12_2025_09_45.txt" # nie zaczynaj od ukośnika
try:
s3 = boto3.client(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
# Wyślij plik
s3.upload_file(source_file, bucket_name, destination_file)
print(f"Wysłano {source_file} do s3://{bucket_name}/{destination_file}")
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Ten skrypt wysyła plik onefile_11_12_2025_09_45.txt z lokalnego katalogu do bucketa o nazwie boto3_11_12_2025_09_31; wysłany plik będzie również nazywał się onefile_11_12_2025_09_45.txt. Przykładowy wynik w Terminalu może wyglądać następująco:
Wysyłanie pliku do bucketa S3 przy użyciu boto3
Kod można łatwo dostosować do innych scenariuszy. Na przykład możesz:
opakować logikę wysyłania w funkcję i wywoływać ją w innych skryptach,
dodać ponowienia (retries) lub bardziej szczegółową obsługę błędów,
wysyłać wiele plików w pętli, lub
zapisywać informację o sukcesie lub niepowodzeniu do pliku logu.
Wszystkie te elementy są poza zakresem tego artykułu, ale można je zbudować na bazie tego samego wzorca.
Rozwiązywanie problemów z wysyłaniem pliku do bucketa
Plik, który chcesz wysłać, nie istnieje
Jeżeli w zmiennej source_file podasz nieistniejący plik, powinien pojawić się błąd podobny do:
The following error occurred:
[Errno 2] No such file or directory: 'here/wrong-file.txt'
Aby rozwiązać problem, podaj poprawną nazwę/ścieżkę pliku i spróbuj ponownie.
Bucket nie istnieje lub nie jest dostępny
Jeżeli bucket nie istnieje lub Twoja para kluczy nie ma do niego dostępu,
boto3 zwykle zwróci błąd AccessDenied lub NoSuchBucket.
W takim przypadku:
wybierz inny bucket, który pojawia się na liście bucketów, lub
utwórz nowy bucket i ponów wysyłanie.
Pobieranie pliku z bucketa
Aby zapisać plik z bucketa na lokalnym dysku, uzupełnij wartości następujących zmiennych i uruchom poniższy kod:
Nazwa zmiennej |
Co powinna zawierać |
bucket_name |
Nazwa bucketa, z którego chcesz pobrać plik. |
source_key |
Ścieżka w buckecie, z której chcesz pobrać plik. |
destination_path |
Ścieżka w lokalnym systemie plików, pod którą chcesz zapisać plik. |
Nie zaczynaj ani nie kończ zmiennej source_key ukośnikiem.
boto3_download_file.py
import boto3
access_key = ""
secret_key = ""
bucket_name = "boto3_11_12_2025_09_31"
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
source_key = "onefile_11_12_2025_09_45.txt"
destination_path = "onefile2.txt"
try:
s3 = boto3.resource(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
bucket = s3.Bucket(bucket_name)
bucket.download_file(source_key, destination_path)
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Pomyślne wykonanie tego kodu nie powinno zwrócić żadnej odpowiedzi.
Rozwiązywanie problemów z pobieraniem pliku z bucketa
Plik nie istnieje w buckecie
Jeżeli wskazany plik nie istnieje w buckecie, powinien pojawić się następujący błąd:
The following error occurred:
An error occurred (404) when calling the HeadObject operation: Not Found
Aby rozwiązać problem, upewnij się, że w pierwszej kolejności został wskazany właściwy plik.
Usuwanie pliku z bucketa
Aby usunąć plik z bucketa, przypisz nazwę bucketa do zmiennej bucket_name oraz pełną ścieżkę pliku do zmiennej path.
Zmienna path jest pełnym kluczem obiektu w buckecie (często określanym jako object key w terminologii S3).
boto3_remove_file_from_bucket.py
import boto3
access_key = ""
secret_key = ""
bucket_name = "boto3_11_12_2025_09_31"
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
path = "onefile_11_12_2025_09_45.txt"
try:
s3 = boto3.resource(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
s3.Object(bucket_name, path).delete()
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Pomyślne wykonanie tego kodu nie powinno zwrócić żadnej odpowiedzi.
Usuwanie bucketa
Aby usunąć bucket, najpierw usuń wszystkie obiekty, które się w nim znajdują. Gdy bucket będzie pusty, przypisz jego nazwę do zmiennej bucket_name i uruchom poniższy kod:
boto3_remove_bucket.py
import boto3
access_key = ""
secret_key = ""
bucket_name = "boto3_11_12_2025_09_31"
endpoint_url = "https://s3.waw4-1.cloudferro.com"
region_name = "WAW4-1"
try:
s3 = boto3.resource(
"s3",
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
region_name=region_name,
)
s3.Bucket(bucket_name).delete()
except Exception as issue:
print("Wystąpił następujący błąd:")
print(issue)
Pomyślne wykonanie tego kodu nie powinno zwrócić żadnej odpowiedzi.
Rozwiązywanie problemów z usuwaniem bucketa
Bucket nie istnieje lub nie jest dostępny dla Twojej pary kluczy
Jeżeli bucket nie istnieje lub nie jest dostępny dla używanej pary kluczy, pojawi się następujący komunikat:
The following error occurred:
An error occurred (NoSuchBucket) when calling the DeleteBucket operation: Unknown
Bucket nie jest pusty
Jeżeli bucket nie jest pusty, nie można go usunąć. W takim przypadku pojawi się komunikat:
The following error occurred:
An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: Unknown
Aby rozwiązać ten problem, usuń wszystkie obiekty z bucketa i spróbuj ponownie.
Rozwiązywanie problemów — informacje ogólne
Brak połączenia z endpointem
Jeżeli nie masz połączenia z endpointem (na przykład z powodu utraty połączenia z Internetem), powinien pojawić się komunikat podobny do poniższego:
The following error occurred:
Could not connect to the endpoint URL: "https://s3.waw4-1.cloudferro.com/"
Jeżeli tak się stanie, upewnij się, że masz aktywne połączenie z Internetem. Jeśli masz pewność, że połączenie działa poprawnie i nie ogłoszono żadnych prac serwisowych dotyczących Object Storage na NSIS Cloud, skontaktuj się z pomocą techniczną: Helpdesk i wsparcie
Nieprawidłowe dane uwierzytelniające
Jeżeli klucz access i/lub secret jest nieprawidłowy, pojawi się komunikat podobny do:
The following error occurred:
An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: Unknown
Wróć do Wymagań wstępnych Nr 2, aby uzyskać prawidłowe dane uwierzytelniające.
Bucket nie istnieje lub nie jest dostępny dla Twojej pary kluczy
Jeżeli bucket wskazany w kodzie nie istnieje lub nie jest dostępny dla używanej pary kluczy, w zależności od wykonywanej operacji mogą pojawić się różne komunikaty.
Poniżej przedstawiono dwa przykłady:
None
The following error occurred:
An error occurred (NoSuchBucket) when calling the DeleteObject operation: Unknown
Co można zrobić dalej?
boto3 może być również używane do dostępu do repozytorium EODATA na maszynach wirtualnych hostowanych na chmurze NSIS Cloud. Więcej informacji znajdziesz tutaj: Jak uzyskać dostęp do EODATA za pomocą boto3 na NSIS
Innym narzędziem umożliwiającym dostęp do Object Storage na chmurze jest s3cmd: Jak uzyskać dostęp do object storage z NSIS za pomocą s3cmd