Tutorial: Menggunakan variabel dengan tindakan panggilan Lambda - 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 tindakan panggilan Lambda

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

penting

Sebagai bagian dari pembuatan pipa, ember artefak S3 yang disediakan oleh pelanggan akan digunakan CodePipeline untuk artefak. (Ini berbeda dari bucket yang digunakan untuk aksi sumber S3.) Jika bucket artefak S3 berada di akun yang berbeda dari akun untuk pipeline Anda, pastikan bucket artefak S3 dimiliki oleh Akun AWS yang aman dan dapat diandalkan.

Di akhir tutorial ini, Anda akan memiliki:

  • Lambda memanggil tindakan yang:

    • Mengkonsumsi CommitId variabel dari aksi CodeCommit sumber

    • Menghasilkan tiga variabel baru:dateTime,testRunId, dan region

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

  • Pipeline diperbarui dengan tindakan baru

Prasyarat

Sebelum memulai, Anda harus memiliki hal-hal berikut:

Langkah 1: Membuat fungsi Lambda

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

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

  2. Pilih Buat fungsi. Biarkan Penulis dari awal dipilih.

  3. Dalam nama Fungsi, masukkan nama fungsi Anda, sepertimyInvokeFunction. Di Runtime, biarkan opsi default dipilih.

  4. Perluas Pilih atau buat peran eksekusi. Pilih Buat peran baru dengan izin Lambda dasar.

  5. Pilih Buat fungsi.

  6. Untuk menggunakan variabel dari tindakan lain, itu harus diteruskan ke konfigurasi tindakan UserParameters pemanggilan Lambda. Anda akan mengonfigurasi tindakan di pipeline kami nanti di tutorial, tetapi Anda akan menambahkan kode dengan asumsi variabel akan diteruskan.

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

    Untuk menghasilkan variabel baru, atur properti yang dipanggil outputVariables pada input keputJobSuccessResult. Perhatikan bahwa Anda tidak dapat menghasilkan variabel sebagai bagian dari aputJobFailureResult.

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

    Dalam fungsi baru Anda, biarkan Edit kode inline dipilih, dan tempel kode contoh berikut di bawahindex.js.

    import { CodePipeline } from '@aws-sdk/client-codepipeline'; export const handler = async (event, context) => { const codepipeline = new CodePipeline({}); // Retrieve the Job ID from the Lambda action const jobId = event["CodePipeline.job"].id; // Retrieve UserParameters const params = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters; // The region from where the lambda function is being executed const lambdaRegion = process.env.AWS_REGION; // Notify CodePipeline of a successful job const putJobSuccess = async (message) => { const params = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } }; try { await codepipeline.putJobSuccessResult(params); return message; } catch (err) { throw err; } }; // Notify CodePipeline of a failed job const putJobFailure = async (message) => { const params = { jobId: jobId, failureDetails: { message: JSON.stringify(message), type: 'JobFailed', externalExecutionId: context.invokeid } }; try { await codepipeline.putJobFailureResult(params); throw message; } catch (err) { throw err; } }; try { console.log("Testing commit - " + params); // Your tests here // Succeed the job return await putJobSuccess("Tests passed."); } catch (ex) { // If any of the assertions failed then fail the job return await putJobFailure(ex); } };
  7. Pilih Simpan.

  8. Salin Nama Sumber Daya Amazon (ARN) di bagian atas layar.

  9. Sebagai langkah terakhir, buka konsol AWS Identity and Access Management (IAM) di https://console.aws.amazon.com/iam/. Ubah peran eksekusi Lambda untuk menambahkan kebijakan berikut:. AWSCodePipelineCustomActionAccess Untuk langkah-langkah membuat peran eksekusi Lambda atau mengubah kebijakan peran, lihat. Langkah 2: Buat fungsi Lambda

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

Pada langkah ini, Anda menambahkan tindakan pemanggilan Lambda ke pipeline Anda. Anda menambahkan tindakan sebagai bagian dari tahap bernama Test. Jenis tindakan adalah tindakan pemanggilan. Anda kemudian menambahkan tindakan persetujuan manual setelah tindakan pemanggilan.

Untuk menambahkan tindakan Lambda dan tindakan persetujuan manual ke pipeline
  1. Buka CodePipeline konsol di https://console.aws.amazon.com/codepipeline/.

    Nama-nama semua pipeline yang terkait dengan AWS akun Anda ditampilkan. Pilih pipeline tempat Anda ingin menambahkan tindakan.

  2. Tambahkan tindakan pengujian Lambda ke pipeline Anda.

    1. Untuk mengedit pipeline, pilih Edit. Tambahkan tahapan setelah aksi sumber di pipeline yang ada. Masukkan nama untuk panggung, sepertiTest.

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

    3. Di penyedia Action, pilih AWS Lambda.

    4. Di artefak Input, pilih nama artefak keluaran aksi sumber Anda, seperti. SourceArtifact

    5. Di nama Fungsi, pilih nama fungsi Lambda yang Anda buat.

    6. Dalam parameter Pengguna, masukkan sintaks variabel untuk ID CodeCommit komit. Ini menciptakan variabel keluaran yang menyelesaikan komit untuk ditinjau dan disetujui setiap kali pipeline dijalankan.

      #{SourceVariables.CommitId}
    7. Di Namespace Variable, tambahkan nama namespace, seperti. TestVariables

    8. Pilih Selesai.

  3. Tambahkan tindakan persetujuan manual ke pipeline Anda.

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

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

    3. Di penyedia Tindakan, pilih Persetujuan manual.

    4. URLUntuk ditinjau, buat URL dengan menambahkan sintaks variabel untuk region variabel dan variabel. CommitId Pastikan Anda menggunakan ruang nama yang ditetapkan untuk tindakan yang menyediakan variabel output.

      Untuk contoh ini, URL dengan sintaks variabel untuk CodeCommit tindakan memiliki SourceVariables namespace default. Variabel keluaran wilayah Lambda memiliki namespace. TestVariables URLTerlihat seperti berikut ini.

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

      Di Komentar, buat teks pesan persetujuan dengan menambahkan sintaks variabel untuk variabel. testRunId Untuk contoh ini, sintaks URL dengan variabel variabel untuk variabel keluaran testRunId Lambda memiliki TestVariables namespace. Masukkan pesan berikut.

      Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
  4. Pilih Selesai untuk menutup layar edit untuk tindakan, lalu pilih Selesai untuk menutup layar edit untuk panggung. Untuk menyimpan pipa, pilih Selesai. Pipeline yang telah selesai sekarang berisi struktur dengan tahapan sumber, pengujian, persetujuan, dan penerapan.

    Pilih Rilis perubahan untuk menjalankan perubahan terbaru melalui struktur pipa.

  5. Saat pipa mencapai tahap persetujuan manual, pilih Tinjau. Variabel yang diselesaikan muncul sebagai ID komit. URL 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.