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:
-
Mengonsumsi
CommitId
variabel 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
Topik
Prasyarat
Sebelum memulai, Anda harus memiliki hal-hal berikut:
-
Anda dapat membuat atau menggunakan pipa dengan sumber CodeCommit diTutorial: Buat pipa sederhana (repositori CodeCommit).
-
Edit pipeline yang ada sehingga tindakan sumber CodeCommit memiliki namespace. Menetapkan namespace
SourceVariables
untuk tindakan.
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
Masuk ke AWS Management Console dan buka konsol AWS Lambda di https://console.aws.amazon.com/lambda/
. -
Pilih Buat fungsi. MeninggalkanPenulis dari awaldipilih.
-
MasukNama fungsi, masukkan nama fungsi Anda, seperti
myInvokeFunction
. MasukWaktu pengoperasian, biarkan opsi default yang dipilih. -
PerluasMemiilih atau membuat peran eksekusi. PilihMembuat peran baru dengan izin Lambda dasar.
-
Pilih Buat fungsi.
-
Untuk menggunakan variabel dari tindakan lain, itu harus diteruskan ke
UserParameters
di 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 disebut
outputVariables
pada 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 bawah
index.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(); };
-
Pilih Save (Simpan).
-
Salin Amazon Resource Name (ARN) di bagian atas layar.
-
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
-
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.
-
Tambahkan tindakan uji Lambda ke saluran pipa Anda.
-
Untuk mengedit pipa Anda, pilihMengedit. Tambahkan tahap setelah tindakan sumber dalam pipa yang ada. Masukkan nama untuk panggung, seperti
Test
. -
Di tahap baru, pilih ikon untuk menambahkan tindakan. MasukNama tindakan, masukkan nama tindakan pemanggilan, seperti
Test_Commit
. -
MasukPenyedia tindakan, pilihAWS Lambda.
-
Masukartefak masukan, pilih nama artefak keluaran aksi sumber Anda, seperti
SourceArtifact
. -
MasukNama fungsi, pilih nama fungsi Lambda yang Anda buat.
-
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}
-
MasukNamespace variabel, tambahkan nama namespace, seperti
TestVariables
. -
PilihSelesai.
-
-
Tambahkan tindakan persetujuan manual ke saluran pipa Anda.
-
Dengan pipeline Anda masih dalam mode pengeditan, tambahkan tahap setelah tindakan pemanggilan. Masukkan nama untuk panggung, seperti
Approval
. -
Di tahap baru, pilih ikon untuk menambahkan tindakan. MasukNama tindakan, masukkan nama tindakan persetujuan, seperti
Change_Approval
. -
MasukPenyedia tindakan, pilihPersetujuan manual.
-
MasukURL untuk ditinjau, membangun URL dengan menambahkan sintaks variabel untuk
region
Variabel danCommitId
variabel. 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 default
SourceVariables
. Variabel keluaran wilayah Lambda memilikiTestVariables
namespace. 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 untuk
testRunId
variabel. Untuk contoh ini, URL dengan sintaks variabel untuk LambdatestRunId
variabel output memilikiTestVariables
namespace. Masukkan pesan berikut.Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
-
-
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.
-
Ketika pipa mencapai tahap persetujuan manual, pilihTinjau. Variabel diselesaikan muncul sebagai URL untuk commit ID. Penyetuju Anda dapat memilih URL untuk melihat komit.
-
Setelah pipeline berjalan dengan sukses, Anda juga dapat melihat nilai variabel pada halaman riwayat eksekusi tindakan.