

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

# Contoh: Buat AWS CodeCommit pemicu untuk suatu AWS Lambda fungsi
<a name="how-to-notify-lambda"></a>

Anda dapat membuat pemicu untuk CodeCommit repositori sehingga peristiwa di repositori memanggil fungsi Lambda. Dalam contoh ini, Anda membuat fungsi Lambda yang mengembalikan URL yang digunakan untuk mengkloning repositori ke log Amazon. CloudWatch 

**Topics**
+ [Buat fungsi Lambda](#how-to-notify-lambda-create-function)
+ [Lihat pemicu fungsi Lambda di repositori AWS CodeCommit](#how-to-notify-lam-view)

## Buat fungsi Lambda
<a name="how-to-notify-lambda-create-function"></a>

Saat Anda menggunakan konsol Lambda untuk membuat fungsi, Anda juga dapat membuat CodeCommit pemicu untuk fungsi Lambda. Langkah-langkah berikut termasuk contoh fungsi Lambda. Sampel tersedia dalam dua bahasa: JavaScript dan Python. Fungsi mengembalikan yang URLs digunakan untuk kloning repositori ke log. CloudWatch 

**Buatlah sebuah fungsi Lambda menggunakan cetak biru Lambda**

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. Pada halaman **Fungsi Lambda, pilih **Buat** fungsi**. (Jika Anda belum pernah menggunakan Lambda sebelumnya, pilih **Mulai Sekarang**.)

1. Pilih halaman **Buat fungsi**, pilih **Penulis dari scratch**. Di **Nama Fungsi**, berikan nama untuk fungsi tersebut, misalnya*MyLambdaFunctionforCodeCommit*. Di **Runtime**, pilih bahasa yang ingin Anda gunakan untuk menulis fungsi Anda, lalu pilih **Buat fungsi**.

1. Pada tab **Konfigurasi**, pilih **Tambah pemicu**.

1.  Dalam **konfigurasi Trigger**, pilih **CodeCommit**dari daftar drop-down layanan.   
![\[Membuat sebuah repositori dari konsol\]](http://docs.aws.amazon.com/id_id/codecommit/latest/userguide/images/codecommit-lambda-trigger.png)

    
   + Di **Nama repositori**, pilih nama repositori di mana Anda ingin mengkonfigurasi pemicu yang menggunakan fungsi Lambda dalam menanggapi peristiwa repositori.
   + Di **nama Pemicu**, masukkan nama untuk pemicu (misalnya,*MyLambdaFunctionTrigger*).
   + Di **Peristiwa**, pilih peristiwa repositori yang memicu fungsi Lambda. Jika Anda memilih **Semua peristiwa repositori**, Anda tidak dapat memilih peristiwa lainnya. Jika Anda ingin memilih subset dari peristiwa, bersihkan **Semua peristiwa repositori**, dan kemudian pilih peristiwa yang Anda inginkan dari daftar. Misalnya, jika Anda ingin pemicu berjalan hanya ketika pengguna membuat tag atau cabang di AWS CodeCommit repositori, hapus **Semua peristiwa repositori**, lalu pilih **Buat** cabang atau tag.
   + Jika Anda ingin pemicu untuk diterapkan ke semua cabang repositori, di **Cabang**, pilih **Semua cabang**. Jika tidak, pilih **Cabang khusus**. Cabang default untuk repositori ditambahkan secara default. Anda dapat menyimpan atau menghapus cabang ini dari daftar. Pilih hingga 10 nama cabang dari daftar cabang repositori.
   + (Opsional) Di **Data khusus**, masukkan informasi yang ingin Anda sertakan dalam fungsi Lambda (misalnya, nama saluran IRC yang digunakan oleh developer untuk membahas pengembangan di repositori tersebut). Bidang ini adalah string. Ini tidak dapat digunakan untuk melewati parameter dinamis.

   Pilih **Tambahkan**.

1. Pada halaman **Konfigurasi**, di **Kode Fungsi**, di Jenis entri kode, pilih Edit kode sebaris.. Di **Runtime**, pilih **Node.js**. Jika anda ingin membuat sebuah sampel fungsi Python, pilih **Python**.

1. Di **Jenis entri kode**, pilih **Edit kode inline**, dan kemudian gganti kode hello world dengan salah satu dari dua contoh berikut.

   Untuk Node.js:

   ```
   import {
     CodeCommitClient,
     GetRepositoryCommand,
   } from "@aws-sdk/client-codecommit";
   
   const codecommit = new CodeCommitClient({ region: "your-region" });
   
   /**
    * @param {{ Records: { codecommit: { references: { ref: string }[] }, eventSourceARN: string  }[]} event
    */
   export const handler = async (event) => {
     // Log the updated references from the event
     const references = event.Records[0].codecommit.references.map(
       (reference) => reference.ref,
     );
     console.log("References:", references);
   
     // Get the repository from the event and show its git clone URL
     const repository = event.Records[0].eventSourceARN.split(":")[5];
     const params = {
       repositoryName: repository,
     };
   
     try {
       const data = await codecommit.send(new GetRepositoryCommand(params));
       console.log("Clone URL:", data.repositoryMetadata.cloneUrlHttp);
       return data.repositoryMetadata.cloneUrlHttp;
     } catch (error) {
       console.error("Error:", error);
       throw new Error(
         `Error getting repository metadata for repository ${repository}`,
       );
     }
   };
   ```

   Untuk Python:

   ```
   import json
   import boto3
   
   codecommit = boto3.client("codecommit")
   
   
   def lambda_handler(event, context):
       # Log the updated references from the event
       references = {
           reference["ref"]
           for reference in event["Records"][0]["codecommit"]["references"]
       }
       print("References: " + str(references))
   
       # Get the repository from the event and show its git clone URL
       repository = event["Records"][0]["eventSourceARN"].split(":")[5]
       try:
           response = codecommit.get_repository(repositoryName=repository)
           print("Clone URL: " + response["repositoryMetadata"]["cloneUrlHttp"])
           return response["repositoryMetadata"]["cloneUrlHttp"]
       except Exception as e:
           print(e)
           print(
               "Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.".format(
                   repository
               )
           )
           raise e
   ```

1. Di tab **Izin**, di **peran Eksekusi**, pilih peran untuk membukanya di konsol IAM. Edit kebijakan terlampir untuk menambahkan `GetRepository` izin untuk repositori yang ingin Anda gunakan pemicu.

## Lihat pemicu fungsi Lambda di repositori AWS CodeCommit
<a name="how-to-notify-lam-view"></a>

Setelah Anda membuat fungsi Lambda, Anda dapat melihat dan menguji pemicu di AWS CodeCommit. Pengujian pemicu menjalankan fungsi dalam menanggapi peristiwa repositori yang Anda tentukan.

**Untuk menampilkan dan menguji pemicu untuk fungsi Lambda**

1. Buka CodeCommit konsol di [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Di **Repositori**, pilih repositori yang Anda ingin tampilkan pemicu.

1. Di panel navigasi untuk repositori, pilih **Pengaturan**, lalu pilih **Pemicu**.

1. Tinjau daftar pemicu untuk repositori. Anda akan melihat pemicu yang Anda buat di konsol Lambda. Pilih dari daftar dan kemudian pilih **Pemicu uji**. Opsi ini mencoba untuk memanggil fungsi dengan data sampel tentang repositori Anda, termasuk terbaru ID commit untuk repositori. (Jika tidak ada riwayat commit, nilai sampel yang terdiri dari nol dihasilkan sebagai gantinya.) Ini membantu Anda mengonfirmasi bahwa Anda telah mengonfigurasi akses dengan benar antara AWS CodeCommit dan fungsi Lambda.

1. Untuk lebih jauh memverifikasi fungsi pemicu, membuat dan mendorong sebuah commit ke repositori di mana Anda dikonfigurasi pemicu. Anda akan melihat respons dari fungsi Lambda pada tab **Pemantauan** untuk fungsi di konsol Lambda. Dari tab **Monitoring**, pilih **Lihat log masuk CloudWatch**. CloudWatch Konsol terbuka di tab baru dan menampilkan acara untuk fungsi Anda. Pilih aliran log dari daftar yang sesuai dengan waktu Anda mendorong commit Anda. Anda akan melihat data peristiwa yang serupa dengan yang berikut ini:

   ```
   START RequestId: 70afdc9a-EXAMPLE Version: $LATEST
   2015-11-10T18:18:28.689Z	70afdc9a-EXAMPLE	References: [ 'refs/heads/main' ]
   2015-11-10T18:18:29.814Z	70afdc9a-EXAMPLE	Clone URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo
   END RequestId: 70afdc9a-EXAMPLE
   REPORT RequestId: 70afdc9a-EXAMPLE Duration: 1126.87 ms Billed Duration: 1200 ms Memory Size: 128 MB Max Memory Used: 14 MB
   ```