

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando um pipeline de OpenSearch ingestão com os serviços da Atlassian
<a name="configure-client-atlassian"></a>

Você pode usar os plug-ins de origem do Atlassian Jira e do Confluence para ingerir dados dos serviços da Atlassian em seu pipeline de ingestão. OpenSearch Essas integrações permitem que você crie uma base de conhecimentos unificada pesquisável sincronizando projetos do Jira e espaços do Confluence inteiros, mantendo a relevância em tempo real por meio de monitoramento contínuo e sincronização automática das atualizações.

------
#### [ Integrating with Jira ]

Transforme sua experiência com o Jira com poderosos recursos de pesquisa contextual integrando seu conteúdo do Jira em. OpenSearch O plugin de origem [Atlassian Jira](https://www.atlassian.com/software/jira) da Data Prepper permite criar uma base de conhecimentos unificada e pesquisável sincronizando projetos inteiros do Jira, mantendo a relevância em tempo real por meio de monitoramento contínuo e sincronização automática de atualizações. Essa integração permite a sincronização de dados com opções flexíveis de filtragem por projetos, tipos de problemas e status específicos, garantindo que somente as informações necessárias sejam importadas. 

Para garantir uma conectividade segura e confiável, o plug-in oferece suporte a vários métodos de autenticação, incluindo autenticação e OAuth2 autenticação básicas de chave de API, com a segurança adicional de gerenciar credenciais usando um segredo armazenado AWS Secrets Manager. Ele também conta com renovação automática de tokens para acesso ininterrupto, garantindo operação contínua. Baseada na [API da Atlassian versão 2](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#version%22%3Eapi-version-2), essa integração permite que as equipes desbloqueiem informações valiosas de seus dados do Jira por meio dos recursos avançados OpenSearch de pesquisa.

------
#### [ Integrating with Confluence ]

Melhore os recursos de colaboração e gerenciamento de conhecimento da sua equipe integrando o conteúdo do [Atlassian Confluence por OpenSearch meio do plug-in de origem Confluence](https://www.atlassian.com/software/confluence) do Data Prepper. Essa integração permite criar um repositório coletivo de conhecimentos, centralizado e pesquisável, melhorando a descoberta de informações e a produtividade da equipe. Ao sincronizar o conteúdo do Confluence e monitorar continuamente as atualizações, o plug-in garante que seu OpenSearch índice permaneça up-to-date abrangente. 

A integração oferece opções flexíveis de filtragem, permitindo que você importe seletivamente conteúdo de espaços ou tipos de página específicos, adaptando o conteúdo sincronizado às necessidades da sua organização. O plug-in oferece suporte à chave básica de API e aos métodos de OAuth2 autenticação, com a opção de gerenciar credenciais com segurança por meio de. AWS Secrets Manager O atributo de renovação automática de tokens do plug-in garante acesso ininterrupto e operação sem falhas. Baseada na [API](https://developer.atlassian.com/cloud/confluence/rest/v1/intro/#auth) Confluence da Atlassian, essa integração permite que as equipes aproveitem os recursos de pesquisa avançada OpenSearch do Confluence em todo o conteúdo do Confluence, aprimorando a acessibilidade e a utilização das informações na organização.

------

**Topics**
+ [Pré-requisitos](#atlassian-prerequisites)
+ [Configurar um perfil de pipeline](#atlassian-pipeline-role)
+ [Configuração do pipeline de conector do Jira](#jira-connector-pipeline)
+ [Configuração do pipeline de conector do Confluence](#confluence-connector-pipeline)
+ [Consistência de dados](#data-consistency)
+ [Limitações](#limitations)
+ [Métricas CloudWatch para conectores Atlassian](#metrics)
+ [Conectando um pipeline de OpenSearch ingestão da Amazon ao Atlassian Jira ou ao Confluence usando 2.0 OAuth](configure-client-atlassian-OAuth2-setup.md)

## Pré-requisitos
<a name="atlassian-prerequisites"></a>

Antes de criar seu pipeline OpenSearch de ingestão, conclua as seguintes etapas:

1. Prepare as credenciais para seu site Jira escolhendo uma das seguintes opções. OpenSearch A ingestão requer apenas `ReadOnly` autorização para o conteúdo.

   1. **Opção 1, chave de API**: faça login na sua conta da Atlassian e use as informações do seguinte tópico para gerar a chave de API:
      + [Gerenciar tokens de API para a sua conta da Atlassian](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/)

   1. **Opção 2: OAuth2** — Faça login na sua conta Atlassian e use as informações em. [Conectando um pipeline de OpenSearch ingestão da Amazon ao Atlassian Jira ou ao Confluence usando 2.0 OAuth](configure-client-atlassian-OAuth2-setup.md)

1. [Crie um segredo no AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) para armazenar as credenciais criadas na etapa anterior. Faça as seguintes escolhas ao seguir o procedimento: 
   + Em **Tipo de segredo**, escolha **Outro tipo de segredo**.
   + Em **Pares de chave/valor**, crie os seguintes pares, dependendo do tipo de autorização selecionado: 

------
#### [ 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
   }
   ```

------

   Depois de criar o segredo, copie o nome do recurso da Amazon (ARN) do segredo. Você o incluirá na política de permissões de perfis de pipeline.

## Configurar um perfil de pipeline
<a name="atlassian-pipeline-role"></a>

O perfil passado no pipeline deve ter a seguinte política anexada para leitura e gravação no segredo criado na seção de pré-requisitos.

------
#### [ 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"
        }
    ]
}
```

------

O perfil também deve ter uma política anexada para acessar e gravar no coletor escolhido. Por exemplo, se você escolher OpenSearch como coletor, a política será semelhante à seguinte:

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

****  

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

------

## Configuração do pipeline de conector do Jira
<a name="jira-connector-pipeline"></a>

É possível usar um esquema pré-configurado para criar esse pipeline. Para obter mais informações, consulte [Trabalhar com esquemas](pipeline-blueprint.md).

Substitua *placeholder values* por suas próprias informações.

```
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 Compressão de solicitações HTTP no 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"
```

Chave para atributos na origem do Jira:

1. **hosts**: a nuvem do Jira ou a URL on-premises. Geralmente, é assim `https://your-domain-name.atlassian.net/`.

1. **acknowledgments**: para garantir a entrega dos dados ao coletor.

1. **authentication**: descreve como você deseja que o pipeline acesse a instância do Jira. Escolha `Basic` ou `OAuth2` e especifique os atributos de chave correspondentes que fazem referência às chaves em seu AWS segredo.

1. **filter**: esta seção ajuda você a selecionar qual porção dos dados do Jira deve ser extraída e sincronizada.

   1. **project**: liste as chaves dos projetos que você deseja sincronizar na seção `include`. Caso contrário, liste os projetos que você deseja excluir na seção `exclude`. Nunca forneça mais de uma das opções de inclusão ou exclusão.

   1. **issue\$1type**: os tipos de problemas específicos que você deseja sincronizar. Siga o padrão similar `include` ou `exclude` que atenda às suas necessidades. Observe que os anexos aparecerão como links-âncora para o anexo original, mas o conteúdo do anexo não será extraído.

   1. **status**: filtro de status específico que você deseja aplicar para a consulta de extração de dados. Se você especificar `include`, somente os tickets com esses status serão sincronizados. Se você especificar `exclude`, todos os tíquetes, exceto os que tiverem os status excluídos listados, serão sincronizados.

## Configuração do pipeline de conector do Confluence
<a name="confluence-connector-pipeline"></a>

É possível usar um esquema pré-configurado do Atlassian Confluence para criar esse pipeline. Para saber mais, consulte [Trabalhar com esquemas](pipeline-blueprint.md).

```
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 Compressão de solicitações HTTP no 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"
```

Principais atributos na origem do Confluence:

1. **hosts**: a nuvem do Confluence ou a URL on-premises. Geralmente, é similar a `https://your-domain-name.atlassian.net/`

1. **acknowledgments**: para garantir a entrega dos dados ao coletor.

1. **authentication**: descreve como você deseja que o pipeline acesse a instância do Confluence. Escolha `Basic` ou `OAuth2` e especifique os atributos de chave correspondentes que fazem referência às chaves em seu AWS segredo.

1. **filter**: esta seção ajuda você a selecionar qual porção dos dados do Confluence deve ser extraída e sincronizada.

   1. **space**: liste as chaves dos espaços que você deseja sincronizar na seção `include`. Caso contrário, liste os espaços que você deseja excluir na seção `exclude`. Nunca forneça mais de uma das opções de inclusão ou exclusão.

   1. **page\$1type**: tipos de página específicos (como página, postagem de blog ou anexos) que você deseja sincronizar. Siga o padrão similar `include` ou `exclude` que atenda às suas necessidades. Observe que os anexos aparecerão como links-âncora para o anexo original, mas o conteúdo do anexo não será extraído.

## Consistência de dados
<a name="data-consistency"></a>

Com base nos filtros especificados no pipeline YAML, os projetos (ou espaços) selecionados serão extraídos uma vez e totalmente sincronizados com o coletor de destino. Depois, o monitoramento contínuo das alterações capturará as alterações à medida que elas ocorrerem e atualizará os dados no coletor. Uma exceção é que o monitoramento de alterações sincroniza apenas as ações `create` e `update`, não as ações `delete`.

## Limitações
<a name="limitations"></a>
+ As ações de exclusão de usuário não serão sincronizadas. Os dados, uma vez gravados no coletor, ali permanecerão. As atualizações substituirão o conteúdo existente por novas alterações se o mapeamento de ID for especificado nas configurações do coletor.
+ As instâncias locais que usam versões mais antigas do software Atlassian que não oferecem suporte ao seguinte não APIs são compatíveis com essa fonte:
  + API search versão 3 do Jira
    + `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 CloudWatch para conectores Atlassian
<a name="metrics"></a>

**Tipo: métricas do conector do Jira**


| Fonte | Métrica | Tipo de métrica | 
| --- | --- | --- | 
| acknowledgementSetSuccesses.contar | Contador | Se as confirmações estiverem habilitadas, essa métrica fornecerá o número de tickets sincronizados com sucesso. | 
| acknowledgementSetFailures.contar | Contador | Se as confirmações estiverem habilitadas, essa métrica fornecerá o número de tickets em que houve falha de sincronização. | 
| crawlingTime.avg | Timer | O tempo necessário para fazer o crawling por todas as novas alterações. | 
| ticketFetchLatency.avg | Timer | A média de latência da API de busca de ticket. | 
| ticketFetchLatency.máximo | Timer | O máximo de latência da API de busca de ticket. | 
| ticketsRequested.count | Contador | Número de solicitações de busca de tíquete feitas. | 
| ticketRequestedFailed.contar | Contador | Número de solicitações de busca de tíquete em que houve falha. | 
| ticketRequestedSuccess.contar | Contador | Número de solicitações de busca de tíquete bem-sucedidas. | 
| searchCallLatency.avg | Timer | Média de latência de chamada de API search. | 
| searchCallLatency.máximo | Timer | Máximo de latência de chamada de API search. | 
| searchResultsFound.contar | Contador | Número de itens encontrados em uma determinada chamada search. | 
| searchRequestFailed.contar | Contador | Contagem de falhas de chamada de API search. | 
| AuthFailures.count | Contador | Contagem de falhas de autenticação. | 

**Tipo: métricas do conector do Confluence**


| Fonte | Métrica | Tipo de métrica | 
| --- | --- | --- | 
| acknowledgementSetSuccesses.contar | Contador | Se as confirmações estiverem habilitadas, essa métrica fornecerá o número de páginas sincronizadas com sucesso. | 
| acknowledgementSetFailures.contar | Contador | Se as confirmações estiverem habilitadas, essa métrica fornecerá o número de páginas em que houve falha na sincronização. | 
| crawlingTime.avg | Timer | O tempo necessário para fazer o crawling por todas as novas alterações. | 
| pageFetchLatency.avg | Timer | Latência da API de busca de conteúdo (média). | 
| pageFetchLatency.máximo | Timer | Latência da API de busca de conteúdo (máxima). | 
| pagesRequested.count | Contador | Número de invocações da API de busca de conteúdo. | 
| pageRequestFailed.contar | Contador | Número de solicitações da API de busca de conteúdo em que houve falha. | 
| pageRequestedSuccess.contar | Contador | Número de solicitações da API de busca de conteúdo bem-sucedidas. | 
| searchCallLatency.avg | Timer | Média de latência de chamada de API search. | 
| searchCallLatency.máximo | Timer | Latência máxima de chamada de API search. | 
| searchResultsFound.contar | Contador | Número de itens encontrados em uma determinada chamada search. | 
| searchRequestsFailed.contar | Contador | Contagem de falhas de chamada de API search. | 
| AuthFailures.count | Contador | Contagem de falhas de autenticação. | 