Akun layanan adalah akun yang terkait dengan aplikasi, bukan pengguna akhir. Anda mungkin perlu menggunakan akun layanan untuk melakukan autentikasi ke Earth Engine jika Anda mengembangkan aplikasi atau menggunakan REST API. Pelajari lebih lanjut cara melakukan autentikasi dengan akun layanan.
Membuat akun layanan
Pertama, buat project Google Cloud jika Anda belum melakukannya.
Anda dapat mengelola akun layanan untuk project Cloud dengan membuka menu Konsol Cloud () dan memilih IAM & Admin > Service accounts. (Pilih project jika diminta.)
Untuk membuat akun layanan baru, klik link + CREATE SERVICE ACCOUNT.
Jika Anda membuat project App Engine, Anda mungkin sudah memiliki akun layanan default (akun layanan default App Engine) untuk project tersebut. Jika Anda menyiapkan project App Engine, untuk Role akun layanan, pilih Project > Editor.
Mengonfigurasi akun layanan untuk menggunakan Earth Engine
Semua akun layanan dibuat dalam project Cloud, yang mungkin merupakan project yang sama dengan yang digunakan untuk aplikasi App Engine atau VM Cloud Anda. Pastikan project Cloud terdaftar untuk mengakses Earth Engine, dan Earth Engine API diaktifkan di project. Semua akun layanan dalam project dengan izin yang benar akan memiliki akses ke Earth Engine.
Melakukan autentikasi ke Earth Engine menggunakan Kredensial Default Aplikasi
Kredensial Default Aplikasi (ADC) adalah cara yang direkomendasikan untuk melakukan autentikasi di lingkungan tanpa pengawasan (seperti Cloud Run atau Compute Engine) tanpa mengelola kunci pribadi secara manual.
import google.auth import ee credentials, project_id = google.auth.default() ee.Initialize(credentials, project='my-ee-project')
Mengautentikasi dengan kunci pribadi
Jika aplikasi Anda perlu mengautentikasi menggunakan kunci pribadi akun layanan (tidak direkomendasikan untuk lingkungan produksi tempat ADC dapat digunakan):
-
Buat kunci pribadi untuk akun layanan:
- Buka halaman Akun Layanan di Konsol Cloud.
- Klik menu untuk akun (), lalu Create key > JSON.
- Download file kunci JSON.
- Jaga keamanan file kunci Anda. File kunci adalah file khusus yang memungkinkan program mengakses Google API atas nama akun layanan Anda. Jangan pernah menyimpan kunci pribadi Anda di tempat umum. Jika kunci pribadi Anda hilang, Anda dapat mencabut akses ke akun layanan dan membuat yang baru menggunakan Konsol Cloud. Lihat Membuat dan menghapus kunci akun layanan untuk mengetahui detailnya.
-
Uji kode Python berikut dari mana pun Anda menempatkan
file
.private-key.json:import ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials)
Jika Anda dapat melakukan inisialisasi tanpa error, akun layanan Anda siap digunakan.
Menggunakan akun layanan default di Compute Engine
Jika Anda menggunakan akun layanan default, Anda harus mengubah cakupan akses VM untuk Akun Layanan Compute Engine menjadi "Izinkan akses penuh ke semua Cloud API" terlebih dahulu. (Jika Anda menggunakan akun layanan default di Dataflow atau App Engine, langkah ini tidak diperlukan.)Untuk mengautentikasi ke Earth Engine menggunakan akun layanan default, gunakan kode berikut:
from google.auth import compute_engine import ee credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine']) ee.Initialize(credentials)
Menyiapkan akses REST API
Jika akun layanan akan melakukan komputasi menggunakan REST API, Anda perlu memberikan izin tingkat project, khususnya peran Pelihat Resource Earth Engine. Bergantung pada konfigurasi project, Anda mungkin juga perlu memberikan peran Service Usage Consumer kepada akun layanan. Lihat halaman Kontrol Akses untuk mengetahui informasi selengkapnya tentang izin project yang diperlukan untuk menggunakan Earth Engine.
Pemecahan masalah
Error: invalid_grant
OAuth2 bisa sangat sensitif terhadap perbedaan waktu. Jika Anda yakin telah menyiapkan semuanya dengan benar, periksa apakah jam komputer Anda disinkronkan dengan waktu jaringan.
Error: "Cakupan yang diberikan tidak diizinkan" saat mengekspor ke Cloud Storage
Jika Anda melihat error ini saat menjalankan tugas Cloud Run, jangan tetapkan argumen scopes saat membuat kredensial (misalnya, di google.auth.default(scopes=...)). Menentukan cakupan dapat mengganggu izin default di lingkungan ini.