Akun Layanan

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 Cloud Console () dan memilih IAM & Admin > Akun layanan. (Pilih project jika diminta.)

Untuk membuat akun layanan baru, klik + CREATE SERVICE ACCOUNT link.

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 akun layanan Peran, 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 Cloud VM 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. Inisialisasi library dengan meneruskan project ID Cloud Anda (ganti my-project dengan project ID Anda):

import google.auth
import ee

credentials, project_id = google.auth.default()
ee.Initialize(credentials, project='my-project')

Melakukan autentikasi dengan kunci pribadi

Jika aplikasi Anda perlu melakukan autentikasi menggunakan kunci pribadi akun layanan (tidak direkomendasikan untuk lingkungan produksi tempat ADC dapat digunakan):

  1. Buat kunci pribadi untuk akun layanan:
    • Buka halaman Akun Layanan di Cloud Console.
    • Klik menu untuk akun (), lalu Buat kunci > JSON.
    • Download file kunci JSON.
  2. 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 tempat. Jika Anda salah menempatkan kunci pribadi, Anda dapat mencabut akses ke akun layanan dan membuat akun baru menggunakan Cloud Console. Lihat Membuat dan menghapus kunci akun layanan untuk mengetahui detailnya.
  3. Uji kode Python berikut dari tempat Anda menempatkan file .private-key.json (ganti my-project dengan project ID Google Cloud Anda):
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials, project='my-project')

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 terlebih dahulu mengubah cakupan akses VM untuk Akun Layanan Compute Engine menjadi "Izinkan akses penuh ke semua Cloud API". (Jika Anda menggunakan akun layanan default di Dataflow atau App Engine, langkah ini tidak diperlukan.)

Untuk melakukan autentikasi ke Earth Engine menggunakan akun layanan default, gunakan kode berikut (ganti my-project dengan project ID Google Cloud Anda):

from google.auth import compute_engine
import ee
credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine'])
ee.Initialize(credentials, project='my-project')

Menyiapkan akses REST API

Jika akun layanan akan melakukan komputasi menggunakan REST API, Anda harus memberinya izin tingkat project, khususnya peran Earth Engine Resource Viewer. Bergantung pada konfigurasi project Anda, Anda mungkin juga perlu memberikan peran Service Usage Consumer ke 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 dapat sangat sensitif terhadap perbedaan waktu. Jika Anda yakin telah menyiapkan semuanya dengan benar, periksa apakah jam komputer Anda disinkronkan dengan waktu jaringan.

Error: "Provided scope(s) are not authorized" 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.