Копирование данных из Amazon S3 сегментов с помощью AzCopyCopy data from Amazon S3 buckets by using AzCopy

AzCopy — программа командной строки, который можно использовать для копирования больших двоичных объектов или файлов из учетной записи хранения.AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. Эта статья поможет вам копировать объекты, каталоги и контейнеры из S3, Amazon Web Services (AWS) в хранилище больших двоичных объектов с помощью AzCopy.This article helps you copy objects, directories, and buckets from Amazon Web Services (AWS) S3 to Azure blob storage by using AzCopy.

Выберите, каким образом необходимо предоставить учетные данные авторизацииChoose how you'll provide authorization credentials

  • Авторизация в службе хранилища Azure, используйте Azure Active Directory (AD) или маркер подписи общего доступа (SAS).To authorize with the Azure Storage, use Azure Active Directory (AD) or a Shared Access Signature (SAS) token.

  • Чтобы авторизовать с AWS S3, используйте ключ доступа AWS и секретный ключ доступа.To authorize with AWS S3, use an AWS access key and a secret access key.

Авторизовать со службой хранилища AzureAuthorize with Azure Storage

См. в разделе начало работы с AzCopy статью, чтобы скачать AzCopy, а также выберите, как необходимо предоставить учетные данные авторизации в службе хранилища.See the Get started with AzCopy article to download AzCopy, and choose how you'll provide authorization credentials to the storage service.

Примечание

В примерах в этой статье предполагается, что вы прошли проверку подлинности личности с помощью AzCopy login команды.The examples in this article assume that you've authenticated your identity by using the AzCopy login command. AzCopy использует учетную запись Azure AD для авторизации доступа к данным в хранилище BLOB-объектов.AzCopy then uses your Azure AD account to authorize access to data in Blob storage.

Если вы предпочитаете использовать маркер SAS для авторизации доступа к данным больших двоичных объектов, можно добавить этот маркер на URL-адрес ресурса в каждой команде AzCopy.If you'd rather use a SAS token to authorize access to blob data, then you can append that token to the resource URL in each AzCopy command.

Например, https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>.For example: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>.

Авторизация с AWS S3Authorize with AWS S3

Соберите свой ключ доступа AWS и секретный ключ доступа, а затем задайте эти переменные среды:Gather your AWS access key and secret access key, and then set the these environment variables:

Операционная системаOperating system КомандаCommand
WindowsWindows set AWS_ACCESS_KEY_ID=<access-key>
set AWS_SECRET_ACCESS_KEY=<secret-access-key>
LinuxLinux export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>
MacOSMacOS export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>

Копировать объекты, каталоги и контейнерыCopy objects, directories, and buckets

AzCopy использует поместить блок из URL-адрес API, поэтому данные копируются напрямую между AWS S3 и серверов хранилища.AzCopy uses the Put Block From URL API, so data is copied directly between AWS S3 and storage servers. Эти операции копирования не использовать пропускную способность сети компьютера.These copy operations don't use the network bandwidth of your computer.

Важно!

Эта функция в настоящее время находится на стадии предварительной версии.This feature is currently in preview. Если вы решите удалить данные из вашей контейнеров S3 после операции копирования, обязательно убедитесь, что данные скопированы надлежащим образом для вашей учетной записи хранения, перед удалением данных.If you decide to remove data from your S3 buckets after a copy operation, make sure to verify that the data was properly copied to your storage account before you remove the data.

Копирование объектаCopy an object

СинтаксисSyntax azcopy cp "https://s3.amazonaws.com/<bucket-name>/<object-name>" "https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>"
ПримерExample azcopy cp "https://s3.amazonaws.com/mybucket/myobject" "https://mystorageaccount.blob.core.windows.net/mycontainer/myblob"

Примечание

Примеры в этой статье использовать стиле путь URL-адреса, для AWS S3 контейнерах (например: http://s3.amazonaws.com/<bucket-name>).Examples in this article use path-style URLs for AWS S3 buckets (For example: http://s3.amazonaws.com/<bucket-name>).

Можно также использовать виртуальный размещенных стиле URL-адреса в (например: http://bucket.s3.amazonaws.com).You can also use virtual hosted-style URLs as well (For example: http://bucket.s3.amazonaws.com).

Дополнительные сведения о размещении виртуальных сегментов, см. в разделе [виртуального размещения из сегментов]] (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).To learn more about virtual hosting of buckets, see [Virtual Hosting of Buckets]](https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).

Копирование каталогаCopy a directory

СинтаксисSyntax azcopy cp "https://s3.amazonaws.com/<bucket-name>/<directory-name>" "https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>" --recursive=true
ПримерExample azcopy cp "https://s3.amazonaws.com/mybucket/mydirectory" "https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory" --recursive=true

Скопируйте контейнерCopy a bucket

СинтаксисSyntax azcopy cp "https://s3.amazonaws.com/<bucket-name>" "https://<storage-account-name>.blob.core.windows.net/<container-name>" --recursive=true
ПримерExample azcopy cp "https://s3.amazonaws.com/mybucket" "https://mystorageaccount.blob.core.windows.net/mycontainer" --recursive=true

Скопируйте все сегменты во всех регионахCopy all buckets in all regions

СинтаксисSyntax azcopy cp "https://s3.amazonaws.com/" "https://<storage-account-name>.blob.core.windows.net" --recursive=true
ПримерExample azcopy cp "https://s3.amazonaws.com" "https://mystorageaccount.blob.core.windows.net" --recursive=true

