Firebase Local Emulator Suite'in bir parçası olan App Hosting emülatörü kullanarak App Hosting dağıtımdan önce uygulamanızın yerel testlerini gerçekleştirebilirsiniz.
App Hosting emülatörünü kullanmadan önce Firebase'in genel Local Emulator Suite iş akışını anladığınızdan, Local Emulator Suite'ı yükleyip yapılandırdığınızdan ve CLI komutlarını incelediğinizden emin olun.
Bu konuda, App Hosting ile ilgili temel bilgilere sahip olduğunuz varsayılmaktadır. Gerekirse App Hosting girişini ve diğer materyalleri inceleyerek App Hosting'ın nasıl çalıştığını anlayabilirsiniz.
App Hosting emülatörüyle neler yapabilirim?
App Hosting emülatörü, web uygulamalarınızı yerel olarak test etmenize ve iyileştirmenize olanak tanır. Bu, geliştirme sürecinizi kolaylaştırabilir ve Firebase kullanılarak oluşturulan ve App Hosting'da dağıtılan web uygulamalarının kalitesini artırabilir.
App Hosting emülatörü:
- Web uygulamanızı yerel olarak çalıştırmanıza olanak tanır.
apphosting.yaml
yapılandırma dosyalarında tanımlanan ortam değişkenleri ve gizli anahtarlar kullanılır. apphosting.emulator.yaml
dosyasıyla emülatörde kullanılacak ortam değişkenlerini ve gizli anahtarları geçersiz kılabilir.- Diğer Firebase emülatörleriyle birlikte kullanılabilir. Firestore, Auth veya başka bir emülatör kullanıyorsanız Local Emulator Suite, bu emülatörlerin App Hosting emülatöründen önce başlatılmasını sağlar.
Emülatörü yapılandırma
Başlamak için Local Emulator Suite'ı Yerel Emulator Suite'i yükleme, yapılandırma ve entegre etme bölümünde açıklandığı şekilde yükleyip başlatın. Ayarlamak istediğiniz diğer Firebase emülatörlerine ek olarak App Hosting
Emulator
seçeneğini de belirleyin. CLI, aşağıdakiler de dahil olmak üzere bazı App Hosting emülatör değerleri için sizden bilgi ister:
- Uygulamanızın projeye göre kök dizini. App Hosting ile monorepo'lar kullanıyorsanız bu önemlidir.
- Yerel geliştirme için değerleri geçersiz kılmak isteyip istemediğiniz.
- Ekip arkadaşlarınıza yerel geliştirme için gizli anahtarlara erişim izni vermek isteyip istemediğiniz.
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
◯ Firestore Emulator
◯ Database Emulator
◯ Hosting Emulator
◯ Pub/Sub Emulator
◯ Storage Emulator
◯ Eventarc Emulator
(Move up and down to reveal more choices)
? Specify your app's root directory relative to your project (./)
? The App Hosting emulator uses a file called apphosting.emulator.yaml to
override values in apphosting.yaml for local testing. This codebase does not
have one, would you like to create it? (Y/n)
? Which environment variables would you like to override? (Press <space> to
select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ MEMCACHE_ADDR
◯ API_KEY
? What new value would you like for plaintext MEMCACHE_ADDR?
? What would you like to name the secret reference for API_KEY? (test-api-key)
? What new value would you like for secret TESTKEY [input is hidden]? [input is hidden]
? Your config has secret values. Please provide a comma-separated list of users
or groups who should have access to secrets for local development:
✔ Successfully set IAM bindings on secret test-api-key.
Bu kurulum akışında sağladığınız tüm değerler, firebase.json
içindeki App Hosting emülatör yapılandırmanızı güncellemek için kullanılır. Ayrıca, firebase.json
dosyasını doğrudan güncelleyerek uygulama barındırma emülatörünü de yapılandırabilirsiniz. App Hosting emülatörünün şeması şöyledir:
{
...
"emulators": {
"apphosting": {
"startCommand": <command> [optional]
"rootDirectory": <path> [optional]
}
}
}
startCommand
, emülatör başlatıldığında otomatik olarak oluşturulur ve ayarlanır. Belirtilmezse emülatör, paket yöneticinizin geliştirme komutunu algılar ve çalıştırır.rootDirectory
, tek depolu proje kurulumlarını desteklemek için kullanılır. Web uygulamanız bir alt dizindeyse bu dizinin köke göreli yolunu (firebase.json
konumunu) sağlamanız gerekir.
Emülasyonu yönetme
Emülatör başlatıldığında uygulamanızın kök dizininde bir apphosting.emulator.yaml
dosyası oluşturulur. Bu yapılandırma dosyası, üretimde kullanılan apphosting.yaml
dosyasıyla aynı şemaya sahiptir ancak kesinlikle yerel geliştirme için tasarlanmıştır. Varsayılan olarak, emülatör yapılandırmayı apphosting.yaml
dosyanızdan okur. Ancak apphosting.emulator.yaml
dosyası varsa bu dosyadaki yapılandırmalara öncelik verilir.
apphosting.emulator.yaml
dosyası, işlenip iş arkadaşlarıyla güvenli bir şekilde paylaşılacak şekilde tasarlanmıştır. Hassas verilerin yanlışlıkla kaynak depolarına gönderilmesini önlemek için apphosting.yaml
içindeki tüm gizli ortam değişkenleri apphosting.emulator.yaml
içinde de gizli olmalıdır. Üretim ve yerel geliştirme arasında değiştirilmesi gerekmeyen bir sır varsa (ör.Gemini API anahtarı) apphosting.emulator.yaml
'ya eklenmesi gerekmez. Bunun yerine ekibinize sırra erişim izni verin.
Uygulamanızda çok sayıda sır kullanılıyorsa (örneğin, üç farklı hizmet için API anahtarları ve üretim, hazırlık ve yerel geliştirme için farklı değerler) Cloud Secret Manager'ın ücretsiz katmanını aşabilir ve aylık olarak her ek sır için 0,06 ABD doları ödeyebilirsiniz. Bu ücreti ödememek için yerel yapılandırmayı kaynak kontrolü dışında yönetmeyi tercih ederseniz eski apphosting.local.yaml
dosyasını kullanabilirsiniz. apphosting.emulator.yaml
dosyasının aksine bu dosyanın, apphosting.yaml
içinde gizli değerler olan ortam değişkenleri için düz metin değerleri sağlamasına izin verilir.
Kullanıcılara veya gruplara sırlara erişim izni verme
apphosting.emulator.yaml
içinde depolanan gizli anahtarlar, emülatör başlatıldığında okunur. Bu, geliştirme ekibinizin gizli bilgiye erişmesi gerektiği anlamına gelir. E-posta ile bir kullanıcıya veya gruba sırra erişim izni vermek için apphosting:secrets:grantaccess
komutunu kullanabilirsiniz.
firebase apphosting:secrets:grantaccess test-api-key --emails my-team@my-company.com
Geçerli olduğu durumlarda, apphosting.emulator.yaml
üretim verilerine erişimi olmayan, küresel yan etkileri olamayan (e-posta gönderme, kredi kartlarından ödeme alma) ve/veya daha düşük kotalara sahip olan yalnızca test amaçlı anahtarlar kullanmayı düşünün. Bu, incelenmemiş kodun gerçek dünyada daha az sonuç doğurmasını sağlar.
Gizli bilgilere erişimi yönetmek için tek tek kullanıcılara erişim izni vermek yerine Google Gruplar'ı kullanmayı deneyin. Bu sayede, yeni üyeleri geliştirici ekibinize dahil etmek kolaylaşır. Çünkü gruba eklenen üyeler, ihtiyaç duydukları tüm sırlara erişebilir. Geliştiricilerin birbirleriyle iletişim kurduğu uygun bir grubunuz zaten olabilir. Google Grupları ile erişimi kontrol etmek, ekibinizden ayrılan geliştiricilerin e-posta grubundan kaldırıldıklarında tüm sırlara erişimini kaybetmesini de sağlar. Gizli, üretim verilerine veya gerçek dünyadaki yan etkilere erişebiliyorsa yine de anahtarınızı döndürmeniz ve firebase apphosting:secrets:set
ile yeni bir değer vermeniz uygun olabilir.
Emülatörü çalıştırma
firebase emulators:start
Bu işlem, App Hosting emülatörü de dahil olmak üzere firebase.json
dosyanızda tanımlanan tüm emülatörleri başlatır.