Layanan App Runner berdasarkan kode sumber - AWS App Runner

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

Layanan App Runner berdasarkan kode sumber

Anda dapat menggunakan AWS App Runner untuk membuat dan mengelola layanan berdasarkan dua jenis sumber layanan yang berbeda secara fundamental: kode sumber dan gambar sumber. Terlepas dari jenis sumbernya, App Runner menangani memulai, menjalankan, menskalakan, dan menyeimbangkan beban layanan Anda. Anda dapat menggunakan kemampuan CI/CD dari App Runner untuk melacak perubahan pada gambar sumber atau kode Anda. Ketika App Runner menemukan perubahan, itu secara otomatis membangun (untuk kode sumber) dan menerapkan versi baru ke layanan App Runner Anda.

Bab ini membahas layanan berdasarkan kode sumber. Untuk informasi tentang layanan berdasarkan gambar sumber, lihatLayanan App Runner berdasarkan gambar sumber.

Kode sumber adalah kode aplikasi yang dibuat dan diterapkan oleh App Runner untuk Anda. Anda mengarahkan App Runner ke direktori sumber dalam repositori kode dan memilih runtime yang sesuai yang sesuai dengan versi platform pemrograman. App Runner membuat gambar yang didasarkan pada gambar dasar runtime dan kode aplikasi Anda. Kemudian memulai layanan yang menjalankan wadah berdasarkan gambar ini.

App Runner menyediakan runtime terkelola khusus platform yang nyaman. Masing-masing runtime ini membuat gambar kontainer dari kode sumber Anda, dan menambahkan dependensi runtime bahasa ke dalam gambar Anda. Anda tidak perlu menyediakan konfigurasi kontainer dan membangun instruksi seperti Dockerfile.

Subtopik dari bagian ini membahas berbagai platform yang didukung App Runner— platform terkelola yang menyediakan runtime terkelola untuk lingkungan dan versi pemrograman yang berbeda.

Penyedia repositori kode sumber

App Runner menyebarkan kode sumber Anda dengan membacanya dari repositori kode sumber. App Runner mendukung dua penyedia repositori kode sumber: GitHubdan Bitbucket.

Menerapkan dari penyedia repositori kode sumber Anda

Untuk menerapkan kode sumber Anda ke layanan App Runner dari repositori kode sumber, App Runner membuat koneksi ke sana. Saat Anda menggunakan konsol App Runner untuk membuat layanan, Anda memberikan detail koneksi dan direktori sumber untuk App Runner untuk menerapkan kode sumber Anda.

Koneksi

Anda memberikan detail koneksi sebagai bagian dari prosedur pembuatan layanan. Saat Anda menggunakan App Runner API atau API AWS CLI, koneksi adalah sumber daya terpisah. Pertama, Anda membuat koneksi menggunakan aksi CreateConnectionAPI. Kemudian, Anda menyediakan ARN koneksi selama pembuatan layanan menggunakan tindakan CreateServiceAPI.

Direktori sumber

Saat Anda membuat layanan, Anda juga menyediakan direktori sumber. Secara default, App Runner menggunakan direktori root repositori Anda sebagai direktori sumber. Direktori sumber adalah lokasi di repositori kode sumber Anda yang menyimpan kode sumber dan file konfigurasi aplikasi Anda. Perintah build dan start juga dijalankan dari direktori sumber. Bila Anda menggunakan App Runner API atau AWS CLI untuk membuat atau memperbarui layanan, Anda menyediakan direktori sumber dalam tindakan CreateServicedan UpdateServiceAPI. Untuk informasi lebih lanjut, lihat Direktori sumber bagian berikut.

Untuk informasi selengkapnya tentang pembuatan layanan App Runner, lihatMembuat layanan App Runner. Untuk informasi selengkapnya tentang koneksi App Runner, lihatMengelola koneksi App Runner.

Direktori sumber

Saat membuat layanan App Runner, Anda dapat menyediakan direktori sumber, bersama dengan repositori dan cabang. Tetapkan nilai bidang direktori Sumber ke jalur direktori repositori yang menyimpan kode sumber dan file konfigurasi aplikasi. App Runner mengeksekusi perintah build dan start dari jalur direktori sumber yang Anda berikan.

Masukkan nilai untuk jalur direktori sumber sebagai absolut dari direktori repositori root. Jika Anda tidak menentukan nilai, itu default ke direktori tingkat atas repositori, juga dikenal sebagai direktori root repositori.

Anda juga memiliki opsi untuk menyediakan jalur direktori sumber yang berbeda selain direktori repositori tingkat atas. Ini mendukung arsitektur repositori monorepo, yang berarti kode sumber untuk beberapa aplikasi disimpan dalam satu repositori. Untuk membuat dan mendukung beberapa layanan App Runner dari satu monorepo, tentukan direktori sumber yang berbeda saat Anda membuat setiap layanan.

catatan

Jika Anda menentukan direktori sumber yang sama untuk beberapa layanan App Runner, kedua layanan akan menerapkan dan beroperasi secara individual.

Jika Anda memilih untuk menggunakan file apprunner.yaml konfigurasi untuk menentukan parameter layanan Anda, letakkan di folder direktori sumber repositori.

Jika opsi pemicu Deployment disetel ke Otomatis, perubahan yang Anda lakukan di direktori sumber akan memicu penerapan otomatis. Hanya perubahan di jalur direktori sumber yang akan memicu penerapan otomatis. Penting untuk memahami bagaimana lokasi direktori sumber memengaruhi ruang lingkup penerapan otomatis. Untuk informasi selengkapnya, lihat penerapan otomatis di. Metode deployment

catatan

Jika layanan App Runner Anda menggunakan runtime terkelola PHP, dan Anda ingin menetapkan direktori sumber selain repositori root default, penting untuk menggunakan versi runtime PHP yang benar. Untuk informasi selengkapnya, lihat Menggunakan platform PHP.

Platform terkelola App Runner

Platform terkelola App Runner menyediakan runtime terkelola untuk berbagai lingkungan pemrograman. Setiap runtime terkelola memudahkan untuk membangun dan menjalankan container berdasarkan versi bahasa pemrograman atau lingkungan runtime. Bila Anda menggunakan runtime terkelola, App Runner dimulai dengan image runtime terkelola. Gambar ini didasarkan pada image Amazon Linux Docker dan berisi paket runtime bahasa serta beberapa alat dan paket ketergantungan populer. App Runner menggunakan image runtime terkelola ini sebagai image dasar, dan menambahkan kode aplikasi Anda untuk membuat image Docker. Kemudian menyebarkan gambar ini untuk menjalankan layanan web Anda dalam sebuah wadah.

Anda menentukan runtime untuk layanan App Runner saat membuat layanan menggunakan konsol App Runner atau operasi API. CreateService Anda juga dapat menentukan runtime sebagai bagian dari kode sumber Anda. Gunakan runtime kata kunci dalam file konfigurasi App Runner yang Anda sertakan dalam repositori kode Anda. Konvensi penamaan dari runtime terkelola adalah. <language-name><major-version>

App Runner memperbarui runtime untuk layanan Anda ke versi terbaru pada setiap penerapan atau pembaruan layanan. Jika aplikasi Anda memerlukan versi tertentu dari runtime terkelola, Anda dapat menentukannya menggunakan runtime-version kata kunci dalam file konfigurasi App Runner. Anda dapat mengunci ke tingkat versi apa pun, termasuk versi mayor atau minor. App Runner hanya membuat pembaruan tingkat yang lebih rendah ke runtime layanan Anda.

Versi runtime terkelola dan build App Runner

App Runner sekarang menawarkan proses build yang diperbarui untuk aplikasi Anda. Saat ini memanggil build baru untuk layanan yang berjalan pada runtime terkelola Python 3.11 dan Node.js 18, terakhir dirilis pada 29 Desember 2023. Proses pembuatan yang direvisi ini lebih cepat dan lebih efisien. Ini juga membuat gambar akhir dengan footprint yang lebih kecil yang hanya berisi kode sumber Anda, membangun artefak, dan runtime yang diperlukan untuk menjalankan aplikasi Anda.

Kami menyebut proses build yang lebih baru sebagai build App Runner yang direvisi dan proses build asli sebagai build App Runner asli. Untuk menghindari perubahan pada platform runtime versi sebelumnya, App Runner hanya menerapkan build yang direvisi ke versi runtime tertentu, biasanya rilis utama yang baru dirilis.

Kami telah memperkenalkan komponen baru ke file apprunner.yaml konfigurasi untuk membuat build yang direvisi kompatibel ke belakang untuk kasus penggunaan yang sangat spesifik dan juga memberikan lebih banyak fleksibilitas untuk mengonfigurasi build aplikasi Anda. Ini adalah pre-runparameter opsional. Kami menjelaskan kapan harus menggunakan parameter ini bersama dengan informasi berguna lainnya tentang build di bagian berikutnya.

