Uso de una canalización de OpenSearch Ingestion con Atlassian Services
Puede utilizar los complementos de origen Atlassian Jira y Confluence para ingerir datos de los servicios de Atlassian en su canalización de OpenSearch Ingestion. Estas integraciones le permiten crear una base de conocimientos unificada con capacidad de búsqueda al sincronizar proyectos completos de Jira y los espacios de Confluence y, al mismo tiempo, mantener la relevancia en tiempo real mediante la supervisión continua y la sincronización automática de las actualizaciones.
Requisitos previos
Antes de crear su canalización de OpenSearch Ingestion, complete los siguientes pasos:
-
Prepare credenciales para su sitio de Jira eligiendo una de las siguientes opciones. OpenSearch Ingestion solo requiere la autorización
ReadOnlydel contenido.-
Opción 1: clave de API: inicie sesión en su cuenta de Atlassian y utilice la información del siguiente tema para generar su clave de API:
-
Opción 2: OAuth2: inicie sesión en su cuenta de Atlassian y utilice la información en Conexión de una canalización de Amazon OpenSearch Ingestion a Atlassian Jira o Confluence mediante OAuth 2.0.
-
-
Cree un secreto de AWS Secrets Manager para almacenar los detalles de las credenciales que creó en el paso anterior: Realice las siguientes elecciones a medida que sigue el procedimiento:
-
En Secret type (Tipo de secreto), elija Other type of secret (Otro tipo de secreto).
-
Para los pares clave/valor, cree los siguientes pares, según el tipo de autorización seleccionado:
Una vez creado el secreto, copie el nombre de recurso de Amazon (ARN) del secreto. Lo incluirá en la política de permisos de los roles en proceso.
-
Configurar un rol de canalización
El rol transferido en la canalización debe incluir la siguiente política de lectura y escritura en el secreto creado en la sección de requisitos previos.
El rol también debe incluir una política de acceso y escritura en el servidor que elijas. Por ejemplo, si elige OpenSearch como receptor, la política tendrá un aspecto similar al siguiente:
Configuración de una canalización de Jira Connector
Puede utilizar un esquema de Atlassian Jira preconfigurado para crear esta canalización. Para obtener más información, consulte Uso de esquemas.
Reemplace los valores de marcador de posición con su información.
version: "2" extension: aws: secrets: jira-account-credentials: secret_id: "secret-arn" region: "secret-region" sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role" atlassian-jira-pipeline: source: jira: # We only support one host url for now hosts: ["jira-host-url"] acknowledgments: true authentication: # Provide one of the authentication method to use. Supported methods are 'basic' and 'oauth2'. # For basic authentication, password is the API key that you generate using your jira account basic: username: ${{aws_secrets:jira-account-credentials:username}} password: ${{aws_secrets:jira-account-credentials:password}} # For OAuth2 based authentication, we require the following 4 key values stored in the secret # Follow atlassian instructions at the below link to generate these keys. # https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/ # If you are using OAuth2 authentication, we also require, write permission to your AWS secret to # be able to write the renewed tokens back into the secret. # oauth2: # client_id: ${{aws_secrets:jira-account-credentials:clientId}} # client_secret: ${{aws_secrets:jira-account-credentials:clientSecret}} # access_token: ${{aws_secrets:jira-account-credentials:accessToken}} # refresh_token: ${{aws_secrets:jira-account-credentials:refreshToken}} filter: project: key: include: # This is not project name. # It is an alphanumeric project key that you can find under project details in Jira. - "project-key" - "project-key" # exclude: # - "project-key" # - "project-key" issue_type: include: - "issue-type" # - "Story" # - "Bug" # - "Task" # exclude: # - "Epic" status: include: - "ticket-status" # - "To Do" # - "In Progress" # - "Done" # exclude: # - "Backlog" sink: - opensearch: # Provide an Amazon OpenSearch Service domain endpoint hosts: [ "https://search-mydomain-1a2a3a4a5a6a7a8a9a0a9a8a7a.us-east-1.es.amazonaws.com" ] index: "index_${getMetadata(\"project\")}" # Ensure adding unique document id which is the unique ticket id in this case document_id: '${/id}' aws: # Provide a Role ARN with access to the domain. This role should have a trust relationship with osis-pipelines.amazonaws.com sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role" # Provide the region of the domain. region: "us-east-1" # Enable the 'serverless' flag if the sink is an Amazon OpenSearch Serverless collection serverless: false # serverless_options: # Specify a name here to create or update network policy for the serverless collection # network_policy_name: "network-policy-name" # Enable the 'distribution_version' setting if the Amazon OpenSearch Service domain is of version Elasticsearch 6.x # distribution_version: "es6" # Enable and switch the 'enable_request_compression' flag if the default compression setting is changed in the domain. # See Compresión de solicitudes HTTP en Amazon OpenSearch Service # enable_request_compression: true/false # Optional: Enable the S3 DLQ to capture any failed requests in an S3 bucket. Delete this entire block if you don't want a DLQ. dlq: s3: # Provide an S3 bucket bucket: "your-dlq-bucket-name" # Provide a key path prefix for the failed requests # key_path_prefix: "kinesis-pipeline/logs/dlq" # Provide the region of the bucket. region: "us-east-1" # Provide a Role ARN with access to the bucket. This role should have a trust relationship with osis-pipelines.amazonaws.com sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role"
Atributos clave del origen de Jira:
-
hosts: la URL en las instalaciones o en la nube de Jira. En general, se ve similar a
https://.your-domain-name.atlassian.net/ -
acknowledgments: para garantizar la entrega de los datos hasta el receptor.
-
authentication: describe cómo desea que la canalización acceda a su instancia de Jira. Elija
BasicoOAuth2y especifique los atributos clave correspondientes que hagan referencia a las claves de su secreto de AWS. -
filter: esta sección lo ayuda a seleccionar qué parte de sus datos de Jira desea extraer y sincronizar.
-
project: enumere las claves del proyecto que desea sincronizar en la sección
include. De lo contrario, enumere los proyectos que desea excluir en la secciónexclude. Proporcione solo una de las opciones de inclusión o exclusión en un momento dado. -
issue_type: tipos de problemas específicos que desea sincronizar. Siga un patrón similar a
includeoexcludeque se adapte a sus necesidades. Tenga en cuenta que los archivos adjuntos aparecerán como enlaces de anclaje al archivo adjunto original, pero el contenido del archivo adjunto no se extraerá. -
status: filtro de estado específico que desea aplicar a la consulta de extracción de datos. Si especifica
include, solo se sincronizarán los tickets con esos estados. Si especificaexclude, se sincronizarán todos los tickets, excepto los que tengan los estados de exclusión enumerados.
-
Configuración de una canalización del conector de Confluence
Puede utilizar un esquema de Atlassian Confluence preconfigurado para crear esta canalización. Para obtener más información, consulte Uso de esquemas.
version: "2" extension: aws: secrets: confluence-account-credentials: secret_id: "secret-arn" region: "secret-region" sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role" atlassian-confluence-pipeline: source: confluence: # We currently support only one host URL. hosts: ["confluence-host-url"] acknowledgments: true authentication: # Provide one of the authentication method to use. Supported methods are 'basic' and 'oauth2'. # For basic authentication, password is the API key that you generate using your Confluence account basic: username: ${{aws_secrets:confluence-account-credentials:confluenceId}} password: ${{aws_secrets:confluence-account-credentials:confluenceCredential}} # For OAuth2 based authentication, we require the following 4 key values stored in the secret # Follow atlassian instructions at the following link to generate these keys: # https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/ # If you are using OAuth2 authentication, we also require write permission to your AWS secret to # be able to write the renewed tokens back into the secret. # oauth2: # client_id: ${{aws_secrets:confluence-account-credentials:clientId}} # client_secret: ${{aws_secrets:confluence-account-credentials:clientSecret}} # access_token: ${{aws_secrets:confluence-account-credentials:accessToken}} # refresh_token: ${{aws_secrets:confluence-account-credentials:refreshToken}} filter: space: key: include: # This is not space name. # It is a space key that you can find under space details in Confluence. - "space key" - "space key" # exclude: # - "space key" # - "space key" page_type: include: - "content type" # - "page" # - "blogpost" # - "comment" # exclude: # - "attachment" sink: - opensearch: # Provide an Amazon OpenSearch Service domain endpoint hosts: [ "https://search-mydomain-1a2a3a4a5a6a7a8a9a0a9a8a7a.us-east-1.es.amazonaws.com" ] index: "index_${getMetadata(\"space\")}" # Ensure adding unique document id which is the unique ticket ID in this case. document_id: '${/id}' aws: # Provide the Amazon Resource Name (ARN) for a role with access to the domain. This role should have a trust relationship with osis-pipelines.amazonaws.com. sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role" # Provide the Region of the domain. region: "us-east-1" # Enable the 'serverless' flag if the sink is an Amazon OpenSearch Serverless collection serverless: false # serverless_options: # Specify a name here to create or update network policy for the serverless collection. # network_policy_name: "network-policy-name" # Enable the 'distribution_version' setting if the Amazon OpenSearch Service domain is of version Elasticsearch 6.x # distribution_version: "es6" # Enable and switch the 'enable_request_compression' flag if the default compression setting is changed in the domain. # For more information, see Compresión de solicitudes HTTP en Amazon OpenSearch Service. # enable_request_compression: true/false # Optional: Enable the S3 DLQ to capture any failed requests in an S3 bucket. Delete this entire block if you don't want a DLQ. dlq: s3: # Provide an S3 bucket bucket: "your-dlq-bucket-name" # Provide a key path prefix for the failed requests # key_path_prefix: "kinesis-pipeline/logs/dlq" # Provide the Rregion of the bucket. region: "us-east-1" # Provide the Amazon Resource Name (ARN) for a role with access to the bucket. This role should have a trust relationship with osis-pipelines.amazonaws.com sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role"
Atributos clave del origen de Confluence:
-
hosts: la URL en las instalaciones o en la nube de Confluence. En general, se ve similar a
https://.your-domain-name.atlassian.net/ -
acknowledgments: para garantizar la entrega de los datos hasta el receptor.
-
authentication: describe cómo desea que la canalización acceda a su instancia de Confluence. Elija
BasicoOAuth2y especifique los atributos clave correspondientes que hagan referencia a las claves de su secreto de AWS. -
filter: esta sección lo ayuda a seleccionar qué parte de sus datos de Confluence desea extraer y sincronizar.
-
space: enumere las claves de espacio que desea sincronizar en la sección
include. De lo contrario, enumere los espacios que desea excluir en la secciónexclude. Proporcione solo una de las opciones de inclusión o exclusión en un momento dado. -
page_type: tipos de página específicos (como página, entrada de blog o archivos adjuntos) que desea sincronizar. Siga un patrón similar a
includeoexcludeque se adapte a sus necesidades. Tenga en cuenta que los archivos adjuntos aparecerán como enlaces de anclaje al archivo adjunto original, pero el contenido del archivo adjunto no se extraerá.
-
Coherencia de datos
Según los filtros especificados en el archivo YAML de la canalización, los proyectos (o espacios) seleccionados se extraerán una vez y se sincronizarán completamente con el receptor de destino. Luego, la supervisión continua de los cambios capturará los cambios a medida que se produzcan y actualizará los datos del receptor. Una excepción es que la supervisión de cambios sincroniza solo las acciones create y update, no las acciones delete.
Limitaciones
-
Las acciones de eliminación de usuarios no se sincronizarán. Una vez registrados en el receptor, los datos permanecerán allí. Las actualizaciones sobrescribirán el contenido existente con nuevos cambios si se especifica la asignación de ID en la configuración del receptor.
-
Las instancias en las instalaciones que utilizan versiones anteriores del software de Atlassian que no son compatibles con las siguientes API no son compatibles con este origen:
-
API de búsqueda de Jira, versión 3
-
rest/api/3/search -
rest/api/3/issue
-
-
Confluence
-
wiki/rest/api/content/search -
wiki/rest/api/content -
wiki/rest/api/settings/systemInfo
-
-
Métricas en CloudWatch para conectores de Atlassian
Tipo: métricas del conector de Jira
| Origen | Métrica | Tipo de métrica |
|---|---|---|
| acknowledgementSetSuccesses.count | Contador | Si los acuses de recibo están habilitados, esta métrica proporciona el número de tickets que se sincronizaron correctamente. |
| acknowledgementSetFailures.count | Contador | Si las confirmaciones están habilitadas, esta métrica proporciona el número de tickets que no se pudieron sincronizar. |
| crawlingTime.avg | Timer | El tiempo que se tardó en revisar todos los cambios nuevos. |
| ticketFetchLatency.avg | Timer | El promedio de latencia de la API de búsqueda de tickets. |
| ticketFetchLatency.max | Timer | La latencia máxima de la API de búsqueda de tickets. |
| ticketsRequested.count | Contador | Número de solicitudes de recogida de entradas realizadas. |
| ticketRequestedFailed.count | Contador | Número de solicitudes de recuperación de entradas fallidas. |
| ticketRequestedSuccess.count | Contador | Número de solicitudes de recuperación de entradas realizadas correctamente. |
| searchCallLatency.avg | Timer | Latencia media de llamadas a la API de búsqueda. |
| searchCallLatency.max | Timer | Latencia máxima de llamadas a la API de búsqueda. |
| searchResultsFound.count | Contador | Número de elementos encontrados en una llamada de búsqueda determinada. |
| searchRequestFailed.count | Contador | Los errores en las llamadas a la API de búsqueda cuentan. |
| authFailures.count | Contador | Número de errores de autenticación. |
Tipo: métricas del conector de Confluence
| Origen | Métrica | Tipo de métrica |
|---|---|---|
| acknowledgementSetSuccesses.count | Contador | Si las confirmaciones están habilitadas, esta métrica indica el número de páginas que se sincronizaron correctamente. |
| acknowledgementSetFailures.count | Contador | Si las confirmaciones están habilitadas, esta métrica proporciona el número de páginas que no se pudieron sincronizar. |
| crawlingTime.avg | Timer | El tiempo que se tardó en revisar todos los cambios nuevos. |
| pageFetchLatency.avg | Timer | Latencia de la API de obtención de contenido (media). |
| pageFetchLatency.max | Timer | Latencia de la API de obtención de contenido (máxima). |
| pagesRequested.count | Contador | Número de invocaciones de la API de obtención de contenido. |
| pageRequestFailed.count | Contador | Número de solicitudes fallidas de la API de obtención de contenido. |
| pageRequestedSuccess.count | Contador | Número de solicitudes satisfactorias de la API de obtención de contenido. |
| searchCallLatency.avg | Timer | Latencia media de llamadas a la API de búsqueda. |
| searchCallLatency.max | Timer | Latencia máxima de llamadas a la API de búsqueda. |
| searchResultsFound.count | Contador | Número de elementos encontrados en una llamada de búsqueda determinada. |
| searchRequestsFailed.count | Contador | Los errores en las llamadas a la API de búsqueda cuentan. |
| authFailures.count | Contador | Número de errores de autenticación. |