· kaynak Hacker News – Front Page (native)
AWS, test ve CI için resmi yerel API emülatörünü yayınladı
AWS, bir dizüstü bilgisayarda veya CI sunucusunda AWS API uç noktalarını sunan açık kaynaklı bir emülatör yayınladı; böylece kod, AWS hesabı veya ek hizmet ücreti olmadan emüle edilen servislere karşı test edilebiliyor.
AWS, servis API'lerini yerel bir makinede taklit eden resmi, açık kaynaklı bir emülatör yayınladı. GitHub'da aws/aws-emulator deposu olarak yayınlanan ve Hacker News'in ana sayfasında "AWS Sonunda Kendi AWS Emülatörünü Yaptı" başlığıyla öne çıkan proje, geliştiricilerin kodlarını AWS hesabı olmadan ve ek hizmet ücreti ödemeden, bir dizüstü bilgisayarda, bir geliştirme sunucusunda veya CI içinde emüle edilen AWS uç noktalarına karşı çalıştırmasını sağlıyor.
Nasıl çalışıyor
Projenin README'sine göre emülatör, bir AWS API uç noktası sunan yerel bir program. Grafik arayüzü yok: başlatıyorsunuz, AWS CLI'yi veya bir AWS SDK'yi AWS yerine kendi uç noktasına yönlendiren ortam değişkenlerini ayarlıyorsunuz ve kodunuzu her zamanki gibi çalıştırıyorsunuz. İstekler gerçek kaynaklar yerine emüle edilen kaynaklara düşüyor.
Rust testlerine yönelik bir embedded (gömülü) mod da var. Emülatörü bir dev-dependency olarak ekliyorsunuz ve HTTP client'ını doğrudan SDK client'ınıza bağlıyorsunuz — yönetilecek uç nokta URL'si, sertifika veya ortam değişkeni yok — ve her test için izole bir emülatör çalışıyor.
AWS, aracı kesinlikle geliştirme ve test için konumlandırıyor: üretim iş yükleri için değil, güvenlik testi için de değil. Emülatörün kendisi ek hizmet ücreti taşıyor; gerçek AWS kaynakları için yalnızca fiilen dağıtım yaptığınızda ödeme yapıyorsunuz.
Çalıştırmanın üç yolu
README üç hızlı başlangıç yolunu belgeliyor:
- AI kodlama agent'i ile: AWS agent toolkit üzerinden bir
aws-emulatorskill'i kurun (AWS CLI 2.35.0 veya üzeri gerekir) ve kurulumu agent'e bırakın — AWS'nin kodlama agent'lerini iş akışının bir parçası olarak gördüğünün önemli bir sinyali. - Server modu: Linux'ta RPM veya Debian paketini kurun ve
aws-emulatorkomutunu çalıştırın; Windows ve macOS'ta kısa bir Dockerfile'dan oluşturulmuş bir container çalıştırın. - Embedded mod: yukarıda açıklanan süreç içi Rust seçeneği.
Doğruluk açık şekilde izleniyor
Kapsam servise göre değişiyor. Her sürüm, emülatörün gerçek AWS ile ne kadar yakından eşleştiğini gösteren doğruluk (fidelity) puanları yayınlıyor ve bilinen eksikler, çalışmayanlar ve sonradan düzeltilenler için ayrı dizinler halinde deponun kendisinde tutuluyor. Bug raporları memnuniyetle karşılanıyor — ideal olarak servis, işlem, SDK ve sürüm, gönderilen istek ve yanıtın nasıl farklılaşı belirtilerek — ancak depo pull request kabul etmiyor.
100 GB'lık derleme uyarısı
Çoğu kullanıcı önceden derlenmiş bir paket kuracak, ancak kaynak kodundan derleme — ki embedded mod bunu gerektiriyor — daha ağır: Cargo içeren bir Rust toolchain, GCC veya clang gibi bir C derleyicisi, çok çekirdekli bir makine ve workspace her AWS servisi için bir crate tuttuğundan target dizini için en az 100 GB boş disk gerekiyor. Kaynaktan derleme Linux'ta (x86_64 ve aarch64) destekleniyor; Windows ve macOS kullanıcıları Docker yoluna yönlendiriliyor. Router, kendi imzalı bir sertifikayla 127.0.0.1:9297 adresinde HTTPS sunuyor. CI için README, projeler arasında tek bir CARGO_TARGET_DIR paylaşmayı, target dizinini önbelleğe almayı veya sccache kullanmayı ve emülatörü bir release commit'ine sabitlemeyi öneriyor.
Telemetri varsayılan olarak açık
Emülatör, aksi belirtilmedikçe kullanım verilerini topluyor ve AWS'ye bildiriyor. AWS, verilerin asgari düzeyde tutulduğunu — kayıtların hiçbir zaman istek veya yanıt içerikleri, kod, kimlik bilgileri veya kişisel veri içermediğini — ve üçüncü taraflarla paylaşılmadığını söylüyor. Telemetri --telemetry off ile süreç başına, EMULATOR_TELEMETRY=off ile shell başına, config.toml ayarı üzerinden kalıcı olarak veya embedded moddaki bir seçenekle kapatılabiliyor. Emülatörü gömen bir araç yayınlayan herkesten, kullanıcılarını telemetri hakkında bilgilendirmesi ve kapatma yolu sunması isteniyor.
Lisans izinli: proje için CC0 1.0 Universal, vendored framework crate'leri için Apache License 2.0.
Neden önemli
Gerçek AWS'ye karşı test yapmak her zaman sürtünmeye yol açtı: hesaplar, kimlik bilgileri, yavaş geri bildirim döngüleri ve yalnızca yıkılmak üzere kurulmuş kaynaklar için faturalar. Topluluk tarafından geliştirilen emülatörler bu boşluğu yıllardır dolduruyor — Hacker News başlığındaki "Sonunda" ifadesi bu bekleyişe bir gönderme — ama resmi bir araç hesabı değiştiriyor, çünkü API'leri tanımlayan satıcı aynı zamanda doğruluk puanları yayınlıyor ve eksikleri açık şekilde takip ediyor. Özellikle CI için yerel bir uç nokta; sıfır bulut maliyetiyle, sızacak kimlik bilgisi olmadan paralel, izole ve tekrarlanabilir test çalıştırmaları anlamına geliyor. Ve her test için taze bir izole emülatör sunan Rust öncelikli embedded mod, AWS'nin yerel testin nereye gittiğini düşündüğünü gösteriyor: client'leri sahte bir sunucuya yönlendirmekten deterministik süreç içi ikizlere doğru.
- #aws
- #cloud
- #testing
- #developer-tools
- #open-source