

# Conectar ao Jira Cloud
<a name="connecting-to-data-jira-cloud"></a>

O Jira Cloud é uma plataforma desenvolvida pela Atlassian. A plataforma inclui produtos de rastreamento de problemas que ajudam as equipes a planejar e acompanhar seus projetos Agile. Como usuário do Jira Cloud, sua conta contém dados sobre seus projetos, como problemas, fluxos de trabalho e eventos. É possível usar o AWS Glue para transferir dados do Jira Cloud para determinados serviços da AWS ou outras aplicações com suporte.

**Topics**
+ [Suporte do AWS Glue ao Jira Cloud](jira-cloud-support.md)
+ [Políticas que contêm as operações de API para criar e usar conexões](jira-cloud-configuring-iam-permissions.md)
+ [Configuração do Jira Cloud](jira-cloud-configuring.md)
+ [Configuração de conexões do Jira Cloud](jira-cloud-configuring-connections.md)
+ [Leitura de entidades do Jira Cloud](jira-cloud-reading-from-entities.md)
+ [Opções de conexão do Jira Cloud](jira-cloud-connection-options.md)
+ [Limitações e observações do conector do Jira Cloud](jira-cloud-connector-limitations.md)

# Suporte do AWS Glue ao Jira Cloud
<a name="jira-cloud-support"></a>

O AWS Glue oferece suporte ao Jira Cloud da seguinte forma:

**Compatível como fonte?**  
Sim. Você pode usar trabalhos de ETL do AWS Glue para consultar dados do Jira Cloud.

**Compatível como destino?**  
Não.

**Versões compatíveis da API do Jira Cloud**  
Estas são as versões compatíveis da API do Jira Cloud:
+ v3

Para suporte de entidades por versão específica, consulte [Leitura de entidades do Jira Cloud](jira-cloud-reading-from-entities.md). 

# Políticas que contêm as operações de API para criar e usar conexões
<a name="jira-cloud-configuring-iam-permissions"></a>

O exemplo de política a seguir descreve as permissões necessárias do AWS IAM para criar e usar conexões. Se você estiver criando um novo perfil, crie uma política que contenha o seguinte:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Se você não quiser usar o método acima, como alternativa use as seguintes políticas do IAM gerenciadas:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – Concede acesso a recursos que vários processos do AWS Glue exigem para fazer a execução em seu nome. Esses recursos incluem o AWS Glue, Amazon S3, IAM, CloudWatch Logs e Amazon EC2. Se você seguir a convenção de nomenclatura para os recursos especificados nesta política, os processos do AWS Glue terão as permissões necessárias. Esta política geralmente é anexada a funções especificadas durante a definição de crawlers, trabalhos e endpoints de desenvolvimento.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): concede acesso total aos recursos do AWS Glue quando uma identidade à qual a política está anexada usa o Console de Gerenciamento da AWS. Se você seguir a convenção de nomenclatura para os recursos especificados nesta política, os usuários poderão acessar todos os recursos do console. Esta política geralmente é anexada aos usuários do console do AWS Glue.

# Configuração do Jira Cloud
<a name="jira-cloud-configuring"></a>

Para usar o AWS Glue para transferir dados do Jira Cloud para os destinos compatíveis, os seguintes requisitos deverão ser atendidos:

## Requisitos mínimos
<a name="jira-cloud-configuring-min-requirements"></a>

