Kopírování dat z AmazonU S3 do Azure Storage pomocí AzCopy

AzCopy je nástroj příkazového řádku, pomocí kterého můžete kopírovat objekty blob nebo soubory do nebo z účtu úložiště. Tento článek vám pomůže kopírovat objekty, adresáře a kontejnery z Amazon Web Services (AWS) S3 do služby Azure Blob Storage pomocí AzCopy.

Poznámka:

AzCopy podporuje standardní adresy URL ve stylu hostované virtuálním prostředím nebo adresy URL ve stylu cesty definované službou AWS. Například: https://bucket.s3.amazonaws.com nebo https://s3.amazonaws.com/bucket.

Výběr způsobu zadávání přihlašovacích údajů pro autorizaci

  • K autorizaci se službou Azure Storage použijte ID Microsoft Entra nebo token sdíleného přístupového podpisu (SAS).

  • K autorizaci s AWS S3 použijte přístupový klíč AWS a tajný přístupový klíč.

Autorizace se službou Azure Storage

Přečtěte si článek Začínáme s nástrojem AzCopy a stáhněte si AzCopy a zvolte, jak službě úložiště poskytnete přihlašovací údaje pro autorizaci.

Poznámka:

Příklady v tomto článku předpokládají, že jste pomocí příkazu ověřili svou identitu AzCopy login . AzCopy pak použije váš účet Microsoft Entra k autorizaci přístupu k datům v úložišti objektů blob.

Pokud byste raději k autorizaci přístupu k datům objektů blob použili token SAS, můžete tento token připojit k adrese URL prostředku v každém příkazu AzCopy.

Například: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>.

Autorizace s využitím AWS S3

Shromážděte přístupový klíč AWS a tajný přístupový klíč a nastavte tyto proměnné prostředí:

Operační systém Příkaz
Windows Powershell:$env:AWS_ACCESS_KEY_ID=<access-key>
$env:AWS_SECRET_ACCESS_KEY=<secret-access-key>
V příkazovém řádku použijte: 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>

Tyto přihlašovací údaje slouží k vygenerování předem podepsaných adres URL, které slouží ke kopírování objektů.

Kopírování objektů, adresářů a kontejnerů

AzCopy používá rozhraní URL Put Block From API, takže se data kopírují přímo mezi AWS S3 a servery úložiště. Tyto operace kopírování nepoužívají šířku pásma sítě vašeho počítače.

Tip

Příklady v této části ohraničují argumenty cesty s jednoduchými uvozovkami ('). Použití jednoduchých uvozovek ve všech příkazových prostředích s výjimkou prostředí Windows Command Shell (cmd.exe). Pokud používáte prostředí Windows Command Shell (cmd.exe), uzavřete argumenty cesty do dvojitých uvozovek ("") místo jednoduchých uvozovek ('' ).

Tyto příklady také pracují s účty, které mají hierarchický obor názvů. Přístup k více protokolům ve službě Data Lake Storage umožňuje pro tyto účty použít stejnou syntaxi adresy URL (blob.core.windows.net).

Zkopírování objektu

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Poznámka:

Příklady v tomto článku používají adresy URL stylu cesty pro kontejnery AWS S3 (například: http://s3.amazonaws.com/<bucket-name>).

Můžete také použít adresy URL virtuálního hostovaného stylu (například: http://bucket.s3.amazonaws.com).

Další informace o virtuálním hostování kontejnerů najdete v tématu Virtuální hostování kontejnerů.

Kopírování adresáře

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Poznámka:

Tento příklad připojí --recursive příznak ke kopírování souborů ve všech podadresérích.

Zkopírování obsahu adresáře

Obsah adresáře můžete zkopírovat bez zkopírování samotného adresáře pomocí zástupného znaku (*).

Syntaxe

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

Příklad

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

Kopírování kontejneru

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Kopírování všech kontejnerů ve všech oblastech

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Kopírování všech kontejnerů v konkrétní oblasti S3

Pro účty, které mají hierarchický obor názvů, použijte stejnou syntaxi adresy URL (blob.core.windows.net).

Syntaxe

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

Příklad

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

Zpracování rozdílů v pravidlech pojmenování objektů

AWS S3 má v porovnání s kontejnery objektů blob v Azure jinou sadu konvencí vytváření názvů kontejnerů. Můžete si o nich přečíst tady. Pokud se rozhodnete zkopírovat skupinu kontejnerů do účtu úložiště Azure, operace kopírování může selhat kvůli rozdílům v pojmenování.

AzCopy zpracovává dva z nejběžnějších problémů, které mohou nastat; kontejnery obsahující tečky a kontejnery, které obsahují po sobě jdoucí pomlčky. Názvy kontejnerů AWS S3 můžou obsahovat tečky a po sobě jdoucí pomlčky, ale kontejner v Azure nemůže. AzCopy nahrazuje tečky pomlčkami a po sobě jdoucími spojovníky číslem, které představuje počet po sobě jdoucích pomlček (například kontejner s názvem my----bucket se stane my-4-bucket.

Také když AzCopy kopíruje soubory, kontroluje kolize názvů a pokusí se je vyřešit. Pokud jsou například kontejnery s názvem bucket-name a azcopy nejprve přeloží kontejner s názvem bucket.namebucket-name a pak na bucket-name-2bucket.name.

Zpracování rozdílů v metadatech objektů

AWS S3 a Azure umožňují různé sady znaků v názvech klíčů objektů. O znacích, které AWS S3 používá , si můžete přečíst tady. Klíče objektů blob na straně Azure odpovídají pravidlům pojmenování identifikátorů jazyka C#.

Jako součást příkazu AzCopy copy můžete zadat hodnotu volitelného příznaku s2s-handle-invalid-metadata , který určuje, jak chcete zpracovávat soubory, ve kterých metadata souboru obsahují nekompatibilní názvy klíčů. Následující tabulka popisuje každou hodnotu příznaku.

Hodnota příznaku Popis
ExcludeIfInvalid (Výchozí možnost) Metadata nejsou zahrnuta do přenášeného objektu. AzCopy zaznamená upozornění.
FailIfInvalid Objekty se nekopírují. AzCopy zaznamená chybu a zahrne tuto chybu do počtu selhání, který se zobrazí v souhrnu přenosu.
RenameIfInvalid AzCopy vyřeší neplatný klíč metadat a zkopíruje objekt do Azure pomocí dvojice hodnot klíče přeložených metadat. Pokud chcete přesně zjistit, jaké kroky AzCopy provede k přejmenování klíčů objektů, přečtěte si část Jak AzCopy přejmenuje klíče objektů níže. Pokud Nástroj AzCopy nemůže klíč přejmenovat, objekt se nezkopíruje.

Přejmenování klíčů objektů nástrojem AzCopy

AzCopy provádí tyto kroky:

  1. Nahradí neplatné znaky znakem _.

  2. Přidá řetězec rename_ na začátek nového platného klíče.

    Tento klíč se použije k uložení původní hodnoty metadat.

  3. Přidá řetězec rename_key_ na začátek nového platného klíče. Tento klíč se použije k uložení původního neplatného klíče metadat. Tento klíč můžete použít k pokusu o obnovení metadat na straně Azure, protože klíč metadat je zachován jako hodnota ve službě Blob Storage.

Další kroky

Další příklady najdete v těchto článcích:

Informace o konfiguraci nastavení, optimalizaci výkonu a řešení potíží najdete v těchto článcích: