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-2
bucket.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:
Vervangt ongeldige tekens door _.
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.
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:
- Voorbeelden: Uploaden
- Voorbeelden: Downloaden
- Voorbeelden: Kopiëren tussen accounts
- Voorbeelden: Synchroniseren
- Voorbeelden: Google Cloud Storage
- Voorbeelden: Azure Files
- Zelfstudie: On-premises gegevens migreren naar cloudopslag met behulp van AzCopy
Zie deze artikelen voor het configureren van instellingen, het optimaliseren van de prestaties en het oplossen van problemen: