Hizmet hesabı, son kullanıcıyla değil bir uygulamayla ilişkilendirilmiş bir hesaptır. Bir uygulama geliştiriyorsanız veya REST API'yi kullanıyorsanız Earth Engine'de kimlik doğrulaması yapmak için hizmet hesabı kullanmanız gerekebilir. Hizmet hesaplarıyla kimlik doğrulama hakkında daha fazla bilgi edinin.
Hizmet hesabı oluşturma
Henüz yapmadıysanız ilk olarak bir Google Cloud projesi oluşturun.
Cloud Console menüsüne () gidip IAM ve Yönetici > Hizmet hesapları'nı seçerek Cloud projenizin hizmet hesaplarını yönetebilirsiniz. (İstenirse projeyi seçin.)
Yeni bir hizmet hesabı oluşturmak için + HİZMET HESABI OLUŞTUR bağlantısını tıklayın.
App Engine projesi oluşturduysanız bu proje için varsayılan bir hizmet hesabınız (App Engine varsayılan hizmet hesabı) olabilir. Bir App Engine projesi oluşturuyorsanız hizmet hesabı Rolü için Proje > Düzenleyici'yi seçin.
Hizmet hesabını Earth Engine kullanacak şekilde yapılandırma
Tüm hizmet hesapları, App Engine uygulamanız veya Cloud sanal makineniz için kullanılan projeyle aynı olabilecek bir Cloud projesi içinde oluşturulur. Earth Engine'e erişmek için Cloud projesinin kaydedildiğinden ve projede Earth Engine API'nin etkinleştirildiğinden emin olun. Projedeki doğru izinlere sahip tüm hizmet hesapları Earth Engine'e erişebilir.
Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak Earth Engine'de kimlik doğrulama
Uygulama Varsayılan Kimlik Bilgileri (ADC), özel anahtarları manuel olarak yönetmeden katılımsız ortamlarda (ör. Cloud Run veya Compute Engine) kimlik doğrulama için önerilen yöntemdir.
import google.auth import ee credentials, project_id = google.auth.default() ee.Initialize(credentials, project='my-ee-project')
Özel anahtarla kimlik doğrulama
Uygulamanızın, hizmet hesabı özel anahtarı kullanılarak kimlik doğrulaması yapması gerekiyorsa (ADC'nin kullanılabildiği üretim ortamları için önerilmez):
-
Hizmet hesabı için özel anahtar oluşturun:
- Cloud Console'da Hizmet Hesapları sayfasına gidin.
- Hesabın menüsünü (), ardından Anahtar oluştur > JSON'ı tıklayın.
- JSON anahtar dosyasını indirin.
- Anahtar dosyanızı güvende tutun. Anahtar dosyası, programların hizmet hesabınız adına Google API'lerine erişmesine olanak tanıyan özel bir dosyadır. Özel anahtarınızı hiçbir zaman herkese açık bir yerde saklamayın. Özel anahtarınızı kaybederseniz Cloud Console'u kullanarak bir hizmet hesabına erişimi iptal edebilir ve yeni bir anahtar oluşturabilirsiniz. Ayrıntılar için Hizmet hesabı anahtarları oluşturma ve silme başlıklı makaleyi inceleyin.
-
.private-key.jsondosyasını koyduğunuz yerden aşağıdaki Python kodunu test edin:import ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials)
Başlatma işlemini hatasız bir şekilde gerçekleştirebiliyorsanız hizmet hesabınız kullanıma hazırdır.
Compute Engine'de varsayılan hizmet hesabını kullanma
Varsayılan bir hizmet hesabı kullanıyorsanız öncelikle Compute Engine hizmet hesabı için sanal makinenin erişim kapsamlarını "Tüm Cloud API'lerine tam erişime izin ver" olarak değiştirmeniz gerekir. (Dataflow veya App Engine'de varsayılan hizmet hesaplarını kullanıyorsanız bu adım gerekli değildir.)Varsayılan bir hizmet hesabı kullanarak Earth Engine'de kimlik doğrulaması yapmak için aşağıdaki kodu kullanın:
from google.auth import compute_engine import ee credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine']) ee.Initialize(credentials)
REST API erişimini ayarlama
Hizmet hesabı REST API'yi kullanarak hesaplama yapacaksa hesaba proje düzeyinde izin, özellikle de Earth Engine Kaynak Görüntüleyici rolü vermeniz gerekir. Proje yapılandırmanıza bağlı olarak, hizmet hesabına Hizmet Kullanımı Tüketicisi rolünü de vermeniz gerekebilir. Earth Engine'i kullanmak için gereken proje izinleri hakkında daha fazla bilgi edinmek üzere Erişim Denetimi sayfasına bakın.
Sorun giderme
Hata: invalid_grant
OAuth2, saat sapmasına karşı çok hassas olabilir. Her şeyi doğru şekilde ayarladığınızdan eminseniz bilgisayarınızın saatinin ağ saatiyle senkronize olup olmadığını kontrol edin.
Cloud Storage'a aktarırken "Belirtilen kapsamlar yetkili değil" hatası
Cloud Run görevinde çalıştırırken bu hatayı görürseniz kimlik bilgileri oluştururken (ör. google.auth.default(scopes=...) içinde) scopes bağımsız değişkenini ayarlamayın. Kapsamların belirtilmesi, bu ortamdaki varsayılan izinleri etkileyebilir.