Déplacement de données à partir d’Amazon Simple Storage Service à l’aide d’Azure Data FactoryMove data from Amazon Simple Storage Service by using Azure Data Factory

Notes

Cet article s’applique à la version 1 de Data Factory.This article applies to version 1 of Data Factory. Si vous utilisez la version actuelle du service Data Factory, consultez Connecteur Amazon S3 dans V2.If you are using the current version of the Data Factory service, see Amazon S3 connector in V2.

Cet article explique comment utiliser l’activité de copie dans Azure Data Factory pour déplacer des données à partir d’un système Amazon Simple Storage Service (S3).This article explains how to use the copy activity in Azure Data Factory to move data from Amazon Simple Storage Service (S3). Il s’appuie sur l’article relatif aux activités de déplacement des données, qui présente une vue d’ensemble du déplacement des données avec l’activité de copie.It builds on the Data movement activities article, which presents a general overview of data movement with the copy activity.

Vous pouvez copier les données d’Amazon S3 dans tout magasin de données récepteur pris en charge.You can copy data from Amazon S3 to any supported sink data store. Consultez le tableau Magasins de données pris en charge pour obtenir la liste des magasins de données pris en charge en tant que récepteurs par l’activité de copie.For a list of data stores supported as sinks by the copy activity, see the Supported data stores table. Actuellement, Data Factory prend uniquement en charge le déplacement de données d’Amazon S3 vers d’autres magasins de données, mais pas l’inverse.Data Factory currently supports only moving data from Amazon S3 to other data stores, but not moving data from other data stores to Amazon S3.

Autorisations requisesRequired permissions

Pour copier des données à partir d’Amazon S3, assurez-vous que vous disposez des autorisations suivantes :To copy data from Amazon S3, make sure you have been granted the following permissions:

  • s3:GetObject et s3:GetObjectVersion pour les opérations d’objet Amazon S3 ;s3:GetObject and s3:GetObjectVersion for Amazon S3 Object Operations.
  • s3:ListBucket pour les opérations de compartiment Amazon S3.s3:ListBucket for Amazon S3 Bucket Operations. Si vous utilisez l’Assistant de copie de Data Factory, l’élément s3:ListAllMyBuckets est également requis.If you are using the Data Factory Copy Wizard, s3:ListAllMyBuckets is also required.

Pour obtenir la liste complète des autorisations Amazon S3, consultez l’article Spécification des autorisations d’une stratégie.For details about the full list of Amazon S3 permissions, see Specifying Permissions in a Policy.

Prise en mainGetting started

Vous pouvez créer un pipeline avec une activité de copie qui déplace les données d’une source Amazon S3 à l’aide de différents outils ou API.You can create a pipeline with a copy activity that moves data from an Amazon S3 source by using different tools or APIs.

Le moyen le plus simple de créer un pipeline consiste à utiliser l’Assistant Copie.The easiest way to create a pipeline is to use the Copy Wizard. Pour obtenir une procédure pas à pas rapide, consultez Tutoriel : Créer un pipeline à l’aide de l’Assistant de copie.For a quick walkthrough, see Tutorial: Create a pipeline using Copy Wizard.

Vous pouvez également utiliser les outils suivants pour créer un pipeline : Visual Studio, Azure PowerShell, modèle Azure Resource Manager, .NET API et REST API.You can also use the following tools to create a pipeline: Visual Studio, Azure PowerShell, Azure Resource Manager template, .NET API, and REST API. Pour obtenir des instructions détaillées sur la création d’un pipeline avec une activité de copie, consultez le Didacticiel de l’activité de copie.For step-by-step instructions to create a pipeline with a copy activity, see the Copy activity tutorial.

Que vous utilisiez des outils ou des API, la création d’un pipeline qui déplace les données d’un magasin de données source vers un magasin de données récepteur implique les étapes suivantes :Whether you use tools or APIs, you perform the following steps to create a pipeline that moves data from a source data store to a sink data store:

  1. Création de services liés pour lier les magasins de données d’entrée et de sortie à votre fabrique de données.Create linked services to link input and output data stores to your data factory.
  2. Création de jeux de données pour représenter les données d’entrée et de sortie de l’opération de copie.Create datasets to represent input and output data for the copy operation.
  3. Création d’un pipeline avec une activité de copie qui utilise un jeu de données en tant qu’entrée et un jeu de données en tant que sortie.Create a pipeline with a copy activity that takes a dataset as an input and a dataset as an output.

Lorsque vous utilisez l’Assistant, les définitions JSON de ces entités Data Factory (services liés, jeux de données et pipeline) sont automatiquement créées pour vous.When you use the wizard, JSON definitions for these Data Factory entities (linked services, datasets, and the pipeline) are automatically created for you. Lorsque vous utilisez les outils ou API (à l’exception de l’API .NET), vous devez définir ces entités Data Factory à l’aide du format JSON.When you use tools or APIs (except .NET API), you define these Data Factory entities by using the JSON format. Pour un exemple avec des définitions JSON pour les entités Data Factory servant à copier des données à partir d’un magasin de données Amazon S3, consultez la section Exemple JSON : Copier des données depuis Amazon S3 vers Stockage Blob Azure de cet article.For a sample with JSON definitions for Data Factory entities that are used to copy data from an Amazon S3 data store, see the JSON example: Copy data from Amazon S3 to Azure Blob section of this article.

Notes

Pour plus d’informations sur les formats de fichier et de compression pris en charge pour une activité de copie, consultez Formats de fichier et de compression pris en charge dans Azure Data Factory.For details about supported file and compression formats for a copy activity, see File and compression formats in Azure Data Factory.

Les sections suivantes fournissent des informations sur les propriétés JSON utilisées pour définir les entités Data Factory spécifiques à Amazon S3.The following sections provide details about JSON properties that are used to define Data Factory entities specific to Amazon S3.

Propriétés du service liéLinked service properties

Un service lié lie un magasin de données à une fabrique de données.A linked service links a data store to a data factory. Pour lier votre magasin de données Amazon S3 à votre fabrique de données, vous devez créer un service lié de type AwsAccessKey.You create a linked service of type AwsAccessKey to link your Amazon S3 data store to your data factory. La table suivante fournit la description des éléments JSON spécifiques au service lié Amazon S3 (AwsAccessKey).The following table provides description for JSON elements specific to Amazon S3 (AwsAccessKey) linked service.

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values RequisRequired
accessKeyIDaccessKeyID ID de la clé d’accès secrète.ID of the secret access key. stringstring OUIYes
secretAccessKeysecretAccessKey La clé d’accès secrète elle-même.The secret access key itself. Chaîne secrète chiffréeEncrypted secret string OUIYes

Notes

Ce connecteur nécessite des clés d’accès pour le compte IAM pour copier des données à partir d’Amazon S3.This connector requires access keys for IAM account to copy data from Amazon S3. Les informations d’identification de sécurité temporaires ne sont pas prises en charge.Temporary Security Credential is not supported.

Voici un exemple :Here is an example:

{
    "name": "AmazonS3LinkedService",
    "properties": {
        "type": "AwsAccessKey",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": "<secret access key>"
        }
    }
}

Propriétés du jeu de donnéesDataset properties

Pour spécifier un jeu de données afin de représenter les données d’entrée dans un Stockage Blob Azure, définissez la propriété de type du jeu de données sur AmazonS3.To specify a dataset to represent input data in Azure Blob storage, set the type property of the dataset to AmazonS3. Définissez la propriété linkedServiceName du jeu de données sur le nom du service lié Amazon S3.Set the linkedServiceName property of the dataset to the name of the Amazon S3 linked service. Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, voir Création de jeux de données.For a full list of sections and properties available for defining datasets, see Creating datasets.

Les sections comme la structure, la disponibilité et la stratégie sont similaires pour tous les types de jeux de données (par exemple, SQL Database, Azure Blob et Azure Table).Sections such as structure, availability, and policy are similar for all dataset types (such as SQL database, Azure blob, and Azure table). La section typeProperties est différente pour chaque type de jeu de données et fournit des informations sur l'emplacement des données dans le magasin de données.The typeProperties section is different for each type of dataset, and provides information about the location of the data in the data store. La section typeProperties du jeu de données de type AmazonS3 (comprenant le jeu de données Amazon S3) présente les propriétés suivantes :The typeProperties section for a dataset of type AmazonS3 (which includes the Amazon S3 dataset) has the following properties:

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values ObligatoireRequired
bucketNamebucketName Le nom de compartiment S3.The S3 bucket name. ChaîneString OUIYes
keykey La clé d’objet S3.The S3 object key. ChaîneString NonNo
prefixprefix Préfixe de la clé d’objet S3.Prefix for the S3 object key. Les objets dont les clés commencent par ce préfixe sont sélectionnés.Objects whose keys start with this prefix are selected. S’applique uniquement lorsque la clé est vide.Applies only when key is empty. stringString NonNo
versionversion La version de l’objet S3 si le contrôle de version S3 est activé.The version of the S3 object, if S3 versioning is enabled. ChaîneString NonNo
formatformat Les types de formats suivants sont pris en charge : TextFormat, JsonFormat, AvroFormat, OrcFormat et ParquetFormat.The following format types are supported: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. Définissez la propriété type située sous Format sur l’une de ces valeurs.Set the type property under format to one of these values. Pour en savoir plus, voir les sections Format Text, Format JSON, Format Avro, Format Orc et Format Parquet.For more information, see the Text format, JSON format, Avro format, Orc format, and Parquet format sections.

