View a markdown version of this page

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

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

penting

Sebagai bagian dari pembuatan pipeline, bucket artefak S3 yang disediakan oleh pelanggan akan digunakan oleh 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 itu aman dan dapat diandalkan.

Di akhir tutorial ini, Anda akan memiliki:

  • Tindakan Lambda memanggil yang:

    • Mengkonsumsi CommitId variabel dari tindakan CodeCommit sumber

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

  • Tindakan persetujuan manual yang menggunakan variabel baru dari tindakan panggil 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 Anda membuat fungsi Lambda.

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

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

  3. Di 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 UserParameters dalam konfigurasi tindakan panggil Lambda. Anda akan mengonfigurasi tindakan di pipeline Anda nanti di tutorial, tetapi Anda akan menambahkan kode dengan asumsi variabel akan dilewatkan.

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

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

    Di fungsi baru Anda, pada tab Kode, tempel kode contoh berikut di bawahindex.mjs.

    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. Izinkan fungsi untuk menyimpan secara otomatis.

  8. Salin Nama Sumber Daya Amazon (ARN) yang terdapat di bidang Function 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 untuk membuat peran eksekusi Lambda atau memodifikasi kebijakan peran, lihatLangkah 2: Buat fungsi Lambda.

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

Pada langkah ini, Anda menambahkan tindakan Lambda invoke ke pipeline Anda. Anda menambahkan tindakan sebagai bagian dari tahap bernama Test. Jenis tindakan adalah tindakan panggil. 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 uji Lambda ke pipeline Anda.

    1. Untuk mengedit pipeline Anda, pilih Edit. Tambahkan tahap setelah tindakan sumber di pipeline yang ada. Masukkan nama untuk panggung, sepertiTest.

    2. Di tahap baru, pilih Tambahkan grup tindakan untuk menambahkan tindakan. Di Nama tindakan, masukkan nama tindakan pemanggilan, sepertiTest_Commit.

    3. Di penyedia Action, pilih AWS Lambda.

    4. Di Artefak masukan, pilih nama artefak keluaran tindakan sumber Anda, sepertiSourceArtifact.

    5. Di FunctionName, tambahkan ARN dari fungsi Lambda yang Anda buat.

    6. Dalam namespace Vari able, tambahkan nama namespace, seperti. TestVariables

    7. Di artefak keluaran, tambahkan nama artefak keluaran, sepertiLambdaArtifact.

    8. Pilih Selesai.

  3. Tambahkan tindakan persetujuan manual ke pipeline Anda.

    1. Dengan pipeline Anda masih dalam mode pengeditan, tambahkan tahap setelah tindakan invoke. 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 Penye dia tindakan, pilih Perset ujuan manual.

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

      Untuk contoh ini, URL dengan sintaks variabel untuk CodeCommit tindakan memiliki namespace SourceVariables default. Variabel output wilayah Lambda memiliki TestVariables namespace. URL terlihat 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 testRunId variabel. Untuk contoh ini, URL dengan sintaks variabel untuk variabel testRunId keluaran Lambda memiliki TestVariables namespace. Masukkan pesan berikut.

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

    Pilih R ilis perubahan untuk menjalankan perubahan terbaru melalui struktur pipeline.

  5. Saat pipa mencapai tahap persetujuan manual, pilih Review. Variabel yang diselesaikan muncul sebagai URL untuk ID komit. Pemberi persetujuan Anda dapat memilih URL untuk melihat komit.

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