

# Usando sistemas de controle de versão do Git no AWS Glue
<a name="edit-job-add-source-control-integration"></a>

**nota**  
 Atualmente, os notebooks não são compatíveis com o controle de versão noAWS Glue Studio. No entanto, há suporte para controle de versão para scripts de AWS Glue tarefas e tarefas ETL visuais. 

 Se houver repositórios remotos e você quiser gerenciar seus trabalhos do AWS Glue usando seus repositórios, poderá usar o AWS Glue Studio ou a AWS CLI para sincronizar as alterações nos seus repositórios e seus trabalhos no AWS Glue. Quando sincroniza as alterações dessa forma, você está transferindo o trabalho do AWS Glue Studio para seu repositório ou transferindo do repositório para o AWS Glue Studio. 

 Com a integração do Git no AWS Glue Studio, você pode: 
+  Fazer a integração com sistemas de controle de versão do Git, como AWS CodeCommit, GitHub e Bitbucket 
+  Editar trabalhos do AWS Glue no AWS Glue Studio se você usa trabalhos visuais ou de script e os sincroniza com um repositório 
+  Parametrizar origens e destinos nos trabalhos 
+  Extrair trabalhos de um repositório e editá-los no AWS Glue Studio 
+  Testar trabalhos extraindo-os de ramificações e/ou transferindo-os para ramificações usando fluxos de trabalho em várias ramificações no AWS Glue Studio 
+  Baixar arquivos de um repositório e carregar trabalhos para o AWS Glue Studio para a criação de trabalhos entre contas 
+  Usar sua ferramenta de automação preferencial (por exemplo, Jenkins, AWS CodeDeploy etc.) 

Este vídeo demonstra como você pode integrar o AWS ao Glue com Git e criar um pipeline de código contínuo e colaborativo.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/XRlZq2kvE4U/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/XRlZq2kvE4U)


