Copiar dados CSV usando a linha de comando - AWS Data Pipeline

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 CSV usando a linha de comando

Você pode criar e usar pipelines para copiar dados de um bucket do Amazon S3 para outro.

Pré-requisitos

Antes de começar, é necessário concluir as seguintes etapas:

  1. Instale e configure a Interface da linha de comando (CLI). Para obter mais informações, consulte Como acessar o AWS Data Pipeline.

  2. Certifique-se de que os perfis do IAM chamados DataPipelineDefaultRole e DataPipelineDefaultResourceRole existem. O console do AWS Data Pipeline cria essas funções para você automaticamente. Se você não usou o console do AWS Data Pipeline pelo menos uma vez, deverá criar essas funções manualmente. Para obter mais informações, consulte Funções do IAM para AWS Data Pipeline.

Definir um pipeline no formato JSON

Este cenário de exemplo mostra como usar as definições do pipeline JSON e a CLI do AWS Data Pipeline para programar a cópia de dados entre dois buckets do Amazon S3 em um intervalo de tempo específico. 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.

Para ficar mais claro, neste exemplo ignoraremos os campos opcionais e mostramos apenas os campos obrigatórios. O arquivo JSON de pipeline completo para este exemplo é:

{ "objects": [ { "id": "MySchedule", "type": "Schedule", "startDateTime": "2013-08-18T00:00:00", "endDateTime": "2013-08-19T00:00:00", "period": "1 day" }, { "id": "S3Input", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "filePath": "s3://amzn-s3-demo-bucket/source/inputfile.csv" }, { "id": "S3Output", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "filePath": "s3://amzn-s3-demo-bucket/destination/outputfile.csv" }, { "id": "MyEC2Resource", "type": "Ec2Resource", "schedule": { "ref": "MySchedule" }, "instanceType": "m1.medium", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" }, { "id": "MyCopyActivity", "type": "CopyActivity", "runsOn": { "ref": "MyEC2Resource" }, "input": { "ref": "S3Input" }, "output": { "ref": "S3Output" }, "schedule": { "ref": "MySchedule" } } ] }

Schedule

O pipeline define uma programação com uma data de início e fim, além de um período para determinar com que frequência a atividade neste pipeline é executada.

{ "id": "MySchedule", "type": "Schedule", "startDateTime": "2013-08-18T00:00:00", "endDateTime": "2013-08-19T00:00:00", "period": "1 day" },

Nós de dados do Amazon S3

Em seguida, o componente de pipeline S3DataNode de entrada definirá um local para os arquivos de entrada. Nesse caso, o local de um bucket do Amazon S3. O componente S3DataNode de entrada é definido pelos seguintes campos:

{ "id": "S3Input", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "filePath": "s3://example-bucket/source/inputfile.csv" },
Id

O nome definido pelo usuário para o local de entrada (somente um rótulo para sua referência).

Tipo

O tipo de componente do pipeline, que é “S3DataNode” para corresponder com o local em que os dados residem, em um bucket do Amazon S3.

Schedule

Uma referência para o componente de programação que criamos nas linhas anteriores do arquivo JSON "MySchedule".

Caminho

O caminho para os dados associados ao nó de dados. A sintaxe de um nó de dados é determinada pelo seu tipo. Por exemplo, a sintaxe para um caminho do Amazon S3 segue uma sintaxe diferente que é apropriada para uma tabela de banco de dados.

Em seguida, o componente S3DataNode de saída definirá o local de destino para saída dos dados. Ele segue o mesmo formato que o componente S3DataNode de entrada, exceto pelo nome do componente e um caminho diferente para indicar o arquivo de destino.

{ "id": "S3Output", "type": "S3DataNode", "schedule": { "ref": "MySchedule" }, "filePath": "s3://example-bucket/destination/outputfile.csv" },

Recurso

Esta é uma definição do recurso computacional que executa a operação de cópia. Neste exemplo, o AWS Data Pipeline deve criar automaticamente uma instância do EC2 para executar 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 instância do EC2 que faz o trabalho. O EC2Resource é definido pelos seguintes campos:

{ "id": "MyEC2Resource", "type": "Ec2Resource", "schedule": { "ref": "MySchedule" }, "instanceType": "m1.medium", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" },
Id

O nome definido pelo usuário para a programação do pipeline, que é apenas um rótulo para sua referência.

Tipo

O tipo de recurso computacional para executar o trabalho. Nesse caso, uma instância do EC2. Existem outros tipos de recursos disponíveis, por exemplo, o tipo EmrCluster.

Schedule

A programação para criar este recurso computacional.

instanceType

O tamanho da instância do EC2 a ser criada. Certifique-se de configurar o tamanho da instância do EC2 que melhor corresponda à carga de trabalho que você deseja executar com o AWS Data Pipeline. Nesse caso, configuramos uma instância do EC2 m1.medium. Para obter mais informações sobre os diferentes tipos de instância e quando usar cada uma delas, consulte o tópico Tipos de instância do Amazon EC2 no site http://aws.amazon.com/ec2/instance-types/.

Função

O perfil do IAM da conta que acessa os recursos, como acesso ao bucket do Amazon S3 para recuperação de dados.

resourceRole

A função do IAM da conta que cria recursos, como criação e configuração de uma instância do EC2 em seu nome. Role e ResourceRole podem ser a mesma função, mas fornecem separadamente uma granularidade maior na 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. Este exemplo usa CopyActivity para copiar dados de um arquivo CSV em um bucket http://aws.amazon.com/ec2/instance-types/ para outro. O componente CopyActivity é definido pelos seguintes campos:

{ "id": "MyCopyActivity", "type": "CopyActivity", "runsOn": { "ref": "MyEC2Resource" }, "input": { "ref": "S3Input" }, "output": { "ref": "S3Output" }, "schedule": { "ref": "MySchedule" } }
Id

O nome definido pelo usuário para a atividade, que é apenas um rótulo para sua referência.

Tipo

O tipo de atividade a ser realizada, como MyCopyActivity.

runsOn

O recurso computacional que realiza o trabalho definido por essa atividade. Neste exemplo, fornecemos uma referência à instância do EC2 anteriormente definida. Usar o campo runsOn faz com que o AWS Data Pipeline crie a instância do EC2 para você. O campo runsOn 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.

Input

O local dos dados a serem copiados.

Output

Os dados do local de destino.

Schedule

A programação na qual esta atividade 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, substitua pipeline_name por um rótulo para seu pipeline e pipeline_file pelo caminho totalmente qualificado para o arquivo .json de definição 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 pipeline_name --unique-id token { "pipelineId": "df-00627471SOVYZEXAMPLE" }

Atualize a definição do pipeline usando o seguinte comando: put-pipeline-definition.

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