Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Referensi model integrasi
Ada beberapa integrasi pra-bangun untuk layanan pihak ketiga untuk membantu membangun alat pelanggan yang ada ke dalam proses rilis pipeline. Mitra, atau penyedia layanan pihak ketiga, menggunakan model integrasi untuk mengimplementasikan jenis tindakan untuk digunakan di CodePipeline.
Gunakan referensi ini saat Anda merencanakan atau bekerja dengan jenis tindakan yang dikelola dengan model integrasi yang didukung di CodePipeline.
Untuk mengesahkan jenis tindakan pihak ketiga Anda sebagai integrasi mitra CodePipeline, rujuk Jaringan Mitra AWS (APN). Informasi ini merupakan suplemen untuk AWS CLI Referensi.
Topik
Bagaimana jenis tindakan pihak ketiga bekerja dengan integrator
Anda dapat menambahkan jenis tindakan pihak ketiga ke pipeline pelanggan untuk menyelesaikan tugas pada sumber daya pelanggan. Integrator mengelola permintaan pekerjaan dan menjalankan tindakan dengannya CodePipeline. Diagram berikut menunjukkan jenis tindakan pihak ketiga yang dibuat untuk digunakan pelanggan dalam pipeline mereka. Setelah pelanggan mengonfigurasi tindakan, tindakan berjalan dan membuat permintaan pekerjaan yang ditangani oleh mesin tindakan integrator.
Diagram menunjukkan langkah-langkah berikut:
-
Definisi tindakan terdaftar dan tersedia di CodePipeline. Tindakan pihak ketiga tersedia untuk pelanggan penyedia pihak ketiga.
-
Pelanggan penyedia memilih dan mengonfigurasi tindakan di CodePipeline.
-
Tindakan berjalan dan pekerjaan diantri. CodePipeline Ketika pekerjaan sudah siap CodePipeline, ia mengirimkan permintaan pekerjaan.
-
Integrator (pekerja pekerjaan untuk API polling pihak ketiga atau fungsi Lambda) mengambil permintaan pekerjaan, mengembalikan konfirmasi, dan mengerjakan artefak untuk tindakan tersebut.
-
Integrator mengembalikan success/failure output (pekerja pekerjaan menggunakan success/failure API atau fungsi Lambda mengirimkan success/failure output) dengan hasil pekerjaan dan token lanjutan.
Untuk informasi tentang langkah-langkah yang dapat Anda gunakan untuk meminta, melihat, dan memperbarui jenis tindakan, lihatBekerja dengan jenis tindakan.
Konsep
Bagian ini menggunakan istilah berikut untuk jenis tindakan pihak ketiga:
- Tipe tindakan
-
Proses berulang yang dapat digunakan kembali dalam pipeline yang melakukan beban kerja pengiriman berkelanjutan yang sama. Jenis tindakan diidentifikasi oleh
Owner,Category,Provider, danVersion. Contoh:{ "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeploy", "Version": "1" },Semua tindakan dari jenis yang sama berbagi implementasi yang sama.
- Tindakan
-
Contoh tunggal dari tipe tindakan, salah satu proses diskrit yang terjadi di dalam tahap pipa. Ini biasanya mencakup nilai pengguna khusus untuk pipeline tempat tindakan ini berjalan.
- Definisi tindakan
-
Skema untuk jenis tindakan yang mendefinisikan properti yang diperlukan untuk mengkonfigurasi tindakan dan input/output artefak.
- Eksekusi tindakan
-
Kumpulan pekerjaan yang telah dijalankan untuk menentukan apakah tindakan pada pipeline pelanggan berhasil atau tidak.
- Mesin eksekusi tindakan
-
Properti konfigurasi eksekusi tindakan yang mendefinisikan tipe integrasi yang digunakan oleh tipe tindakan. Nilai yang valid adalah
JobWorkerdanLambda. - Integrasi
-
Menjelaskan perangkat lunak yang dijalankan oleh integrator untuk mengimplementasikan jenis tindakan. CodePipeline mendukung dua jenis integrasi yang sesuai dengan dua mesin tindakan yang didukung
JobWorkerdanLambda. - Integrator
-
Orang yang memiliki implementasi jenis tindakan.
- Pekerjaan
-
Sepotong pekerjaan dengan pipeline dan konteks pelanggan untuk mengeksekusi integrasi. Eksekusi tindakan terdiri dari satu atau lebih pekerjaan.
- Pekerja kerja
-
Layanan yang memproses input pelanggan dan menjalankan pekerjaan.
Model integrasi yang didukung
CodePipeline memiliki dua model integrasi:
-
Model integrasi Lambda: Model integrasi ini adalah cara yang lebih disukai untuk bekerja dengan tipe tindakan di CodePipeline. Model integrasi Lambda menggunakan fungsi Lambda untuk memproses permintaan pekerjaan saat tindakan Anda berjalan.
-
Model integrasi pekerja kerja: Model integrasi pekerja kerja adalah model yang digunakan sebelumnya untuk integrasi pihak ketiga. Model integrasi pekerja pekerjaan menggunakan pekerja pekerjaan yang dikonfigurasi untuk menghubungi CodePipeline API untuk memproses permintaan pekerjaan saat tindakan Anda berjalan.
Sebagai perbandingan, tabel berikut menjelaskan fitur dari dua model:
| Model integrasi Lambda | Model integrasi pekerja kerja | |
|---|---|---|
| Deskripsi | Integrator menulis integrasi sebagai fungsi Lambda, yang dipanggil oleh CodePipeline setiap kali ada pekerjaan yang tersedia untuk tindakan tersebut. Fungsi Lambda tidak melakukan polling untuk pekerjaan yang tersedia tetapi menunggu hingga permintaan pekerjaan berikutnya diterima. | Integrator menulis integrasi sebagai pekerja pekerjaan yang melakukan survei terus-menerus untuk pekerjaan yang tersedia di saluran pipa pelanggan. Pekerja pekerjaan kemudian mengeksekusi pekerjaan dan mengirimkan hasil pekerjaan kembali CodePipeline dengan menggunakan CodePipeline API. |
| Infrastruktur | AWS Lambda | Terapkan kode pekerja pekerjaan ke infrastruktur integrator, seperti instans Amazon EC2. |
| Upaya pengembangan | Integrasi hanya berisi logika bisnis. | Integrasi perlu berinteraksi dengan CodePipeline API selain berisi logika bisnis. |
| Upaya operasi | Upaya operasi yang lebih rendah karena infrastruktur hanyalah AWS sumber daya. | Upaya operasi yang lebih tinggi karena pekerja pekerjaan membutuhkan perangkat keras mandiri. |
| Waktu Jalankan Pekerjaan Maks | Jika integrasi perlu dijalankan secara aktif selama lebih dari 15 menit, model ini tidak dapat digunakan. Tindakan ini untuk integrator yang perlu memulai proses (misalnya, memulai pembuatan artefak kode pelanggan) dan mengembalikan hasil ketika selesai. Kami tidak menyarankan integrator terus menunggu build untuk selesai. Sebaliknya, kembalikan kel anjutan. CodePipelinemembuat pekerjaan baru dalam 30 detik lagi jika kelanjutan diterima dari kode integrator untuk memeriksa pekerjaan sampai selesai. | Pekerjaan yang berjalan sangat lama (hours/days) dapat dipertahankan menggunakan model ini. |
Model integrasi Lambda
Model integrasi Lambda yang didukung termasuk membuat fungsi Lambda dan menentukan output untuk jenis tindakan pihak ketiga.
Perbarui fungsi Lambda Anda untuk menangani input dari CodePipeline
Anda dapat membuat fungsi Lambda baru. Anda dapat menambahkan logika bisnis ke fungsi Lambda yang dijalankan setiap kali ada pekerjaan yang tersedia di pipeline untuk jenis tindakan Anda. Misalnya, mengingat konteks pelanggan dan pipeline, Anda mungkin ingin memulai membangun layanan Anda untuk pelanggan.
Gunakan parameter berikut untuk memperbarui fungsi Lambda Anda untuk menangani input dari CodePipeline.
Format:
-
jobId:-
ID pekerjaan yang dibuat sistem yang unik.
-
Tipe: String
-
Pola: [0-9a-f] {8} - [0-9a-f] {4} - [0-9a-f] {4} - [0-9a-f] {4} - [0-9a-f] {12}
-
-
accountId:-
ID AWS akun pelanggan yang akan digunakan saat melakukan pekerjaan.
-
Tipe: String
-
Pola: [0-9] {12}
-
-
data:-
Informasi lain tentang pekerjaan yang digunakan integrasi untuk menyelesaikan pekerjaan.
-
Berisi peta berikut ini:
-
actionConfiguration:-
Data konfigurasi untuk tindakan. Bidang konfigurasi tindakan adalah pemetaan pasangan kunci-nilai bagi pelanggan Anda untuk memasukkan nilai. Tombol ditentukan oleh parameter kunci dalam file definisi tipe tindakan saat Anda mengatur tindakan. Dalam contoh ini, nilai-nilai ditentukan oleh pengguna tindakan yang menentukan informasi di
PasswordbidangUsernamedan. -
Jenis: Peta string ke string, hadir secara opsional
Contoh:
"configuration": { "Username": "MyUser", "Password": "MyPassword" },
-
-
encryptionKey:-
Merupakan informasi tentang kunci yang digunakan untuk mengenkripsi data di penyimpanan artefak, seperti AWS KMS kunci.
-
Isi: Jenis tipe data
encryptionKey, secara opsional hadir
-
-
inputArtifacts:-
Daftar informasi tentang artefak yang akan dikerjakan, seperti uji atau membangun artefak.
-
Isi: Daftar tipe data
Artifact, secara opsional hadir
-
-
outputArtifacts:-
Daftar informasi tentang output dari suatu tindakan.
-
Isi: Daftar tipe data
Artifact, secara opsional hadir
-
-
actionCredentials:-
Merupakan objek kredenSIAL AWS sesi. KredenSIAL ini adalah kredenSIAL sementara yang dikeluarkan oleh AWS STS. Mereka dapat digunakan untuk mengakses artefak input dan output di bucket S3 yang digunakan untuk menyimpan artefak untuk pipeline CodePipeline.
KredenSIAL ini juga memiliki izin yang sama dengan templat pernyataan kebijakan yang ditentukan dalam file definisi tipe tindakan.
-
Isi: Jenis tipe data
AWSSessionCredentials, secara opsional hadir
-
-
actionExecutionId:-
ID eksternal dari menjalankan tindakan.
-
Tipe: String
-
-
continuationToken:-
Token yang dihasilkan sistem, seperti ID penerapan, yang diperlukan oleh pekerjaan untuk melanjutkan pekerjaan secara asinkron.
-
Jenis: String, hadir secara opsional
-
-
-
Tipe data:
-
encryptionKey:-
id:-
ID yang digunakan untuk mengidentifikasi kunci. Untuk AWS KMS kunci, Anda dapat menggunakan ID kunci, kunci ARN, atau alias ARN.
-
Tipe: String
-
-
type:-
Jenis kunci enkripsi, seperti AWS KMS kunci.
-
Tipe: String
-
Nilai yang valid:
KMS
-
-
-
Artifact:-
name:-
Nama artefak itu.
-
Jenis: String, hadir secara opsional
-
-
revision:-
ID revisi artefak. Tergantung pada jenis objek, ini bisa berupa commit ID (GitHub) atau ID revisi (Amazon S3).
-
Jenis: String, hadir secara opsional
-
-
location:-
Lokasi artefak.
-
Isi: Jenis tipe data
ArtifactLocation, secara opsional hadir
-
-
-
ArtifactLocation:-
type:-
Jenis artefak di lokasi.
-
Jenis: String, hadir secara opsional
-
Nilai yang valid:
S3
-
-
s3Location:-
Lokasi bucket S3 yang berisi revisi.
-
Isi: Jenis tipe data
S3Location, secara opsional hadir
-
-
-
S3Location:-
bucketName:-
Nama bucket S3.
-
Tipe: String
-
-
objectKey:-
Kunci objek dalam bucket S3, yang secara unik mengidentifikasi objek dalam bucket.
-
Tipe: String
-
-
-
AWSSessionCredentials:-
accessKeyId:-
Kunci akses untuk sesi.
-
Tipe: String
-
-
secretAccessKey:-
Kunci akses rahasia untuk sesi.
-
Tipe: String
-
-
sessionToken:-
Token untuk sesi tersebut.
-
Tipe: String
-
-
Contoh:
{ "jobId": "01234567-abcd-abcd-abcd-012345678910", "accountId": "012345678910", "data": { "actionConfiguration": { "key1": "value1", "key2": "value2" }, "encryptionKey": { "id": "123-abc", "type": "KMS" }, "inputArtifacts": [ { "name": "input-art-name", "location": { "type": "S3", "s3Location": { "bucketName": "inputBucket", "objectKey": "inputKey" } } } ], "outputArtifacts": [ { "name": "output-art-name", "location": { "type": "S3", "s3Location": { "bucketName": "outputBucket", "objectKey": "outputKey" } } } ], "actionExecutionId": "actionExecutionId", "actionCredentials": { "accessKeyId": "access-id", "secretAccessKey": "secret-id", "sessionToken": "session-id" }, "continuationToken": "continueId-xxyyzz" } }
Kembalikan hasil dari fungsi Lambda Anda ke CodePipeline
Sumber daya pekerja pekerjaan integrator harus mengembalikan muatan yang valid dalam kasus keberhasilan, kegagalan, atau kelanjutan.
Format:
-
result: Hasil pekerjaan.-
Diperlukan
-
Nilai yang valid (tidak peka huruf besar):
-
Success: Menunjukkan pekerjaan berhasil dan terminal. -
Continue: Menunjukkan pekerjaan berhasil dan harus dilanjutkan, misalnya jika pekerja pekerjaan dipanggil kembali untuk eksekusi tindakan yang sama. -
Fail: Menunjukkan pekerjaan telah gagal dan bersifat terminal.
-
-
-
failureType: Jenis kegagalan untuk dikaitkan dengan pekerjaan yang gagal.failureTypeKategori untuk tindakan mitra menjelaskan jenis kegagalan yang ditemui saat menjalankan pekerjaan. Integrator mengatur tipe bersama dengan pesan kegagalan saat mengembalikan hasil kegagalan pekerjaan kembali ke CodePipeline.-
Tidak wajib. Diperlukan jika hasilnya
Fail. -
Harus nol jika
resultadalahSuccessatauContinue -
Nilai valid:
-
ConfigurationError
-
JobFailed
-
PermissionsError
-
RevisionOutOfSync
-
RevisionUnavailable
-
SystemUnavailable
-
-
-
continuation: Status kelanjutan akan diteruskan ke pekerjaan berikutnya dalam eksekusi tindakan saat ini.-
Tidak wajib. Diperlukan jika hasilnya
Continue. -
Harus nol jika
resultadaSuccessatauFail. -
Properti:
-
State: Hash negara yang akan dilewatkan.
-
-
-
status: Status eksekusi tindakan.-
Tidak wajib.
-
Properti:
-
ExternalExecutionId: ID eksekusi eksternal opsional atau ID komit untuk dikaitkan dengan pekerjaan. -
Summary: Ringkasan opsional dari apa yang terjadi. Dalam skenario kegagalan, ini menjadi pesan kegagalan yang dilihat pengguna.
-
-
-
outputVariables: Satu set key/value pasangan yang akan diteruskan ke eksekusi tindakan berikutnya.-
Tidak wajib.
-
Harus nol jika
resultadaContinueatauFail.
-
Contoh:
{ "result":"success", "failureType": null, "continuation": null, "status": { "externalExecutionId":"my-commit-id-123", "summary":"everything is dandy"}, "outputVariables": { "FirstOne":"Nice", "SecondOne":"Nicest", ... } }
Gunakan token lanjutan untuk menunggu hasil dari proses asinkron
continuationToken adalah bagian dari payload dan hasil dari fungsi Lambda Anda. Ini adalah cara untuk meneruskan status pekerjaan ke CodePipeline dan menunjukkan bahwa pekerjaan perlu dilanjutkan. Misalnya, setelah integrator memulai build untuk pelanggan pada sumber daya mereka, itu tidak menunggu build selesai, tetapi menunjukkan CodePipeline bahwa ia tidak memiliki hasil terminal dengan mengembalikan result as continue dan mengembalikan ID unik build ke CodePipeline sebagai continuation token.
catatan
Fungsi lambda hanya dapat berjalan hingga 15 menit. Jika pekerjaan perlu berjalan lebih lama, Anda dapat menggunakan token lanjutan.
CodePipeline Tim memanggil integrator setelah 30 detik dengan continuation token yang sama dalam payloadnya sehingga dapat memeriksa penyelesaiannya. Jika build selesai, integrator mengembalikan success/fail hasil terminal, jika tidak melanjutkan.
Ber CodePipeline ikan izin untuk memanggil fungsi integrator Lambda saat runtime
Anda menambahkan izin ke fungsi integrator Lambda Anda untuk menyediakan CodePipeline layanan dengan izin untuk memanggilnya menggunakan prinsip CodePipeline layanan:. codepipeline.amazonaws.com Anda dapat menambahkan izin dengan menggunakan CloudFormation atau baris perintah. Sebagai contoh, lihat Bekerja dengan jenis tindakan.
Model integrasi pekerja kerja
Setelah Anda merancang alur kerja tingkat tinggi Anda, Anda dapat membuat pekerja pekerjaan Anda. Meskipun spesifik tindakan pihak ketiga menentukan apa yang diperlukan untuk pekerja kerja, sebagian besar pekerja pekerjaan untuk tindakan pihak ketiga mencakup fungsionalitas berikut:
-
Polling untuk pekerjaan dari CodePipeline penggunaan
PollForThirdPartyJobs. -
Mengakui pekerjaan dan mengembalikan hasil untuk CodePipeline menggunakan
AcknowledgeThirdPartyJob,PutThirdPartyJobSuccessResult, danPutThirdPartyJobFailureResult. -
Mengambil artefak dari and/or memasukkan artefak ke dalam bucket Amazon S3 untuk pipeline. Untuk mengunduh artefak dari bucket Amazon S3, Anda harus membuat klien Amazon S3 yang menggunakan penandatanganan Signature Version 4 (Sig V4). Sig V4 diperlukan untuk AWS KMS.
Untuk mengunggah artefak ke bucket Amazon S3, Anda juga harus mengonfigurasi
PutObjectpermintaan Amazon S3 untuk menggunakan enkripsi melalui AWS Key Management Service (AWS KMS). AWS KMS menggunakan AWS KMS keys. Untuk mengetahui apakah akan menggunakan kunci Kunci yang dikelola AWS atau kunci yang dikelola pelanggan untuk mengunggah artefak, pekerja pekerjaan Anda harus melihat data pekerjaan dan memeriksa properti kunci enkripsi. Jika properti disetel, Anda harus menggunakan ID kunci yang dikelola pelanggan saat mengonfigurasi AWS KMS. Jika properti kunci adalah null, Anda menggunakan Kunci yang dikelola AWS. CodePipeline menggunakan Kunci yang dikelola AWS kecuali dikonfigurasi lain.Untuk contoh yang menunjukkan cara membuat AWS KMS parameter di Java atau.NET, lihat Menentukan AWS Key Management Service di Amazon S3 Menggunakan AWS SDK. Untuk informasi selengkapnya tentang bucket Amazon S3 untuk CodePipeline, lihatCodePipeline konsep.
Memilih dan mengonfigurasi strategi manajemen izin untuk pekerja pekerjaan Anda
Untuk mengembangkan pekerja pekerjaan untuk tindakan pihak ketiga Anda CodePipeline, Anda memerlukan strategi untuk integrasi pengguna dan manajemen izin.
Strategi paling sederhana adalah menambahkan infrastruktur yang Anda butuhkan untuk pekerja kerja Anda dengan membuat instans Amazon EC2 dengan peran instans AWS Identity and Access Management (IAM), yang memungkinkan Anda meningkatkan sumber daya yang Anda butuhkan untuk integrasi dengan mudah. Anda dapat menggunakan integrasi bawaan AWS untuk menyederhanakan interaksi antara pekerja kerja Anda dan CodePipeline.
Pelajari lebih lanjut tentang Amazon EC2 dan tentukan apakah itu pilihan yang tepat untuk integrasi Anda. Untuk informasi, lihat Amazon EC2 - Hosting
Strategi lain yang perlu dipertimbangkan adalah menggunakan federasi identitas dengan IAM untuk mengintegrasikan sistem dan sumber daya penyedia identitas Anda yang ada. Strategi ini berguna jika Anda sudah memiliki penyedia identitas perusahaan atau sudah dikonfigurasi untuk mendukung pengguna menggunakan penyedia identitas web. Federasi identitas memungkinkan Anda untuk memberikan akses aman ke AWS sumber daya, termasuk CodePipeline, tanpa harus membuat atau mengelola pengguna IAM. Anda dapat menggunakan fitur dan kebijakan untuk persyaratan keamanan kata sandi dan rotasi kredensia. Anda dapat menggunakan contoh aplikasi sebagai templat untuk desain Anda sendiri. Untuk selengkapnya, lihat M engelola Federasi
Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:
-
Pengguna dan grup di AWS IAM Identity Center:
Buat rangkaian izin. Ikuti instruksi di Buat rangkaian izin dalam Panduan Pengguna AWS IAM Identity Center .
-
Pengguna yang dikelola di IAM melalui penyedia identitas:
Buat peran untuk federasi identitas. Ikuti instruksi dalam Buat peran untuk penyedia identitas pihak ketiga (federasi) dalam Panduan Pengguna IAM.
-
Pengguna IAM:
-
Buat peran yang dapat diambil pengguna Anda. Ikuti instruksi dalam Buat peran untuk pengguna IAM dalam Panduan Pengguna IAM.
-
(Tidak disarankan) Lampirkan kebijakan langsung ke pengguna atau tambahkan pengguna ke grup pengguna. Ikuti petunjuk dalam Menambahkan izin ke pengguna (konsol) dalam Panduan Pengguna IAM.
-
Berikut ini adalah contoh kebijakan yang mungkin Anda buat untuk digunakan dengan pekerja pekerjaan pihak ketiga Anda. Kebijakan ini dimaksudkan sebagai contoh saja dan disediakan apa adanya.