Dela via


Kopiera data från Amazon S3 till Azure Storage med hjälp av AzCopy

AzCopy är ett kommandoradsverktyg som du kan använda för att kopiera blobar eller filer till eller från ett lagringskonto. Den här artikeln hjälper dig att kopiera objekt, kataloger och bucketar från Amazon Web Services (AWS) S3 till Azure Blob Storage med hjälp av AzCopy.

Anmärkning

AzCopy stöder standard-URL:er i virtuellt värd-format eller sökvägsformat som definieras av AWS. Till exempel: https://bucket.s3.amazonaws.com eller https://s3.amazonaws.com/bucket.

Välj hur du ska ange autentiseringsuppgifter

  • Om du vill auktorisera med Azure Storage använder du Microsoft Entra-ID eller en SAS-token (Signatur för delad åtkomst).

  • Om du vill auktorisera med AWS S3 använder du en AWS-åtkomstnyckel och en hemlig åtkomstnyckel.

Auktorisera med Azure Storage

I artikeln Kom igång med AzCopy kan du ladda ned AzCopy och välja hur du ska ange autentiseringsuppgifter för auktorisering till lagringstjänsten.

Anmärkning

Exemplen i den här artikeln förutsätter att du autentiserar din identitet genom att använda kommandot AzCopy login. AzCopy använder sedan ditt Microsoft Entra-konto för att auktorisera åtkomst till data i Blob Storage.

Om du hellre vill använda en SAS-token för att auktorisera åtkomst till blobdata kan du lägga till den token till resurs-URL:en i varje AzCopy-kommando.

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

Auktorisera med AWS S3

Samla in AWS-åtkomstnyckeln och den hemliga åtkomstnyckeln och ange sedan följande miljövariabler:

Operativsystem Befallning
Windows PowerShell:$env:AWS_ACCESS_KEY_ID=<access-key>
$env:AWS_SECRET_ACCESS_KEY=<secret-access-key>
I en kommandoprompt använder du: 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>

Dessa autentiseringsuppgifter används för att generera försignerade URL:er som används för att kopiera objekt.

Kopiera objekt, kataloger och bucketar

AzCopy använder API:et Put Block From URL , så data kopieras direkt mellan AWS S3 och lagringsservrar. Dessa kopieringsåtgärder använder inte datorns nätverksbandbredd.

Tips/Råd

Exemplen i det här avsnittet omger sökvägsargument med enkla citattecken (''). Använd enkla citattecken i alla kommandogränssnitt förutom Windows Command Shell (cmd.exe). Om du använder ett Windows-kommandogränssnitt (cmd.exe) omger du sökvägsargument med dubbla citattecken ("") i stället för enkla citattecken ('').

De här exemplen fungerar också med konton som har ett hierarkiskt namnområde. Med åtkomst med flera protokoll i Data Lake Storage kan du använda samma URL-syntax (blob.core.windows.net) på dessa konton.

Kopiera ett objekt

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Anmärkning

Exempel i den här artikeln använder URL:er i sökvägsformat för AWS S3-bucketar (till exempel: http://s3.amazonaws.com/<bucket-name>).

Du kan också använda url:er i virtuell värdbaserad stil (till exempel: http://bucket.s3.amazonaws.com).

Mer information om virtuell värd för bucketar finns i Virtuell värd för bucketar.

Kopiera en katalog

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Anmärkning

I det --recursive här exemplet läggs flaggan till för att kopiera filer i alla underkataloger.

Kopiera innehållet i en katalog

Du kan kopiera innehållet i en katalog utan att kopiera själva katalogen med hjälp av jokertecknet (*).

Syntax

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

Exempel

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

Kopiera en bucket

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Kopiera alla buckets i alla regioner

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Kopiera alla buckets i en specifik S3-region

Använd samma URL-syntax (blob.core.windows.net) för konton som har ett hierarkiskt namnområde.

Syntax

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

Exempel

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

Hantera skillnader i namngivningsregler för objekt

AWS S3 använder en annan uppsättning namngivningskonventioner för bucketnamn jämfört med Azure-blobcontainrar. Du kan läsa om dem här. Om du väljer att kopiera en grupp bucketar till ett Azure Storage-konto kan kopieringsåtgärden misslyckas på grund av namngivningsskillnader.

AzCopy hanterar två av de vanligaste problemen som kan uppstå: bucketar som innehåller perioder och bucketar som innehåller bindestreck i följd. Namn på AWS S3-buckets kan innehålla punkter och följande bindestreck, men en container i Azure kan inte det. AzCopy ersätter punkter med bindestreck och på varandra följande bindestreck med ett tal som representerar antalet bindestreck i följd (till exempel blir my----bucketen bucket med namnet my-4-bucket ).

När AzCopy kopierar över filer söker det också efter namngivningskollisioner och försöker lösa dem. Om det till exempel finns hinkar med namnen bucket-name och bucket.name, löser AzCopy en hink med namnet bucket.name först till bucket-name och sedan till bucket-name-2.

Hantera skillnader i objektmetadata

AWS S3 och Azure tillåter olika uppsättningar tecken i namnen på objektnycklarna. Du kan läsa om de tecken som AWS S3 använder här. På Azure-sidan följer blobobjektnycklarna namngivningsreglerna för C#-identifierare.

Som en del av ett AzCopy-kommando copy kan du ange ett värde för den valfria s2s-handle-invalid-metadata flaggan som anger hur du vill hantera filer där metadata för filen innehåller inkompatibla nyckelnamn. I följande tabell beskrivs varje flaggvärde.

Flaggvärde Beskrivning
UteslutOmOgiltig (Standardalternativ) Metadata ingår inte i det överförda objektet. AzCopy loggar en varning.
MisslyckasOmOgiltig Objekt kopieras inte. AzCopy loggar ett fel och inkluderar det felet i det felaktiga antalet som visas i överföringssammanfattningen.
RenameIfInvalid AzCopy löser den ogiltiga metadatanyckeln och kopierar objektet till Azure med hjälp av det lösta nyckelvärdeparet för metadata. Information om exakt vilka steg AzCopy vidtar för att byta namn på objektnycklar finns i avsnittet Så byter AzCopy namn på objektnycklar . Om AzCopy inte kan byta namn på nyckeln kopieras inte objektet.

Så byter AzCopy namn på objektnycklar

AzCopy utför följande steg:

  1. Ersätter ogiltiga tecken med '_'.

  2. Lägger till strängen rename_ i början av en ny giltig nyckel.

    Den här nyckeln används för att spara det ursprungliga metadatavärdet.

  3. Lägger till strängen rename_key_ i början av en ny giltig nyckel. Den här nyckeln används för att spara den ursprungliga ogiltiga nyckeln för metadata. Du kan använda den här nyckeln för att försöka återställa metadata på Azure-sidan eftersom metadatanyckeln bevaras som ett värde i Blob Storage-tjänsten.

Ange käll- och måltyper

AzCopy använder parametern --from-to för att explicit definiera käll- och målresurstyperna när automatisk identifiering kan misslyckas, till exempel i piping-scenarier eller emulatorer. Den här parametern hjälper AzCopy att förstå kontexten för överföringen och optimera därefter. Ange den här parametern till S3Blob för att uttryckligen ange att kommandot kopierar från Amazon S3 till Azure Blob Storage.

Nästa steg

Hitta fler exempel i de här artiklarna:

Se de här artiklarna om du vill konfigurera inställningar, optimera prestanda och felsöka problem: