Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation d'un pipeline OpenSearch d'ingestion avec Atlassian Services
Vous pouvez utiliser les plugins source Atlassian Jira et Confluence pour intégrer les données des services Atlassian dans votre pipeline d'ingestion. OpenSearch Ces intégrations vous permettent de créer une base de connaissances consultable unifiée en synchronisant des projets Jira complets et des espaces Confluence, tout en préservant la pertinence en temps réel grâce à une surveillance continue et à une synchronisation automatique des mises à jour.
Rubriques
Prérequis
Avant de créer votre pipeline OpenSearch d'ingestion, procédez comme suit :
-
Préparez les informations d'identification de votre site Jira en choisissant l'une des options suivantes. OpenSearch L'ingestion ne nécessite qu'une
ReadOnly
autorisation du contenu.-
Option 1 : clé API — Connectez-vous à votre compte Atlassian et utilisez les informations de la rubrique suivante pour générer votre clé API :
-
Option 2 : OAuth2 — Connectez-vous à votre compte Atlassian et utilisez les informations qu'il contient. Connexion d'un pipeline Amazon OpenSearch Ingestion à Atlassian Jira ou Confluence à l'aide de la version 2.0 OAuth
-
-
Créez un secret AWS Secrets Manager pour stocker les informations d'identification créées à l'étape précédente. Effectuez les choix suivants en suivant la procédure :
-
Pour Secret type (Type de secret), choisissez Other type of secret (Autre type de secret).
-
Pour les paires clé/valeur, créez les paires suivantes, en fonction du type d'autorisation sélectionné :
Après avoir créé le secret, copiez le nom de ressource Amazon (ARN) du secret. Vous allez l'inclure dans la politique d'autorisation des rôles du pipeline.
-
Configuration d'un rôle de pipeline
Le rôle transmis dans le pipeline doit être associé à la politique suivante pour pouvoir lire et écrire sur le secret créé dans la section des prérequis.
Le rôle doit également être associé à une politique d'accès et d'écriture sur le récepteur que vous avez choisi. Par exemple, si vous OpenSearch le choisissez comme récepteur, la politique est similaire à la suivante :
Configuration du pipeline de connecteurs Jira
Vous pouvez utiliser un plan Atlassian Jira préconfiguré pour créer ce pipeline. Pour de plus amples informations, veuillez consulter Travailler avec des plans.
Remplacez placeholder values
par vos propres informations.
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 Compression des requêtes HTTP dans 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
"
Clé des attributs de la source Jira :
-
hosts : votre URL Jira dans le cloud ou sur site. En général, cela ressemble à
https://
.your-domain-name
.atlassian.net/ -
accusés de réception : pour garantir la livraison des données jusqu'au récepteur.
-
authentification : décrit comment vous souhaitez que le pipeline accède à votre instance Jira. Choisissez
Basic
ouOAuth2
et spécifiez les attributs clés correspondants faisant référence aux clés de votre AWS secret. -
filtre : cette section vous permet de sélectionner la partie de vos données Jira à extraire et à synchroniser.
-
projet : Répertoriez les clés de projet que vous souhaitez synchroniser dans la
include
section. Sinon, listez les projets que vous souhaitez exclure dans laexclude
section. Fournissez une seule des options d'inclusion ou d'exclusion à un moment donné. -
issue_type : types de problèmes spécifiques que vous souhaitez synchroniser. Suivez le modèle similaire
include
ou leexclude
modèle qui répond à vos besoins. Notez que les pièces jointes apparaîtront sous forme de liens d'ancrage vers la pièce jointe d'origine, mais que le contenu de la pièce jointe ne sera pas extrait. -
status : filtre d'état spécifique que vous souhaitez appliquer à la requête d'extraction de données. Si vous le spécifiez
include
, seuls les tickets présentant ces statuts seront synchronisés. Si vous le spécifiezexclude
, tous les tickets, à l'exception de ceux dont le statut d'exclusion est répertorié, seront synchronisés.
-
Configuration du pipeline du connecteur Confluence
Vous pouvez utiliser un plan Atlassian Confluence préconfiguré pour créer ce pipeline. Pour de plus amples informations, veuillez consulter Travailler avec des plans.
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 Compression des requêtes HTTP dans 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
"
Attributs clés de la source Confluence :
-
hosts : votre URL Confluence dans le cloud ou sur site. En général, cela ressemble à
https://
your-domain-name
.atlassian.net/ -
accusés de réception : pour garantir la livraison des données jusqu'au récepteur.
-
authentification : décrit comment vous souhaitez que le pipeline accède à votre instance Confluence. Choisissez
Basic
ouOAuth2
et spécifiez les attributs clés correspondants faisant référence aux clés de votre AWS secret. -
filtre : cette section vous permet de sélectionner la partie de vos données Confluence à extraire et à synchroniser.
-
espace : Répertoriez les touches d'espace que vous souhaitez synchroniser dans la
include
section. Sinon, listez les espaces que vous souhaitez exclure dans laexclude
section. Fournissez une seule des options d'inclusion ou d'exclusion à un moment donné. -
page_type : types de pages spécifiques (comme une page, un article de blog ou des pièces jointes) que vous souhaitez synchroniser. Suivez le modèle similaire
include
ou leexclude
modèle qui répond à vos besoins. Notez que les pièces jointes apparaîtront sous forme de liens d'ancrage vers la pièce jointe d'origine, mais que le contenu de la pièce jointe ne sera pas extrait.
-
Cohérence des données
Sur la base des filtres spécifiés dans le pipeline YAML, les projets (ou espaces) sélectionnés seront extraits une fois et entièrement synchronisés avec le récepteur cible. Ensuite, la surveillance continue des modifications capturera les modifications au fur et à mesure qu'elles se produisent et mettra à jour les données dans le récepteur. Une exception est que le suivi des modifications synchronise uniquement les update
actions, create
et non les delete
actions.
Limites
-
Les actions de suppression effectuées par l'utilisateur ne seront pas synchronisées. Une fois enregistrées dans le récepteur, les données y resteront. Les mises à jour remplaceront le contenu existant par de nouvelles modifications si le mappage des identifiants est spécifié dans les paramètres du récepteur.
-
Les instances locales utilisant d'anciennes versions du logiciel Atlassian qui ne prennent pas en charge les éléments suivants ne APIs sont pas compatibles avec cette source :
-
API de recherche Jira version 3
-
rest/api/3/search
-
rest/api/3/issue
-
-
Confluence
-
wiki/rest/api/content/search
-
wiki/rest/api/content
-
wiki/rest/api/settings/systemInfo
-
-
Informations relatives CloudWatch aux connecteurs Atlassian
Type : métriques du connecteur Jira
Source | Métrique | Type : Metric |
---|---|---|
acknowledgementSetSuccesses.nombre | Compteur | Si les accusés de réception sont activés, cette métrique indique le nombre de tickets synchronisés avec succès. |
acknowledgementSetFailures.nombre | Compteur | Si les accusés de réception sont activés, cette métrique indique le nombre de tickets qui n'ont pas pu être synchronisés. |
CrawlingTime.AVG | Horloge | Le temps qu'il a fallu pour analyser tous les nouveaux changements. |
ticketFetchLatency.avg | Horloge | La latence moyenne de l'API de récupération des tickets. |
ticketFetchLatency.max | Horloge | La latence maximale de l'API de récupération des tickets. |
Tickets demandés. Nombre | Compteur | Nombre de demandes de récupération de tickets effectuées. |
ticketRequestedFailed.nombre | Compteur | Nombre de demandes de récupération de tickets ayant échoué. |
ticketRequestedSuccess.nombre | Compteur | Nombre de demandes d'extraction de tickets réussies. |
searchCallLatency.avg | Horloge | Latence moyenne des appels de l'API de recherche. |
searchCallLatency.max | Horloge | Latence maximale des appels de l'API de recherche. |
searchResultsFound.nombre | Compteur | Nombre d'éléments trouvés lors d'un appel de recherche donné. |
searchRequestFailed.nombre | Compteur | Nombre d'échecs d'appels de l'API de recherche. |
Défaillances d'authentification. Nombre | Compteur | Nombre d'échecs d'authentification. |
Type : métriques du connecteur Confluence
Source | Métrique | Type : Metric |
---|---|---|
acknowledgementSetSuccesses.nombre | Compteur | Si les accusés de réception sont activés, cette métrique indique le nombre de pages synchronisées avec succès. |
acknowledgementSetFailures.nombre | Compteur | Si les accusés de réception sont activés, cette métrique indique le nombre de pages qui n'ont pas pu être synchronisées. |
CrawlingTime.AVG | Horloge | Le temps qu'il a fallu pour analyser tous les nouveaux changements. |
pageFetchLatency.avg | Horloge | Latence de l'API de récupération de contenu (moyenne). |
pageFetchLatency.max | Horloge | Latence de l'API de récupération de contenu (maximale). |
Nombre de pages demandées | Compteur | Nombre d'appels de l'API de récupération de contenu. |
pageRequestFailed.nombre | Compteur | Nombre de demandes infructueuses de l'API de récupération de contenu. |
pageRequestedSuccess.nombre | Compteur | Nombre de demandes d'API de récupération de contenu réussies. |
searchCallLatency.avg | Horloge | Latence moyenne des appels de l'API de recherche. |
searchCallLatency.max | Horloge | Latence maximale des appels de l'API de recherche |
searchResultsFound.nombre | Compteur | Nombre d'éléments trouvés lors d'un appel de recherche donné. |
searchRequestsFailed.nombre | Compteur | Nombre d'échecs d'appels de l'API de recherche. |
Défaillances d'authentification. Nombre | Compteur | Nombre d'échecs d'authentification. |