บัญชีบริการ

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

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

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

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

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

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

สร้างคีย์ส่วนตัวสำหรับบัญชีบริการ

เมื่อสร้างบัญชีบริการแล้ว ให้คลิกเมนูของบัญชีนั้น () แล้วคลิกสร้างคีย์ > JSON ดาวน์โหลดไฟล์คีย์ JSON

เก็บไฟล์คีย์ไว้อย่างปลอดภัย

ไฟล์คีย์เป็นไฟล์พิเศษที่อนุญาตให้โปรแกรมเข้าถึง Google API ในนามของบัญชีบริการ ตรวจสอบว่าไม่มีใครสามารถเข้าถึงข้อมูลดังกล่าวโดยไม่ได้รับอนุญาต เนื่องจากบุคคลดังกล่าวจะเข้าถึง Google API ในนามของคุณได้ อย่าเก็บคีย์ส่วนตัวในที่สาธารณะ เช่น โฟลเดอร์ที่แชร์หรือที่เก็บข้อมูลต้นทาง หากทำคีย์ส่วนตัวหาย คุณสามารถเพิกถอนสิทธิ์เข้าถึงบัญชีบริการและสร้างบัญชีใหม่ได้ง่ายๆ โดยใช้ Cloud Console ดูรายละเอียดได้ในคู่มือนี้

ลงทะเบียนบัญชีบริการเพื่อใช้ Earth Engine

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

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

ใช้บัญชีบริการที่มีคีย์ส่วนตัว

วิธีตรวจสอบสิทธิ์เพื่อเข้าถึง Earth Engine โดยใช้บัญชีบริการ

  1. สร้างและดาวน์โหลดไฟล์คีย์ส่วนตัว JSON (.private-key.json) ของบัญชีบริการ
  2. ทดสอบโค้ด Python ต่อไปนี้จากตำแหน่งที่คุณวางไฟล์ .private-key.json
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

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

ฉันควรทำอย่างไรหากได้รับข้อผิดพลาด invalid_grant

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

สำหรับระบบ Ubuntu การเรียกให้ซิงค์นาฬิกาของคอมพิวเตอร์คือ

ntpdate ntp.ubuntu.com

สำหรับระบบที่ใช้ OS X ให้เปิดค่ากำหนดของระบบ > วันที่และเวลา > วันที่และเวลา (อีกครั้ง) แล้วเลือกตั้งค่าวันที่และเวลาโดยอัตโนมัติ

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

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

หากต้องการตรวจสอบสิทธิ์กับ Earth Engine โดยใช้บัญชีบริการเริ่มต้น ให้ใช้โค้ดต่อไปนี้

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

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

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