## permissões do IAM
<a name="git-integration-permissions"></a>

 Certifique-se de que o trabalho tenha uma das seguintes permissões do IAM. Para obter mais informações sobre como configurar permissões do IAM, consulte [Configurar permissões do IAM para o AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html?icmpid=docs_glue_studio_helppanel#getting-started-iam-permissions). 
+ `AWSGlueServiceRole`
+ `AWSGlueConsoleFullAccess`

 No mínimo, as seguintes ações são necessárias para a integração com o Git: 
+  `glue:UpdateJobFromSourceControl`: para poder atualizar o AWS Glue com um trabalho presente em um sistema de controle de versão 
+  `glue:UpdateSourceControlFromJob` — para poder atualizar o sistema de controle de versão com um trabalho armazenado no AWS Glue 
+  `s3:GetObject`: para poder recuperar o script do trabalho durante a transferência para o sistema de controle de versão 
+  `s3:PutObject`: para poder atualizar o script ao extrair um trabalho de um sistema de controle de origem 

## Pré-requisitos
<a name="edit-job-push-source-repository-prerequisites"></a>

 Para enviar trabalhos para um repositório de controle de origem, você precisará: 
+  um repositório que já foi criado pelo seu administrador 
+  uma ramificação no repositório 
+  um token de acesso pessoal (para o Bitbucket, esse é o token de acesso ao repositório) 
+  o nome de usuário do proprietário do repositório 
+  definir permissões no repositório para permitir AWS Glue Studio a leitura e gravação no repositório 
  +  **GitLab** — defina os escopos do token para api, read\$1repository e write\$1repository 
  +  **Bitbucket** — defina permissões para: 
    + **Associação ao Workspace** — leia, escreva
    + **Projetos** — escrever, administrar ler
    + **Repositórios** — leitura, gravação, administração, exclusão

**nota**  
 Ao usar AWS CodeCommit, o token de acesso pessoal e o proprietário do repositório não são necessários. Consulte [ Conceitos básicos do Git e do AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started.html). 

 **Usando trabalhos do seu repositório de controle de origem no AWS Glue Studio** 

 Para extrair um trabalho do seu repositório de controle de origem que não está no AWS Glue Studio e usar esse trabalho no AWS Glue Studio, os pré-requisitos dependerão do tipo de trabalho. 

 **Para um trabalho visual:** 
+  você precisa de uma pasta e de um arquivo JSON da definição do trabalho que correspondam ao nome do trabalho 

   Por exemplo, veja a definição de trabalho abaixo. A ramificação no seu repositório deve conter um caminho `my-visual-job/my-visual-job.json`, em que a pasta e o arquivo JSON correspondam ao nome do trabalho 

  ```
  {
    "name" : "my-visual-job",
    "description" : "",
    "role" : "arn:aws:iam::aws_account_id:role/Rolename",
    "command" : {
      "name" : "glueetl",
      "scriptLocation" : "s3://foldername/scripts/my-visual-job.py",
      "pythonVersion" : "3"
    },
    "codeGenConfigurationNodes" : "{\"node-nodeID\":{\"S3CsvSource\":{\"AdditionalOptions\":{\"EnableSamplePath\":false,\"SamplePath\":\"s3://notebook-test-input/netflix_titles.csv\"},\"Escaper\":\"\",\"Exclusions\":[],\"Name\":\"Amazon S3\",\"OptimizePerformance\":false,\"OutputSchemas\":[{\"Columns\":[{\"Name\":\"show_id\",\"Type\":\"string\"},{\"Name\":\"type\",\"Type\":\"string\"},{\"Name\":\"title\",\"Type\":\"choice\"},{\"Name\":\"director\",\"Type\":\"string\"},{\"Name\":\"cast\",\"Type\":\"string\"},{\"Name\":\"country\",\"Type\":\"string\"},{\"Name\":\"date_added\",\"Type\":\"string\"},{\"Name\":\"release_year\",\"Type\":\"bigint\"},{\"Name\":\"rating\",\"Type\":\"string\"},{\"Name\":\"duration\",\"Type\":\"string\"},{\"Name\":\"listed_in\",\"Type\":\"string\"},{\"Name\":\"description\",\"Type\":\"string\"}]}],\"Paths\":[\"s3://dalamgir-notebook-test-input/netflix_titles.csv\"],\"QuoteChar\":\"quote\",\"Recurse\":true,\"Separator\":\"comma\",\"WithHeader\":true}}}"
  }
  ```

 **Para um trabalho de script: ** 
+  você precisa de uma pasta, de um arquivo JSON da definição do trabalho e do script 
+  a pasta e o arquivo JSON devem corresponder ao nome do trabalho. O nome do script precisa corresponder ao `scriptLocation` da definição do trabalho junto com a extensão do arquivo 

   Por exemplo, na definição do trabalho abaixo, a ramificação no seu repositório deve conter um caminho `my-script-job/my-script-job.json` e `my-script-job/my-script-job.py`. O nome do script deve corresponder ao nome na `scriptLocation`, incluindo a extensão do script 

  ```
  {
    "name" : "my-script-job",
    "description" : "",
    "role" : "arn:aws:iam::aws_account_id:role/Rolename",
    "command" : {
      "name" : "glueetl",
      "scriptLocation" : "s3://foldername/scripts/my-script-job.py",
      "pythonVersion" : "3"
    }
  }
  ```

## Limitações
<a name="edit-job-repository-limitations"></a>
+  No momento, o AWS Glue não oferece suporte a push/pull do [GitLab-Groups](https://docs.gitlab.com/ee/user/group). 

## Conectar repositórios de controle de versão com o AWS Glue
<a name="edit-job-connecting-repositories"></a>

 Você pode inserir os detalhes do seu repositório de controle de versão e gerenciá-los na guia **Version Control** (Controle de versão) no editor de trabalhos do AWS Glue Studio. Para se integrar ao seu repositório Git, deverá se conectar a ele para cada vez que fizer login no AWS Glue Studio. 

 Para conectar um sistema de controle de versão Git: 

1.  No AWS Glue Studio, comece um novo trabalho e escolha guia **Version Control** (Controle de versão).   
![\[A captura de tela mostra um trabalho com a guia Version Control (Controle de versão) selecionada.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/editing-nodes-version-control-tab.png)

1.  Em **Version control system** (Sistema de controle de versão), escolha o serviço Git entre as opções disponíveis clicando no menu suspenso. 
   +  AWS CodeCommit 
   +  GitHub 
   + GitLab
   + Bitbucket

1.  Dependendo do sistema de controle de versão Git escolhido, você terá campos diferentes para preencher. 

   

    **Para AWS CodeCommit**: 

    Conclua a configuração do repositório selecionando o repositório e a ramificação para seu trabalho: 
   +  **Repositório**: se você tiver configurado repositórios no AWS CodeCommit, selecione o repositório no menu suspenso. Seus repositórios serão preenchidos automaticamente na lista 
   +  **Ramificação**: selecione a ramificação no menu suspenso 
   +  **Pasta**: *opcional* - insira o nome da pasta na qual deseja salvar seu trabalho. Se o campo for deixado vazio, uma pasta será criada automaticamente. O nome da pasta assume o nome do trabalho como padrão. 

   

    **Para o GitHub**: 

    Conclua a configuração do GitHub preenchendo os campos: 
   +  **Personal access token** (Token de acesso pessoal): esse é o token fornecido pelo repositório do GitHub. Para obter mais informações sobre tokens de acesso pessoal, consulte [GitHub Docs](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) (Documentos do GitHub) 
   +  **Repository owner** (Proprietário do repositório): este é o proprietário do repositório do GitHub. 

    Conclua a configuração do repositório selecionando o repositório e a ramificação no GitHub. 
   +  **Repository** (Repositório): se você tiver configurado repositórios no GitHub, selecione o repositório no menu suspenso. Seus repositórios serão preenchidos automaticamente na lista 
   +  **Ramificação**: selecione a ramificação no menu suspenso 
   +  **Pasta**: *opcional* - insira o nome da pasta na qual deseja salvar seu trabalho. Se o campo for deixado vazio, uma pasta será criada automaticamente. O nome da pasta assume o nome do trabalho como padrão. 

   

    **Para o GitLab**: 
**nota**  
 No momento, o AWS Glue não oferece suporte a push/pull do [GitLab-Groups](https://docs.gitlab.com/ee/user/group). 
   +  **Personal access token** (Token de acesso pessoal): esse é o token fornecido pelo repositório do GitLab. Para obter mais informações sobre tokens de acesso pessoal, consulte Tokens de acesso pessoal do [GitLab](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html) 
   +  **Repository owner** (Proprietário do repositório): este é o proprietário do repositório do GitLab. 

    Conclua a configuração do repositório selecionando o repositório e a ramificação no GitLab. 
   +  **Repository** (Repositório): se você tiver configurado repositórios no GitLab, selecione o repositório no menu suspenso. Seus repositórios serão preenchidos automaticamente na lista 
   +  **Ramificação**: selecione a ramificação no menu suspenso 
   +  **Pasta**: *opcional* - insira o nome da pasta na qual deseja salvar seu trabalho. Se o campo for deixado vazio, uma pasta será criada automaticamente. O nome da pasta assume o nome do trabalho como padrão. 

    **Para Bitbucket**: 
   +  **Senha de aplicações**: o Bitbucket usa senhas de aplicações, e não tokens de acesso ao repositório. Para obter mais informações sobre senhas de aplicações, consulte [Senhas de aplicações](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/). 
   +  **Repository owner** (Proprietário do repositório): este é o proprietário do repositório do Bitbucket. No Bitbucket, o proprietário é o criador do repositório. 

    Conclua a configuração do repositório selecionando o espaço de trabalho, repositório, ramificação e pasta do Bitbucket. 
   +  **Espaço de trabalho** - se você tiver espaços de trabalho configurados no Bitbucket, selecione o espaço de trabalho no menu suspenso. Seus espaços de trabalho são preenchidos automaticamente 
   +  **Repository** (Repositório) - se você tiver configurado repositórios no , selecione o repositório no menu suspenso. Seus repositórios são preenchidos automaticamente 
   +  **Ramificação**: selecione a ramificação no menu suspenso. Suas filiais são preenchidas automaticamente 
   +  **Pasta**: *opcional* - insira o nome da pasta na qual deseja salvar seu trabalho. Se deixado em branco, uma pasta será criada automaticamente com o nome do trabalho. 

1.  Escolha **Save** (Salvar) na parte superior do trabalho do AWS Glue Studio 

## Transferir trabalhos do AWS Glue para o repositório de origem
<a name="edit-job-push-source-repository"></a>

 Depois de inserir os detalhes do seu sistema de controle de versão, você pode editar trabalhos no AWS Glue Studio e enviá-los para seu repositório de origem. Se você não estiver familiarizado com os conceitos do Git, como push e pull, consulte esse tutorial em [Conceitos básicos do Git e do AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started.html). 

 Para transferir seu trabalho para um repositório, você precisa inserir os detalhes do seu sistema de controle de versão e salvar o trabalho. 

1.  No trabalho do AWS Glue Studio, escolha **Actions** (Ações). Opções adicionais de menu serão abertas.   
![\[A captura de tela mostra um trabalho com o menu Actions (Ações) aberto. A opção Push to repository (Transferir para o repositório) está visível.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/editing-nodes-actions-push-to-repository.png)

1.  Escolha **Push to repository** (Transferir para o repositório). 

    Essa ação salvará o trabalho. Quando você transfere para o repositório, o AWS Glue Studio transfere a alteração mais recente salva. Se o trabalho no repositório tiver sido modificado por você ou por outro usuário e estiver fora de sincronia com o trabalho no AWS Glue Studio, o trabalho no repositório será substituído pelo trabalho salvo no AWS Glue Studio quando você transferir o trabalho do AWS Glue Studio. 

1.  Escolha **Confirm** (Confirmar) para concluir a ação. Uma nova confirmação será criada no repositório. Se você estiver usando o AWS CodeCommit, uma mensagem de confirmação exibirá um link para a confirmação mais recente no AWS CodeCommit. 

## Extrair trabalhos do AWS Glue do repositório de origem
<a name="edit-job-pull-source-repository"></a>

 Depois de inserir os detalhes do seu repositório do Git na guia **Version control** (Controle de versão), você também pode extrair trabalhos do seu repositório e editá-los no AWS Glue Studio. 

1.  No trabalho do AWS Glue Studio, escolha **Actions** (Ações). Opções adicionais de menu serão abertas.   
![\[A captura de tela mostra um trabalho com o menu Actions (Ações) aberto. A opção Push to repository (Transferir para o repositório) está visível.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/editing-nodes-actions-push-to-repository.png)

1.  Escolha **Pull from repository** (Extrair do repositório). 

1.  Escolha **Confirmar**. Essa opção captura a confirmação mais recente do repositório e atualiza seu trabalho no AWS Glue Studio. 

1.  Edite seu trabalho no AWS Glue Studio. Se você fizer alterações, poderá sincronizar o trabalho com o repositório escolhendo **Push to repository** (Transferir para o repositório) no menu suspenso **Actions** (Ações). 