Otomatiskan CodeGuru ulasan Amazon untuk aplikasi AWS CDK Python dengan menggunakan Tindakan GitHub - AWS Prescriptive Guidance

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

Otomatiskan CodeGuru ulasan Amazon untuk aplikasi AWS CDK Python dengan menggunakan Tindakan GitHub

Vanitha Dontireddy dan Sarat Chandra Pothula, Amazon Web Services

Ringkasan

Pola ini menampilkan integrasi tinjauan kode CodeGuru otomatis Amazon untuk aplikasi AWS Cloud Development Kit (AWS CDK) Python, yang diatur GitHub melalui Tindakan. Solusinya menerapkan arsitektur tanpa server yang didefinisikan dengan Python. AWS CDK Dengan mengotomatiskan analisis kode ahli dalam pipeline pengembangan, pendekatan ini dapat melakukan hal berikut untuk proyek AWS CDK Python:

  • Tingkatkan kualitas kode.

  • Merampingkan alur kerja.

  • Maksimalkan manfaat komputasi tanpa server.

Prasyarat dan batasan

Prasyarat

  • Aktif Akun AWS.

  • AWS Command Line Interface (AWS CLI) versi 2.9.11 atau yang lebih baru, diinstal dan dikonfigurasi.

  • GitHub Akun aktif dan GitHub repositori dengan izin alur kerja baca dan tulis serta pembuatan permintaan tarik (PR) oleh GitHub Tindakan untuk memastikan alur kerja PR beroperasi dengan benar.

  • Peran OpenID Connect (OIDC) dalam GitHub Actions untuk menerapkan solusi di file. Akun AWS Untuk membuat peran, gunakan AWS CDK konstruksi.

Batasan

  • Amazon CodeGuru Profiler mendukung aplikasi yang ditulis dalam semua bahasa Java virtual machine (JVM) (seperti Scala dan Kotlin) dan runtime dan Python 3.6 atau yang lebih baru.

  • Amazon CodeGuru Reviewer mendukung asosiasi dengan repositori kode Java dan Python hanya dari penyedia sumber berikut AWS CodeCommit:, Bitbucket GitHub,, Enterprise Cloud, dan Enterprise GitHub Server. GitHub Selain itu, repositori Amazon Simple Storage Service (Amazon S3) hanya didukung melalui Actions. GitHub

  • Tidak ada cara otomatis untuk mencetak temuan selama pipeline integrasi berkelanjutan dan penerapan berkelanjutan (CI/CD). Sebaliknya, pola ini menggunakan GitHub Actions sebagai metode alternatif untuk menangani dan menampilkan temuan.

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat layanan AWS menurut Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Arsitektur

Diagram berikut menunjukkan arsitektur untuk solusi ini.

Alur kerja untuk mengintegrasikan tinjauan CodeGuru kode untuk aplikasi AWS CDK Python menggunakan Tindakan. GitHub

Seperti yang ditunjukkan dalam diagram, ketika pengembang membuat permintaan tarik (PR) untuk ditinjau, GitHub Tindakan memicu langkah-langkah berikut:

  1. Asumsi peran IAM — Pipeline menggunakan peran IAM yang ditentukan dalam GitHub Rahasia untuk melakukan tugas penerapan.

  2. Analisis kode

    • CodeGuru Reviewer menganalisis kode yang disimpan di bucket Amazon S3. Ini mengidentifikasi cacat dan memberikan rekomendasi untuk perbaikan dan pengoptimalan.

    • CodeGuru Pemindaian keamanan untuk pelanggaran kebijakan dan kerentanan.

  3. Tinjauan temuan

    • Pipeline mencetak tautan ke dasbor temuan di output konsol.

    • Jika temuan kritis terdeteksi, pipa segera gagal.

    • Untuk temuan tingkat keparahan tinggi, normal, atau rendah, pipa berlanjut ke langkah berikutnya.

  4. Persetujuan PR

    • Seorang pengulas harus menyetujui PR secara manual.

    • Jika PR ditolak, pipeline gagal dan menghentikan langkah penerapan lebih lanjut.

  5. Penyebaran CDK — Setelah persetujuan PR, proses penyebaran CDK dimulai. Ini mengatur yang berikut Layanan AWS dan sumber daya:

    • CodeGuru Profiler

    • AWS Lambda fungsi

    • Antrean Amazon Simple Queue Service (Amazon SQS)

  6. Pembuatan data pembuatan profil — Untuk menghasilkan data profil yang cukup untuk CodeGuru Profiler:

    • Pipeline memanggil fungsi Lambda beberapa kali dengan mengirim pesan ke antrean Amazon SQS secara berkala.

Alat

Layanan AWS

  • AWS Cloud Development Kit (AWS CDK)adalah kerangka pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan AWS Cloud infrastruktur dalam kode.

  • CDK Toolkit adalah kit pengembangan cloud baris perintah yang membantu Anda berinteraksi dengan aplikasi Anda AWS CDK .

  • Amazon CodeGuru Profiler mengumpulkan data performa runtime dari aplikasi live Anda, dan memberikan rekomendasi yang dapat membantu Anda menyempurnakan performa aplikasi.

  • Amazon CodeGuru Reviewer menggunakan analisis program dan pembelajaran mesin untuk mendeteksi potensi cacat yang sulit ditemukan oleh pengembang. Kemudian, CodeGuru Profiler menawarkan saran untuk meningkatkan kode Java dan Python Anda.

  • Amazon CodeGuru Security adalah alat keamanan aplikasi statis yang menggunakan pembelajaran mesin untuk mendeteksi pelanggaran dan kerentanan kebijakan keamanan. Ini memberikan saran untuk mengatasi risiko keamanan dan menghasilkan metrik sehingga Anda dapat melacak postur keamanan aplikasi Anda.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • Amazon Simple Queue Service (Amazon Simple Queue Service) menyediakan antrian host yang aman, tahan lama, dan tersedia yang membantu Anda mengintegrasikan dan memisahkan sistem dan komponen perangkat lunak terdistribusi.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Alat lainnya

  • GitHub Actions adalah platform integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang terintegrasi erat dengan GitHub repositori. Anda dapat menggunakan GitHub Actions untuk mengotomatiskan pipeline build, test, dan deployment.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub amazon-codeguru-suite-cdk-python.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan AWS kredensil.

Untuk mengekspor variabel yang menentukan Akun AWS dan Wilayah AWS di mana Anda menerapkan tumpukan, jalankan perintah berikut:

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

AWS Kredensi untuk AWS CDK disediakan melalui variabel lingkungan.

AWS DevOps, DevOps insinyur

Kloning repositori.

Untuk mengkloning repositori pada mesin lokal Anda, jalankan perintah berikut:

git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git
AWS DevOps, DevOps insinyur

Instal Toolkit CDK.

Untuk mengonfirmasi bahwa CDK Toolkit diinstal dan untuk memeriksa versi, jalankan perintah berikut: 

cdk --version

Jika versi CDK Toolkit lebih awal dari 2.27.0, masukkan perintah berikut untuk memperbaruinya ke versi 2.27.0:

npm install -g aws-cdk@2.27.0

Jika CDK Toolkit tidak diinstal, jalankan perintah berikut untuk menginstalnya:

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps insinyur

Instal dependensi yang diperlukan.

Untuk menginstal dependensi proyek yang diperlukan, jalankan perintah berikut:

python -m pip install --upgrade pip pip install -r requirements.txt
AWS DevOps, DevOps insinyur

Bootstrap lingkungan CDK.

Untuk mem-bootstrap lingkungan AWS CDK, jalankan perintah berikut:

npm install npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"

Setelah Anda berhasil mem-bootstrap lingkungan, output berikut akan ditampilkan:

⏳ Bootstrapping environment aws://{account}/{region}... ✅ Environment aws://{account}/{region} bootstrapped
AWS DevOps, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Sintesis AWS CDK aplikasi.

Untuk mensintesis AWS CDK aplikasi, jalankan perintah berikut:

cdk synth

Untuk informasi selengkapnya tentang perintah ini, lihat cdk synthesize dalam dokumentasi. AWS CDK

AWS DevOps, DevOps insinyur

Menyebarkan sumber daya.

Untuk menyebarkan sumber daya, jalankan perintah berikut:

cdk deploy --require-approval never
catatan

--require-approval neverBendera berarti CDK akan menyetujui dan mengeksekusi semua perubahan secara otomatis. Ini termasuk perubahan yang biasanya ditandai CDK sebagai membutuhkan tinjauan manual (seperti perubahan kebijakan IAM atau penghapusan sumber daya). Pastikan kode CDK dan CI/CD pipeline Anda telah teruji dengan baik dan aman sebelum Anda menggunakan --require-approval never bendera di lingkungan produksi.

AWS DevOps, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Buat rahasia yang diperlukan di GitHub.

Untuk memungkinkan alur kerja GitHub Actions mengakses AWS sumber daya dengan aman tanpa mengekspos informasi sensitif dalam kode repositori Anda, buat rahasia. Untuk membuat rahasia GitHub untukROLE_TO_ASSUME,CodeGuruReviewArtifactBucketName, danAWS_ACCOUNT_ID, ikuti instruksi dalam Membuat rahasia untuk repositori dalam dokumentasi GitHub Tindakan.

Berikut ini adalah informasi lebih lanjut tentang variabel:

  • AWS_ACCOUNT_ID— Akun AWS ID tempat pipa dijalankan.

  • CodeGuruReviewArtifactBucketName— Nama bucket S3 tempat artefak CodeGuru Reviewer disimpan. Pola ini menggunakan nama bucketcodeguru-reviewer-build-artifacts-<ACCOUNT_ID>-<REGION>.

  • AWS_REGION— Di Wilayah AWS mana sumber daya berada.

  • ROLE_TO_ASSUME— Nama peran IAM yang diasumsikan oleh pipeline. Pola ini menggunakan nama perangithubActionsDeployRole.

AWS DevOps, DevOps insinyur

Buat token akses GitHub pribadi.

Untuk menyiapkan cara aman agar alur kerja GitHub Tindakan Anda mengautentikasi dan berinteraksi GitHub, lakukan hal berikut:

  1. Untuk membuat token akses GitHub pribadi yang memiliki akses baca dan tulis ke repositori Anda, ikuti petunjuk dalam Mengelola token akses pribadi Anda dalam dokumentasi. GitHub

  2. Untuk menyimpan token ini sebagai rahasia repositori untuk GitHub Tindakan, ikuti instruksi di Membuat rahasia untuk repositori di dokumentasi Tindakan. GitHub

AWS DevOps, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Pembersihan sumber daya

Untuk membersihkan aplikasi AWS CDK Python Anda, jalankan perintah berikut:

cdk destroy --all
DevOps insinyur

Pemecahan Masalah

IsuSolusi

Tampilkan tautan ke temuan dasbor.

Tidak ada cara untuk mencetak temuan selama CI/CD pipa. Sebaliknya, pola ini menggunakan GitHub Actions sebagai metode alternatif untuk menangani dan menampilkan temuan.

Sumber daya terkait

AWS sumber daya

GitHub dokumentasi