บัญชีบริการ

บัญชีบริการคือ บัญชีที่เชื่อมโยงกับแอปพลิเคชัน ไม่ใช่ผู้ใช้ปลายทาง คุณอาจต้องใช้บัญชีบริการ เพื่อตรวจสอบสิทธิ์กับ Earth Engine หากคุณกำลังพัฒนาแอปหรือใช้ REST API ดูข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบสิทธิ์ด้วยบัญชีบริการ

สร้างบัญชีบริการ

ขั้นแรก ให้สร้างโปรเจ็กต์ Google Cloud หากยังไม่ได้สร้าง

คุณสามารถจัดการบัญชีบริการสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์ได้โดยไปที่เมนู Cloud Console () แล้วเลือก IAM และผู้ดูแลระบบ > บัญชีบริการ (เลือกโปรเจ็กต์หากระบบแจ้ง)

หากต้องการสร้างบัญชีบริการใหม่ ให้คลิกที่ลิงก์ + สร้างบัญชีบริการ

หากคุณสร้างโปรเจ็กต์ App Engine คุณอาจมีบัญชีบริการเริ่มต้น (บัญชีบริการเริ่มต้นของ App Engine) สำหรับโปรเจ็กต์นั้นอยู่แล้ว หากคุณกำลังตั้งค่าโปรเจ็กต์ App Engine ให้เลือก บทบาทของบัญชีบริการเป็น โปรเจ็กต์ > ผู้แก้ไข

กำหนดค่าบัญชีบริการให้ใช้ Earth Engine

ระบบจะสร้างบัญชีบริการทั้งหมดภายในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ ซึ่งอาจเป็นโปรเจ็กต์เดียวกับที่ใช้สำหรับแอป App Engine หรือ Cloud VM ตรวจสอบว่าได้ลงทะเบียนโปรเจ็กต์ Cloud เพื่อเข้าถึง Earth Engine แล้ว และได้เปิดใช้ Earth Engine API ในโปรเจ็กต์แล้ว บัญชีบริการทั้งหมดในโปรเจ็กต์ที่มี สิทธิ์ที่ถูกต้องจะเข้าถึง Earth Engine ได้

ตรวจสอบสิทธิ์กับ Earth Engine โดยใช้ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน

ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (ADC) เป็นวิธีที่แนะนำในการตรวจสอบสิทธิ์ในสภาพแวดล้อมที่ไม่มีผู้ดูแล (เช่น Cloud Run หรือ Compute Engine) โดยไม่ต้องจัดการคีย์ส่วนตัวด้วยตนเอง เริ่มต้นไลบรารีโดยส่งรหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์ (แทนที่ my-project ด้วย รหัสโปรเจ็กต์)

import google.auth
import ee

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

ตรวจสอบสิทธิ์ด้วยคีย์ส่วนตัว

หากแอปพลิเคชันต้องตรวจสอบสิทธิ์โดยใช้คีย์ส่วนตัวของบัญชีบริการ (ไม่แนะนำ สำหรับสภาพแวดล้อมการใช้งานจริงที่ใช้ ADC ได้) ให้ทำดังนี้

  1. สร้างคีย์ส่วนตัวสำหรับบัญชีบริการโดยทำดังนี้
    • ไปที่ หน้าบัญชีบริการ ใน Cloud Console
    • คลิกเมนูสำหรับบัญชี () แล้วเลือกสร้างคีย์ > JSON
    • ดาวน์โหลดไฟล์คีย์ JSON
  2. เก็บไฟล์คีย์ไว้ในที่ปลอดภัย ไฟล์คีย์เป็นไฟล์พิเศษที่อนุญาตให้โปรแกรมเข้าถึง Google API ในนามของบัญชีบริการของคุณ อย่าเก็บคีย์ส่วนตัวไว้ในที่สาธารณะ หากทำคีย์ส่วนตัวหาย คุณสามารถเพิกถอนสิทธิ์เข้าถึงบัญชีบริการและ สร้างบัญชีใหม่ได้โดยใช้ Cloud Console ดูรายละเอียดได้ที่ สร้างและลบคีย์บัญชีบริการ
  3. ทดสอบโค้ด Python ต่อไปนี้จากตำแหน่งที่คุณวางไฟล์ .private-key.json (แทนที่ my-project ด้วยรหัสโปรเจ็กต์ Google Cloud)
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials, project='my-project')

หากเริ่มต้นได้โดยไม่มีข้อผิดพลาด แสดงว่าบัญชีบริการพร้อมใช้งานแล้ว

ใช้บัญชีบริการเริ่มต้นใน Compute Engine

หากใช้ บัญชีบริการเริ่มต้น คุณต้อง แก้ไขขอบเขตการเข้าถึงของ VM สำหรับบัญชีบริการ Compute Engine เป็น "อนุญาตการเข้าถึง Cloud API ทั้งหมดโดยสมบูรณ์" ก่อน (หากใช้บัญชีบริการเริ่มต้นใน Dataflow หรือ App Engine คุณไม่จำเป็นต้องทำขั้นตอนนี้ )

หากต้องการตรวจสอบสิทธิ์กับ Earth Engine โดยใช้บัญชีบริการเริ่มต้น ให้ใช้โค้ดต่อไปนี้ (แทนที่ my-project ด้วยรหัสโปรเจ็กต์ Google Cloud):

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')

ตั้งค่าการเข้าถึง REST API

หากบัญชีบริการจะทำการคำนวณโดยใช้ REST API คุณต้องให้สิทธิ์ระดับโปรเจ็กต์แก่บัญชีดังกล่าว โดยเฉพาะบทบาทผู้ดูทรัพยากร Earth Engine นอกจากนี้ คุณอาจต้องให้บทบาทผู้ใช้บริการแก่บัญชีบริการด้วย ทั้งนี้ขึ้นอยู่กับการกำหนดค่าโปรเจ็กต์ ผู้ใช้บริการ ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ของโปรเจ็กต์ที่จำเป็นในการใช้ Earth Engine ได้ที่หน้า การควบคุมการเข้าถึง

การแก้ปัญหา

ข้อผิดพลาด: invalid_grant

OAuth2 อาจมีความไวต่อความคลาดเคลื่อนของนาฬิกามาก หากคุณมั่นใจว่าได้ตั้งค่าทุกอย่างถูกต้องแล้ว ให้ตรวจสอบว่านาฬิกาของคอมพิวเตอร์ซิงค์กับเวลาของเครือข่ายหรือไม่

ข้อผิดพลาด: "ขอบเขตที่ระบุไม่ได้รับอนุญาต" เมื่อส่งออกไปยัง Cloud Storage

หากคุณเห็นข้อผิดพลาดนี้เมื่อเรียกใช้ในงาน Cloud Run ให้งดเว้นการตั้งค่าอาร์กิวเมนต์ scopes เมื่อสร้างข้อมูลเข้าสู่ระบบ (เช่น ใน google.auth.default(scopes=...)) การระบุขอบเขตอาจรบกวนสิทธิ์เริ่มต้นในสภาพแวดล้อมนี้