Delen via


Gegevens kopiëren van Amazon S3 naar Azure Storage met behulp van AzCopy

AzCopy is een opdrachtregelprogramma dat u kunt gebruiken om blobs of bestanden te kopiëren vanuit of naar een opslagaccount. Dit artikel helpt u bij het kopiëren van objecten, mappen en buckets van Amazon Web Services (AWS) S3 naar Azure Blob Storage met behulp van AzCopy.

Notitie

AzCopy biedt ondersteuning voor standaard URL's voor virtuele gehoste of padstijlen die zijn gedefinieerd door AWS. Bijvoorbeeld: https://bucket.s3.amazonaws.com of https://s3.amazonaws.com/bucket.

Choose how you'll provide authorization credentials (Kiezen hoe u autorisatiereferenties opgeeft)

  • Gebruik Microsoft Entra ID of een SAS-token (Shared Access Signature) om te autoriseren met Azure Storage.

  • Als u wilt autoriseren met AWS S3, gebruikt u een AWS-toegangssleutel en een geheime toegangssleutel.

Autoriseren met Azure Storage

Zie het artikel Aan de slag met AzCopy om AzCopy te downloaden en kies hoe u autorisatiereferenties voor de opslagservice opgeeft.

Notitie

In de voorbeelden in dit artikel wordt ervan uitgegaan dat u uw identiteit hebt geverifieerd met behulp van de AzCopy login opdracht. AzCopy gebruikt vervolgens uw Microsoft Entra-account om toegang tot gegevens in Blob Storage te autoriseren.

Als u liever een SAS-token gebruikt om toegang tot blobgegevens te autoriseren, kunt u dat token toevoegen aan de resource-URL in elke AzCopy-opdracht.

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

Autoriseren met AWS S3

Verzamel uw AWS-toegangssleutel en geheime toegangssleutel en stel vervolgens deze omgevingsvariabelen in:

Besturingssysteem Opdracht
Windows Powershell:$env:AWS_ACCESS_KEY_ID=<access-key>
$env:AWS_SECRET_ACCESS_KEY=<secret-access-key>
Gebruik in een opdrachtprompt: 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>

Deze referenties worden gebruikt om vooraf ondertekende URL's te genereren die worden gebruikt voor het kopiëren van objecten.

Objecten, mappen en buckets kopiëren

AzCopy maakt gebruik van de PUT Block From URL-API , zodat gegevens rechtstreeks tussen AWS S3 en opslagservers worden gekopieerd. Deze kopieerbewerkingen maken geen gebruik van de netwerkbandbreedte van uw computer.

Tip