Tabel berikut menunjukkan versi build App Runner mana yang berlaku untuk versi runtime terkelola tertentu. Kami akan terus memperbarui dokumen ini untuk memberi Anda informasi tentang runtime kami saat ini.

Platform Build asli Membangun yang direvisi

Python – Informasi rilis

  • Python 3.8

  • Python 3.7

  • Python 3.11 (!)

Node.js – Informasi rilis

  • Node.js 16

  • Node.js 14

  • Node.js 12

  • Node.js 18

Corretto — Informasi rilis

  • Corretto 11

  • Corretto 8

.NET – Informasi rilis

  • .NET 6

PHP – Informasi rilis

  • PHP 8.1

Ruby – Informasi rilis

  • Ruby 3.1

Go – Informasi rilis

  • Pergi 1

penting

Python 3.11 — Kami memiliki rekomendasi khusus untuk konfigurasi build layanan yang menggunakan runtime terkelola Python 3.11. Untuk informasi selengkapnya, lihat Callout untuk versi runtime tertentu di topik platform Python.

Selengkapnya tentang build dan migrasi App Runner

Saat memigrasikan aplikasi ke runtime yang lebih baru yang menggunakan build yang direvisi, Anda mungkin perlu sedikit mengubah konfigurasi build.

Untuk memberikan konteks pertimbangan migrasi, pertama-tama kami akan menjelaskan proses tingkat tinggi untuk build App Runner asli dan build yang direvisi. Kami akan mengikuti dengan bagian yang menjelaskan atribut spesifik tentang layanan Anda yang mungkin memerlukan beberapa pembaruan konfigurasi.

Versi App Runner asli

Proses pembuatan aplikasi App Runner asli memanfaatkan layanan. AWS CodeBuild Langkah awal didasarkan pada gambar yang dikuratori oleh CodeBuild layanan. Proses build Docker mengikuti yang menggunakan image runtime terkelola App Runner yang berlaku sebagai image dasar.

Langkah-langkah umum adalah sebagai berikut:

  1. Jalankan pre-build perintah dalam gambar CodeBuild -curated.

    pre-buildPerintahnya opsional. Mereka hanya dapat ditentukan dalam file apprunner.yaml konfigurasi.

  2. Jalankan build perintah menggunakan CodeBuild pada gambar yang sama dari langkah sebelumnya.

    buildPerintah diperlukan. Mereka dapat ditentukan di konsol App Runner, App Runner API, atau dalam file apprunner.yaml konfigurasi.

  3. Jalankan build Docker untuk menghasilkan gambar berdasarkan image runtime terkelola App Runner untuk platform dan versi runtime spesifik Anda.

  4. Salin /app direktori dari gambar yang kami hasilkan di Langkah 2. Tujuannya adalah gambar berdasarkan gambar runtime terkelola App Runner, yang kami buat di Langkah 3.

  5. Jalankan build perintah lagi pada image runtime terkelola App Runner yang dihasilkan. Kami menjalankan perintah build lagi untuk menghasilkan artefak build dari kode sumber di /app direktori yang kami salin ke dalamnya di Langkah 4. Gambar ini nantinya akan digunakan oleh App Runner untuk menjalankan layanan web Anda dalam wadah.

    buildPerintah diperlukan. Mereka dapat ditentukan di konsol App Runner, App Runner API, atau dalam file apprunner.yaml konfigurasi.

  6. Jalankan post-build perintah dalam CodeBuild gambar dari Langkah 2.

    post-buildPerintahnya opsional. Mereka hanya dapat ditentukan dalam file apprunner.yaml konfigurasi.

Setelah build selesai, App Runner akan menerapkan image runtime terkelola App Runner yang dihasilkan dari Langkah 5 untuk menjalankan layanan web Anda dalam sebuah container.

Versi App Runner yang direvisi

Proses build yang direvisi lebih cepat dan lebih efisien daripada proses build asli yang dijelaskan di bagian sebelumnya. Ini menghilangkan duplikasi perintah build yang terjadi di build versi sebelumnya. Ini juga membuat gambar akhir dengan footprint yang lebih kecil yang hanya berisi kode sumber Anda, membangun artefak, dan runtime yang diperlukan untuk menjalankan aplikasi Anda.

