

# Conexión a Jira Cloud
<a name="connecting-to-data-jira-cloud"></a>

Jira Cloud es una plataforma desarrollada por Atlassian. La plataforma incluye productos de seguimiento de problemas que ayudan a los equipos a planificar y realizar un seguimiento de sus proyectos de Agile. Como usuario de Jira Cloud, la cuenta contiene datos sobre los proyectos, como problemas, flujos de trabajo y eventos. Puede utilizar AWS Glue para transferir datos de Jira Cloud a determinados servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Jira Cloud](jira-cloud-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](jira-cloud-configuring-iam-permissions.md)
+ [Configuración de Jira Cloud](jira-cloud-configuring.md)
+ [Configurar las conexiones a Jira Cloud](jira-cloud-configuring-connections.md)
+ [Lectura de entidades de Jira Cloud](jira-cloud-reading-from-entities.md)
+ [Opciones de conexión de Jira Cloud](jira-cloud-connection-options.md)
+ [Limitaciones y notas del conector de Jira Cloud](jira-cloud-connector-limitations.md)

# Compatibilidad de AWS Glue con Jira Cloud
<a name="jira-cloud-support"></a>

AWS Glue es compatible con Jira Cloud de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Jira Cloud.

**¿Es compatible como destino?**  
No.

**Versiones compatibles de la API de Jira Cloud**  
Las siguientes versiones de la API de Jira Cloud son compatibles:
+ v3

Para obtener información sobre la compatibilidad de entidades por versión específica, consulte [Lectura de entidades de Jira Cloud](jira-cloud-reading-from-entities.md). 

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="jira-cloud-configuring-iam-permissions"></a>

En el siguiente ejemplo de política se describen los permisos de AWS IAM necesarios para crear y utilizar conexiones. Si va a crear un nuevo rol, cree una política que contenga lo siguiente:

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

****  

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

------

Si no desea utilizar el método anterior, puede utilizar las siguientes políticas de IAM administradas:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): da acceso a recursos que precisan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, CloudWatch Logs y Amazon EC2. Si aplica la convención de nomenclatura en los recursos especificados en esta política, los procesos de AWS Glue tienen los permisos necesarios. Normalmente, esta política se asocia a los roles que se especifican a la hora de definir rastreadores, trabajos y puntos de conexión de desarrollo.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): otorga acceso total a los recursos de AWS Glue cuando una identidad a la que está asociada la política utiliza la Consola de administración de AWS. Si sigue la convención de nomenclatura para los recursos especificados en esta política, los usuarios dispondrán de todas las funciones de la consola. Esta política se suele adjuntar a los usuarios de la consola AWS Glue.