In de voorbeelden in deze sectie worden padargumenten tussen enkele aanhalingstekens (''' ) geplaatst. Gebruik enkele aanhalingstekens in alle opdrachtshells, met uitzondering van de Windows Command Shell (cmd.exe). Als u een Windows Command Shell (cmd.exe) gebruikt, plaatst u padargumenten tussen dubbele aanhalingstekens ("") in plaats van enkele aanhalingstekens ('').

Deze voorbeelden werken ook met accounts met een hiërarchische naamruimte. Met toegang tot meerdere protocollen in Data Lake Storage kunt u dezelfde URL-syntaxis (blob.core.windows.net) voor deze accounts gebruiken.

Een object kopiëren

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Notitie

Voorbeelden in dit artikel maken gebruik van URL's in padstijl voor AWS S3-buckets (bijvoorbeeld: http://s3.amazonaws.com/<bucket-name>).

U kunt ook virtuele url's in gehoste stijl gebruiken (bijvoorbeeld: http://bucket.s3.amazonaws.com).

Zie Virtual Hosting of Buckets voor meer informatie over virtuele hosting van buckets.

Een map kopiëren

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Notitie

In dit voorbeeld wordt de --recursive vlag toegevoegd om bestanden in alle submappen te kopiëren.

De inhoud van een map kopiëren

U kunt de inhoud van een map kopiëren zonder de map zelf te kopiëren met behulp van het jokerteken (*).

Syntaxis

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

Voorbeeld

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

Een bucket kopiëren

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Alle buckets in alle regio's kopiëren

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Alle buckets in een specifieke S3-regio kopiëren

Gebruik dezelfde URL-syntaxis (blob.core.windows.net) voor accounts met een hiërarchische naamruimte.

Syntaxis

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

Voorbeeld

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

Verschillen in naamgevingsregels voor objecten verwerken

AWS S3 heeft een andere set naamconventies voor bucketnamen in vergelijking met Azure Blob-containers. U kunt hier meer over hen lezen. Als u ervoor kiest om een groep buckets te kopiëren naar een Azure-opslagaccount, kan de kopieerbewerking mislukken vanwege naamverschillen.

AzCopy verwerkt twee van de meest voorkomende problemen die zich kunnen voordoen; buckets die perioden en buckets bevatten die opeenvolgende afbreekstreepjes bevatten. AWS S3-bucketnamen kunnen perioden en opeenvolgende afbreekstreepjes bevatten, maar een container in Azure kan dat niet. AzCopy vervangt punten door afbreekstreepjes en opeenvolgende afbreekstreepjes door een getal dat het aantal opeenvolgende afbreekstreepjes aangeeft (bijvoorbeeld: een bucket met de naam my----bucket wordt my-4-bucket.

Als AzCopy bestanden kopieert, wordt ook gecontroleerd op naamconflicten en wordt geprobeerd deze op te lossen. Als er bijvoorbeeld buckets zijn met de naam bucket-name en, wordt in AzCopy eerst een bucket met de naam bucket.name omgezet naar bucket-name en vervolgens naar bucket-name-2bucket.name.

Verschillen in objectmetagegevens verwerken

AWS S3 en Azure staan verschillende sets tekens toe in de namen van objectsleutels. U kunt hier lezen over de tekens die AWS S3 gebruikt. Aan de azure-zijde voldoen blobobjectsleutels aan de naamgevingsregels voor C#-id's.

Als onderdeel van een AzCopy-opdracht copy kunt u een waarde opgeven voor optioneel de s2s-handle-invalid-metadata vlag die aangeeft hoe u bestanden wilt verwerken waarbij de metagegevens van het bestand incompatibele sleutelnamen bevatten. In de volgende tabel wordt elke vlagwaarde beschreven.

Vlagwaarde Beschrijving
ExcludeIfInvalid (Standaardoptie) De metagegevens zijn niet opgenomen in het overgedragen object. AzCopy registreert een waarschuwing.
FailIfInvalid Objecten worden niet gekopieerd. AzCopy registreert een fout en bevat deze fout in het mislukte aantal dat wordt weergegeven in het overdrachtsoverzicht.
RenameIfInvalid AzCopy lost de ongeldige metagegevenssleutel op en kopieert het object naar Azure met behulp van het waardepaar met de opgeloste metagegevenssleutel. Als u precies wilt weten welke stappen AzCopy moet uitvoeren om de naam van objectsleutels te wijzigen, raadpleegt u de sectie Hoe AzCopy de naam van objectsleutels wijzigt. Als AzCopy de naam van de sleutel niet kan wijzigen, wordt het object niet gekopieerd.

Hoe AzCopy de naam van objectsleutels wijzigt

AzCopy voert deze stappen uit:

  1. Vervangt ongeldige tekens door _.

  2. Hiermee voegt u de tekenreeks rename_ toe aan het begin van een nieuwe geldige sleutel.

    Deze sleutel wordt gebruikt om de oorspronkelijke metagegevenswaarde op te slaan.

  3. Hiermee voegt u de tekenreeks rename_key_ toe aan het begin van een nieuwe geldige sleutel. Deze sleutel wordt gebruikt om de oorspronkelijke metagegevens ongeldige sleutel op te slaan. U kunt deze sleutel gebruiken om de metagegevens aan de zijde van Azure te herstellen, omdat de metagegevenssleutel wordt bewaard als een waarde in de Blob Storage-service.

Volgende stappen

Bekijk meer voorbeelden in deze artikelen:

Zie deze artikelen voor het configureren van instellingen, het optimaliseren van de prestaties en het oplossen van problemen: