Tutorial: Menggunakan variabel dengan Lambda memanggil tindakan - AWS CodePipeline

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

Tutorial: Menggunakan variabel dengan Lambda memanggil tindakan

Tindakan pemanggilan Lambda dapat menggunakan variabel dari tindakan lain sebagai bagian dari input dan mengembalikan variabel baru bersama dengan outputnya. Untuk informasi tentang variabel untuk tindakan di CodePipeline, lihatVariabel.

Di akhir tutorial ini, Anda akan memiliki:

  • Sebuah Lambda memanggil tindakan yang:

    • MengonsumsiCommitIdvariabel dari aksi sumber CodeCommit

    • Output tiga variabel baru:dateTime,testRunId, danregion

  • Tindakan persetujuan manual yang menggunakan variabel baru dari tindakan pemanggilan Lambda Anda untuk menyediakan URL pengujian dan ID uji coba

  • Sebuah pipa diperbarui dengan tindakan baru

Prasyarat

Sebelum memulai, Anda harus memiliki hal-hal berikut:

Langkah 1: Buat fungsi Lambda

Gunakan langkah-langkah berikut untuk membuat fungsi Lambda dan peran eksekusi Lambda. Anda menambahkan tindakan Lambda ke pipeline Anda setelah Anda membuat fungsi Lambda.

Untuk membuat fungsi Lambda dan peran eksekusi

  1. Masuk ke AWS Management Console dan buka konsol AWS Lambda di https://console.aws.amazon.com/lambda/.

  2. Pilih Buat fungsi. MeninggalkanPenulis dari awaldipilih.

  3. MasukNama fungsi, masukkan nama fungsi Anda, sepertimyInvokeFunction. MasukWaktu pengoperasian, biarkan opsi default yang dipilih.

  4. PerluasMemiilih atau membuat peran eksekusi. PilihMembuat peran baru dengan izin Lambda dasar.

  5. Pilih Buat fungsi.

  6. Untuk menggunakan variabel dari tindakan lain, itu harus diteruskan keUserParametersdi Lambda memanggil konfigurasi tindakan. Anda akan mengkonfigurasi tindakan dalam pipeline kami nanti dalam tutorial, tetapi Anda akan menambahkan kode dengan asumsi variabel akan dilewatkan.

    const commitId = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters;

    Untuk menghasilkan variabel baru, mengatur properti yang disebutoutputVariablespada input keputJobSuccessResult. Perhatikan bahwa Anda tidak dapat menghasilkan variabel sebagai bagian dariputJobFailureResult.

    const successInput = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } };

    Dalam fungsi baru Anda, tinggalkanEdit kodedipilih, dan tempel kode contoh berikut di bawahindex.js.

    var AWS = require('aws-sdk'); exports.handler = function(event, context) { var codepipeline = new AWS.CodePipeline(); // Retrieve the Job ID from the Lambda action var jobId = event["CodePipeline.job"].id; // Retrieve the value of UserParameters from the Lambda action configuration in CodePipeline, // in this case it is the Commit ID of the latest change of the pipeline. var params = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters; // The region from where the lambda function is being executed. var lambdaRegion = process.env.AWS_REGION; // Notify CodePipeline of a successful job var putJobSuccess = function(message) { var params = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } }; codepipeline.putJobSuccessResult(params, function(err, data) { if(err) { context.fail(err); } else { context.succeed(message); } }); }; // Notify CodePipeline of a failed job var putJobFailure = function(message) { var params = { jobId: jobId, failureDetails: { message: JSON.stringify(message), type: 'JobFailed', externalExecutionId: context.invokeid } }; codepipeline.putJobFailureResult(params, function(err, data) { context.fail(message); }); }; var sendResult = function() { try { console.log("Testing commit - " + params); // Your tests here // Succeed the job putJobSuccess("Tests passed."); } catch (ex) { // If any of the assertions failed then fail the job putJobFailure(ex); } }; sendResult(); };
  7. Pilih Save (Simpan).

  8. Salin Amazon Resource Name (ARN) di bagian atas layar.

  9. Sebagai langkah terakhir, bukaAWS Identity and Access Management(IAM) konsol dihttps://console.aws.amazon.com/iam/. Ubah peran eksekusi Lambda untuk menambahkan kebijakan berikut: AWSCodePipelineCustomActionAccess. Untuk langkah-langkah untuk membuat peran eksekusi Lambda atau memodifikasi kebijakan peran, lihatLangkah 2: Buat fungsi Lambda.

Langkah 2: Tambahkan tindakan pemanggilan Lambda dan tindakan persetujuan manual ke saluran pipa Anda

Pada langkah ini, Anda menambahkan tindakan pemanggilan Lambda ke saluran pipa Anda. Anda menambahkan tindakan sebagai bagian dari tahap bernamaPengujian. Jenis tindakan adalah tindakan memanggil. Anda kemudian menambahkan tindakan persetujuan manual setelah tindakan pemanggilan.

Untuk menambahkan tindakan Lambda dan tindakan persetujuan manual ke pipa

  1. Buka konsol CodePipeline di https://console.aws.amazon.com/codepipeline/.

    Nama-nama semua jaringan pipa yang terkait dengan AndaAWSakun ditampilkan. Pilih pipa tempat Anda ingin menambahkan tindakan.

  2. Tambahkan tindakan uji Lambda ke saluran pipa Anda.

    1. Untuk mengedit pipa Anda, pilihMengedit. Tambahkan tahap setelah tindakan sumber dalam pipa yang ada. Masukkan nama untuk panggung, sepertiTest.

    2. Di tahap baru, pilih ikon untuk menambahkan tindakan. MasukNama tindakan, masukkan nama tindakan pemanggilan, sepertiTest_Commit.

    3. MasukPenyedia tindakan, pilihAWS Lambda.

    4. Masukartefak masukan, pilih nama artefak keluaran aksi sumber Anda, sepertiSourceArtifact.

    5. MasukNama fungsi, pilih nama fungsi Lambda yang Anda buat.

    6. MasukParameter pengguna, masukkan sintaks variabel untuk ID komit CodeCommit. Ini menciptakan variabel output yang memutuskan untuk komit untuk ditinjau dan disetujui setiap kali pipa dijalankan.

      #{SourceVariables.CommitId}
    7. MasukNamespace variabel, tambahkan nama namespace, sepertiTestVariables.

    8. PilihSelesai.

  3. Tambahkan tindakan persetujuan manual ke saluran pipa Anda.

    1. Dengan pipeline Anda masih dalam mode pengeditan, tambahkan tahap setelah tindakan pemanggilan. Masukkan nama untuk panggung, sepertiApproval.

    2. Di tahap baru, pilih ikon untuk menambahkan tindakan. MasukNama tindakan, masukkan nama tindakan persetujuan, sepertiChange_Approval.

    3. MasukPenyedia tindakan, pilihPersetujuan manual.

    4. MasukURL untuk ditinjau, membangun URL dengan menambahkan sintaks variabel untukregionVariabel danCommitIdvariabel. Pastikan Anda menggunakan ruang nama yang ditetapkan untuk tindakan yang menyediakan variabel output.

      Untuk contoh ini, URL dengan sintaks variabel untuk tindakan CodeCommit memiliki namespace defaultSourceVariables. Variabel keluaran wilayah Lambda memilikiTestVariablesnamespace. URL akan terlihat seperti berikut ini.

      https://#{TestVariables.region}.console.aws.amazon.com/codesuite/codecommit/repositories/MyDemoRepo/commit/#{SourceVariables.CommitId}

      MasukKomentar, membangun teks pesan persetujuan dengan menambahkan sintaks variabel untuktestRunIdvariabel. Untuk contoh ini, URL dengan sintaks variabel untuk LambdatestRunIdvariabel output memilikiTestVariablesnamespace. Masukkan pesan berikut.

      Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
  4. PilihSelesaiuntuk menutup layar edit untuk tindakan, dan kemudian pilihSelesaiuntuk menutup layar edit untuk panggung. Untuk menyimpan pipa, pilihSelesai. Pipa selesai sekarang berisi struktur dengan sumber, pengujian, persetujuan, dan menyebarkan tahapan.

    PilihRilis perubahanuntuk menjalankan perubahan terbaru melalui struktur pipa.

  5. Ketika pipa mencapai tahap persetujuan manual, pilihTinjau. Variabel diselesaikan muncul sebagai URL untuk commit ID. Penyetuju Anda dapat memilih URL untuk melihat komit.

  6. Setelah pipeline berjalan dengan sukses, Anda juga dapat melihat nilai variabel pada halaman riwayat eksekusi tindakan.