Adatok másolása az Amazon S3-ból az Azure Storage-ba az AzCopy használatával

Az AzCopy egy parancssori segédprogram, amellyel blobokat és fájlokat másolhat a tárfiókok között. Ez a cikk segít objektumokat, könyvtárakat és gyűjtőket másolni az Amazon Web Services (AWS) S3-ból az Azure Blob Storage-ba az AzCopy használatával.

Megjegyzés:

Az AzCopy támogatja az AWS által definiált szabványos, virtuális üzemeltetésű vagy elérésiút-stílusú URL-címeket. Például: https://bucket.s3.amazonaws.com vagy https://s3.amazonaws.com/bucket.

Az engedélyezési hitelesítő adatok megadására szolgáló mód kiválasztása

  • Az Azure Storage-beli engedélyezéshez használja a Microsoft Entra-azonosítót vagy a közös hozzáférésű jogosultságkód (SAS) jogkivonatot.

  • Az AWS S3-nal való engedélyezéshez használjon AWS hozzáférési kulcsot és titkos hozzáférési kulcsot.

Engedélyezés az Azure Storage-ral

Az AzCopy letöltéséhez tekintse meg az AzCopy használatának első lépéseit ismertető cikket, és adja meg, hogyan adja meg az engedélyezési hitelesítő adatokat a tárolási szolgáltatásnak.

Megjegyzés:

A cikkben szereplő példák feltételezik, hogy a parancs használatával hitelesítette az AzCopy login identitását. Az AzCopy ezután a Microsoft Entra-fiókjával engedélyezi az adatokhoz való hozzáférést a Blob Storage-ban.

Ha inkább SAS-jogkivonatot használ a blobadatokhoz való hozzáférés engedélyezéséhez, akkor ezt a jogkivonatot az egyes AzCopy-parancsok erőforrás-URL-címéhez fűzheti.

For example: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>.

Engedélyezés az AWS S3 használatával

Gyűjtse össze az AWS hozzáférési kulcsát és titkos hozzáférési kulcsát, majd állítsa be az alábbi környezeti változókat:

Operációs rendszer Parancs
Windows 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>

Ezek a hitelesítő adatok az objektumok másolásához használt előre aláírt URL-címek létrehozására szolgálnak.

Objektumok, könyvtárak és gyűjtők másolása

Az AzCopy a Put Block From URL API-t használja, így az adatok közvetlenül az AWS S3 és a tárolókiszolgálók között lesznek másolva. Ezek a másolási műveletek nem használják a számítógép hálózati sávszélességét.

Tipp.

Az ebben a szakaszban szereplő példák az elérési utak argumentumait egyetlen idézőjelekkel ('' ) egészítik ki. A Windows command Shell (cmd.exe) kivételével minden parancshéjban használjon egyetlen idézőjelet. Ha Windows Command Shellt (cmd.exe) használ, az elérésiút-argumentumokat idézőjelek ('' ) helyett dupla idézőjelekkel ("") foglalja össze.

Ezek a példák hierarchikus névtérrel rendelkező fiókokkal is működnek. A Data Lake Storage többprotokollos hozzáférése lehetővé teszi ugyanazon URL-szintaxis (blob.core.windows.net) használatát ezeken a fiókokon.

Objektum másolása

Használja ugyanazt az URL-szintaxist (blob.core.windows.net) a hierarchikus névtérrel rendelkező fiókokhoz.

Szintaxis

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

Example

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

Megjegyzés:

A cikkben szereplő példák elérésiút-stílusú URL-címeket használnak az AWS S3 gyűjtőkhöz (például: http://s3.amazonaws.com/<bucket-name>).

Virtuális üzemeltetett stílusú URL-címeket is használhat (például: http://bucket.s3.amazonaws.com).

A gyűjtők virtuális üzemeltetéséről további információt a Gyűjtők virtuális üzemeltetése című témakörben talál.

Könyvtár másolása

Használja ugyanazt az URL-szintaxist (blob.core.windows.net) a hierarchikus névtérrel rendelkező fiókokhoz.

Szintaxis

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

Example

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

Megjegyzés:

Ez a példa hozzáfűzi a jelölőt az --recursive összes alkönyvtár fájljainak másolásához.

Könyvtár tartalmának másolása

A könyvtár tartalmát anélkül másolhatja, hogy magát a könyvtárat a helyettesítő karakter (*) használatával másolta.

Szintaxis

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

Example

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

Gyűjtő másolása

Használja ugyanazt az URL-szintaxist (blob.core.windows.net) a hierarchikus névtérrel rendelkező fiókokhoz.

Szintaxis

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

Example

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

Az összes gyűjtő másolása az összes régióban

Használja ugyanazt az URL-szintaxist (blob.core.windows.net) a hierarchikus névtérrel rendelkező fiókokhoz.

Szintaxis

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

Example

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

Egy adott S3 régió összes gyűjtőjének másolása

Használja ugyanazt az URL-szintaxist (blob.core.windows.net) a hierarchikus névtérrel rendelkező fiókokhoz.

Szintaxis

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

Example

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

Az objektumelnevezési szabályok különbségének kezelése

Az AWS S3 különböző elnevezési konvenciókkal rendelkezik a gyűjtőnevekhez az Azure Blob-tárolókhoz képest. Ezekről itt olvashat. Ha egy gyűjtőcsoportot egy Azure Storage-fiókba másol, az elnevezési különbségek miatt a másolási művelet meghiúsulhat.

Az AzCopy a két leggyakoribb problémát kezeli, amelyek felmerülhetnek; olyan gyűjtők, amelyek egymást követő kötőjeleket tartalmazó időszakokat és gyűjtőket tartalmaznak. Az AWS S3 gyűjtőnevek tartalmazhatnak pontokat és egymást követő kötőjeleket, de az Azure-beli tárolók nem. Az AzCopy az időszakokat kötőjelekre és egymást követő kötőjelekre cseréli egy olyan számra, amely az egymást követő kötőjelek számát jelöli (például egy elnevezett my----bucket gyűjtő lesz my-4-bucket.

Emellett, ahogy az AzCopy átmásolja a fájlokat, ellenőrzi az elnevezési ütközéseket, és megpróbálja feloldani őket. Ha például vannak olyan gyűjtők, amelyek a névvel bucket-name vannak elnevezve, és bucket.nameaz AzCopy először bucket-namebucket-name-2a következőre old fel egy gyűjtőtbucket.name.

Az objektum metaadatai közötti különbségek kezelése

Az AWS S3 és az Azure különböző karakterkészleteket engedélyez az objektumkulcsok nevében. Az AWS S3 által használt karakterekről itt olvashat. Az Azure-oldalon a blobobjektum-kulcsok megfelelnek a C#-azonosítók elnevezési szabályainak.

Az AzCopy-parancs copy részeként megadhat egy értéket a választható s2s-handle-invalid-metadata jelzőhöz, amely meghatározza, hogyan szeretné kezelni azokat a fájlokat, amelyek metaadatai nem kompatibilis kulcsneveket tartalmaznak. Az alábbi táblázat az egyes jelölőértékeket ismerteti.

Jelölőérték Leírás
ExcludeIfInvalid (Alapértelmezett beállítás) A metaadatok nem szerepelnek az átvitt objektumban. Az AzCopy figyelmeztetést naplóz.
FailIfInvalid Az objektumok nem lesznek másolva. Az AzCopy naplóz egy hibát, és tartalmazza ezt a hibát az átviteli összegzésben megjelenő sikertelen számban.
RenameIfInvalid Az AzCopy feloldja az érvénytelen metaadatkulcsot, és a feloldott metaadatkulcs-érték pár használatával átmásolja az objektumot az Azure-ba. Ha tudni szeretné, hogy az AzCopy pontosan milyen lépéseket tesz az objektumkulcsok átnevezéséhez, tekintse meg az alábbi, Hogyan nevezi át az AzCopy az objektumkulcsokat ? Ha az AzCopy nem tudja átnevezni a kulcsot, akkor az objektum nem lesz másolva.

Az AzCopy átnevezi az objektumkulcsokat

Az AzCopy a következő lépéseket hajtja végre:

  1. Érvénytelen karaktereket a "_" karakterre cserél.

  2. Hozzáadja a sztringet rename_ egy új érvényes kulcs elejéhez.

    Ezzel a kulccsal mentheti az eredeti metaadat-értéket.

  3. Hozzáadja a sztringet rename_key_ egy új érvényes kulcs elejéhez. Ez a kulcs az eredeti metaadatok érvénytelen kulcsának mentésére szolgál. Ezzel a kulccsal megpróbálhatja helyreállítani a metaadatokat az Azure-beli oldalon, mivel a metaadatkulcs értékként megmarad a Blob Storage szolgáltatásban.

Következő lépések

További példákat az alábbi cikkekben talál:

A beállítások konfigurálásához, a teljesítmény optimalizálásához és a problémák elhárításához tekintse meg ezeket a cikkeket: