Referensi model - AWS CodePipeline

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Referensi model

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 menerapkan jenis tindakan untuk digunakan CodePipeline.

Gunakan referensi ini saat Anda merencanakan atau bekerja dengan tipe tindakan yang dikelola dengan model integrasi yang didukung di CodePipeline.

Untuk mengesahkan jenis tindakan pihak ketiga Anda sebagai integrasi mitra dengan CodePipeline, referensiAWSJaringan Mitra (APN). Informasi ini merupakan suplemen untukAWS CLIReferensi.

Cara kerja tipe tindakan pihak ketiga dengan integrator

Anda dapat menambahkan jenis tindakan pihak ketiga ke jaringan pipa pelanggan untuk menyelesaikan tugas pada sumber daya pelanggan. Integrator mengelola permintaan pekerjaan dan menjalankan tindakan dengan 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 aksi integrator.

Diagram menunjukkan langkah-langkah berikut:

  1. Definisi tindakan terdaftar dan tersedia di CodePipeline. Tindakan pihak ketiga tersedia untuk pelanggan penyedia pihak ketiga.

  2. Pelanggan penyedia memilih dan mengkonfigurasi tindakan di CodePipeline.

  3. Aksi berjalan dan pekerjaan antri CodePipeline. Ketika pekerjaan sudah siap CodePipeline, ia mengirimkan permintaan pekerjaan.

  4. Integrator (job worker untuk API polling pihak ketiga atau fungsi Lambda) mengambil permintaan pekerjaan, mengembalikan konfirmasi, dan mengerjakan artefak untuk tindakan tersebut.

  5. Integrator mengembalikan keluaran sukses/kegagalan (job worker menggunakan API sukses/kegagalan atau fungsi Lambda mengirimkan keluaran sukses/kegagalan) dengan hasil pekerjaan dan token kelanjutan.

Untuk informasi tentang langkah-langkah yang dapat Anda gunakan untuk meminta, melihat, dan memperbarui jenis tindakan, lihatBekerja dengan jenis tindakan.

Konsep

Bagian ini menggunakan syarat berikut untuk tipe tindakan pihak ketiga:

Tipe tindakan

Proses berulang yang dapat digunakan kembali dalam jaringan pipa yang melakukan beban kerja pengiriman kontinu yang sama. Jenis tindakan diidentifikasi olehOwner,Category,Provider, danVersion. Misalnya:

{ "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeploy", "Version": "1" },

Semua tindakan dari jenis yang sama berbagi implementasi yang sama.

Action

Sebuah contoh tunggal dari jenis tindakan, salah satu proses diskrit yang terjadi di dalam tahap pipa. Ini biasanya mencakup nilai pengguna yang spesifik 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 pipa pelanggan berhasil atau tidak.

Eksekusi

Sebuah properti dari konfigurasi eksekusi tindakan yang mendefinisikan jenis integrasi yang digunakan oleh tipe tindakan. Nilai yang valid adalah JobWorker dan Lambda.

Integrasi

Menjelaskan perangkat lunak yang dijalankan oleh integrator untuk mengimplementasikan tipe tindakan. CodePipeline mendukung dua jenis integrasi yang sesuai dengan dua mesin aksi yang didukungJobWorkerdanLambda.

Integrator

Orang yang memiliki implementasi tipe tindakan.

Tugas

Sepotong pekerjaan dengan pipeline dan konteks pelanggan untuk mengeksekusi integrasi. Eksekusi tindakan terdiri dari satu atau beberapa pekerjaan.

Pekerja Job

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 diutamakan untuk menggunakan tipe aksi CodePipeline. Model integrasi Lambda menggunakan fungsi Lambda untuk memproses permintaan pekerjaan saat tindakan Anda berjalan.

  • Model integrasi pekerja Job:Model integrasi pekerja pekerjaan adalah model yang sebelumnya digunakan 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 Job
Deskripsi Integrator menulis integrasi sebagai fungsi Lambda, yang dipanggil oleh CodePipeline setiap kali ada pekerjaan yang tersedia untuk tindakan. Fungsi Lambda tidak melakukan polling untuk pekerjaan yang tersedia tetapi menunggu sampai permintaan pekerjaan berikutnya diterima. Integrator menulis integrasi sebagai pekerja kerja yang selalu melakukan polling untuk pekerjaan yang tersedia di jaringan pipa pelanggan. Pekerja kerja kemudian mengeksekusi pekerjaan dan menyerahkan hasil pekerjaan kembali ke CodePipeline dengan menggunakan CodePipeline API.
Infrastruktur AWS Lambda Terapkan kode job worker ke infrastruktur integrator, seperti instans Amazon EC2.
Upaya pengembangan Integrasi hanya berisi logika bisnis. Integrasi perlu berinteraksi dengan CodePipeline API selain mengandung logika bisnis.
Upaya operasional Upaya operasi yang lebih rendah karena infrastruktur hanyaAWSsumber daya. Upaya operasi yang lebih tinggi karena pekerja kerja membutuhkan perangkat keras mandiri.
Max Job Run Waktu 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 hasilnya saat selesai. Kami tidak menyarankan integrator terus menunggu build sampai selesai. Sebagai gantinya, kembalikankelanjutan. CodePipelinemenciptakan pekerjaan baru dalam 30 detik lagi jika kelanjutan diterima dari kode integrator untuk memeriksa pekerjaan sampai selesai. Pekerjaan berjalan sangat lama (jam/hari) dapat dipertahankan menggunakan model ini.

Model integrasi Lambda

