Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan pipa OpenSearch Ingestion dengan Atlassian Services
Anda dapat menggunakan plugin sumber Atlassian Jira dan Confluence untuk menyerap data dari layanan Atlassian ke dalam pipeline Ingestion Anda. OpenSearch Integrasi ini memungkinkan Anda untuk membuat basis pengetahuan terpadu yang dapat dicari dengan menyinkronkan proyek Jira lengkap dan ruang Confluence, sambil mempertahankan relevansi waktu nyata melalui pemantauan berkelanjutan dan sinkronisasi pembaruan otomatis.
Topik
Prasyarat
Sebelum Anda membuat pipeline OpenSearch Ingestion Anda, selesaikan langkah-langkah berikut:
-
Siapkan kredensyal untuk situs Jira Anda dengan memilih salah satu opsi berikut. OpenSearch Konsumsi hanya memerlukan
ReadOnlyotorisasi untuk konten.-
Opsi 1: Kunci API - Masuk ke akun Atlassian Anda dan gunakan informasi dalam topik berikut untuk menghasilkan kunci API Anda:
-
Opsi 2: OAuth2 — Masuk ke akun Atlassian Anda dan gunakan informasinya. Menghubungkan pipeline Amazon OpenSearch Ingestion ke Atlassian Jira atau Confluence menggunakan 2.0 OAuth
-
-
Buat rahasia AWS Secrets Manager untuk menyimpan kredensil yang dibuat pada langkah sebelumnya. Buat pilihan berikut saat Anda mengikuti prosedur:
-
Untuk Tipe rahasia, pilih Tipe rahasia lainnya.
-
Untuk pasangan kunci/nilai, buat pasangan berikut, tergantung pada jenis otorisasi yang Anda pilih:
Setelah Anda membuat rahasia, salin Amazon Resource Name (ARN) dari rahasianya. Anda akan memasukkannya ke dalam kebijakan izin peran pipeline.
-
Mengonfigurasi peran alur
Peran yang diteruskan dalam pipeline harus memiliki kebijakan berikut yang dilampirkan untuk membaca dan menulis ke rahasia yang dibuat di bagian prasyarat.
Peran tersebut juga harus memiliki kebijakan yang dilampirkan untuk mengakses dan menulis ke wastafel pilihan Anda. Misalnya, jika Anda memilih OpenSearch sebagai wastafel, kebijakan terlihat mirip dengan yang berikut:
Konfigurasi pipa konektor Jira
Anda dapat menggunakan cetak biru Atlassian Jira yang telah dikonfigurasi sebelumnya untuk membuat pipeline ini. Untuk informasi selengkapnya, lihat Bekerja dengan cetak biru.
Ganti placeholder values dengan informasi Anda sendiri.
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 Mengompresi permintaan HTTP di Amazon Service OpenSearch # 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"
Kunci atribut di sumber Jira:
-
host: Cloud Jira atau URL lokal Anda. Umumnya, sepertinya
https://.your-domain-name.atlassian.net/ -
ucapan terima kasih: Untuk menjamin pengiriman data sampai ke wastafel.
-
otentikasi: Menjelaskan bagaimana Anda ingin pipeline mengakses instance Jira Anda. Pilih
BasicatauOAuth2dan tentukan atribut kunci yang sesuai yang mereferensikan kunci dalam AWS rahasia Anda.. -
filter: Bagian ini membantu Anda memilih bagian mana dari data Jira Anda untuk mengekstrak dan menyinkronkan.
-
project: Buat daftar kunci proyek yang ingin Anda sinkronkan di
includebagian. Jika tidak, daftarkan proyek yang ingin Anda kecualikan di bawahexcludebagian. Berikan hanya salah satu opsi sertakan atau kecualikan pada waktu tertentu. -
issue_type: Jenis masalah khusus yang ingin Anda sinkronkan. Ikuti
excludepola serupaincludeatau yang sesuai dengan kebutuhan Anda. Perhatikan bahwa lampiran akan muncul sebagai tautan jangkar ke lampiran asli, tetapi konten lampiran tidak akan diekstraksi. -
status: Filter status tertentu yang ingin Anda terapkan untuk kueri ekstraksi data. Jika Anda menentukan
include, hanya tiket dengan status tersebut yang akan disinkronkan. Jika Anda menentukanexclude, maka semua tiket kecuali yang memiliki status dikecualikan yang terdaftar akan disinkronkan.
-
Konfigurasi pipa konektor pertemuan
Anda dapat menggunakan cetak biru Atlassian Confluence yang telah dikonfigurasi sebelumnya untuk membuat pipeline ini. Untuk informasi selengkapnya, lihat Bekerja dengan cetak biru.
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 Mengompresi permintaan HTTP di Amazon Service OpenSearch . # 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"
Atribut kunci dalam sumber Confluence:
-
host: Cloud Confluence atau URL lokal Anda. Secara umum, sepertinya
https://your-domain-name.atlassian.net/ -
ucapan terima kasih: Untuk menjamin pengiriman data sampai ke wastafel.
-
otentikasi: Menjelaskan bagaimana Anda ingin pipeline mengakses instance Confluence Anda. Pilih
BasicatauOAuth2dan tentukan atribut kunci yang sesuai yang mereferensikan kunci dalam AWS rahasia Anda. -
filter: Bagian ini membantu Anda memilih bagian mana dari data Confluence Anda untuk mengekstrak dan menyinkronkan.
-
spasi: Buat daftar tombol spasi yang ingin Anda sinkronkan di
includebagian tersebut. Jika tidak, cantumkan spasi yang ingin Anda kecualikan di bawahexcludebagian. Berikan hanya salah satu opsi sertakan atau kecualikan pada waktu tertentu. -
page_type: Jenis halaman tertentu (seperti halaman, blogpost, atau lampiran) yang ingin Anda sinkronkan. Ikuti
excludepola serupaincludeatau yang sesuai dengan kebutuhan Anda. Perhatikan bahwa lampiran akan muncul sebagai tautan jangkar ke lampiran asli, tetapi konten lampiran tidak akan diekstraksi.
-
Konsistensi data
Berdasarkan filter yang ditentukan dalam pipa YAMB, proyek (atau spasi) yang dipilih akan diekstraksi sekali dan disinkronkan sepenuhnya ke wastafel target. Kemudian pemantauan perubahan berkelanjutan akan menangkap perubahan saat terjadi dan memperbarui data di wastafel. Satu pengecualian adalah bahwa pemantauan perubahan hanya disinkronkan create dan update tindakan, bukan delete tindakan.
Batasan
-
Tindakan menghapus pengguna tidak akan disinkronkan. Data yang pernah direkam di wastafel akan tetap berada di wastafel. Pembaruan akan menimpa konten yang ada dengan perubahan baru jika pemetaan ID ditentukan dalam pengaturan sink.
-
Instans lokal yang menggunakan perangkat lunak Atlassian versi lama yang tidak mendukung hal berikut tidak APIs kompatibel dengan sumber ini:
-
Jira Search API versi 3
-
rest/api/3/search -
rest/api/3/issue
-
-
Confluence
-
wiki/rest/api/content/search -
wiki/rest/api/content -
wiki/rest/api/settings/systemInfo
-
-
Metrik CloudWatch untuk konektor Atlassian
Jenis: Metrik konektor Jira
| Sumber | Metrik | Jenis Metrik |
|---|---|---|
| acknowledgementSetSuccesses.menghitung | Penghitung | Jika ucapan terima kasih diaktifkan, metrik ini memberikan jumlah tiket yang berhasil disinkronkan. |
| acknowledgementSetFailures.menghitung | Penghitung | Jika ucapan terima kasih diaktifkan, metrik ini memberikan jumlah tiket yang gagal disinkronkan. |
| Crawlingtime.avg | Timer | Waktu yang dibutuhkan untuk merangkak melalui semua perubahan baru. |
| ticketFetchLatency.avg | Timer | Rata-rata latensi API pengambilan tiket. |
| ticketFetchLatency.maks | Timer | Maksimum latensi API pengambilan tiket. |
| TicketsRequested.count | Penghitung | Jumlah permintaan pengambilan tiket yang dibuat. |
| ticketRequestedFailed.menghitung | Penghitung | Jumlah permintaan pengambilan tiket gagal. |
| ticketRequestedSuccess.menghitung | Penghitung | Jumlah permintaan pengambilan tiket berhasil. |
| searchCallLatency.avg | Timer | Cari rata-rata latensi panggilan API. |
| searchCallLatency.maks | Timer | Cari latensi panggilan API maksimum. |
| searchResultsFound.menghitung | Penghitung | Jumlah item yang ditemukan dalam panggilan pencarian tertentu. |
| searchRequestFailed.menghitung | Penghitung | Kegagalan panggilan API pencarian dihitung. |
| AuthFailures.count | Penghitung | Jumlah kegagalan otentikasi. |
Jenis: Metrik konektor pertemuan
| Sumber | Metrik | Jenis Metrik |
|---|---|---|
| acknowledgementSetSuccesses.menghitung | Penghitung | Jika ucapan terima kasih diaktifkan, metrik ini memberikan jumlah halaman yang berhasil disinkronkan. |
| acknowledgementSetFailures.menghitung | Penghitung | Jika ucapan terima kasih diaktifkan, metrik ini memberikan jumlah halaman yang gagal disinkronkan. |
| Crawlingtime.avg | Timer | Waktu yang dibutuhkan untuk merangkak melalui semua perubahan baru. |
| pageFetchLatency.avg | Timer | Latensi API pengambilan konten (rata-rata). |
| pageFetchLatency.maks | Timer | Latensi API pengambilan konten (maksimum). |
| PagesRequested.count | Penghitung | Jumlah pemanggilan API pengambilan konten. |
| pageRequestFailed.menghitung | Penghitung | Jumlah permintaan API pengambilan konten yang gagal. |
| pageRequestedSuccess.menghitung | Penghitung | Jumlah permintaan API pengambilan konten yang berhasil. |
| searchCallLatency.avg | Timer | Cari rata-rata latensi panggilan API. |
| searchCallLatency.maks | Timer | Cari latensi panggilan API maks. |
| searchResultsFound.menghitung | Penghitung | Jumlah item yang ditemukan dalam panggilan pencarian tertentu. |
| searchRequestsFailed.menghitung | Penghitung | Kegagalan panggilan API pencarian dihitung. |
| AuthFailures.count | Penghitung | Jumlah kegagalan otentikasi. |