บัญชีบริการคือบัญชีที่เชื่อมโยงกับแอปพลิเคชัน ไม่ใช่ผู้ใช้ปลายทาง คุณอาจต้องใช้บัญชีบริการเพื่อตรวจสอบสิทธิ์กับ 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 โดยใช้บัญชีบริการ
- สร้างและดาวน์โหลดไฟล์คีย์ส่วนตัว JSON (
.private-key.json
) ของบัญชีบริการ - ทดสอบโค้ด 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 ได้ที่หน้าการควบคุมการเข้าถึง