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.name
bucket-name
a pak na bucket-name-2
bucket.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:
Nahradí neplatné znaky znakem _.
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.
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:
- Příklady: Nahrání
- Příklady: Stažení
- Příklady: Kopírování mezi účty
- Příklady: Synchronizovat
- Příklady: Google Cloud Storage
- Příklady: Soubory Azure
- Kurz: Migrace místních dat do cloudového úložiště pomocí AzCopy
Informace o konfiguraci nastavení, optimalizaci výkonu a řešení potíží najdete v těchto článcích: