AWS Data Pipeline n'est plus disponible pour les nouveaux clients. Les clients existants de AWS Data Pipeline peut continuer à utiliser le service normalement. En savoir plus
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Copie de données MySQL à l'aide de la ligne de commande
Vous pouvez créer un pipeline pour copier les données d'une table MySQL vers un fichier dans un compartiment Amazon S3.
Prérequis
Avant de commencer, exécutez les étapes suivantes :
-
Installez et configurez une interface de ligne de commande (CLI). Pour plus d'informations, veuillez consulter Accès AWS Data Pipeline.
-
Assurez-vous que les rôles IAM sont nommés DataPipelineDefaultRoleet DataPipelineDefaultResourceRoleexistent. La AWS Data Pipeline console crée automatiquement ces rôles pour vous. Si vous n'avez pas utilisé la AWS Data Pipeline console au moins une fois, vous devez créer ces rôles manuellement. Pour plus d'informations, veuillez consulter Rôles IAM pour AWS Data Pipeline.
-
Configurez un compartiment Amazon S3 et une instance Amazon RDS. Pour plus d'informations, veuillez consulter Avant de commencer.
Définition d'un pipeline au format JSON
Cet exemple de scénario montre comment utiliser les définitions de pipeline JSON et l'AWS Data Pipelineinterface de ligne de commande pour copier les données (lignes) d'une table d'une base de données MySQL vers un fichier CSV (valeurs séparées par des virgules) dans un compartiment Amazon S3 à un intervalle de temps spécifié.
Voici le fichier JSON intégral de définition de pipeline, suivi d'une explication de chacune de ses sections.
Note
Nous vous recommandons d'utiliser un éditeur de texte qui peut vous aider à vérifier la syntaxe des fichiers au format JSON et de nommer le fichier avec l'extension .json.
{ "objects": [ { "id": "ScheduleId113", "startDateTime": "2013-08-26T00:00:00", "name": "My Copy Schedule", "type": "Schedule", "period": "1 Days" }, { "id": "CopyActivityId112", "input": { "ref": "MySqlDataNodeId115" }, "schedule": { "ref": "ScheduleId113" }, "name": "My Copy", "runsOn": { "ref": "Ec2ResourceId116" }, "onSuccess": { "ref": "ActionId1" }, "onFail": { "ref": "SnsAlarmId117" }, "output": { "ref": "S3DataNodeId114" }, "type": "CopyActivity" }, { "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://
example-bucket
/rds-output
/output
.csv", "name": "My S3 Data", "type": "S3DataNode" }, { "id": "MySqlDataNodeId115", "username": "my-username
", "schedule": { "ref": "ScheduleId113" }, "name": "My RDS Data", "*password": "my-password
", "table": "table-name
", "connectionString": "jdbc:mysql://your-sql-instance-name
.id
.region-name
.rds.amazonaws.com:3306/database-name
", "selectQuery": "select * from #{table}", "type": "SqlDataNode" }, { "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" }, { "message": "This is a success message.", "id": "ActionId1", "subject": "RDS to S3 copy succeeded!", "name": "My Success Alarm", "role": "DataPipelineDefaultRole", "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic
", "type": "SnsAlarm" }, { "id": "Default", "scheduleType": "timeseries", "failureAndRerunMode": "CASCADE", "name": "Default", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" }, { "message": "There was a problem executing #{node.name} at for period #{node.@scheduledStartTime} to #{node.@scheduledEndTime}", "id": "SnsAlarmId117", "subject": "RDS to S3 copy failed", "name": "My Failure Alarm", "role": "DataPipelineDefaultRole", "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic
", "type": "SnsAlarm" } ] }
Nœud de données MySQL
Le composant du MySqlDataNode pipeline d'entrée définit un emplacement pour les données d'entrée ; dans ce cas, il s'agit d'une instance Amazon RDS. Le MySqlDataNode composant d'entrée est défini par les champs suivants :
{ "id": "MySqlDataNodeId115", "username": "
my-username
", "schedule": { "ref": "ScheduleId113" }, "name": "My RDS Data", "*password": "my-password
", "table": "table-name
", "connectionString": "jdbc:mysql://your-sql-instance-name
.id
.region-name
.rds.amazonaws.com:3306/database-name
", "selectQuery": "select * from #{table}", "type": "SqlDataNode" },
- Id
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).
- Nom d'utilisateur
Nom d'utilisateur du compte de base de données disposant des autorisations suffisantes pour extraire des données de la table de base de données. Remplacez
my-username
par le nom de votre utilisateur.- Planificateur
Référence au composant de planification que nous avons créé dans les lignes précédentes du fichier JSON.
- Nom
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).
- *Password
Mot de passe du compte de base de données précédé du préfixe astérisque pour indiquer qu'AWS Data Pipeline doit chiffrer la valeur de mot de passe. Remplacez
my-password
par le mot de passe correspondant à votre utilisateur. Le champ de mot de passe est précédé du caractère spécial astérisque. Pour plus d'informations, veuillez consulter Caractères spéciaux.- Tableau
Nom de la table de base de données qui contient les données à copier. Remplacez
table-name
par le nom de votre table de base de données.- connectionChaîne
Chaîne de connexion JDBC permettant à l'CopyActivityobjet de se connecter à la base de données.
- selectQuery
Requête SQL SELECT valide qui spécifie les données à copier à partir de la table de base de données. Notez que
#{table}
est une expression qui réutilise le nom de table fourni par la variable « table » dans les lignes précédentes du fichier JSON.- Type
Le SqlDataNode type, qui est une instance Amazon RDS utilisant MySQL dans cet exemple.
Note
Le type MySqlDataNode est obsolète. Bien que vous puissiez encore l'utiliserMySqlDataNode, nous vous recommandons d'utiliserSqlDataNode.
Nœud de données Amazon S3
Ensuite, le composant du pipeline S3Output définit un emplacement pour le fichier de sortie ; dans ce cas, un fichier CSV dans un emplacement de compartiment Amazon S3. Le DataNode composant S3 de sortie est défini par les champs suivants :
{ "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://
example-bucket
/rds-output
/output
.csv", "name": "My S3 Data", "type": "S3DataNode" },
- Id
ID défini par l'utilisateur (libellé fourni à titre de référence uniquement).
- Planificateur
Référence au composant de planification que nous avons créé dans les lignes précédentes du fichier JSON.
- filePath
Chemin d'accès aux données associées au nœud de données, qui est un fichier de sortie CSV dans cet exemple.
- Nom
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).
- Type
Le type d'objet du pipeline, S3 DataNode pour correspondre à l'emplacement où se trouvent les données, dans un compartiment Amazon S3.
Ressource
Il s'agit d'une définition de la ressource de calcul qui exécute l'opération de copie. Dans cet exemple, AWS Data Pipeline doit automatiquement créer une instance EC2 pour effectuer la tâche de copie et mettre fin à la ressource une fois la tâche terminée. Les champs définis ici contrôlent la création et le fonctionnement de l'instance EC2 qui effectue le travail. Le composant EC2Resource est défini par les champs suivants :
{ "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" },
- Id
ID défini par l'utilisateur (libellé fourni à titre de référence uniquement).
- Planificateur
Planification sur laquelle créer la ressource de calcul.
- Nom
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement).
- Rôle
Le rôle IAM du compte qui accède aux ressources, par exemple en accédant à un bucket Amazon S3 pour récupérer des données.
- Type
Type de ressource de calcul pour effectuer le travail ; dans ce cas, une instance EC2. D'autres types de ressources sont disponibles, par exemple un EmrCluster type.
- resourceRole
Rôle IAM du compte qui crée des ressources, comme la création et la configuration d'une instance EC2 en votre nom. Le rôle et le rôle ResourceRole peuvent être identiques, mais ils fournissent séparément une plus grande granularité dans votre configuration de sécurité.
Activité
La dernière section du fichier JSON correspond à la définition de l'activité représentant le travail à effectuer. Dans ce cas, nous utilisons un CopyActivity composant pour copier les données d'un fichier d'un compartiment Amazon S3 vers un autre fichier. Le composant CopyActivity est défini par les champs suivants :
{ "id": "CopyActivityId112", "input": { "ref": "MySqlDataNodeId115" }, "schedule": { "ref": "ScheduleId113" }, "name": "My Copy", "runsOn": { "ref": "Ec2ResourceId116" }, "onSuccess": { "ref": "ActionId1" }, "onFail": { "ref": "SnsAlarmId117" }, "output": { "ref": "S3DataNodeId114" }, "type": "CopyActivity" },
- Id
ID défini par l'utilisateur (libellé fourni à titre de référence uniquement)
- Entrée
Emplacement des données MySQL à copier
- Planificateur
Planification d'exécution de cette activité
- Nom
Nom défini par l'utilisateur (libellé fourni à titre de référence uniquement)
- runsOn
Ressource de calcul qui effectue le travail que cette activité définit. Dans cet exemple, nous fournissons une référence à l'instance EC2 définie précédemment. L'utilisation du champ
runsOn
entraîne la création automatique de l'instance EC2 par AWS Data Pipeline. Le champrunsOn
indique que la ressource existe dans l'infrastructure AWS, tandis que la valeur workerGroup signifie que vous voulez utiliser vos propres ressources locales pour effectuer le travail.- onSuccess
Notification SnsAlarm à envoyer si l'activité se termine correctement
- onFail
Notification SnsAlarm à envoyer si l'activité échoue
- Sortie
L'emplacement Amazon S3 du fichier de sortie CSV
- Type
Type d'activité à effectuer.
Chargement et activation de la définition de pipeline
Vous devez charger la définition de votre pipeline et activer votre pipeline. Dans les exemples de commandes suivants, remplacez pipeline_name
par une étiquette pour votre pipeline et pipeline_file par le chemin complet du fichier
de définition du pipeline. .json
AWS CLI
Pour créer votre définition de pipeline et activer votre pipeline, utilisez la commande create-pipeline suivante. Notez l'ID de votre pipeline, car vous utiliserez cette valeur avec la plupart des commandes CLI.
aws datapipeline create-pipeline --name
{ "pipelineId": "df-00627471SOVYZEXAMPLE" }pipeline_name
--unique-idtoken
Pour charger la définition de votre pipeline, utilisez la put-pipeline-definitioncommande suivante.
aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json
Si votre pipeline est validé avec succès, le validationErrors
champ est vide. Vous devez consulter tous les avertissements.
Pour activer votre pipeline, utilisez la commande activate-pipeline suivante.
aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE
Vous pouvez vérifier que votre pipeline apparaît dans la liste des pipelines à l'aide de la commande list-pipelines suivante.
aws datapipeline list-pipelines