Model integrasi Lambda yang didukung mencakup pembuatan fungsi Lambda dan menentukan output untuk tipe 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 Anda yang dijalankan setiap kali ada pekerjaan yang tersedia di pipeline Anda 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 sistem yang dihasilkan unik dari pekerjaan.

    • Jenis: String

    • Pola: [0-9a-f] [0-9a-f] - [0-9a-f] - [0-9a-f] - [0-9a-f] [0-9a-f] [0-9a-f] [0-9a-f] [0-9a-f] - [0-9a-f] - [0-9a-f] [0-

  • accountId:

    • ID dari pelangganAWSakun untuk digunakan saat melakukan pekerjaan.

    • Jenis: 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. Kunci ditentukan oleh parameter kunci dalam file definisi tipe tindakan saat Anda mengatur tindakan Anda. Dalam contoh ini, nilai-nilai ditentukan oleh pengguna tindakan yang menentukan informasi dalamUsernamedanPasswordbidang.

        • Jenis: Peta string ke string, opsional

          Contoh:

          "configuration": { "Username": "MyUser", "Password": "MyPassword" },
      • encryptionKey:

        • Mewakili informasi tentang kunci yang digunakan untuk mengenkripsi data di penyimpanan artefak, sepertiAWS KMSkunci.

        • Daftar Isi: Jenis tipe dataencryptionKey, opsional hadir

      • inputArtifacts:

        • Daftar informasi tentang artefak yang akan dikerjakan, seperti artefak uji atau membangun.

        • Daftar Isi: Daftar tipe dataArtifact, opsional hadir

      • outputArtifacts:

        • Daftar informasi tentang output suatu tindakan.

        • Daftar Isi: Daftar tipe dataArtifact, opsional hadir

      • actionCredentials:

        • MerupakanAWSkredensi sesi objek. Kredensil ini adalah kredensi sementara yang dikeluarkan olehAWS STS. Mereka dapat digunakan untuk mengakses artefak input dan output dalam bucket S3 yang digunakan untuk menyimpan artefak untuk pipa CodePipeline.

          Kredensyal ini juga memiliki izin yang sama dengan templat pernyataan kebijakan yang ditentukan dalam file definisi tipe tindakan.

        • Daftar Isi: Jenis tipe dataAWSSessionCredentials, opsional hadir

      • actionExecutionId:

        • ID eksternal dari menjalankan tindakan.

        • Jenis: String

      • continuationToken:

        • Token yang dihasilkan sistem, seperti ID penerapan, diperlukan oleh pekerjaan untuk melanjutkan pekerjaan secara asinkron.

        • Jenis: String, opsional hadir

Tipe Data:

  • encryptionKey:

    • id:

      • ID yang digunakan untuk mengidentifikasi kunci. UntukAWS KMSkunci, Anda dapat menggunakan ID kunci, ARN kunci, atau alias ARN.

      • Jenis: String

    • type:

      • Tipe kunci enkripsi, sepertiAWS KMSkunci.

      • Jenis: String

      • Nilai yang valid: KMS

  • Artifact:

    • name:

      • Nama artefak itu.

      • Jenis: String, opsional hadir

    • revision:

      • ID revisi artefak. Tergantung pada jenis objek, ini bisa menjadi ID komit (GitHub) atau ID revisi (Amazon S3).

      • Jenis: String, opsional hadir

    • location:

      • Lokasi artefact.

      • Daftar Isi: Jenis tipe dataArtifactLocation, opsional hadir

  • ArtifactLocation:

    • type:

      • Jenis artefak di lokasi.

      • Jenis: String, opsional hadir

      • Nilai yang valid: S3

    • s3Location:

      • Lokasi bucket S3 yang berisi revisi.

      • Daftar Isi: Jenis tipe dataS3Location, opsional hadir

  • S3Location:

    • bucketName:

      • Nama bucket S3.

      • Jenis: String

    • objectKey:

      • Kunci dari objek dalam bucket S3, yang secara unik mengidentifikasi objek tersebut dalam bucket.

      • Jenis: String

  • AWSSessionCredentials:

    • accessKeyId:

      • Kunci akses untuk sesi.

      • Jenis: String

    • secretAccessKey:

      • Secret access key untuk sesi.

      • Jenis: String

    • sessionToken:

      • Token untuk sesi.

      • Jenis: 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 kerja integrator harus mengembalikan muatan yang valid dalam kasus keberhasilan, kegagalan, atau kelanjutan.

Format:

  • result: Hasil pekerjaan.

    • Diperlukan

    • Nilai yang valid (case sensitive):

      • 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 gagal dan terminal.

  • failureType: Jenis kegagalan untuk dikaitkan dengan pekerjaan yang gagal.

    YangfailureTypekategori untuk tindakan mitra menjelaskan jenis kegagalan yang dihadapi saat menjalankan pekerjaan. Integrator mengatur jenis bersama dengan pesan kegagalan saat mengembalikan hasil kegagalan pekerjaan kembali ke CodePipeline.

    • Tidak wajib. Diperlukan jika hasilnyaFail.

    • Harus null jikaresultadalahSuccessatauContinue

    • Nilai yang valid:

      • ConfigurationError

      • JobFailed

      • PermissionsError

      • RevisionOutOfSync

      • RevisionUnavailable

      • SystemUnavailable

  • continuation: Negara kelanjutan yang akan diteruskan ke pekerjaan berikutnya dalam eksekusi tindakan saat ini.

    • Tidak wajib. Diperlukan jika hasilnyaContinue.

    • Harus null jikaresultadalahSuccessatauFail.

    • Properti:

      • State: Sebuah hash dari negara yang akan dilewati.

  • status: Status eksekusi tindakan.

    • Tidak wajib.

    • Properti:

      • ExternalExecutionId: ID eksekusi eksternal opsional atau ID komit untuk diasosiasikan dengan pekerjaan.

      • Summary: Ringkasan opsional dari apa yang terjadi. Dalam skenario kegagalan, ini menjadi pesan kegagalan yang dilihat pengguna.

  • outputVariables: Satu set pasangan kunci/nilai yang akan diteruskan ke eksekusi tindakan berikutnya.

    • Tidak wajib.

    • Harus null jikaresultadalahContinueatauFail.

Contoh:

{ "result": "success", "failureType": null, "continuation": null, "status": { "externalExecutionId": "my-commit-id-123", "summary": "everything is dandy" }, "outputVariables": { "FirstOne": "Nice", "SecondOne": "Nicest", ... } }

Gunakan token kelanjutan untuk menunggu hasil dari proses asinkron

Yangcontinuationtoken adalah bagian dari payload dan hasil dari fungsi Lambda Anda. Ini adalah cara untuk lulus negara pekerjaan untuk CodePipeline dan menunjukkan bahwa pekerjaan perlu dilanjutkan. Misalnya, setelah integrator memulai build untuk pelanggan pada sumber daya mereka, itu tidak menunggu build selesai, tetapi mengindikasikan CodePipeline bahwa itu tidak memilikihasil terminal dengan mengembalikanresultsebagaicontinuedan mengembalikan ID unik build ke CodePipeline sebagaicontinuationtanda.

catatan

Fungsi Lambda hanya dapat berjalan hingga 15 menit. Jika pekerjaan perlu berjalan lebih lama, Anda dapat menggunakan token kelanjutan.

Yang CodePipeline tim memanggil integrator setelah 30 detik dengan yang samacontinuationtoken dalam payloadnya sehingga dapat memeriksanya untuk penyelesaian. Jika build selesai, integrator mengembalikan hasil keberhasilan/gagal terminal, yang lain berlanjut.

Memberikan CodePipeline izin untuk memanggil fungsi Lambda integrator saat runtime

Anda menambahkan izin ke fungsi Lambda integrator Anda untuk menyediakan CodePipeline layanan dengan izin untuk memohon menggunakan CodePipeline Layanan utama: codepipeline.amazonaws.com. Anda dapat menambahkan izin dengan menggunakanAWS CloudFormationatau baris perintah. Sebagai contoh, lihat Bekerja dengan jenis tindakan.

Model integrasi pekerja Job

Setelah Anda merancang alur kerja tingkat tinggi, Anda dapat membuat pekerja kerja Anda. Meskipun spesifik tindakan pihak ketiga menentukan apa yang dibutuhkan untuk pekerja kerja, sebagian besar pekerja kerja untuk tindakan pihak ketiga mencakup fungsionalitas berikut:

  • Polling untuk Pekerjaan CodePipeline memakaiPollForThirdPartyJobs.

  • Mengakui pekerjaan dan mengembalikan hasil CodePipeline memakaiAcknowledgeThirdPartyJob,PutThirdPartyJobSuccessResult, danPutThirdPartyJobFailureResult.

  • Mengambil artefak dari dan/atau menempatkan artefak ke 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 untukAWS KMS.

    Untuk mengunggah artefak ke bucket Amazon S3, Anda juga harus mengonfigurasi Amazon S3PutObjectmeminta untuk menggunakan enkripsi melaluiAWS Key Management Service(AWS KMS).AWS KMSmenggunakanAWS KMS keys. Untuk mengetahui apakah akan menggunakanKunci yang dikelola AWSatau pelanggan berhasil kunci untuk meng-upload artefak, pekerja pekerjaan Anda harus melihatdata pekerjaandan periksakunci enkripsiproperti. Jika properti diatur, Anda harus menggunakan ID kunci yang dikelola pelanggan saat mengonfigurasiAWS KMS. Jika properti kunci adalah null, Anda menggunakanKunci yang dikelola AWS. CodePipeline menggunakanKunci yang dikelola AWSkecuali dikonfigurasi lain.

    Untuk contoh yang menunjukkan cara membuatAWS KMSparameter di Jawa atau .NET, lihatMenentukanAWS Key Management Servicedi Amazon S3 MenggunakanAWSSDK. Untuk informasi selengkapnya tentang bucket Amazon S3 untuk CodePipeline, lihatKonsep CodePipeline.

Pilih dan konfigurasikan strategi manajemen izin untuk pekerja pekerjaan Anda

Untuk mengembangkan pekerja kerja untuk tindakan pihak ketiga Anda di CodePipeline, Anda memerlukan strategi untuk integrasi pengguna dan manajemen izin.

Strategi paling sederhana adalah menambahkan infrastruktur yang Anda butuhkan untuk pekerja pekerjaan Anda dengan membuat instans Amazon EC2 denganAWS Identity and Access Management(IAM) peran instans, yang memungkinkan Anda untuk dengan mudah meningkatkan sumber daya yang Anda butuhkan untuk integrasi Anda. Anda dapat menggunakan integrasi bawaan denganAWSuntuk 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, lihatAmazon EC2 - Hosting Server Virtual. Untuk informasi tentang pengaturan instans Amazon EC2, lihatMemulai dengan Instans Linux Amazon EC2.

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 keAWSsumber daya, termasuk CodePipeline, tanpa harus membuat atau mengelola pengguna IAM. Anda dapat menggunakan fitur dan kebijakan untuk persyaratan keamanan kata sandi dan rotasi kredensi. Anda dapat menggunakan contoh aplikasi sebagai template untuk desain Anda sendiri. Untuk informasi, lihatMengelola.

Untuk mengatur federasi identitas

  1. Tinjau contoh diSkenario Pemberian Akses Sementarauntuk mengidentifikasi skenario akses sementara yang paling sesuai dengan kebutuhan tindakan pihak ketiga Anda.

  2. Tinjau contoh kode federasi identitas yang relevan dengan infrastruktur Anda, seperti:

  3. Konfigurasi federasi identitas. Untuk informasi, lihatPenyedia Identitas dan FederasidiPanduan Pengguna IAM.

Strategi ketiga yang perlu dipertimbangkan adalah membuat pengguna IAM untuk digunakan di bawah AndaAWSakun saat menjalankan tindakan pihak ketiga dan pekerja pekerjaan Anda.

Untuk informasi selengkapnya tentang praktik terbaik IAM dan kasus penggunaan, lihatPraktik Terbaik dan Kasus Penggunaan.

Menyiapkan 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 sebagaimana adanya.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PollForThirdPartyJobs", "codepipeline:AcknowledgeThirdPartyJob", "codepipeline:GetThirdPartyJobDetails", "codepipeline:PutThirdPartyJobSuccessResult", "codepipeline:PutThirdPartyJobFailureResult" ], "Resource": [ "arn:aws:codepipeline:us-east-2::actionType:ThirdParty/Build/Provider/1/" ] } ] }