Si vous souhaitez copier des fichiers en l’état entre des magasins de fichiers (copie binaire), ignorez la section Format dans les deux définitions de jeu de données d’entrée et de sortie.If you want to copy files as-is between file-based stores (binary copy), skip the format section in both input and output dataset definitions.
NonNo
compressioncompression Spécifiez le type et le niveau de compression pour les données.Specify the type and level of compression for the data. Les types pris en charge sont : GZip, Deflate, BZip2 et ZipDeflate.The supported types are: GZip, Deflate, BZip2, and ZipDeflate. Les niveaux pris en charge sont : Optimal et Fastest.The supported levels are: Optimal and Fastest. Pour plus d’informations, consultez Formats de fichiers et de compression pris en charge dans Azure Data Factory.For more information, see File and compression formats in Azure Data Factory. NonNo

Notes

bucketName + key spécifient l’emplacement de l’objet S3 où le compartiment est le conteneur racine pour les objets S3 et la clé est le chemin d’accès complet à l’objet S3.bucketName + key specifies the location of the S3 object, where bucket is the root container for S3 objects, and key is the full path to the S3 object.

Exemple de jeu de données avec le préfixeSample dataset with prefix

{
    "name": "dataset-s3",
    "properties": {
        "type": "AmazonS3",
        "linkedServiceName": "link- testS3",
        "typeProperties": {
            "prefix": "testFolder/test",
            "bucketName": "testbucket",
            "format": {
                "type": "OrcFormat"
            }
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true
    }
}

Exemple de jeu de données (avec la version)Sample dataset (with version)

{
    "name": "dataset-s3",
    "properties": {
        "type": "AmazonS3",
        "linkedServiceName": "link- testS3",
        "typeProperties": {
            "key": "testFolder/test.orc",
            "bucketName": "testbucket",
            "version": "XXXXXXXXXczm0CJajYkHf0_k6LhBmkcL",
            "format": {
                "type": "OrcFormat"
            }
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true
    }
}

Chemins d’accès dynamiques pour S3Dynamic paths for S3

L’exemple précédent utilise des valeurs fixes pour les propriétés key et bucketName dans le jeu de données Amazon S3.The preceding sample uses fixed values for the key and bucketName properties in the Amazon S3 dataset.

"key": "testFolder/test.orc",
"bucketName": "testbucket",

Vous pouvez demander à Data Factory de calculer ces propriétés dynamiquement au moment de l’exécution à l’aide de variables système telles que SliceStart.You can have Data Factory calculate these properties dynamically at runtime, by using system variables such as SliceStart.

"key": "$$Text.Format('{0:MM}/{0:dd}/test.orc', SliceStart)"
"bucketName": "$$Text.Format('{0:yyyy}', SliceStart)"

Vous pouvez faire de même pour la propriété prefix d’un jeu de données Amazon S3.You can do the same for the prefix property of an Amazon S3 dataset. Pour obtenir la liste des fonctions et variables prises en charge, consultez Variables système et fonctions Data Factory.For a list of supported functions and variables, see Data Factory functions and system variables.

Propriétés de l’activité de copieCopy activity properties

Pour obtenir la liste complète des sections et propriétés disponibles pour la définition des activités, voir Création de pipelines.For a full list of sections and properties available for defining activities, see Creating pipelines. Les propriétés comme le nom, la description, les tables d'entrée et de sortie et les différentes stratégies sont disponibles pour tous les types d'activités.Properties such as name, description, input and output tables, and policies are available for all types of activities. Les propriétés disponibles dans la section typeProperties de l’activité varient pour chaque type d’activité.Properties available in the typeProperties section of the activity vary with each activity type. Pour l’activité de copie, les propriétés dépendent des types de sources et de récepteurs.For the copy activity, properties vary depending on the types of sources and sinks. Lorsque la source de l’activité de copie est de type FileSystemSource (qui inclut Amazon S3), la propriété suivante est disponible dans la section typeProperties :When a source in the copy activity is of type FileSystemSource (which includes Amazon S3), the following property is available in typeProperties section:

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values ObligatoireRequired
recursiverecursive Spécifie s’il faut répertorier de manière récursive les objets S3 sous le répertoire.Specifies whether to recursively list S3 objects under the directory. true/falsetrue/false NonNo

Exemple JSON : Copier des données depuis Amazon S3 vers Stockage Blob AzureJSON example: Copy data from Amazon S3 to Azure Blob storage

Cet exemple indique comment copier des données à partir d’Amazon S3 vers un stockage Blob Azure.This sample shows how to copy data from Amazon S3 to an Azure Blob storage. Toutefois, les données peuvent être copiées directement vers l’un des récepteurs pris en charge, via l’activité de copie de Data Factory.However, data can be copied directly to any of the sinks that are supported by using the copy activity in Data Factory.

Cet exemple fournit des définitions JSON pour les entités Data Factory suivantes.The sample provides JSON definitions for the following Data Factory entities. Vous pouvez utiliser ces définitions pour créer un pipeline afin de copier des données depuis Amazon S3 vers un Stockage Blob Azure à l’aide de Visual Studio ou de PowerShell.You can use these definitions to create a pipeline to copy data from Amazon S3 to Blob storage, by using the Visual Studio or PowerShell.

L’exemple copie des données à partir d’Amazon S3 vers un objet blob Azure toutes les heures.The sample copies data from Amazon S3 to an Azure blob every hour. Les propriétés JSON utilisées dans ces exemples sont décrites dans les sections suivant les exemples.The JSON properties used in these samples are described in sections following the samples.

Service lié Amazon S3Amazon S3 linked service

{
    "name": "AmazonS3LinkedService",
    "properties": {
        "type": "AwsAccessKey",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": "<secret access key>"
        }
    }
}

Service lié Stockage AzureAzure Storage linked service

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Jeu de données d’entrée Amazon S3Amazon S3 input dataset

La définition de "external": true informe le service Data Factory qu’il s’agit d’un jeu de données qui est externe à Data Factory.Setting "external": true informs the Data Factory service that the dataset is external to the data factory. Définissez cette propriété sur true sur un jeu de données d’entrée qui n’est pas produit par une activité dans le pipeline.Set this property to true on an input dataset that is not produced by an activity in the pipeline.

    {
        "name": "AmazonS3InputDataset",
        "properties": {
            "type": "AmazonS3",
            "linkedServiceName": "AmazonS3LinkedService",
            "typeProperties": {
                "key": "testFolder/test.orc",
                "bucketName": "testbucket",
                "format": {
                    "type": "OrcFormat"
                }
            },
            "availability": {
                "frequency": "Hour",
                "interval": 1
            },
            "external": true
        }
    }

Jeu de données de sortie d’objet Blob AzureAzure Blob output dataset

Les données sont écrites dans un nouvel objet blob toutes les heures (fréquence : heure, intervalle : 1).Data is written to a new blob every hour (frequency: hour, interval: 1). Le chemin d’accès du dossier pour l’objet blob est évalué dynamiquement en fonction de l’heure de début du segment en cours de traitement.The folder path for the blob is dynamically evaluated based on the start time of the slice that is being processed. Le chemin d’accès du dossier utilise l’année, le mois, le jour et la partie heure de l’heure de début.The folder path uses the year, month, day, and hours parts of the start time.

{
    "name": "AzureBlobOutputDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/fromamazons3/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "partitionedBy": [
                {
                    "name": "Year",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyy"
                    }
                },
                {
                    "name": "Month",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "MM"
                    }
                },
                {
                    "name": "Day",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "dd"
                    }
                },
                {
                    "name": "Hour",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "HH"
                    }
                }
            ]
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Activité de copie dans un pipeline avec une source Amazon S3 et un récepteur blobCopy activity in a pipeline with an Amazon S3 source and a blob sink

