Uso de una canalización de OpenSearch Ingestion con Atlassian Services - Amazon OpenSearch Service

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.

Integrating with Jira

Transforme su experiencia con Jira con potentes funciones de búsqueda contextual integrando su contenido de Jira en OpenSearch. El complemento de origen Atlassian Jira de Data Prepper le permite crear una base de conocimientos unificada y con capacidad de búsqueda mediante la sincronización de proyectos completos de Jira, al tiempo que mantiene la relevancia en tiempo real gracias a la supervisión continua y la sincronización automática de las actualizaciones. Esta integración permite la sincronización de datos con opciones de filtrado flexibles para proyectos, tipos de problemas y estados específicos, lo que garantiza que solo se importe la información que necesita.

Para garantizar una conectividad segura y confiable, el complemento admite varios métodos de autenticación, incluida la autenticación básica con clave de API y la autenticación OAuth2, con la seguridad adicional de administrar las credenciales mediante un secreto almacenado en AWS Secrets Manager. También cuenta con la renovación automática de los tokens para un acceso ininterrumpido, lo que garantiza un funcionamiento continuo. Basada en la versión 2 de la API de Atlassian, esta integración permite a los equipos obtener información valiosa a partir de sus datos de Jira mediante las funciones de búsqueda avanzada de OpenSearch.

Integrating with Confluence

Mejore las capacidades de administración del conocimiento y colaboración de su equipo con la integración de contenido de Atlassian Confluence en OpenSearch a través del complemento de origen Confluence de Data Prepper. Esta integración le permite crear un repositorio de conocimiento colectivo centralizado y con capacidad de búsqueda, lo que mejora la detección de información y la productividad del equipo. Al sincronizar el contenido de Confluence y monitorear continuamente las actualizaciones, el complemento garantiza que su índice de OpenSearch permanezca actualizado y completo.

La integración ofrece opciones de filtrado flexibles, lo que le permite importar contenido de forma selectiva desde espacios o tipos de páginas específicos, adaptando el contenido sincronizado a las necesidades de su organización. El complemento admite tanto la clave de API básica como los métodos de autenticación de OAuth2, con la opción de administrar las credenciales de forma segura mediante AWS Secrets Manager. La característica de renovación automática de los tokens del complemento garantiza un acceso ininterrumpido y un funcionamiento sin problemas. Basada en la API Confluence de Atlassian, esta integración permite a los equipos aprovechar las capacidades de búsqueda avanzada de OpenSearch en todo su contenido de Confluence, lo que mejora la accesibilidad y la utilización de la información dentro de la organización.

Requisitos previos

Antes de crear su canalización de OpenSearch Ingestion, complete los siguientes pasos:

  1. Prepare credenciales para su sitio de Jira eligiendo una de las siguientes opciones. OpenSearch Ingestion solo requiere la autorización ReadOnly del contenido.

    1. 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:

    2. 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.

  2. 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:

    API key
    { "username": user-name-usualy-email-id, "password": api-key }
    OAuth 2.0
    { "clientId": client-id "clientSecret": client-secret "accessKey": access-key "refreshKey": refresh-key }

    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.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "SecretReadWrite", "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name-random-6-characters" } ] }

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:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OpenSearchWritePolicy", "Effect": "Allow", "Action": "aoss:*", "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id" } ] }

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:

  1. hosts: la URL en las instalaciones o en la nube de Jira. En general, se ve similar a https://your-domain-name.atlassian.net/.

  2. acknowledgments: para garantizar la entrega de los datos hasta el receptor.

  3. authentication: describe cómo desea que la canalización acceda a su instancia de Jira. Elija Basic o OAuth2 y especifique los atributos clave correspondientes que hagan referencia a las claves de su secreto de AWS.

  4. filter: esta sección lo ayuda a seleccionar qué parte de sus datos de Jira desea extraer y sincronizar.

    1. 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ón exclude. Proporcione solo una de las opciones de inclusión o exclusión en un momento dado.

    2. issue_type: tipos de problemas específicos que desea sincronizar. Siga un patrón similar a include o exclude que 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á.

    3. 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 especifica exclude, 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:

  1. hosts: la URL en las instalaciones o en la nube de Confluence. En general, se ve similar a https://your-domain-name.atlassian.net/.

  2. acknowledgments: para garantizar la entrega de los datos hasta el receptor.

  3. authentication: describe cómo desea que la canalización acceda a su instancia de Confluence. Elija Basic o OAuth2 y especifique los atributos clave correspondientes que hagan referencia a las claves de su secreto de AWS.

  4. filter: esta sección lo ayuda a seleccionar qué parte de sus datos de Confluence desea extraer y sincronizar.

    1. 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ón exclude. Proporcione solo una de las opciones de inclusión o exclusión en un momento dado.

    2. 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 include o exclude que 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.