

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
<a name="tutorials-lambda-variables"></a>

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, lihat[Referensi variabel](reference-variables.md).

**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 menyediakan URL pengujian dan ID uji coba
+ Pipeline diperbarui dengan tindakan baru

**Topics**
+ [Prasyarat](#lambda-variables-prereqs)
+ [Langkah 1: Membuat fungsi Lambda](#lambda-variables-function)
+ [Langkah 2: Tambahkan tindakan pemanggilan Lambda dan tindakan persetujuan manual ke pipeline Anda](#lambda-variables-pipeline)

## Prasyarat
<a name="lambda-variables-prereqs"></a>

Sebelum memulai, Anda harus memiliki hal-hal berikut: 
+ Anda dapat membuat atau menggunakan pipeline dengan CodeCommit sumbernya[Tutorial: Buat pipeline sederhana (CodeCommit repositori)](tutorials-simple-codecommit.md).
+ Edit pipeline Anda yang ada sehingga tindakan CodeCommit sumber memiliki namespace. Tetapkan namespace `SourceVariables` untuk tindakan.

## Langkah 1: Membuat fungsi Lambda
<a name="lambda-variables-function"></a>

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/](https://console.aws.amazon.com/lambda/).

1. Pilih **Buat fungsi**. Biarkan **Penulis dari awal** dipilih.

1. Dalam **nama Fungsi**, masukkan nama fungsi Anda, seperti**myInvokeFunction**. Di **Runtime**, biarkan opsi default dipilih.

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

1. Pilih **Buat fungsi**.

1. 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.

   Untuk menghasilkan variabel baru, atur properti yang dipanggil `outputVariables` pada input ke`putJobSuccessResult`. Perhatikan bahwa Anda tidak dapat menghasilkan variabel sebagai bagian dari a`putJobFailureResult`.

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

   Dalam fungsi baru Anda, pada tab **Kode**, tempel kode contoh berikut di bawah`index.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);
       }
   };
   ```

1. Izinkan fungsi untuk menyimpan secara otomatis.

1. Salin Nama Sumber Daya Amazon (ARN) yang terdapat di bidang **Fungsi ARN** di bagian atas layar.

1. Sebagai langkah terakhir, buka konsol AWS Identity and Access Management (IAM) di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Ubah peran eksekusi Lambda untuk menambahkan kebijakan berikut:. [AWSCodePipelineCustomActionAccess](https://console.aws.amazon.com/iam/home?region=us-west-2#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCodePipelineCustomActionAccess) Untuk langkah-langkah membuat peran eksekusi Lambda atau mengubah kebijakan peran, lihat. [Langkah 2: Buat fungsi Lambda](actions-invoke-lambda-function.md#actions-invoke-lambda-function-create-function) 

## Langkah 2: Tambahkan tindakan pemanggilan Lambda dan tindakan persetujuan manual ke pipeline Anda
<a name="lambda-variables-pipeline"></a>

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/](https://console.aws.amazon.com/codepipeline/).

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

1. Tambahkan tindakan pengujian Lambda ke pipeline Anda.

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

   1. Di tahap baru, pilih **Tambahkan grup tindakan** untuk menambahkan tindakan. Dalam **nama Tindakan**, masukkan nama tindakan pemanggilan, seperti**Test\$1Commit**.

   1. Di **penyedia Action**, pilih **AWS Lambda**.

   1. Di **artefak Input**, pilih nama artefak keluaran aksi sumber Anda, seperti. `SourceArtifact`

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

   1. Di **Namespace Variable**, tambahkan nama namespace, seperti. **TestVariables**

   1. Dalam **artefak Output**, tambahkan nama artefak keluaran, seperti. **LambdaArtifact**

   1. Pilih **Selesai**.

1. Tambahkan tindakan persetujuan manual ke pipeline Anda.

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

   1. Di tahap baru, pilih ikon untuk menambahkan tindakan. Di **Nama tindakan**, masukkan nama tindakan persetujuan, seperti**Change\$1Approval**.

   1. Di **penyedia Tindakan**, pilih **Persetujuan manual**.

   1. Di **URL untuk 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` 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 variabel. `testRunId` Untuk contoh ini, URL dengan sintaks 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}
      ```

1. 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.

1. Saat pipa mencapai tahap persetujuan manual, pilih **Tinjau**. Variabel yang diselesaikan muncul sebagai URL untuk ID komit. Penyetuju Anda dapat memilih URL untuk melihat komit.

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