Contoh: Buat pemicu AWS CodeCommit untuk AWS Lambda fungsi yang ada - AWS CodeCommit

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

Contoh: Buat pemicu AWS CodeCommit untuk AWS Lambda fungsi yang ada

Cara termudah untuk membuat pemicu yang memanggil fungsi Lambda adalah membuat pemicu itu di konsol Lambda. Integrasi bawaan ini memastikan bahwa CodeCommit memiliki izin yang diperlukan untuk menjalankan fungsi. Untuk menambahkan pemicu fungsi Lambda yang ada, buka konsol Lambda, dan pilih fungsi tersebut. Pada tab Pemicu untuk fungsi, ikuti langkah-langkah di Tambahkan pemicu. Langkah-langkah ini mirip dengan yang ada di Buat fungsi Lambda.

Anda juga dapat membuat pemicu untuk fungsi Lambda di repositori. CodeCommit Melakukan hal demikian mensyaratkan Anda memilih fungsi Lambda yang ada untuk dipanggil. Hal ini juga mengharuskan Anda secara manual mengkonfigurasi izin yang diperlukan CodeCommit untuk menjalankan fungsi.

Konfigurasikan izin secara manual CodeCommit untuk memungkinkan menjalankan fungsi Lambda

Jika Anda membuat pemicu CodeCommit yang memanggil fungsi Lambda, Anda harus mengonfigurasi izin secara manual yang CodeCommit memungkinkan untuk menjalankan fungsi Lambda. Untuk menghindari konfigurasi manual ini, pertimbangkan untuk membuat pemicu untuk fungsi tersebut di konsol Lambda sebagai gantinya.

Untuk CodeCommit memungkinkan menjalankan fungsi Lambda
  1. Buka editor teks biasa dan buat file JSON yang menentukan nama fungsi Lambda, detail CodeCommit repositori, dan tindakan yang ingin Anda izinkan di Lambda, mirip dengan yang berikut ini:

    { "FunctionName": "MyCodeCommitFunction", "StatementId": "1", "Action": "lambda:InvokeFunction", "Principal": "codecommit.amazonaws.com", "SourceArn": "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo", "SourceAccount": "111122223333" }
  2. Simpan file sebagai file JSON dengan nama yang mudah diingat (misalnya, AllowAccessfromMyDemoRepo.json).

  3. Dengan menggunakan file JSON yang baru saja Anda buat, di terminal (Linux, MacOS, atau Unix) atau baris perintah (Windows), jalankan perintah aws lambda add-permissions untuk menambahkan izin ke kebijakan sumber daya yang terkait dengan fungsi Lambda Anda:

    aws lambda add-permission --cli-input-json file://AllowAccessfromMyDemoRepo.json

    Perintah ini mengembalikan JSON dari pernyataan kebijakan Anda hanya menambahkan, yang serupa dengan berikut ini:

    { "Statement": "{\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"111122223333\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo\"}},\"Action\":[\"lambda:InvokeFunction\"],\"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codecommit.amazonaws.com\"},\"Sid\":\"1\"}" }

    Untuk informasi selengkapnya tentang kebijakan sumber daya untuk fungsi Lambda, lihat AddPermissiondan Model Peristiwa Tarik/Dorong di Panduan Pengguna.AWS Lambda

  4. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  5. Di panel navigasi Dasbor, pilih Peran, dan di daftar peran, pilih lambda_basic_execution.

  6. Pada halaman ringkasan untuk peran tersebut, pilih tab Izin, dan di Kebijakan inline, pilih Buat Kebijakan Peran.

  7. Pada halaman Atur Izin, pilih Generator Kebijakan, dan kemudian pilih Pilih.

  8. Di halaman Edit Izin, lakukan hal berikut:

    • Di Efek, pilih Izinkan.

    • Di Layanan AWS , pilih AWS CodeCommit.

    • Di Tindakan, pilih GetRepository.

    • Di Amazon Resource Name (ARN), masukkan ARN untuk repositori (misalnya, arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo).

    Pilih Tambah Pernyataan, dan kemudian pilih Langkah Selanjutnya.

  9. Pada halaman Tinjau kebijakan, pilih Terapkan Kebijakan.

    Pernyataan kebijakan Anda akan terlihat serupa dengan contoh berikut:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt11111111", "Effect": "Allow", "Action": [ "codecommit:GetRepository" ], "Resource": [ "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo" ] } ] }