Скопируйте все сегменты в определенном регионе S3Copy all buckets in a specific S3 region

СинтаксисSyntax azcopy cp "https://s3-<region-name>.amazonaws.com/" "https://<storage-account-name>.blob.core.windows.net" --recursive=true
ПримерExample azcopy cp "https://s3-rds.eu-north-1.amazonaws.com" "https://mystorageaccount.blob.core.windows.net" --recursive=true

Обработка различий в правила именования объектовHandle differences in object naming rules

AWS S3 имеет другой набор соглашения об именовании для имен контейнеров по сравнению с контейнерами BLOB-объектов Azure.AWS S3 has a different set of naming conventions for bucket names as compared to Azure blob containers. Вы можете прочесть о них здесь.You can read about them here. Если вы решили скопировать группы контейнеров в учетной записи хранения Azure, операция копирования может завершиться ошибкой из-за различия имен.If you choose to copy a group of buckets to an Azure storage account, the copy operation might fail because of naming differences.

AzCopy обрабатывает два из наиболее распространенных проблем, которые могут возникнуть; контейнеры, содержащие точки и сегменты, может содержать последовательные дефисы.AzCopy handles two of the most common issues that can arise; buckets that contain periods and buckets that contain consecutive hyphens. Имена контейнеров AWS S3 может содержать точек, последовательные дефисы, но контейнер в Azure нельзя.AWS S3 bucket names can contain periods and consecutive hyphens, but a container in Azure can't. AzCopy замещающий точки, дефисы и последовательные дефисы на число, представляющее количество последовательных дефисов (например: контейнер с именем my----bucket становится my-4-bucket.AzCopy replaces periods with hyphens and consecutive hyphens with a number that represents the number of consecutive hyphens (For example: a bucket named my----bucket becomes my-4-bucket.

Кроме того как AzCopy копирует файлы, он проверяет наличие конфликтов имен и пытается разрешить их.Also, as AzCopy copies over files, it checks for naming collisions and attempts to resolve them. Например, если существуют сегменты с именем bucket-name и bucket.name, AzCopy разрешает контейнер с именем bucket.name первой для bucket-name и затем bucket-name-2.For example, if there are buckets with the name bucket-name and bucket.name, AzCopy resolves a bucket named bucket.name first to bucket-name and then to bucket-name-2.

Обработка различий в метаданных объектаHandle differences in object metadata

AWS S3 и Azure позволяют разных наборов символов в именах ключи объекта.AWS S3 and Azure allow different sets of characters in the names of object keys. Читайте о символах, AWS S3 использует здесь.You can read about the characters that AWS S3 uses here. На стороне Azure, ключи объекта BLOB-объектов следовать правилам именования для C# идентификаторы.On the Azure side, blob object keys adhere to the naming rules for C# identifiers.

Как часть AzCopy copy можно указать значение для команды необязательно s2s-invalid-metadata-handle флаг, указывающий способ обработки файлов, где метаданные файла содержит несовместимые имена ключей.As part of an AzCopy copy command, you can provide a value for optional the s2s-invalid-metadata-handle flag that specifies how you would like to handle files where the metadata of the file contains incompatible key names. В следующей таблице каждое значение флага.The following table describes each flag value.

Значение флагаFlag value ОписаниеDescription
ExcludeIfInvalidExcludeIfInvalid (Вариант по умолчанию) Метаданные не включена в перемещаемый объект.(Default option) The metadata isn't included in the transferred object. AzCopy заносит в журнал предупреждение.AzCopy logs a warning.
FailIfInvalidFailIfInvalid Объекты не копируются.Objects aren't copied. AzCopy заносит в журнал ошибку и включает эту ошибку в число неудач, который отображается в сводке передачи.AzCopy logs an error and includes that error in the failed count that appears in the transfer summary.
RenameIfInvalidRenameIfInvalid AzCopy разрешает недопустимые метаданные ключа и копирует объект в Azure с помощью пара значений ключа разрешить метаданные.AzCopy resolves the invalid metadata key, and copies the object to Azure using the resolved metadata key value pair. Чтобы узнать, точно, какие действия принимает AzCopy для переименования объекта ключи, см. в разделе как AzCopy переименовывает ключи объекта разделе ниже.To learn exactly what steps AzCopy takes to rename object keys, see the How AzCopy renames object keys section below. Если AzCopy не удалось переименовать раздел, не будет скопирован объект.If AzCopy is unable to rename the key, then the object won't be copied.

Как AzCopy переименовывает ключи объектаHow AzCopy renames object keys

AzCopy выполняет следующие действия.AzCopy performs these steps:

  1. Заменяет недопустимые символы «_».Replaces invalid characters with '_'.

  2. Добавляет строку rename_ в начале нового допустимый ключ.Adds the string rename_ to the beginning of a new valid key.

    Этот ключ будет использоваться для сохранения исходных метаданных значение.This key will be used to save the original metadata value.

  3. Добавляет строку rename_key_ в начале нового допустимый ключ.Adds the string rename_key_ to the beginning of a new valid key. Этот ключ будет использоваться для сохранения исходные метаданные недопустимый ключ.This key will be used to save original metadata invalid key. Этот ключ можно использовать для восстановления метаданных в стороне Azure, так как ключ метаданных сохраняется как значение в службе хранилища больших двоичных объектов.You can use this key to try and recover the metadata in Azure side since metadata key is preserved as a value on the Blob storage service.

Дальнейшие действияNext steps

Дополнительные примеры можно найти в любой из следующих статей:Find more examples in any of these articles: