기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Atlassian Services에서 OpenSearch Ingestion 파이프라인 사용
Atlassian Jira 및 Confluence 소스 플러그인을 사용하여 Atlassian 서비스에서 OpenSearch Ingestion 파이프라인으로 데이터를 수집할 수 있습니다. 이러한 통합을 통해 전체 Jira 프로젝트와 Confluence 공간을 동기화하는 동시에 업데이트의 지속적인 모니터링 및 자동 동기화를 통해 실시간 관련성을 유지하여 검색 가능한 통합 지식 기반을 생성할 수 있습니다.
주제
사전 조건
OpenSearch Ingestion 파이프라인을 생성하기 전에 다음 단계를 완료합니다.
-
다음 옵션 중 하나를 선택하여 Jira 사이트의 자격 증명을 준비합니다. OpenSearch Ingestion은 콘텐츠에 대한
ReadOnly
권한 부여만 필요합니다.-
옵션 1: API 키 - Atlassian 계정에 로그인하고 다음 주제의 정보를 사용하여 API 키를 생성합니다.
-
옵션 2: OAuth2 - Atlassian 계정에 로그인하고의 정보를 사용합니다OAuth 2.0을 사용하여 Amazon OpenSearch Ingestion 파이프라인을 Atlassian Jira 또는 Confluence에 연결.
-
-
에서 보안 암호를 생성 AWS Secrets Manager하여 이전 단계에서 생성한 자격 증명을 저장합니다. 절차에 따라 다음을 선택합니다.
-
보안 암호 유형에서 다른 유형의 보안 암호를 선택합니다.
-
키/값 페어의 경우 선택한 권한 부여 유형에 따라 다음 페어를 생성합니다.
보안 암호를 생성한 후 보안 암호의 Amazon 리소스 이름(ARN)을 복사합니다. 파이프라인 역할 권한 정책에 포함합니다.
-
파이프라인 역할 구성
파이프라인에 전달된 역할에는 사전 조건 섹션에서 생성된 보안 암호를 읽고 쓰려면 다음 정책이 연결되어 있어야 합니다.
역할에는 선택한 싱크에 액세스하고 쓸 수 있는 정책도 연결되어 있어야 합니다. 예를 들어 OpenSearch를 싱크로 선택하면 정책은 다음과 비슷합니다.
Jira 커넥터 파이프라인 구성
미리 구성된 Atlassian Jira 블루프린트를 사용하여이 파이프라인을 생성할 수 있습니다. 자세한 내용은 블루프린트 작업 단원을 참조하십시오.
자리 표시자
를 자신의 정보로 바꿉니다.
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 Amazon OpenSearch Service에서 HTTP 요청 압축 # 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
"
Jira 소스의 속성에 대한 키:
-
호스트: Jira 클라우드 또는 온프레미스 URL. 일반적으로 처럼 보입니다
https://
.your-domain-name
.atlassian.net/ -
승인: 싱크로 데이터가 완전히 전송되도록 합니다.
-
인증: 파이프라인이 Jira 인스턴스에 액세스하는 방법을 설명합니다.
Basic
또는OAuth2
를 선택하고 AWS 보안 암호의 키를 참조하는 해당 키 속성을 지정합니다. -
필터:이 섹션에서는 추출하고 동기화할 Jira 데이터 부분을 선택하는 데 도움이 됩니다.
-
project:
include
섹션에서 동기화하려는 프로젝트 키를 나열합니다. 그렇지 않으면exclude
섹션에서 제외할 프로젝트를 나열합니다. 지정된 시간에 포함 또는 제외 옵션 중 하나만 제공합니다. -
issue_type: 동기화하려는 특정 문제 유형입니다. 필요에 맞는 유사한
include
또는exclude
패턴을 따릅니다. 첨부 파일은 원래 첨부 파일에 대한 앵커 링크로 표시되지만 첨부 파일 콘텐츠는 추출되지 않습니다. -
status: 데이터 추출 쿼리에 적용할 특정 상태 필터입니다. 를 지정하면 해당 상태의 티켓
include
만 동기화됩니다. 를 지정하면 제외된 상태가 나열된 티켓을 제외한exclude
모든 티켓이 동기화됩니다.
-
Confluence 커넥터 파이프라인 구성
미리 구성된 Atlassian Confluence 블루프린트를 사용하여이 파이프라인을 생성할 수 있습니다. 자세한 내용은 블루프린트 작업 단원을 참조하십시오.
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 Amazon OpenSearch Service에서 HTTP 요청 압축. # 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
"
Confluence 소스의 주요 속성:
-
호스트: Confluence 클라우드 또는 온프레미스 URL. 일반적으로 다음과 같습니다.
https://
your-domain-name
.atlassian.net/ -
승인: 싱크로 데이터가 완전히 전송되도록 합니다.
-
인증: 파이프라인이 Confluence 인스턴스에 액세스하는 방법을 설명합니다.
Basic
또는OAuth2
를 선택하고 AWS 보안 암호의 키를 참조하는 해당 키 속성을 지정합니다. -
필터:이 섹션에서는 추출하고 동기화할 Confluence 데이터 부분을 선택하는 데 도움이 됩니다.
-
space:
include
섹션에서 동기화하려는 스페이스 키를 나열합니다. 그렇지 않으면exclude
섹션에서 제외할 공백을 나열합니다. 지정된 시간에 포함 또는 제외 옵션 중 하나만 제공합니다. -
page_type: 동기화하려는 특정 페이지 유형(예: 페이지, 블로그 게시물 또는 첨부 파일)입니다. 필요에 맞는 유사한
include
또는exclude
패턴을 따릅니다. 첨부 파일은 원래 첨부 파일에 대한 앵커 링크로 표시되지만 첨부 파일 콘텐츠는 추출되지 않습니다.
-
데이터 일관성
파이프라인 YAML에 지정된 필터를 기반으로 선택한 프로젝트(또는 공백)가 한 번 추출되고 대상 싱크에 완전히 동기화됩니다. 그런 다음 지속적인 변경 모니터링을 통해 변경 사항이 발생할 때 이를 캡처하고 싱크의 데이터를 업데이트합니다. 한 가지 예외는 변경 모니터링이 및 update
작업만 동기화create
하고 delete
작업은 동기화하지 않는다는 것입니다.
제한 사항
-
사용자 삭제 작업은 동기화되지 않습니다. 싱크에 기록된 데이터는 싱크에 남아 있습니다. 싱크 설정에서 ID 매핑을 지정하면 업데이트가 기존 콘텐츠를 새 변경 사항으로 덮어씁니다.
-
다음 APIs는이 소스와 호환되지 않습니다.
-
Jira Search API 버전 3
-
rest/api/3/search
-
rest/api/3/issue
-
-
Confluence
-
wiki/rest/api/content/search
-
wiki/rest/api/content
-
wiki/rest/api/settings/systemInfo
-
-
Atlassian 커넥터에 대한 CloudWatch의 지표
유형: Jira 커넥터 지표
소스 | 지표 | 지표 유형 |
---|---|---|
acknowledgementSetSuccesses.count | Counter | 확인이 활성화된 경우이 지표는 성공적으로 동기화된 티켓 수를 제공합니다. |
acknowledgementSetFailures.count | Counter | 확인이 활성화된 경우이 지표는 동기화에 실패한 티켓 수를 제공합니다. |
crawlingTime.avg | 타이머 | 모든 새 변경 사항을 크롤링하는 데 걸린 시간입니다. |
ticketFetchLatency.avg | 타이머 | 티켓은 API 지연 시간 평균을 가져옵니다. |
ticketFetchLatency.max | 타이머 | 티켓은 API 지연 시간을 최대로 가져옵니다. |
ticketsRequested.count | Counter | 수행된 티켓 가져오기 요청 수입니다. |
ticketRequestedFailed.count | Counter | 티켓 가져오기 요청 수가 실패했습니다. |
ticketRequestedSuccess.count | Counter | 성공한 티켓 가져오기 요청 수입니다. |
searchCallLatency.avg | 타이머 | API 호출 지연 시간 평균을 검색합니다. |
searchCallLatency.max | 타이머 | API 호출 지연 시간 최대값을 검색합니다. |
searchResultsFound.count | Counter | 지정된 검색 호출에서 발견된 항목 수입니다. |
searchRequestFailed.count | Counter | 검색 API 호출 실패 횟수입니다. |
authFailures.count | Counter | 인증 실패 횟수입니다. |
유형: Confluence 커넥터 지표
소스 | 지표 | 지표 유형 |
---|---|---|
acknowledgementSetSuccesses.count | Counter | 확인이 활성화된 경우이 지표는 성공적으로 동기화된 페이지 수를 제공합니다. |
acknowledgementSetFailures.count | Counter | 확인이 활성화된 경우이 지표는 동기화에 실패한 페이지 수를 제공합니다. |
crawlingTime.avg | 타이머 | 모든 새 변경 사항을 크롤링하는 데 걸린 시간입니다. |
pageFetchLatency.avg | 타이머 | 콘텐츠 가져오기 API 지연 시간(평균). |
pageFetchLatency.max | 타이머 | 콘텐츠 가져오기 API 지연 시간(최대). |
pagesRequested.count | Counter | API를 가져오는 콘텐츠의 호출 수입니다. |
pageRequestFailed.count | Counter | API를 가져오는 콘텐츠의 실패한 요청 수입니다. |
pageRequestedSuccess.count | Counter | API를 가져오는 콘텐츠의 성공적인 요청 수입니다. |
searchCallLatency.avg | 타이머 | API 호출 지연 시간 평균을 검색합니다. |
searchCallLatency.max | 타이머 | 검색 API 호출 지연 시간 최대 |
searchResultsFound.count | Counter | 지정된 검색 호출에서 발견된 항목 수입니다. |
searchRequestsFailed.count | Counter | 검색 API 호출 실패 횟수입니다. |
authFailures.count | Counter | 인증 실패 횟수입니다. |