AWS Data Pipeline não está mais disponível para novos clientes. Os clientes existentes do AWS Data Pipeline podem continuar usando o serviço normalmente. Saiba mais
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Copiar dados do MySQL usando a linha de comando
Você pode criar um pipeline para copiar dados de uma tabela do MySQL para um arquivo em um bucket do Amazon S3.
Pré-requisitos
Antes de começar, é necessário concluir as seguintes etapas:
-
Instale e configure a Interface da linha de comando (CLI). Para obter mais informações, consulte Acessando AWS Data Pipeline.
-
Certifique-se de que as funções do IAM tenham sido nomeadas DataPipelineDefaultRolee DataPipelineDefaultResourceRoleexistam. O AWS Data Pipeline console cria essas funções para você automaticamente. Se você não usou o AWS Data Pipeline console pelo menos uma vez, deverá criar essas funções manualmente. Para obter mais informações, consulte Funções do IAM para AWS Data Pipeline.
-
Configure um bucket do Amazon S3 e uma instância do Amazon RDS. Para obter mais informações, consulte Antes de começar.
Definir um pipeline no formato JSON
Este cenário de exemplo mostra como usar as definições de pipeline JSON e a CLI do AWS Data Pipeline para copiar dados (linhas) de uma tabela em um banco de dados MySQL para um arquivo CSV (valores separados por vírgulas) de um bucket do Amazon S3 em um intervalo especificado.
Este é o arquivo JSON de definição de pipeline completo, seguido de uma explicação para cada uma das seções.
nota
Recomendamos que você use um editor de texto que possa ajudá-lo a verificar a sintaxe dos arquivos formatados com JSON e nomeie o arquivo usando a extensão de arquivo .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ó de dados do MySQL
O componente do MySqlDataNode pipeline de entrada define um local para os dados de entrada; nesse caso, uma instância do Amazon RDS. O MySqlDataNode componente de entrada é definido pelos seguintes campos:
{ "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
O nome definido pelo usuário, que é apenas um rótulo para sua referência.
- Nome de usuário
O nome de usuário da conta do banco de dados que tem permissão suficiente para recuperar dados da tabela do banco de dados.
my-username
Substitua pelo nome do seu usuário.- Programação
Uma referência para o componente de programação que criamos nas linhas anteriores do arquivo JSON.
- Name
O nome definido pelo usuário, que é apenas um rótulo para sua referência.
- *Password
A senha da conta do banco de dados com o prefixo asterisco para indicar que AWS Data Pipeline deve criptografar o valor da senha.
my-password
Substitua pela senha correta para seu usuário. O campo de senha é precedido pelo caractere especial asterisco. Para obter mais informações, consulte Caracteres especiais.- Tabela
O nome da tabela do banco de dados que contém os dados a serem copiados.
table-name
Substitua pelo nome da tabela do seu banco de dados.- connectionString
A string de conexão JDBC para o CopyActivity objeto se conectar ao banco de dados.
- selectQuery
Uma consulta SQL SELECT válida que especifica quais dados da tabela do banco de dados serão copiados.
#{table}
é uma expressão que reutiliza o nome da tabela fornecido pela variável "table" nas linhas que precedem o arquivo JSON.- Tipo
O SqlDataNode tipo, que é uma instância do Amazon RDS usando MySQL neste exemplo.
nota
O MySqlDataNode tipo está obsoleto. Embora você ainda possa usar MySqlDataNode, recomendamos usar SqlDataNode.
Nó de dados do Amazon S3
Em seguida, o componente de pipeline S3Output definirá um local para o arquivo de saída. Nesse caso, um arquivo CSV no local de um bucket do Amazon S3. O DataNode componente S3 de saída é definido pelos seguintes campos:
{ "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://
example-bucket
/rds-output
/output
.csv", "name": "My S3 Data", "type": "S3DataNode" },
- Id
O ID definido pelo usuário, que é apenas um rótulo para sua referência.
- Programação
Uma referência para o componente de programação que criamos nas linhas anteriores do arquivo JSON.
- filePath
O caminho para os dados associados ao nó de dados, que é um arquivo de saída CSV neste exemplo.
- Name
O nome definido pelo usuário, que é apenas um rótulo para sua referência.
- Tipo
O tipo de objeto do pipeline, que é S3 DataNode para corresponder ao local em que os dados residem, em um bucket do Amazon S3.
Recurso
Esta é uma definição do recurso computacional que executa a operação de cópia. Neste exemplo, AWS Data Pipeline deve criar automaticamente uma EC2 instância para realizar a tarefa de cópia e encerrar o recurso após a conclusão da tarefa. Os campos definidos aqui controlam a criação e a função da EC2 instância que faz o trabalho. O EC2 Recurso é definido pelos seguintes campos:
{ "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" },
- Id
O ID definido pelo usuário, que é apenas um rótulo para sua referência.
- Programação
A programação para criar este recurso computacional.
- Name
O nome definido pelo usuário, que é apenas um rótulo para sua referência.
- Função
O perfil do IAM da conta que acessa os recursos, como acesso ao bucket do Amazon S3 para recuperação de dados.
- Tipo
O tipo de recurso computacional para realizar o trabalho; nesse caso, uma EC2 instância. Há outros tipos de recursos disponíveis, como um EmrCluster tipo.
- resourceRole
A função do IAM da conta que cria recursos, como criar e configurar uma EC2 instância em seu nome. A função e ResourceRole podem ser a mesma função, mas separadamente fornecem maior granularidade em sua configuração de segurança.
Atividade
A última seção no arquivo JSON é a definição da atividade que representa o trabalho a ser executado. Nesse caso, usamos um CopyActivity componente para copiar dados de um arquivo em um bucket do Amazon S3 para outro arquivo. O CopyActivity componente é definido pelos seguintes campos:
{ "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
O ID definido pelo usuário, que é apenas um rótulo para sua referência
- Entrada
O local dos dados do MySQL a serem copiados
- Programação
A programação na qual esta atividade será executada
- Name
O nome definido pelo usuário, que é apenas um rótulo para sua referência
- runsOn
O recurso computacional que realiza o trabalho definido por essa atividade. Neste exemplo, fornecemos uma referência à EC2 instância definida anteriormente. Usar o
runsOn
campo causa AWS Data Pipeline para criar a EC2 instância para você. O camporunsOn
indica que o recurso existe na infraestrutura da AWS, enquanto o valor workerGroup indica que você deseja usar seus próprios recursos locais para executar o trabalho.- onSuccess
SnsAlarm a ser enviado se a atividade for concluída com sucesso
- onFail
SnsAlarm a ser enviado se a atividade falhar
- Saída
Local do arquivo CSV de saída no Amazon S3
- Tipo
O tipo da atividade a ser executada.
Fazer upload e ativar a definição do pipeline
Você deve fazer o upload da definição do pipeline e ativá-lo. Nos comandos de exemplo a seguir, pipeline_name
substitua por um rótulo para seu pipeline e pipeline_file
pelo caminho totalmente qualificado para o arquivo de definição .json
de pipeline.
AWS CLI
Para criar sua definição de pipeline e ativar seu pipeline, use o seguinte comando: create-pipeline. Observe a ID do seu pipeline, pois você usará esse valor com a maioria dos comandos da CLI.
aws datapipeline create-pipeline --name
{ "pipelineId": "df-00627471SOVYZEXAMPLE" }pipeline_name
--unique-idtoken
Para fazer o upload da definição do pipeline, use o put-pipeline-definitioncomando a seguir.
aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json
Se o pipeline for validado com êxito, o campo validationErrors
estará vazio. Você deve revisar todos os avisos.
Para ativar o pipeline, use o seguinte comando: activate-pipeline.
aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE
Você pode verificar se seu pipeline aparece na lista de pipeline usando o seguinte comando: list-pipelines.
aws datapipeline list-pipelines