São requisitos mínimos:
+ Uma conta da Atlassian na qual usa o produto de software Jira no Jira Cloud. Para obter mais informações, consulte [Criar uma conta do Jira Cloud](#jira-cloud-configuring-creating-jira-cloud-account).
+ Uma conta da AWS criada com acesso de serviço ao AWS Glue.
+ Essa aplicação fornece as credenciais de cliente que o AWS Glue usa para acessar seus dados com segurança quando faz chamadas autenticadas para sua conta. Para obter mais informações, consulte [Habilitar o OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-) na documentação do Atlassian Developer.

Caso atenda a esses requisitos, você poderá conectar o AWS Glue à sua conta do Jira Cloud.

## Criar uma conta do Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-account"></a>

Para criar uma conta do Jira Cloud:

1. Navegue até o [URL de inscrição da Atlassian](https://id.atlassian.com/signup).

1. Insira seu e-mail de trabalho e o nome e escolha **Concordo**. Você receberá um e-mail de verificação.

1. Depois de verificar seu e-mail, você poderá criar uma senha e escolher **Inscrever-se**.

1. Digite seu nome de usuário e senha e escolha **Inscrever-se**.

1. Você é redirecionado para uma página na qual precisará entrar em seu site. Insira o nome do site e escolha **Concordo**.

Depois que seu site Atlassian Cloud for iniciado, você poderá configurar seu Jira respondendo a algumas perguntas de acordo com suas preferências de tipo de projeto.

Para entrar em uma conta existente:

1. Navegue até o [URL de login da Atlassian](https://id.atlassian.com/login) e insira as credenciais.

1. Digite o e-mail e a senha e clique em **Entrar**. Você será redirecionado para o painel do Jira.

## Criar uma aplicação no Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-app"></a>

Para criar uma aplicação no Jira Cloud e obter o ID do cliente e o segredo do cliente da aplicação cliente gerenciada:

1. Navegue até o [URL do Jira Cloud](https://id.atlassian.com/login) e insira as credenciais.

1. Escolha **Criar** e selecione a opção **Integração a OAuth 2.0**.

1. Insira o nome da aplicação, verifique os **Termos e condições** e escolha **Criar**.

1. Navegue até a seção **Distribuição** no menu à esquerda e escolha **Editar**.

1. Na seção **Editar controles de distribuição**:

   1. Selecione **STATUS DE DISTRIBUIÇÃO** como **Compartilhamento**.

   1. Insira o nome do fornecedor.

   1. Insira o URL da sua **Política de privacidade**. Por exemplo, https://docs.aws.amazon.com/glue/latest/dg/security-iam-awsmanpol.html

   1. Insira o URL dos seus **Termos de serviço** (opcional).

   1. Insira o URL do seu **Contato de suporte ao cliente** (opcional).

   1. Selecione Sim/Não na **DECLARAÇÃO DE DADOS PESSOAIS** e escolha **Salvar alterações**.

1. Navegue até **Permissões** no menu esquerdo da respectiva aplicação.

1. Em **API do Jira**, escolha **Adicionar**. Uma vez adicionada, escolha a opção **Configuração**.

1. Na seção **Escopos clássicos** > **API REST da plataforma Jira**, escolha **Editar escopos** e marque todos os escopos. Clique em **Salvar**.

1. Em **Escopos granulares**, escolha **Editar escopos** e selecione os seguintes escopos:

1. Role para baixo e encontre os escopos. Há dois tipos de escopos que você deve selecionar nos cabeçalhos “CRM” e “Standard”.

1. Adicione os seguintes escopos:

   ```
   read:application-role:jira
   read:audit-log:jira
   read:avatar:jira
   read:field:jira
   read:group:jira
   read:instance-configuration:jira
   read:issue-details:jira
   read:issue-event:jira
   read:issue-link-type:jira
   read:issue-meta:jira
   read:issue-security-level:jira
   read:issue-security-scheme:jira
   read:issue-type-scheme:jira
   read:issue-type-screen-scheme:jira
   read:issue-type:jira
   read:issue.time-tracking:jira
   read:label:jira
   read:notification-scheme:jira
   read:permission:jira
   read:priority:jira
   read:project:jira
   read:project-category:jira
   read:project-role:jira
   read:project-type:jira
   read:project-version:jira
   read:project.component:jir
   read:project.property:jira
   read:resolution:jira
   read:screen:jira
   read:status:jira
   read:user:jira
   read:workflow-scheme:jira
   read:workflow:jira
   read:field-configuration:jira
   read:issue-type-hierarchy:jira
   read:webhook:jira
   ```

1. Navegue até **Autenticação** no menu esquerdo e escolha **Adicionar**.

1. Insira um **URL de retorno de chamada**, como https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Navegue até **Configurações** no menu esquerdo e role para baixo para ver os detalhes da **Autenticação**. Anote o ID e o segredo do cliente.

# Configuração de conexões do Jira Cloud
<a name="jira-cloud-configuring-connections"></a>

O Jira Cloud oferece suporte ao tipo de concessão AUTHORIZATION\$1CODE para OAuth2.
+ Esse tipo de concessão é considerado um OAuth de “três pernas”, pois conta com o redirecionamento dos usuários para um servidor de autorização de terceiros para autenticar o usuário. É usado ao criar conexões por meio do console do AWS Glue. O console do AWS Glue redirecionará o usuário para o Jira Cloud, onde ele deverá fazer login e dar autorização para que as permissões solicitadas pelo AWS Glue acessem a instância do Jira Cloud.
+ Os usuários ainda podem optar por criar sua própria aplicação conectada no Jira Cloud e fornecer seus próprios ID e segredo do cliente ao criar conexões por meio do console do AWS Glue. Nesse cenário, eles ainda serão redirecionados para o Jira Cloud para fazer login e autorizar o acesso do AWS Glue aos recursos.
+ Esse tipo de concessão resulta em um token de atualização e um token de acesso. O token de acesso tem vida curta e pode ser atualizado automaticamente sem a interação do usuário usando o token de atualização.
+ Para obter a documentação pública do Jira Cloud sobre como criar uma aplicação conectada para o fluxo de código de autorização do OAuth, consulte [Habilitação do OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-).

Para configurar uma conexão com o Jira Cloud:

1. No AWS Secrets Manager, crie um segredo com os seguintes detalhes:

   1. Para a aplicação conectada gerenciada pelo cliente, o segredo deve conter a aplicação conectada Segredo do consumidor com a chave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`.

   1. Observação: é necessário criar um segredo para a conexão no AWS Glue.

1. No AWS Glue Glue Studio, crie uma conexão em **Conexões de dados** seguindo estas etapas:

   1. Ao selecionar um **Tipo de conexão**, escolha Jira Cloud.

   1. Forneça o ambiente do Jira Cloud.

   1. Selecione o perfil do AWS IAM que o AWS Glue pode assumir e tem permissões para as seguintes ações:

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Selecione o `secretName` que você deseja usar para essa conexão no AWS Glue para colocar os tokens.

   1. Selecione as opções de rede se quiser usar sua rede.

1. Conceda permissão ao perfil do IAM associado ao seu trabalho do AWS Glue para ler `secretName`.

# Leitura de entidades do Jira Cloud
<a name="jira-cloud-reading-from-entities"></a>

**Pré-requisito**

Um objeto do Jira Cloud do qual você deseja ler. Você precisará do nome do objeto, como Registro de auditoria ou Problema. A tabela a seguir mostra as entidades compatíveis.

**Entidades compatíveis quanto à origem**:


| Entidade | Pode ser filtrada | Oferece suporte a limite | Oferece suporte a Ordenar por | Oferece suporte a Selecionar \$1 | Oferece suporte a particionamento | 
| --- | --- | --- | --- | --- | --- | 
| Registro de auditoria | Sim | Sim | Não | Sim | Sim | 
| Problema | Sim | Sim | Não | Sim | Sim | 
| Campo Problema | Não | Não | Não | Sim | Não | 
| Configuração do campo Problema | Sim | Sim | Não | Sim | Sim | 
| Tipo de link de problema | Não | Não | Não | Sim | Não | 
| Esquema da notificação de problema | Sim | Sim | Não | Sim | Sim | 
| Esquema de segurança de problemas | Não | Não | Não | Sim | Não | 
| Esquema do tipo de problema | Sim | Sim | Sim | Sim | Sim | 
| Esquema de tela do tipo de problema | Sim | Sim | Sim | Sim | Sim | 
| Tipo de problema | Não | Não | Não | Sim | Não | 
| Configuração do Jira | Sim | Não | Não | Sim | Não | 
| Configuração avançada do Jira | Não | Não | Não | Sim | Não | 
| Configuração global do Jira | Não | Não | Não | Sim | Não | 
| Rótulo | Não | Não | Não | Sim | Sim | 
| Eu mesmo(a) | Sim | Não | Não | Sim | Não | 
| Permissão | Não | Não | Não | Sim | N.º | 
| Projeto | Sim | Sim | Sim | Sim | Sim | 
| Categoria do projeto | Não | Não | Não | Sim | Não | 
| Tipo de projeto | Não | Não | Não | Sim | Não | 
| Informações do servidor | Não | Não | Não | Sim | Não | 
| Usuários | Não | Não | N.º | Sim | Não | 
| Fluxo de trabalho | Sim | Sim | Sim | Sim | Sim | 
| Esquema do fluxo de trabalho | Não | Sim | Não | Sim | Sim | 
| Associação de projetos do esquema do fluxo de trabalho | Sim | Não | Não | Sim | Não | 
| Status do fluxo de trabalho | Não | Não | Não | Sim | Não | 
| Categoria de status do fluxo de trabalho | Não | Não | Não | Sim | Não | 

**Exemplo**:

```
jiracloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "audit-record",
        "API_VERSION": "v3"
    }
```

**Detalhes das entidades e dos campos do Jira Cloud**:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/jira-cloud-reading-from-entities.html)

## Consultas de particionamento
<a name="jira-cloud-reading-partitioning-queries"></a>

É possível fornecer a opção adicional `NUM_PARTITIONS` do Spark se quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original seria dividida em `NUM_PARTITIONS` subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
+ `NUM_PARTITIONS`: o número de partições.

Exemplo:

```
jiraCloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "issue",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# Opções de conexão do Jira Cloud
<a name="jira-cloud-connection-options"></a>

São opções de conexão do Jira Cloud:
+ `ENTITY_NAME`(string): (obrigatório) usado para leitura. O nome do seu objeto no Jira Cloud.
+ `API_VERSION`(string): (obrigatório) usado para leitura. A versão da API Rest do Jira Cloud que você deseja usar. Por exemplo: v3.
+ `DOMAIN_URL`(String) - (Obrigatório) O ID do Jira Cloud que você deseja usar.
+ `SELECTED_FIELDS`(Lista<String>): padrão: vazio(SELECIONE \$1). Usado para leitura. Colunas que deseja selecionar para o objeto.
+ `FILTER_PREDICATE`(string): padrão: vazio. Usado para leitura. Deve estar no formato Spark SQL.
+ `QUERY`(String): padrão: vazia. Usado para leitura. Consulta completa do Spark SQL.
+ `NUM_PARTITIONS`(Inteiro): padrão: 1. Usado para leitura. Número de partições para leitura.

# Limitações e observações do conector do Jira Cloud
<a name="jira-cloud-connector-limitations"></a>

São limitações ou observações do conector do Jira Cloud:
+  O operador `Contains` não funciona com o campo `resourceName`, que é do tipo de dados `String`. 
+  Por padrão, se nenhum filtro explícito for aplicado, somente os problemas dos últimos 30 dias serão rastreados. Os usuários têm a opção de substituir esse filtro padrão especificando um filtro personalizado. 