# Configuración de Jira Cloud
<a name="jira-cloud-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Jira Cloud a destinos compatibles, deberá cumplir estos requisitos:

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

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Atlassian en la que utilice el producto de software Jira en Jira Cloud. Para obtener más información, consulte [Crear una cuenta de Jira Cloud](#jira-cloud-configuring-creating-jira-cloud-account).
+ Debe tener una cuenta de AWS creada con el servicio de acceso a AWS Glue.
+ Esta aplicación proporciona las credenciales de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [Habilitar OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-) en la documentación de Atlassian Developer.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Jira Cloud.

## Crear una cuenta de Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-account"></a>

Para crear una cuenta de Jira Cloud:

1. Navegue hasta la [URL de registro de Atlassian](https://id.atlassian.com/signup).

1. Introduzca su correo electrónico laboral y nombre, y elija **Acepto**. Recibirá un correo electrónico de verificación.

1. Tras verificar su correo electrónico, puede crear una contraseña y seleccionar **Registrarse**.

1. Escriba el nombre y la contraseña, y elija **Registrarse**.

1. Se le redirigirá a una página en la que debe ingresar su sitio. Introduzca el nombre del sitio y elija **Acepto**.

Una vez que se inicie su sitio de Atlassian Cloud, podrá configurar Jira respondiendo a algunas preguntas según sus preferencias de tipo de proyecto.

Para iniciar sesión en una cuenta existente:

1. Vaya a la [URL de inicio de sesión de Atlassian](https://id.atlassian.com/login) e introduzca las credenciales.

1. Introduzca el correo electrónico y la contraseña, y haga clic en **Iniciar sesión**. Se le redirigirá al panel de Jira.

## Creación de una aplicación en Jira Cloud
<a name="jira-cloud-configuring-creating-jira-cloud-app"></a>

Para crear una aplicación en Jira Cloud y obtener el ID de cliente y el secreto de cliente de la aplicación cliente administrada:

1. Vaya a la [URL de inicio de Jira Cloud](https://id.atlassian.com/login) e introduzca las credenciales.

1. Elija **Crear** y seleccione la opción de **integración con OAuth 2.0**.

1. Introduzca el nombre de la aplicación, consulte los **términos y condiciones** y seleccione **Crear**.

1. Vaya a la sección **Distribución** en el menú de la izquierda y seleccione **Editar**.

1. En la sección **Editar controles de distribución**:

   1. Seleccione **ESTADO DE DISTRIBUCIÓN** como **Uso compartido**.

   1. Introduzca el nombre del proveedor.

   1. Introduzca la URL de su **política de privacidad**. Por ejemplo, https://docs.aws.amazon.com/glue/latest/dg/security-iam-awsmanpol.html

   1. Introduzca la URL de sus **condiciones de servicio** (opcional).

   1. Introduzca la URL de su **contacto de atención al cliente** (opcional).

   1. Seleccione Sí/No en la **DECLARACIÓN DE DATOS PERSONALES** y elija **Guardar cambios**.

1. Vaya a **Permisos** en el menú de la izquierda de la aplicación correspondiente.

1. Para la **API de Jira**, seleccione **Agregar**. Una vez agregada, elija la opción **Configuración**.

1. En la sección **Ámbitos clásicos** > **API de REST de la plataforma Jira**, seleccione **Editar ámbitos** y marque todos los ámbitos. Haga clic en **Guardar**.

1. En **Ámbitos granulares**, seleccione **Editar ámbitos** y seleccione los siguientes ámbitos:

1. Desplácese hacia abajo y busque los ámbitos. Hay dos tipos de alcances que debe seleccionar bajo los encabezados «CRM» y «Estándar».

1. Agregue los siguientes alcances:

   ```
   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. Vaya a **Autenticación** en el menú de la izquierda y elija **Agregar**.

1. Introduzca una **URL de devolución de llamada**, como https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Vaya a **Configuración** en el menú de la izquierda y desplácese hacia abajo para ver los detalles de **Autenticación**. Tome nota del ID y el secreto de cliente.

# Configurar las conexiones a Jira Cloud
<a name="jira-cloud-configuring-connections"></a>

Jira Cloud admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Jira Cloud, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Jira Cloud.
+ Los usuarios aún pueden optar por crear una aplicación conectada propia en Jira Cloud y proporcionar el ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Jira Cloud para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos.
+ Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización.
+ Para consultar la documentación pública de Jira Cloud sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Habilitación de OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-).

Para configurar una conexión a Jira Cloud:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. En el caso de las aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` como clave.

   1. Nota: Debe crear un secreto para la conexión en AWS Glue.

1. En AWS Glue Glue Studio, cree una conexión en **Conexiones de datos** según los pasos que se indican a continuación:

   1. Al seleccionar un **Tipo de conexión**, elija Jira Cloud.

   1. Proporcione el entorno de Jira Cloud.

   1. Seleccione el rol de AWS IAM que AWS Glue pueda asumir y que tenga permisos para las siguientes acciones:

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

****  

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

------

   1. Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens.

   1. Seleccione las opciones de red si quiere usar su red.

1. Conceda el rol de IAM asociado a su permiso de trabajo de AWS Glue para leer `secretName`.

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

**Requisito previo**

Un objeto de Jira Cloud desde el cual le gustaría leer. Necesitará el nombre del objeto, como Registro de auditoría o Problema. En la siguiente tabla se muestran las entidades admitidas.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Registro de auditoría | Sí | Sí | No | Sí | Sí | 
| Problema | Sí | Sí | No | Sí | Sí | 
| Campo de problema | No | No | No | Sí | No | 
| Configuración de campo de problema | Sí | Sí | No | Sí | Sí | 
| Tipo de enlace de problema | No | No | No | Sí | No | 
| Esquema de notificación de problema | Sí | Sí | No | Sí | Sí | 
| Esquema de seguridad de problema | No | No | No | Sí | No | 
| Esquema de tipo de problema | Sí | Sí | Sí | Sí | Sí | 
| Esquema de pantalla del tipo de problema | Sí | Sí | Sí | Sí | Sí | 
| Tipo de problema | No | No | No | Sí | No | 
| Configuración de Jira | Sí | No | No | Sí | No | 
| Configuración avanzada de Jira | No | No | No | Sí | No | 
| Configuración global de Jira | No | No | No | Sí | No | 
| Etiqueta | No | No | No | Sí | Sí | 
| Yo | Sí | No | No | Sí | No | 
| Permiso | No | No | No | Sí | No. | 
| Proyecto | Sí | Sí | Sí | Sí | Sí | 
| Categoría de proyecto | No | No | No | Sí | No | 
| Tipo de proyecto | No | No | No | Sí | No | 
| Información del servidor | No | No | No | Sí | No | 
| Usuarios | No | No | No. | Sí | No | 
| Flujo de trabajo | Sí | Sí | Sí | Sí | Sí | 
| Esquema de flujo de trabajo | No | Sí | No | Sí | Sí | 
| Asociación de proyectos del esquema de flujo de trabajo | Sí | No | No | Sí | No | 
| Estado del flujo de trabajo | No | No | No | Sí | No | 
| Categoría de estado del flujo de trabajo | No | No | No | Sí | No | 

**Ejemplo**:

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

**Detalles de la entidad y el campo de Jira Cloud**:

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

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

Puede proporcionar la opción adicional `NUM_PARTITIONS` de Spark si quiere usar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en `NUM_PARTITIONS` subconsultas que las tareas de Spark pueden ejecutar simultáneamente.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

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

# Opciones de conexión de Jira Cloud
<a name="jira-cloud-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Jira Cloud:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Jira Cloud.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Jira Cloud que desea usar. Por ejemplo: v3.
+ `DOMAIN_URL`(Cadena): (obligatorio) El ID de Jira Cloud que desea utilizar.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto.
+ `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL.
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.

# Limitaciones y notas del conector de Jira Cloud
<a name="jira-cloud-connector-limitations"></a>

Las siguientes son limitaciones o notas para el conector de Jira Cloud:
+  El operador `Contains` no es compatible con el campo `resourceName`, que es de tipo de datos `String`. 
+  De forma predeterminada, si no se aplica ningún filtro explícito, solo se rastrearán los problemas de los últimos 30 días. Los usuarios tienen la opción de anular este filtro predeterminado especificando un filtro personalizado. 