Proses build ini menggunakan Docker multi-stage build. Langkah-langkah proses umum adalah sebagai berikut:

  1. Build stage — Mulai proses docker build yang mengeksekusi pre-build dan build memerintahkan di atas image build App Runner.

    1. Salin kode sumber aplikasi ke /app direktori.

      catatan

      /appDirektori ini ditetapkan sebagai direktori kerja di setiap tahap build Docker.

    2. Jalankan perintah pre-build.

      pre-buildPerintahnya opsional. Mereka hanya dapat ditentukan dalam file apprunner.yaml konfigurasi.

    3. Jalankan build perintah.

      buildPerintah diperlukan. Mereka dapat ditentukan di konsol App Runner, App Runner API, atau dalam file apprunner.yaml konfigurasi.

  2. Tahap pengemasan - Menghasilkan gambar kontainer pelanggan akhir, yang juga didasarkan pada image run App Runner.

    1. Salin /app direktori dari tahap Build sebelumnya ke image Run baru. Ini termasuk kode sumber aplikasi Anda dan artefak build dari tahap sebelumnya.

    2. Jalankan pre-run perintah. Jika Anda perlu memodifikasi gambar runtime di luar /app direktori dengan menggunakan build perintah, tambahkan perintah yang sama atau yang diperlukan ke segmen file apprunner.yaml konfigurasi ini.

      Ini adalah parameter baru yang diperkenalkan untuk mendukung build App Runner yang direvisi.

      pre-runPerintahnya opsional. Mereka hanya dapat ditentukan dalam file apprunner.yaml konfigurasi.

      Catatan
      • pre-runPerintah hanya didukung oleh build yang direvisi. Jangan menambahkannya ke file konfigurasi jika layanan Anda menggunakan versi runtime yang menggunakan build asli.

      • Jika Anda tidak perlu memodifikasi apa pun di luar /app direktori dengan build perintah, maka Anda tidak perlu menentukan pre-run perintah.

  3. Tahap pasca-build - Tahap ini dilanjutkan dari tahap Build dan menjalankan perintah. post-build

    1. Jalankan post-build perintah di dalam /app direktori.

      post-buildPerintahnya opsional. Mereka hanya dapat ditentukan dalam file apprunner.yaml konfigurasi.

Setelah build selesai, App Runner kemudian menerapkan image Run untuk menjalankan layanan web Anda dalam sebuah container.

catatan

Jangan disesatkan ke env entri di bagian Jalankan apprunner.yaml saat mengonfigurasi proses pembuatan. Meskipun parameter pre-run perintah, yang direferensikan di Langkah 2 (b), berada di bagian Run, jangan gunakan env parameter di bagian Run untuk mengonfigurasi build Anda. pre-runPerintah hanya mereferensikan env variabel yang ditentukan di bagian Build dari file konfigurasi. Untuk informasi selengkapnya, lihat Jalankan bagian di bagian file konfigurasi App Runner.

Persyaratan layanan untuk pertimbangan migrasi

Jika lingkungan aplikasi Anda memiliki salah satu dari dua persyaratan ini, maka Anda harus merevisi konfigurasi build Anda, dengan menambahkan pre-run perintah.

  • Jika Anda perlu memodifikasi apa pun di luar /app direktori dengan build perintah.

  • Jika Anda perlu menjalankan build perintah dua kali untuk membuat lingkungan yang diperlukan. Ini adalah persyaratan yang sangat tidak biasa. Sebagian besar build tidak akan melakukan ini.

Modifikasi di luar /app direktori

  • Build App Runner yang direvisi mengasumsikan bahwa aplikasi Anda tidak memiliki dependensi di luar direktori. /app

  • Perintah yang Anda berikan dengan apprunner.yaml file, API App Runner, atau konsol App Runner harus menghasilkan artefak build di direktori. /app

  • Anda dapat memodifikasi post-build perintah pre-buildbuild,, dan untuk memastikan semua artefak build ada di /app direktori.

  • Jika aplikasi Anda memerlukan build untuk memodifikasi lebih lanjut gambar yang dihasilkan untuk layanan Anda, di luar /app direktori, Anda dapat menggunakan pre-run perintah baru di fileapprunner.yaml. Untuk informasi selengkapnya, lihat Menyetel opsi layanan App Runner menggunakan file konfigurasi.

Menjalankan build perintah dua kali

  • App Runner build asli menjalankan build perintah dua kali, pertama di Langkah 2, lalu lagi di Langkah 5. App Runner build yang direvisi memperbaiki redundansi ini dan hanya menjalankan perintah satu kali. build Jika aplikasi Anda harus memiliki persyaratan yang tidak biasa agar build perintah dijalankan dua kali, build App Runner yang direvisi menyediakan opsi untuk menentukan dan menjalankan perintah yang sama lagi menggunakan parameter. pre-run Melakukannya mempertahankan perilaku build ganda yang sama.