Копирование данных из хранилища, совместимого с Amazon S3, с помощью Azure Data Factory или Synapse Analytics

ПРИМЕНИМО К: Azure Data Factory Azure Synapse Analytics

Совет

Data Factory в Microsoft Fabric — это следующее поколение Azure Data Factory с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.

В этой статье описывается, как копировать данные из хранилища, совместимого с Amazon Simple Storage Service (Amazon S3). Дополнительные сведения см. в вводных статьях по Azure Data Factory и Synapse Analytics.

Поддерживаемые возможности

Соединитель хранилища, совместимого с Amazon S3, поддерживает следующие возможности:

Поддерживаемые возможности IR
Copy activity (источник/-) (1) (2)
Операция поиска (1) (2)
Активность получения метаданных (1) (2)
Удаление действия (1) (2)

(1) Azure среды выполнения интеграции (2) локальная среда выполнения интеграции

В частности, этот соединитель хранилища, совместимого с Amazon S3, поддерживает копирование файлов "как есть" или анализ файлов с использованием поддерживаемых форматов файлов и кодеков сжатия. Для проверки подлинности запросов в S3 соединитель использует подпись AWS версии 4. Данный соединитель хранилища, совместимого с Amazon S3, можно использовать для копирования данных из любого поставщика хранилища, совместимого с S3. Укажите соответствующий URL-адрес службы в конфигурации связанной службы.

Необходимые разрешения

Для копирования данных из хранилища, совместимого с Amazon S3, убедитесь в том, что вам предоставлены следующие разрешения для операций с объектами Amazon S3: s3:GetObject и s3:GetObjectVersion.

Если для разработки вы используете пользовательский интерфейс, для выполнения таких операций, как тестирование подключения к связанной службе и просмотр из корня, требуются дополнительные разрешения s3:ListAllMyBuckets и s3:ListBucket/s3:GetBucketLocation. Если вы не хотите предоставлять эти разрешения, можно выбрать в пользовательском интерфейсе параметры "Тестирование подключения к пути к файлу" или "Просмотр по указанному пути".

Полный список разрешений Amazon S3 см. в статье, посвященной назначению разрешений в политике на сайте AWS.

Начало работы

Для выполнения действия копирования с конвейером можно использовать один из следующих средств или пакетов SDK:

Создание связанной службы для хранилища, совместимого с Amazon S3, с помощью пользовательского интерфейса

Выполните следующие действия, чтобы создать связанную службу с совместимым хранилищем Amazon S3 в пользовательском интерфейсе портала Azure.

  1. Перейдите на вкладку "Управление" в рабочей области Azure Data Factory или Synapse и выберите "Связанные службы", а затем нажмите кнопку "Создать".

  2. Выполните поиск по запросу “Amazon” и найдите соединитель хранилища, совместимого с Amazon S3.

    Выберите соединитель хранилища, совместимого с Amazon S3.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Настройка связанной службы для хранилища, совместимого с Amazon S3.

Сведения о конфигурации соединителя

В следующих разделах приведены сведения о свойствах, которые используются для определения сущностей, относящихся к хранилищу, совместимому с Amazon S3.

Свойства связанной службы

Для службы, связанной с хранилищем, совместимым с Amazon S3, поддерживаются следующие свойства.

Свойство Описание: Обязательное поле
тип Для свойства type необходимо задать значение AmazonS3Compatible. Да
accessKeyId Идентификатор секретного ключа доступа. Да
секретныйКлючДоступа Сам секретный ключ доступа. Пометьте это поле как SecureString для безопасного хранения или сошлитесь на секрет, хранящийся в Azure Key Vault. Да
URL сервиса Укажите настраиваемую конечную точку S3 https://<service url>. Нет
forcePathStyle Указывает, следует ли использовать доступ в стиле пути S3 вместо доступа в виртуальном размещённом стиле. Допустимые значения: false (по умолчанию), true.
Ознакомьтесь с документацией по необходимости доступа к пути для каждого хранилища данных.
Нет
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Можно использовать среду выполнения интеграции Azure или локальную среду выполнения интеграции (если хранилище данных находится в частной сети). Если это свойство не указано, служба использует среду выполнения интеграции по умолчанию Azure. Нет

Пример:

{
    "name": "AmazonS3CompatibleLinkedService",
    "properties": {
        "type": "AmazonS3Compatible",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": {
                "type": "SecureString",
                "value": "<secret access key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Свойства набора данных

Полный список разделов и свойств, доступных для определения наборов данных, см. в статье о наборах данных.

Azure Data Factory поддерживает следующие форматы файлов. Дополнительные сведения о параметрах с учетом форматирования см. в соответствующих статьях.

Следующие свойства поддерживаются для совместимых с Amazon S3 настроек location в наборе данных на основе формата.

Свойство Описание: Обязательное поле
тип Свойство type в location для набора данных должно иметь значение AmazonS3CompatibleLocation. Да
Имя корзины Имя контейнера хранилища, совместимого с S3. Да
folderPath Путь к папке в заданном контейнере. Если вы хотите использовать подстановочный знак для фильтрации папок, пропустите этот параметр и укажите его в параметрах источника действия. Нет
имя файла Имя файла в заданном контейнере и путь к папке. Если вы хотите использовать подстановочный знак для фильтрации файлов, пропустите этот параметр и укажите его в параметрах источника действия. Нет
версия Версия объекта хранилища, совместимого с S3, если включено управление версиями хранилища, совместимого с S3. Если значение не указано, будет выбрана последняя версия. Нет

Пример:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Amazon S3 Compatible Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AmazonS3CompatibleLocation",
                "bucketName": "bucketname",
                "folderPath": "folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

Свойства Copy activity

Полный список разделов и свойств, используемых для определения действий, обратитесь к статье Конвейеры. Этот раздел содержит список свойств, поддерживаемых источником хранилища, совместимого с Amazon S3.

Хранилище, совместимое с Amazon S3, как тип источника

Azure Data Factory поддерживает следующие форматы файлов. Дополнительные сведения о параметрах с учетом форматирования см. в соответствующих статьях.

Ниже перечислены свойства, которые поддерживаются для хранилища, совместимого с Amazon S3, в параметрах storeSettings в источнике копирования на основе формата.

Свойство Описание: Обязательное поле
тип Для свойства type в разделе storeSettings необходимо задать значение AmazonS3CompatibleReadSettings. Да
Найдите файлы для копирования:
ВАРИАНТ 1. Статический путь
Копирование из заданного контейнера или папки/пути к файлу, которые указаны в наборе данных. Если вы хотите скопировать все файлы из контейнера или папки, дополнительно укажите wildcardFileName как *.
ВАРИАНТ 2. Префикс хранилища, совместимого с S3
- префикс
Префикс для имени ключа хранилища, совместимого с S3, в заданном контейнере, настроенном в наборе данных для фильтрации исходных файлов хранилища, совместимого с S3. Выбраны ключи хранилища, совместимого с S3, имена которых начинаются с bucket_in_dataset/this_prefix. Фильтр на стороне сервиса хранилища, совместимого с S3, обеспечивает лучшую производительность, чем фильтр с подстановочными знаками.

Когда вы используете префикс и выбираете копирование в приемник, основанный на файлах, с сохранением иерархии, обратите внимание, что дополнительный путь после последнего символа "/" в префиксе будет сохранен. Например, если у вас есть источник bucket/folder/subfolder/file.txt, и вы настроили префикс как folder/sub, то сохраненный путь к файлу будет subfolder/file.txt.
Нет
Вариант 3. Подстановочный знак
— wildcardFolderPath
Путь к папке с подстановочными знаками в заданном контейнере, настроенном в наборе данных для фильтрации исходных папок.
Допустимые знаки подстановки: * (соответствует нулю или нескольким символам) и ? (соответствует нулю или одному символу). Используйте ^ для экранирования знаков, если имя папки содержит подстановочный знак или этот escape-символ.
Дополнительные примеры приведены в разделе Примеры фильтров папок и файлов.
Нет
Вариант 3. Подстановочный знак
— wildcardFileName
Имя файла с подстановочными знаками в заданном хранилище и путь к папке (или путь к папке с подстановочными знаками) для фильтрации исходных файлов.
Допустимые знаки подстановки: * (соответствует нулю или нескольким символам) и ? (соответствует нулю или одному символу). Используйте ^ для экранирования, если имя файла содержит подстановочный знак или символ экранирования. Дополнительные примеры приведены в разделе Примеры фильтров папок и файлов.
Да
ВАРИАНТ 4. Список файлов
- fileListPath
Указывает, что нужно скопировать заданный набор файлов. Укажите текстовый файл со списком файлов, которые необходимо скопировать, по одному файлу в строке (каждая строка должна содержать относительный путь к заданному в наборе данных пути).
При использовании этого варианта не указывайте имя файла в наборе данных. Ознакомьтесь с дополнительными примерами в разделе Примеры списков файлов.
Нет
Дополнительные параметры:
рекурсивный Указывает, следует ли читать данные рекурсивно из вложенных каталогов или только из конкретной папки. Обратите внимание, что если для свойства recursive задано значение true, а приемником является файловое хранилище, пустые папки и вложенные папки не создаются в приемнике.
Допустимые значения: true (по умолчанию) и false.
Это свойство не применяется при настройке fileListPath.
Нет
УдалитьФайлыПослеЗавершения Указывает, удаляются ли двоичные файлы из исходного хранилища после успешного перемещения в конечное хранилище. Файлы удаляются поочередно, поэтому в случае сбоя действия копирования вы увидите, что некоторые файлы уже скопированы в место назначения и удалены из источника, в то время как остальные находятся в исходном хранилище.
Это свойство допустимо только в сценарии копирования двоичных файлов. По умолчанию имеет значение false.
Нет
modifiedDatetimeStart Фильтр файлов на основе атрибута времени последнего изменения.
Будут выбраны все файлы, у которых время последнего изменения больше или равно modifiedDatetimeStart и меньше modifiedDatetimeEnd. Время представлено часовым поясом UTC в формате "2018-12-01T05:00:00Z".
Эти свойства могут иметь значение NULL. Это означает, что фильтры атрибута файла не будут применяться к этому набору данных. Если для параметра modifiedDatetimeStart задано значение даты и времени, но параметр modifiedDatetimeEnd имеет значение NULL, то выбираются файлы, чей атрибут времени последнего изменения больше указанного значения даты и времени или равен ему. Если для параметра modifiedDatetimeEnd задано значение даты и времени, но параметр modifiedDatetimeStart имеет значение NULL, то выбираются файлы, чей атрибут времени последнего изменения меньше указанного значения даты и времени.
Это свойство не применяется при настройке fileListPath.
Нет
modifiedDatetimeEnd То же, что выше. Нет
" enablePartitionDiscovery Для секционированных файлов укажите, следует ли анализировать секции из пути к файлу и добавлять их как дополнительные исходные столбцы.
Допустимые значения: false (по умолчанию) и true.
Нет
Корневой путь раздела Если обнаружение секций включено, укажите абсолютный корневой путь, чтобы считывать секционированные папки как столбцы данных.

Если параметр не задан (по умолчанию), происходит следующее.
— При использовании пути к файлу в наборе данных или списке файлов в источнике корневым путем секции считается путь, настроенный в наборе данных.
— При использовании фильтра папки с подстановочными знаками корневым путем раздела считается подчасть пути до первого подстановочного знака.
— При использовании префикса, корневой путь раздела — это путь, который следует перед последним символом "/".

Предположим, что вы настроили путь в наборе данных следующим образом: "root/folder/year=2020/month=08/day=27".
— Если указать корневой путь секции "root/folder/year=2020", действие копирования в дополнение к указанным в файлах столбцам создаст еще два столбца, month и day, со значениями "08" и "27" соответственно.
— Если корневой путь секции не указан, дополнительные столбцы создаваться не будут.
Нет
максимальное количество одновременных подключений Верхний предел одновременных подключений, установленных в хранилище данных при запуске задачи. Указывайте значение только при необходимости ограничить количество одновременных подключений. Нет

Пример:

"activities":[
    {
        "name": "CopyFromAmazonS3CompatibleStorage",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "AmazonS3CompatibleReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Примеры фильтров папок и файлов

В этом разделе описывается итоговое поведение пути папки и имени файла при использовании фильтров с подстановочными знаками.

контейнер ключ рекурсивный Структура исходной папки и результат фильтрации (извлекаются файлы, выделенные полужирным шрифтом)
контейнер Folder*/* ложь контейнер
    ПапкаA
         Файл1.csv
         File2.json
        Вложенная папка1
            File3.csv
            File4.json
            File5.csv
    ДругаяПапкаB
        Файл6.csv
контейнер Folder*/* true контейнер
    ПапкаA
         Файл1.csv
         File2.json
        Вложенная папка1
             File3.csv
             File4.json
             File5.csv
    ДругаяПапкаB
        Файл6.csv
контейнер Folder*/*.csv ложь контейнер
    ПапкаA
         Файл1.csv
        File2.json
        Вложенная папка1
            File3.csv
            File4.json
            File5.csv
    ДругаяПапкаB
        Файл6.csv
контейнер Folder*/*.csv true контейнер
    ПапкаA
         Файл1.csv
        File2.json
        Вложенная папка1
             File3.csv
            File4.json
             File5.csv
    ДругаяПапкаB
        Файл6.csv

Примеры списков файлов

В этом разделе описывается поведение при использовании пути списка файлов в источнике операции копирования.

Предположим, что у вас есть следующая исходная структура папок и вы хотите скопировать файлы, выделенные полужирным шрифтом:

Пример исходной структуры Содержимое в файле FileListToCopy.txt Настройка
контейнер
    ПапкаA
         Файл1.csv
        File2.json
        Вложенная папка1
             File3.csv
            File4.json
             File5.csv
    Метаданные
        FileListToCopy.txt
Файл1.csv
Вложенная_папка1/Файл3.csv
Подпапка1/Файл5.csv
В наборе данных:
– Контейнер: bucket
– Путь к папке: FolderA

В источнике действия "Копирование":
– Путь к списку файлов: bucket/Metadata/FileListToCopy.txt

Путь к списку файлов указывает на текстовый файл в том же хранилище данных, который содержит список файлов, которые вы хотите скопировать, с указанием одного файла на строку и относительным путем, который соответствует маршруту, настроенному в наборе данных.

Свойства операции поиска

Подробные сведения об этих свойствах см. в разделе Действие поиска.

Свойства активности GetMetadata

Подробные сведения об этих свойствах см. в статье Действие GetMetadata.

Удалить свойства активности

Чтобы узнать подробности о свойствах, проверьте раздел Удаление действий.

Список хранилищ данных, поддерживаемых Copy activity в качестве источников и приемников, см. в разделе Сопортированные хранилища данных.