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

AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari lebih lanjut”

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 JSON file yang menentukan nama fungsi Lambda, detail repositori, dan tindakan yang ingin Anda izinkan di Lambda, mirip dengan yang berikut ini: CodeCommit

    { "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 JSON file dengan nama yang mudah diingat (misalnya, AllowAccessfromMyDemoRepo .json).

  3. Menggunakan JSON file yang baru saja Anda buat, di terminal (Linux, macOS, atau Unix) atau baris perintah (Windows), jalankan aws lambda add-permissions perintah 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 pernyataan kebijakan yang baru saja Anda tambahkan, mirip dengan yang berikut ini: JSON

    { "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 IAM konsol di https://console.aws.amazon.com/iam/.

  5. Di panel navigasi Dasbor, pilih Peran, dan dalam daftar peran, pilihlambda_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. Sebagai contoh, jika Anda ingin pemicu untuk berjalan hanya ketika pengguna membuat tanda atau cabang di repositori CodeCommit , hapus Semua peristiwa repositori, dan kemudian pilih Buat cabang atau tanda.

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

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

    • (Opsional) Di Data kustom, masukkan informasi yang ingin Anda sertakan dalam fungsi Lambda (misalnya, nama IRC saluran yang digunakan oleh pengembang untuk membahas pengembangan di repositori). 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 buat JSON file 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 MyDemoRepo yang menerbitkan semua peristiwa repositori ke fungsi Lambda yang diberi nama untuk dua cabang, dan: MyCodeCommitFunction main 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 repositori. Untuk membuat lebih dari satu pemicu untuk repositori, sertakan blok tambahan di file. 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 satu file. JSON Misalnya, jika Anda ingin membuat dua pemicu untuk repositori, Anda dapat membuat JSON file 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 string customData (misalnya, nama IRC saluran yang digunakan pengembang saat mendiskusikan pengembangan di repositori ini). Bidang ini adalah string. Ini tidak dapat digunakan untuk melewati parameter dinamis. String ini ditambahkan sebagai atribut ke yang CodeCommit JSON dikembalikan sebagai respons terhadap pemicu.

  2. (Opsional) Pada terminal atau prompt perintah, jalankan perintah test-repository-triggers. Misalnya, berikut ini digunakan untuk menguji apakah JSON file bernama trigger.json valid dan yang CodeCommit dapat memicu fungsi 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 JSON file 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 ini:

    { "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.