Buat pemicu untuk fungsi Lambda di CodeCommit repositori (konsol)

Setelah Anda membuat fungsi Lambda, Anda dapat membuat pemicu CodeCommit yang menjalankan fungsi sebagai respons terhadap peristiwa repositori yang Anda tentukan.

catatan

Sebelum Anda berhasil menguji atau menjalankan pemicu untuk contoh, Anda harus mengonfigurasi kebijakan yang memungkinkan CodeCommit untuk memanggil fungsi dan fungsi Lambda untuk mendapatkan informasi tentang repositori. Untuk informasi selengkapnya, lihat Untuk CodeCommit memungkinkan menjalankan fungsi Lambda.

Buatlah sebuah pemicu untuk sebuah fungsi Lambda
  1. Buka CodeCommit konsol di https://console.aws.amazon.com/codesuite/codecommit/home.

  2. Di Repositori, pilih repositori tempat Anda ingin membuat pemicu untuk peristiwa repositori.

  3. Di panel navigasi untuk repositori, pilih Pengaturan, lalu pilih Pemicu.

  4. Pilih Buat pemicu.

  5. Di Buat pemicu, lakukan hal berikut:

    • 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 CodeCommit repositori, hapus Semua peristiwa repositori, lalu pilih Buat cabang atau tag.

    • Jika Anda ingin pemicu untuk diterapkan ke semua cabang repositori, di Cabang, biarkan pilihan kosong, karena opsi default ini berlaku pemicu untuk semua cabang secara otomatis. Jika Anda ingin pemicu ini berlaku untuk cabang tertentu saja, pilih hingga 10 nama cabang dari daftar cabang repositori.

    • Di Pilih layanan yang akan digunakan, pilih AWS Lambda.

    • Di Fungsi Lambda, pilih nama fungsi dari daftar, atau masukkan ARN untuk fungsi tersebut.

    • (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.

  6. (Opsional) 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 CodeCommit dan fungsi Lambda.

  7. Pilih Buat pemicu untuk menyelesaikan pembuatan pemicu.

  8. Untuk memverifikasi fungsi pemicu, buat dan doronglah commit ke repositori di mana Anda mengkonfigurasi pemicu. Anda akan melihat respons dari fungsi Lambda pada tab Pemantauan untuk fungsi di konsol Lambda.

Buat pemicu ke fungsi Lambda untuk CodeCommit repositori ()AWS CLI

Anda juga dapat menggunakan baris perintah untuk membuat pemicu fungsi Lambda sebagai respons terhadap peristiwa CodeCommit repositori, seperti ketika seseorang mendorong komit ke repositori Anda.

Buatlah sebuah pemicu untuk sebuah fungsi Lambda
  1. Buka editor teks biasa dan buatlah file JSON yang menentukan:

    • Nama fungsi Lambda.

    • Repositori dan cabang yang ingin Anda pantau dengan pemicu ini. (Jika Anda tidak menentukan cabang apa pun, pemicu berlaku untuk semua cabang di repositori.)

    • Peristiwa yang mengaktifkan pemicu ini.

    Simpan file tersebut.

    Misalnya, jika Anda ingin membuat pemicu untuk repositori bernama yang menerbitkan semua peristiwa repositori ke fungsi Lambda MyDemoRepoyang diberi nama MyCodeCommitFunctionuntuk dua cabang, main dan preprod:

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] } ] }

    Harus ada blok pemicu di JSON untuk setiap pemicu untuk sebuah repositori. Untuk membuat lebih dari satu pemicu untuk repositori, termasuk blok tambahan di JSON. Ingat bahwa semua pemicu yang dibuat dalam file ini adalah untuk repositori yang telah ditentukan. Anda tidak dapat membuat pemicu untuk beberapa repositori dalam file JSON tunggal. Misalnya, jika Anda ingin membuat dua pemicu untuk repositori, Anda dapat membuat file JSON dengan dua blok pemicu. Pada contoh berikut, tidak ada cabang yang ditentukan di blok pemicu kedua, sehingga pemicu berlaku untuk semua cabang:

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] }, { "name": "MyOtherLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyOtherCodeCommitFunction", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference" ] } ] }

    Anda dapat membuat pemicu untuk peristiwa yang Anda tentukan, seperti ketika commit didorong ke repositori. Jenis-jenis peristiwa meliputi:

    • all untuk semua peristiwa di repositori dan cabang yang telah ditentukan.

    • updateReference untuk ketika commit didorong ke repositori dan cabang yang ditentukan.

    • createReference untuk ketika cabang baru atau tag dibuat dalam repositori yang ditentukan.

    • deleteReference untuk ketika cabang atau tag dihapus dalam repositori yang ditentukan.

    catatan

    Anda dapat menggunakan lebih dari satu jenis peristiwa di sebuah pemicu. Namun, jika Anda menentukan all, Anda tidak dapat menentukan peristiwa lainnya.

    Untuk menampilkan daftar lengkap jenis peristiwa yang valid, pada terminal atau prompt perintah, masukkan aws codecommit put-repository-triggers help.

    Selain itu, Anda dapat menyertakan sebuah string dalam customData (misalnya, developer nama saluran IRC digunakan saat membahas pengembangan di repositori ini). Bidang ini adalah string. Ini tidak dapat digunakan untuk melewati parameter dinamis. String ini ditambahkan sebagai atribut ke CodeCommit JSON yang dikembalikan sebagai respons terhadap pemicu.

  2. (Opsional) Pada terminal atau prompt perintah, jalankan perintah test-repository-triggers. Misalnya, berikut ini digunakan untuk menguji bahwa file JSON bernama trigger.json valid dan yang dapat memicu fungsi CodeCommit Lambda. Uji ini menggunakan data sampel untuk memicu fungsi jika tidak ada data nyata tersedia.

    aws codecommit test-repository-triggers --cli-input-json file://trigger.json

    Jika berhasil, perintah ini menampilkan informasi yang serupa dengan yang berikut:

    { "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": [] }
  3. Pada terminal atau command prompt, jalankan put-repository-triggers perintah untuk membuat pemicu di CodeCommit. Misalnya, untuk menggunakan file JSON yang bernama trigger.json untuk membuat pemicu:

    aws codecommit put-repository-triggers --cli-input-json file://trigger.json

    Perintah ini mengembalikan ID konfigurasi, yang serupa dengan yang berikut:

    { "configurationId": "0123456-I-AM-AN-EXAMPLE" }
  4. Untuk menampilkan konfigurasi pemicu, jalankan perintah get-repository-triggers, dengan menentukan nama repositori:

    aws codecommit get-repository-triggers --repository-name MyDemoRepo

    Perintah ini mengembalikan struktur semua pemicu dikonfigurasi untuk repositori, yang serupa dengan berikut ini:

    { "configurationId": "0123456-I-AM-AN-EXAMPLE", "triggers": [ { "events": [ "all" ], "destinationArn": "arn:aws:lambda:us-east-1:111122223333:MyCodeCommitFunction", "branches": [ "main", "preprod" ], "name": "MyLambdaFunctionTrigger", "customData": "Project ID 12345" } ] }
  5. Untuk menguji fungsi pemicu, buat dan doronglah sebuah commit ke repositori di mana Anda mengkonfigurasi pemicu tersebut. Anda akan melihat respons dari fungsi Lambda pada tab Pemantauan untuk fungsi di konsol Lambda.