Le pipeline contient une activité de copie qui est configurée pour utiliser les jeux de données d’entrée et de sortie, et qui est planifiée pour s’exécuter toutes les heures.The pipeline contains a copy activity that is configured to use the input and output datasets, and is scheduled to run every hour. Dans la définition du pipeline JSON, le type source est défini sur FileSystemSource et le type sink est défini sur BlobSink.In the pipeline JSON definition, the source type is set to FileSystemSource, and sink type is set to BlobSink.

{
    "name": "CopyAmazonS3ToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "FileSystemSource",
                        "recursive": true
                    },
                    "sink": {
                        "type": "BlobSink",
                        "writeBatchSize": 0,
                        "writeBatchTimeout": "00:00:00"
                    }
                },
                "inputs": [
                    {
                        "name": "AmazonS3InputDataset"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobOutputDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "AmazonS3ToBlob"
            }
        ],
        "start": "2014-08-08T18:00:00Z",
        "end": "2014-08-08T19:00:00Z"
    }
}

Notes

Pour savoir comment mapper des colonnes d’un jeu de données source à des colonnes d’un jeu de données récepteur, voir Mappage des colonnes d’un jeu de données dans Azure Data Factory.To map columns from a source dataset to columns from a sink dataset, see Mapping dataset columns in Azure Data Factory.

Étapes suivantesNext steps

Consultez les articles suivants :See the following articles: