Kopiowanie danych z usługi Amazon S3 do usługi Azure Storage przy użyciu narzędzia AzCopy

AzCopy to narzędzie wiersza polecenia, przy użyciu którego można kopiować obiekty blob lub pliki do lub z konta magazynu. Ten artykuł ułatwia kopiowanie obiektów, katalogów i zasobników z usług Amazon Web Services (AWS) S3 do usługi Azure Blob Storage przy użyciu narzędzia AzCopy.

Uwaga

Narzędzie AzCopy obsługuje standardowe adresy URL typu hostowanego w trybie wirtualnym lub ścieżki zdefiniowane przez platformę AWS. Na przykład: https://bucket.s3.amazonaws.com lub https://s3.amazonaws.com/bucket.

Wybór sposobu dostarczania poświadczeń autoryzacji

  • Aby autoryzować usługę Azure Storage, użyj identyfikatora Entra firmy Microsoft lub tokenu sygnatury dostępu współdzielonego (SAS).

  • Aby autoryzować usługę AWS S3, użyj klucza dostępu platformy AWS i klucza dostępu tajnego.

Autoryzowanie za pomocą usługi Azure Storage

Zapoznaj się z artykułem Wprowadzenie do narzędzia AzCopy, aby pobrać narzędzie AzCopy , i wybierz sposób podawania poświadczeń autoryzacji do usługi magazynu.

Uwaga

W przykładach w tym artykule założono, że tożsamość została uwierzytelniona przy użyciu AzCopy login polecenia . Narzędzie AzCopy następnie używa konta Microsoft Entra do autoryzowania dostępu do danych w usłudze Blob Storage.

Jeśli wolisz użyć tokenu SAS do autoryzowania dostępu do danych obiektów blob, możesz dołączyć ten token do adresu URL zasobu w każdym poleceniu narzędzia AzCopy.

Na przykład: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>.

Autoryzowanie za pomocą usługi AWS S3

Zbierz klucz dostępu platformy AWS i klucz dostępu wpisu tajnego, a następnie ustaw następujące zmienne środowiskowe:

System operacyjny Polecenie
Windows Powershell:$env:AWS_ACCESS_KEY_ID=<access-key>
$env:AWS_SECRET_ACCESS_KEY=<secret-access-key>
W wierszu polecenia użyj polecenia: set AWS_ACCESS_KEY_ID=<access-key>
set AWS_SECRET_ACCESS_KEY=<secret-access-key>
Linux export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>
macOS export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>

Te poświadczenia służą do generowania wstępnie podpisanych adresów URL używanych do kopiowania obiektów.

Kopiowanie obiektów, katalogów i zasobników

Narzędzie AzCopy używa interfejsu API Put Block From URL , więc dane są kopiowane bezpośrednio między usługami AWS S3 i serwerami magazynu. Te operacje kopiowania nie korzystają z przepustowości sieci komputera.

Napiwek

Przykłady w tej sekcji ująć argumenty ścieżki za pomocą cudzysłowów pojedynczych (""). Używaj pojedynczych cudzysłowów we wszystkich powłokach poleceń z wyjątkiem powłoki poleceń systemu Windows (cmd.exe). Jeśli używasz powłoki poleceń systemu Windows (cmd.exe), ujęć argumenty ścieżki z podwójnymi cudzysłowami ("") zamiast pojedynczych cudzysłowów ('').

Te przykłady współpracują również z kontami, które mają hierarchiczną przestrzeń nazw. Dostęp do wielu protokołów w usłudze Data Lake Storage umożliwia korzystanie z tej samej składni adresu URL (blob.core.windows.net) na tych kontach.

Kopiowanie obiektu

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Składnia

azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'

Przykład

azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'

Uwaga

Przykłady w tym artykule używają adresów URL w stylu ścieżki dla zasobników usługi AWS S3 (na przykład: http://s3.amazonaws.com/<bucket-name>).

Możesz również użyć wirtualnych adresów URL w stylu hostowanym (na przykład: http://bucket.s3.amazonaws.com).

Aby dowiedzieć się więcej na temat wirtualnego hostowania zasobników, zobacz Virtual Hosting of Buckets (Hosting wirtualny zasobników).

Kopiowanie katalogu

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Składnia

azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Przykład

azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Uwaga

W tym przykładzie flaga dołącza flagę do kopiowania --recursive plików we wszystkich katalogach podrzędnych.

Kopiowanie zawartości katalogu

Zawartość katalogu można skopiować bez kopiowania samego katalogu, używając symbolu wieloznacznego (*).

Składnia

azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Przykład

azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Kopiowanie zasobnika

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Składnia

azcopy copy 'https://s3.amazonaws.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive=true

Przykład

azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true

Kopiowanie wszystkich zasobników we wszystkich regionach

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Składnia

azcopy copy 'https://s3.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Przykład

azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Kopiowanie wszystkich zasobników w określonym regionie S3

Użyj tej samej składni adresu URL (blob.core.windows.net) dla kont, które mają hierarchiczną przestrzeń nazw.

Składnia

azcopy copy 'https://s3-<region-name>.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Przykład

azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Obsługa różnic w regułach nazewnictwa obiektów

Usługa AWS S3 ma inny zestaw konwencji nazewnictwa nazw zasobników w porównaniu z kontenerami obiektów blob platformy Azure. Możesz je przeczytać tutaj. Jeśli zdecydujesz się skopiować grupę zasobników do konta usługi Azure Storage, operacja kopiowania może zakończyć się niepowodzeniem z powodu różnic nazw.

Narzędzie AzCopy obsługuje dwa typowe problemy, które mogą wystąpić; zasobniki zawierające kropki i zasobniki zawierające kolejne łączniki. Nazwy zasobników usługi AWS S3 mogą zawierać kropki i kolejne łączniki, ale kontener na platformie Azure nie może. Narzędzie AzCopy zastępuje kropki łącznikami i kolejnymi łącznikami liczbą reprezentującą liczbę kolejnych łączników (na przykład: zasobnik o nazwie my----bucket staje się my-4-bucket.

Ponadto, gdy narzędzie AzCopy kopiuje pliki, sprawdza kolizje nazw i próbuje je rozwiązać. Jeśli na przykład istnieją zasobniki o nazwie bucket-name i , narzędzie AzCopy rozpozna zasobnik o nazwie bucket.name najpierw na bucket-name , a następnie na bucket-name-2bucket.name.

Obsługa różnic w metadanych obiektu

Usługi AWS S3 i Azure umożliwiają używanie różnych zestawów znaków w nazwach kluczy obiektów. Możesz przeczytać o znakach używanych przez usługę AWS S3 tutaj. Po stronie platformy Azure klucze obiektów blob są zgodne z regułami nazewnictwa identyfikatorów języka C#.

W ramach polecenia AzCopy copy można podać wartość opcjonalną flagę s2s-handle-invalid-metadata określającą sposób obsługi plików, w których metadane pliku zawierają niezgodne nazwy kluczy. W poniższej tabeli opisano każdą wartość flagi.

Wartość flagi opis
ExcludeIfInvalid (Opcja domyślna) Metadane nie są uwzględniane w przesłanym obiekcie. Narzędzie AzCopy rejestruje ostrzeżenie.
FailIfInvalid Obiekty nie są kopiowane. Narzędzie AzCopy rejestruje błąd i zawiera ten błąd w liczbie nieudanych operacji wyświetlanych w podsumowaniu transferu.
RenameIfInvalid Narzędzie AzCopy rozpoznaje nieprawidłowy klucz metadanych i kopiuje obiekt na platformę Azure przy użyciu pary rozpoznanych wartości klucza metadanych. Aby dowiedzieć się dokładnie, jakie kroki wykonuje narzędzie AzCopy w celu zmiany nazwy kluczy obiektów, zobacz sekcję How AzCopy renames object keys (Jak narzędzie AzCopy zmienia nazwy kluczy obiektów) poniżej. Jeśli narzędzie AzCopy nie może zmienić nazwy klucza, obiekt nie zostanie skopiowany.

Jak narzędzie AzCopy zmienia nazwę kluczy obiektów

Narzędzie AzCopy wykonuje następujące kroki:

  1. Zamienia nieprawidłowe znaki na '_'.

  2. Dodaje ciąg rename_ na początku nowego prawidłowego klucza.

    Ten klucz zostanie użyty do zapisania oryginalnej wartości metadanych.

  3. Dodaje ciąg rename_key_ na początku nowego prawidłowego klucza. Ten klucz zostanie użyty do zapisania oryginalnego klucza nieprawidłowego metadanych. Możesz użyć tego klucza, aby spróbować odzyskać metadane po stronie platformy Azure, ponieważ klucz metadanych jest zachowywany jako wartość w usłudze Blob Storage.

Następne kroki

Więcej przykładów można znaleźć w następujących artykułach:

Zobacz następujące artykuły, aby skonfigurować ustawienia, zoptymalizować wydajność i rozwiązać problemy: