ก่อนที่จะส่งคำขอไปยัง Earth Engine ผ่านไลบรารีของไคลเอ็นต์ได้ คุณต้องตรวจสอบสิทธิ์และใช้ข้อมูลเข้าสู่ระบบที่ได้เพื่อเริ่มต้นไคลเอ็นต์ Earth Engine
ตัวแก้ไขโค้ด Earth Engine และ JavaScript
การตรวจสอบสิทธิ์และการเริ่มต้นจะได้รับการจัดการโดยอัตโนมัติในตัวแก้ไขโค้ด คุณสามารถเลือกกำหนดเส้นทางคำขอผ่านโปรเจ็กต์ที่อยู่ในระบบคลาวด์ได้จากการเข้าสู่ระบบที่ด้านขวาบนของตัวแก้ไขโค้ด
หากคุณใช้ JavaScript API (นอกตัวแก้ไขโค้ด) ให้ใช้ตัวช่วยการตรวจสอบสิทธิ์ตัวใดตัวหนึ่งใน ee.data (เช่น ee.data.authenticateViaPopup()) ตามด้วย ee.initialize() ดังที่แสดงในตัวอย่างนี้
Python และบรรทัดคำสั่ง
ก่อนใช้ไลบรารีของไคลเอ็นต์ Earth Engine Python คุณต้องตรวจสอบสิทธิ์ (ยืนยันตัวตน) และใช้ข้อมูลเข้าสู่ระบบที่ได้เพื่อเริ่มต้นไคลเอ็นต์ Python ขั้นตอนการตรวจสอบสิทธิ์จะใช้โปรเจ็กต์ที่อยู่ในระบบคลาวด์เพื่อตรวจสอบสิทธิ์ และใช้สำหรับการใช้งานแบบไม่ชำระเงิน (ฟรี ไม่ใช่เชิงพาณิชย์) รวมถึงการใช้งานแบบชำระเงิน หากต้องการตรวจสอบสิทธิ์และเริ่มต้นใช้งาน ให้เรียกใช้
ee.Authenticate()
ee.Initialize(project='my-project')
ซึ่งจะเลือกโหมดการตรวจสอบสิทธิ์ที่ดีที่สุดสำหรับสภาพแวดล้อมของคุณก่อน และแจ้งให้คุณยืนยันการเข้าถึงสำหรับสคริปต์ หากมีข้อมูลเข้าสู่ระบบอยู่แล้ว ระบบจะนำมาใช้ซ้ำโดยอัตโนมัติ ให้เรียกใช้ ee.Authenticate(force=True) เพื่อสร้างข้อมูลเข้าสู่ระบบใหม่
ขั้นตอนการเริ่มต้นจะยืนยันว่ามีข้อมูลเข้าสู่ระบบที่ถูกต้อง ไม่ว่าจะสร้างจาก ee.Authenticate() หรือมีอยู่แล้วเป็นข้อมูลเข้าสู่ระบบเริ่มต้นของ Google จากนั้นจะเริ่มต้นไลบรารีของไคลเอ็นต์ Python ด้วยเมธอดที่เซิร์ฟเวอร์แบ็กเอนด์รองรับ คุณจะต้องระบุโปรเจ็กต์ที่คุณเป็นเจ้าของหรือมีสิทธิ์ในการใช้ ดูการตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์เพื่อลงทะเบียนโปรเจ็กต์และเปิดใช้ Earth Engine API โปรเจ็กต์นี้จะใช้สำหรับการดำเนินการทั้งหมดของ Earth Engine
ในบรรทัดคำสั่ง การเรียกที่เทียบเท่าคือ earthengine authenticate หากข้อมูลเข้าสู่ระบบหมดอายุหรือไม่ถูกต้อง คุณอาจต้องเรียกใช้ earthengine
authenticate --force การเรียกใช้บรรทัดคำสั่งจะเริ่มต้นในการเรียกแต่ละครั้ง และคุณสามารถใช้อาร์กิวเมนต์ --project เพื่อตั้งค่าโปรเจ็กต์ได้
นอกจากนี้ คุณยังกำหนดค่าโปรเจ็กต์สำหรับการเรียกใช้ในอนาคตทั้งหมดได้โดยเรียกใช้ earthengine
set_project {my-project} บรรทัดคำสั่งและ ee.Initialize() จะใช้ค่านี้
เมื่อใดก็ตามที่ไม่ได้ระบุโปรเจ็กต์โดยตรง หากใช้การตรวจสอบสิทธิ์ผ่าน gcloud (ดูด้านล่าง) ระบบจะใช้โปรเจ็กต์ที่ตั้งค่าโดย gcloud auth application-default
set-quota-project {my-project} เป็นกรณีสุดท้าย
รายละเอียดการตรวจสอบสิทธิ์
จุดประสงค์ของขั้นตอนการตรวจสอบสิทธิ์ Earth Engine คือการรับ "โทเค็น" ด้านความปลอดภัยจากบัญชีที่ลงชื่อเข้าใช้ ซึ่งสามารถจัดเก็บไว้เพื่อให้สคริปต์มีสิทธิ์เข้าถึงข้อมูลของคุณ เพื่อความปลอดภัย ระบบการตรวจสอบสิทธิ์ของ Google จะส่งโทเค็นดังกล่าวไปยังระบบที่สามารถทำให้ปลอดภัยได้เท่านั้น โปรดดูหมายเหตุทางเทคนิคด้านล่าง
เนื่องจากความละเอียดอ่อนของระบบที่เกี่ยวข้อง จึงมีวิธีดำเนินการที่แตกต่างกันไปตามสถานการณ์ของคุณ ตัวเลือกส่วนใหญ่จะควบคุมโดยพารามิเตอร์ auth_mode ไม่ว่าจะเป็น ee.Authenticate(auth_mode=...) หรือ earthengine authenticate --auth_mode=... ในบรรทัดคำสั่ง
โปรดทราบว่าหากมีข้อมูลเข้าสู่ระบบ Google อยู่แล้วในสภาพแวดล้อมของคุณ คุณอาจไม่จำเป็นต้องเรียกใช้ ee.Authenticate() เลย VM ของ Google Cloud, App Engine และสภาพแวดล้อมอื่นๆ จะให้ "ข้อมูลเข้าสู่ระบบแอมเบียนท์" ที่ใช้งานได้ และ gcloud auth
application-default login จะสร้างข้อมูลเข้าสู่ระบบดังกล่าวด้วย
อย่างไรก็ตาม เราขอแนะนำให้ใช้ ee.Authenticate() ที่จุดเริ่มต้นของสคริปต์ทั้งหมดเพื่อเพิ่มความเข้ากันได้ให้มากที่สุด เมื่อไม่มีพารามิเตอร์ auth_mode ระบบจะออกแบบมาให้ทำงานได้ในสถานการณ์ส่วนใหญ่ แต่ให้ทำตามรายละเอียดด้านล่างหากโหมดเริ่มต้นไม่ทำงาน
ระบบจะเลือกโหมดเริ่มต้นดังนี้
colabหากทำงานในสมุดบันทึก Google Colabnotebookหากทำงานใน Jupyter Notebook อื่นๆ ที่ไม่ใช่ Colablocalhostหากตรวจพบเว็บเบราว์เซอร์และไม่ได้ติดตั้งไบนารี gcloudgcloudมิเช่นนั้น สำหรับโหมดนี้ คุณจะต้องติดตั้ง gcloud
คู่มืออ้างอิงฉบับย่อและตาราง
คู่มือการตัดสินใจนี้จะสรุปตัวเลือกที่เป็นไปได้หากโหมดเริ่มต้นที่ ee.Authenticate() เลือกไว้ไม่ทำงาน เช่น หากคุณกำลังใช้งานในสภาพแวดล้อม Notebook อื่นๆ คุณอาจต้องระบุ notebook อย่างชัดเจน
- สภาพแวดล้อมในพื้นที่
- "ในเครื่อง" หมายความว่าคุณกำลังเรียกใช้โค้ดใน Python Shell หรือ Python Notebook ในเครื่องที่อยู่ตรงหน้าคุณ หรือพูดให้ชัดเจนยิ่งขึ้นก็คือในเครื่องเดียวกับที่เว็บเบราว์เซอร์ของคุณทำงานอยู่ ซึ่งรวมถึงสถานการณ์เดสก์ท็อประยะไกลที่ทั้ง Python และเบราว์เซอร์อยู่ในเครื่อง (ระยะไกล) เดียวกัน
- การใช้
auth_mode=localhostเป็นวิธีที่ง่ายที่สุด และระบบจะเลือกโดยค่าเริ่มต้นหากไม่ได้ติดตั้ง gcloud แต่สคริปต์จะทำงานในสภาพแวดล้อมภายในเครื่องเท่านั้น - นอกจากนี้ยังมี
auth_mode=gcloudและauth_mode=notebookด้วย
- สภาพแวดล้อมระยะไกล
- "ระยะไกล" หมายความว่าเบราว์เซอร์ของคุณอยู่ในเครื่องหนึ่ง (ในเครื่อง) แต่โค้ดของคุณทำงานอยู่ที่อื่น เช่น ในเวิร์กสเตชันระยะไกลหรือสมุดบันทึกบนเว็บ
- หากอยู่ใน Colab ให้ใช้
auth_mode=colabหรือใช้gcloudหากต้องการตั้งค่าscopesเพื่อเรียกใช้ API อื่นๆ - หากคุณติดตั้ง gcloud ได้ทั้งในเครื่องระยะไกลและเครื่องของคุณ ให้ใช้
auth_mode=gcloud - หากคุณใช้โปรเจ็กต์การตรวจสอบสิทธิ์ได้ (ดูด้านล่าง) ให้ใช้
auth_mode=notebook - หรือหากคุณไม่สามารถใช้โปรเจ็กต์หรือติดตั้ง gcloud หรือใช้ Colab หรือใช้เบราว์เซอร์ในเครื่องเดียวกัน ให้ทำดังนี้
- พูดคุยกับผู้ดูแลระบบ (อีกครั้ง) เกี่ยวกับการสร้างโปรเจ็กต์ ตัวอย่างเช่น
- ขอให้ผู้ดูแลระบบกำหนดค่าโปรเจ็กต์ให้คุณ (ในฐานะเจ้าของ ผู้แก้ไข หรือผู้แก้ไขการกำหนดค่า OAuth)
- หรือขอให้ผู้ดูแลระบบให้สิทธิ์คุณในการสร้างโปรเจ็กต์
ตารางนี้แสดงชุดค่าผสมของฟีเจอร์ที่แต่ละโหมดรองรับ
| สำหรับในพื้นที่หรือระยะไกล | ต้องมีโปรเจ็กต์ | ขอบเขตที่ตั้งค่าได้ | ต้องใช้ CLI ในเครื่อง | เจ้าของโปรเจ็กต์ | |
|---|---|---|---|---|---|
localhost |
local | Y | ได้ | ไม่ | N |
colab |
รีโมต | Y | ไม่ | ไม่ | N |
gcloud |
ทั้งคู่ | Y | ได้ | ไม่ | N |
notebook |
ทั้งคู่ | Y | ได้ | ไม่ | Y |
ข้อมูลเข้าสู่ระบบสำหรับบัญชีบริการและ Compute Engine
ee.Initialize() จะใช้ข้อมูลเข้าสู่ระบบ Earth Engine (ซึ่ง ee.Authenticate() จัดเก็บไว้ใน ~/.config/earthengine/credentials) หรือดึงข้อมูลเข้าสู่ระบบจาก google.auth.default() แต่หากจำเป็น คุณสามารถส่งอาร์กิวเมนต์ credentials= เพื่อใช้ข้อมูลเข้าสู่ระบบจากที่อื่น โดยข้ามค่าเริ่มต้นเหล่านี้ได้
หากคุณกำลังตรวจสอบสิทธิ์โค้ด Python ที่จะทำงานโดยไม่มีการควบคุมดูแล คุณอาจต้องตรวจสอบสิทธิ์ด้วยบัญชีบริการแทนบัญชีผู้ใช้ ดูเอกสารเหล่านี้เกี่ยวกับการใช้บัญชีบริการกับ Earth Engine วิธีอื่นๆ ได้แก่ authenticate_service_account ในโมดูลการตรวจสอบสิทธิ์ของ Colab และวิธีที่อธิบายไว้ในคู่มือ Cloud สำหรับการตรวจสอบสิทธิ์ในฐานะบัญชีบริการ
หากโค้ดทำงานใน Compute Engine VM ระบบจะสร้างบัญชีบริการเริ่มต้นสำหรับสภาพแวดล้อม ซึ่ง ee.Initialize() จะใช้โดยค่าเริ่มต้น คุณอาจต้องลงทะเบียนบัญชีบริการเพื่อใช้ Earth Engine หากโปรเจ็กต์ที่อยู่ในระบบคลาวด์ซึ่งใช้เริ่มต้น VM ไม่ได้ลงทะเบียนเพื่อใช้กับ Earth Engine (เชิงพาณิชย์หรือไม่ใช่เชิงพาณิชย์)
รายละเอียดเกี่ยวกับโหมดต่างๆ
auth_mode=colab ee.Authenticate() จะสร้างหรือรับข้อมูลเข้าสู่ระบบเริ่มต้นที่ Colab รองรับโดยเรียกใช้ colab.auth.authenticate_user() หากจำเป็น ข้อมูลเข้าสู่ระบบจะใช้ขอบเขต cloud-platform เสมอ และยังใช้เพื่อเรียกใช้ Cloud API อื่นๆ ได้ด้วย
auth_mode=gcloud วิธีนี้จะมอบสิทธิ์การตรวจสอบสิทธิ์ให้กับเครื่องมือ gcloud และเหมือนกับการเรียกใช้ gcloud auth application-default login ด้วยขอบเขต Earth Engine เริ่มต้น (earthengine, cloud-platform และ drive) หรือขอบเขตในอาร์กิวเมนต์ scopes โหมด gcloud ใช้ได้ทั้งในกรณีที่อยู่ในพื้นที่และระยะไกล
วิธีการทีละขั้นตอนสำหรับโหมด gcloud (กรณีในเครื่องและระยะไกล)
- ตรวจสอบว่าได้ติดตั้ง gcloud ในเครื่องแล้ว
- เรียกใช้
gcloud helpในเทอร์มินัล หากไม่ได้ติดตั้ง gcloud ให้ทำตามวิธีการเหล่านี้เพื่อติดตั้ง gcloud
- เรียกใช้
- เทอร์มินัลของเครื่องของคุณเอง
- เรียกใช้
earthengine authenticateในเทอร์มินัล - เอาต์พุตจากคำสั่งจะระบุว่ามีการใช้ gcloud เพื่อดึงข้อมูลเข้าสู่ระบบ
- หน้าต่างเบราว์เซอร์จะเปิดขึ้นและนำไปยังหน้าการเลือกบัญชี หากเบราว์เซอร์ไม่เปิดขึ้นโดยอัตโนมัติ ให้คลิก URL
- เรียกใช้
- เบราว์เซอร์: การเลือกบัญชี
- เลือกบัญชีที่ต้องการใช้สำหรับการตรวจสอบสิทธิ์
- เบราว์เซอร์: หน้าจอขอความยินยอม
- ระบุว่าคุณยินดีที่จะให้สิทธิ์เข้าถึงขอบเขตที่ขอหรือไม่ แล้วคลิก "อนุญาต"
- เบราว์เซอร์: หน้าจอยืนยัน
- เบราว์เซอร์จะแสดงหน้าเว็บที่ยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว และคำสั่ง
earthengine authenticateในหน้าต่างเทอร์มินัลจะรายงานว่า "บันทึกโทเค็นการให้สิทธิ์เรียบร้อยแล้ว" - ในกรณีที่อยู่ระยะไกล หน้าเว็บจะให้โค้ดเพื่อวางกลับลงในสภาพแวดล้อม Python
- เบราว์เซอร์จะแสดงหน้าเว็บที่ยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว และคำสั่ง
- ดำเนินการเริ่มต้นใช้งานต่อ
auth_mode=localhost นี่คือขั้นตอนที่คล้ายกับ gcloud สำหรับกรณีที่ไม่ได้ติดตั้ง gcloud โดยจะทำตามขั้นตอนเดียวกับ gcloud แต่ใช้ได้เฉพาะกับกรณีในเครื่องเท่านั้น คุณสามารถระบุหมายเลขพอร์ตอินเทอร์เน็ต (ไม่บังคับ) เช่น localhost:8086 หรือใช้ localhost:0 เพื่อเลือกพอร์ตโดยอัตโนมัติ พอร์ตเริ่มต้นคือ 8085
auth_mode=notebook โหมดนี้เป็นโหมดอเนกประสงค์ที่ออกแบบมาเพื่อทำงานในสถานการณ์ระยะไกลที่ไม่มีบรรทัดคำสั่งในเครื่อง ระบบจะนำคุณไปยังหน้า Notebook Authenticator ซึ่งคุณจะต้องเลือกหรือสร้าง "โปรเจ็กต์การตรวจสอบสิทธิ์" โปรดดูรายละเอียดและคู่มือการแก้ปัญหาด้านล่าง โปรเจ็กต์ที่ส่งไปยัง ee.Initialize() ไม่จำเป็นต้องตรงกับโปรเจ็กต์นี้ คุณสามารถใช้โปรเจ็กต์เดียวกันสำหรับการตรวจสอบสิทธิ์ขณะทำงานในโปรเจ็กต์ต่างๆ ในสมุดบันทึกที่ต่างกันได้ ขอแนะนำให้ส่งโปรเจ็กต์ไปยัง ee.Initialize() อย่างชัดเจน แต่ระบบจะใช้โปรเจ็กต์การตรวจสอบสิทธิ์โดยค่าเริ่มต้น
วิธีการทีละขั้นตอนสำหรับโหมด Notebook
- เบราว์เซอร์: Notebook
- ในเซลล์โค้ดของ Notebook ให้เรียกใช้โค้ดต่อไปนี้เพื่อเริ่มขั้นตอนการตรวจสอบสิทธิ์โดยใช้โหมด "Notebook"
คลิกลิงก์ในเอาต์พุตของเซลล์เพื่อเปิดหน้า Notebook Authenticator ในแท็บใหม่import ee ee.Authenticate()
- ในเซลล์โค้ดของ Notebook ให้เรียกใช้โค้ดต่อไปนี้เพื่อเริ่มขั้นตอนการตรวจสอบสิทธิ์โดยใช้โหมด "Notebook"
- เบราว์เซอร์: Notebook Authenticator
- ตรวจสอบว่าบัญชีผู้ใช้ที่ถูกต้องแสดงอยู่
- เลือกโปรเจ็กต์ Google Cloud ที่จะใช้สำหรับการตรวจสอบสิทธิ์ หากต้องการสร้างโปรเจ็กต์ใหม่ เราขอแนะนำให้ใช้รูปแบบการตั้งชื่อ "ee-xyz" โดย xyz คือชื่อผู้ใช้ Earth Engine ปกติของคุณ (หากเลือกหรือสร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ไม่ได้ โปรดดูส่วนการแก้ปัญหาด้านล่าง)
- คลิก Generate Token
- เบราว์เซอร์: การเลือกบัญชี
- ระบบจะแสดงหน้าการเลือกบัญชี คลิกบัญชีผู้ใช้ที่ต้องการให้สิทธิ์เข้าถึงจาก Notebook
- เบราว์เซอร์: หน้าคำเตือน
- หน้าคำเตือนจะปรากฏขึ้นเพื่อระบุว่า Google ไม่ได้สร้างแอป (เช่น โค้ดในสมุดบันทึก) คลิก "ต่อไป" เพื่อรับทราบ
- เบราว์เซอร์: หน้าจอขอความยินยอม
- ระบุว่าคุณยินดีที่จะให้สิทธิ์เข้าถึงขอบเขตที่ขอหรือไม่ แล้วคลิกดำเนินการต่อ
- เบราว์เซอร์: หน้าจอรหัสการให้สิทธิ์
- คัดลอกรหัสยืนยันการให้สิทธิ์
- เบราว์เซอร์: Notebook
- สลับกลับไปที่แท็บ Notebook แล้ววางรหัสยืนยันลงในเอาต์พุตเซลล์ของ Notebook
- เอาต์พุตของเซลล์ควรระบุว่า "บันทึกโทเค็นการให้สิทธิ์เรียบร้อยแล้ว"
- ดำเนินการเริ่มต้นใช้งานต่อ
โหมด Notebook มีพารามิเตอร์ quiet ที่ไม่ค่อยได้ใช้ ซึ่งหากตั้งค่าไว้ ระบบจะทำงานแบบ "ไม่โต้ตอบ" และไม่แสดงข้อความแจ้งให้คุณป้อนรหัสการให้สิทธิ์
แต่จะให้คำสั่งเพื่อเรียกใช้เพื่อบันทึกโค้ดแทน
โปรเจ็กต์การตรวจสอบสิทธิ์
คุณจะต้องเป็นเจ้าของ ผู้แก้ไข หรือผู้แก้ไขการกำหนดค่า OAuth ในโปรเจ็กต์การตรวจสอบสิทธิ์ที่ใช้ในโหมด Notebook ในหลายกรณี โดยเฉพาะในทีมขนาดเล็ก โปรเจ็กต์การตรวจสอบสิทธิ์ที่คุณใช้ในหน้า Notebook Authenticator อาจเป็นโปรเจ็กต์เดียวกับโปรเจ็กต์หลักที่คุณใช้สำหรับงานอื่นๆ
เนื่องจากข้อกังวลด้านความปลอดภัย "การกำหนดค่าไคลเอ็นต์ OAuth" ในโปรเจ็กต์การตรวจสอบสิทธิ์จึงเป็นการตั้งค่าแบบครั้งเดียว หากคุณหรือผู้ใช้รายอื่นตั้งค่าไคลเอ็นต์ OAuth ในโปรเจ็กต์ด้วยเหตุผลอื่นๆ ระบบจะนำออกไม่ได้ และคุณจะเห็นข้อผิดพลาดที่ระบุว่า "การกำหนดค่าไคลเอ็นต์ OAuth2 ที่เข้ากันไม่ได้" คุณจะต้องใช้โปรเจ็กต์อื่นสำหรับการตรวจสอบสิทธิ์ หรือใช้โหมด Colab, Localhost หรือ gcloud ด้านบน
รายละเอียดเกี่ยวกับขอบเขต
การตั้งค่าการตรวจสอบสิทธิ์เริ่มต้นของ Earth Engine จะรวมขอบเขตทั้งหมดที่ใช้ได้ ดังนั้นคุณจึงข้ามส่วนนี้ได้หากค่าเริ่มต้นตรงตามข้อกำหนดของคุณ
ขอบเขต Earth Engine: ขอบเขต OAuth 2.0 จะกำหนดและจำกัดชุดทรัพยากรและการดำเนินการที่แอปพลิเคชันได้รับอนุญาตให้เข้าถึงในนามของผู้ใช้ เมื่อใช้ OAuth เพื่อตรวจสอบสิทธิ์กับ Earth Engine คุณต้องขอขอบเขตอย่างน้อย 1 รายการต่อไปนี้
https://www.googleapis.com/auth/earthengine: สิทธิ์อ่านและเขียนในชิ้นงานและทรัพยากรของ Earth Engine จำเป็นสำหรับการสร้าง แก้ไข หรือลบเนื้อหา จัดการสิทธิ์ของเนื้อหา และเรียกใช้งานการส่งออกhttps://www.googleapis.com/auth/earthengine.readonly: สิทธิ์อ่านอย่างเดียวสำหรับชิ้นงาน Earth Engine
ทั้ง 2 ขอบเขตช่วยให้เรียกใช้สคริปต์และเรียกใช้การคำนวณได้ (เช่น การประเมินนิพจน์หรือการแสดงผลการแสดงข้อมูลผ่านภาพของแผนที่)
ขอบเขตของ Google Cloud และไดรฟ์: หากการค้นหาหรือสคริปต์ Earth Engine อ้างอิงข้อมูลหรือเนื้อหาภายนอก ข้อมูลเข้าสู่ระบบของคุณต้องมีขอบเขตที่เหมาะสมสำหรับบริการเหล่านั้นด้วย ดังนี้
- Cloud Storage (GCS) (เมื่ออ่านจากหรือเขียนไปยังที่เก็บข้อมูล Cloud Storage เช่น การโหลด GeoTIFF ที่เพิ่มประสิทธิภาพสำหรับระบบคลาวด์ (COG) หรือการส่งออกเอาต์พุตของงาน)
https://www.googleapis.com/auth/devstorage.full_controlhttps://www.googleapis.com/auth/devstorage.read_writehttps://www.googleapis.com/auth/devstorage.read_only
- BigQuery (BQ) (เมื่ออ่านตารางหรือเขียนการส่งออกไปยัง BigQuery)
https://www.googleapis.com/auth/bigquery
- Google ไดรฟ์ (เมื่อเข้าถึงหรือส่งออกข้อมูลไปยัง Google ไดรฟ์)
https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/drive.readonly
นอกจากนี้ Google Cloud ยังมีขอบเขตกว้างๆ ที่ครอบคลุมบริการทั้งหมดของ Google Cloud ดังนี้
- Cloud Platform (การเข้าถึงบริการ Google Cloud ในวงกว้าง ซึ่งครอบคลุม Earth Engine, Cloud Storage และ BigQuery โปรดทราบว่า Google ไดรฟ์เป็นบริการ Workspace แยกต่างหากและไม่อยู่ในขอบเขตเหล่านี้)
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/cloud-platform.read-only
ขอบเขตเริ่มต้น: ขอบเขตเริ่มต้นที่กำหนดค่าโดยทั้งตัวแก้ไขโค้ด Earth Engine และไลบรารีของไคลเอ็นต์ (เช่น ee.Authenticate()) จะรวมขอบเขตทั้งหมดต่อไปนี้ earthengine, cloud-platform และ drive (ดูรายละเอียดก่อนหน้านี้)
ดังนั้น การปรับแต่งขอบเขต (เช่น การใช้พารามิเตอร์ scopes ใน ee.Authenticate(scopes=[...])) จึงจำเป็นเฉพาะในกรณีที่คุณมีข้อจำกัดด้านความปลอดภัยหรือนโยบายขององค์กรที่เฉพาะเจาะจงซึ่งกำหนดให้จำกัดสิทธิ์
การแก้ปัญหา
ฉันควรทำอย่างไรหากสร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ไม่ได้
บางองค์กรจะควบคุมผู้ที่มีสิทธิ์สร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ หากคุณได้รับข้อผิดพลาดในหน้า Notebook Authenticator เมื่อพยายามสร้างโปรเจ็กต์ ให้ลองทำดังนี้
- ลองสร้างโปรเจ็กต์โดยตรงเพื่อยืนยันว่าคุณมีสิทธิ์ที่จำเป็นหรือไม่
- โปรดสอบถามผู้ดูแลระบบขององค์กรเพื่อดูว่ามีกระบวนการใดบ้างที่ใช้สร้างโปรเจ็กต์ได้
- สร้างโปรเจ็กต์จากบัญชีที่ไม่ใช่องค์กร และเพิ่มบัญชีที่คุณใช้สำหรับการทำงานเป็นเจ้าของโปรเจ็กต์ หมายเหตุ: บางองค์กรมีนโยบายความปลอดภัยที่ป้องกันไม่ให้เข้าถึงไคลเอ็นต์ OAuth จากโปรเจ็กต์ภายนอก
ข้อผิดพลาด: "Earth Engine API ไม่เคยใช้ในโปรเจ็กต์ XXX มาก่อนหรือถูกปิดใช้"
ก่อนอื่น ให้ตรวจสอบว่าคุณได้กำหนดค่าโปรเจ็กต์ใน ee.Initialize() หรือในบรรทัดคำสั่ง (โปรเจ็กต์เริ่มต้นที่ Cloud และ Colab มีให้จะไม่ได้เปิดใช้ Earth Engine) ประการที่ 2 ตรวจสอบว่า Earth Engine API เปิดใช้ในโปรเจ็กต์ของคุณ
ข้อผิดพลาด: "โปรเจ็กต์มีการกำหนดค่าไคลเอ็นต์ OAuth2 ที่เข้ากันไม่ได้"
โปรเจ็กต์ที่อยู่ในระบบคลาวด์จะมีการกำหนดค่าไคลเอ็นต์ OAuth2 ได้เพียงรายการเดียวเท่านั้น คุณสามารถตรวจสอบว่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์มีการกำหนดค่าไคลเอ็นต์ OAuth2 หรือไม่โดยตรวจสอบรหัสไคลเอ็นต์ OAuth 2.0 ในหน้าข้อมูลเข้าสู่ระบบ คุณต้องเลือกโปรเจ็กต์ที่อยู่ในระบบคลาวด์อื่นที่มีการกำหนดค่าที่เข้ากันได้ซึ่งตั้งค่าไว้แล้วโดย Notebook Authenticator หรือเลือกหรือสร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่ไม่มีไคลเอ็นต์ OAuth2 โปรแกรมตรวจสอบสิทธิ์จะกำหนดค่าโปรเจ็กต์นี้โดยอัตโนมัติ แต่ระบบ OAuth ไม่อนุญาตให้ผู้ใช้ลบการกำหนดค่า ดังนั้นคุณจึงต้องใช้โปรเจ็กต์อื่น โปรเจ็กต์นี้ไม่จำเป็นต้องเป็นโปรเจ็กต์เดียวกับที่ใช้สำหรับงาน Earth Engine อื่นๆ โปรดทราบว่าข้อผิดพลาดนี้จะไม่เกิดขึ้นในโหมด Colab
ข้อผิดพลาด: "gcloud ไม่สำเร็จ โปรดตรวจสอบข้อผิดพลาดด้านบนและติดตั้ง gcloud หากจำเป็น"
ข้อผิดพลาดนี้อาจเกิดขึ้นหากไม่ได้ติดตั้ง gcloud หรือไม่ได้อยู่ใน PATH นอกจากนี้ยังอาจเกิดขึ้นหากคุณเรียกใช้ ee.Authenticate(auth_mode='gcloud') จากภายในเซลล์โค้ดของ Notebook ให้ใช้ ee.Authenticate() แทน ซึ่งจะใช้การตรวจสอบสิทธิ์โหมด Notebook โดยค่าเริ่มต้น หากสร้างโปรเจ็กต์ไม่ได้ โปรดดูวิธีแก้ปัญหาด้านบน
ฉันควรทำอย่างไรหากไม่มีสิทธิ์เข้าถึงเครื่องภายในเพื่อติดตั้ง gcloud
หากคุณทำงานในสภาพแวดล้อมแบบเว็บเท่านั้นโดยไม่มีสิทธิ์เข้าถึงเทอร์มินัลในเครื่อง และยังคงต้องใช้เทอร์มินัลระยะไกล คุณยังคงเริ่มต้นเครื่องมือบรรทัดคำสั่งได้โดยเรียกใช้โหมด Notebook ด้วยการเรียกใช้คำสั่ง earthengine
authenticate --auth_mode=notebook
ข้อผิดพลาด 400: redirect_uri_mismatch
คุณอาจได้รับข้อผิดพลาดนี้หากตรวจสอบสิทธิ์ในเครื่องระยะไกลโดยไม่มีสิทธิ์เข้าถึงเว็บเบราว์เซอร์ ลองเพิ่ม --quiet หากเรียกใช้ earthengine authenticate จากบรรทัดคำสั่ง หรือ ee.Authenticate(quiet=True) หากใช้ไคลเอ็นต์ Python ซึ่งคุณจะต้องตรวจสอบสิทธิ์กับ gcloud จากเครื่องที่เข้าถึงเว็บเบราว์เซอร์ได้
ข้อผิดพลาด: "แอปพลิเคชันของคุณกำลังตรวจสอบสิทธิ์โดยใช้ข้อมูลรับรองเริ่มต้นของแอปพลิเคชันในเครื่อง earthengine.googleapis.com API ต้องใช้โปรเจ็กต์โควต้า ซึ่งไม่ได้ตั้งค่าไว้โดยค่าเริ่มต้น"
ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อ Earth Engine ไม่สามารถระบุรหัสโปรเจ็กต์ของคุณได้ หากตัวเลือกการแก้ปัญหาของ Google Cloud ไม่ได้ผล ให้ลองเรียกใช้ earthengine set_project YOUR_PROJECT_ID หรือ gcloud
auth application-default set-quota-project YOUR_PROJECT_ID
ข้อผิดพลาด: "ไม่มีขอบเขตที่จำเป็นสำหรับ [Cloud Storage / BigQuery]"
ข้อผิดพลาดนี้จะเกิดขึ้นเมื่อคำขอ Earth Engine เข้าถึงทรัพยากร Cloud Storage หรือ BigQuery แต่ข้อมูลเข้าสู่ระบบที่ใช้ในการเริ่มต้น Earth Engine ไม่มีขอบเขตที่จำเป็นสำหรับบริการนั้น (หรือขอบเขต cloud-platform ซึ่งครอบคลุมบริการ Google Cloud ทั้งหมด) ซึ่งมักจะเกิดขึ้นหากคุณปรับแต่งพารามิเตอร์ scopes ระหว่างการตรวจสอบสิทธิ์ (เช่น ระบุเฉพาะขอบเขต Earth Engine ให้กับ ee.Authenticate(scopes=[...])) หรือหากมีการสร้างข้อมูลเข้าสู่ระบบที่มีอยู่โดยไม่มีขอบเขตเหล่านั้น
คุณแก้ไขปัญหานี้ได้ 2 วิธีดังนี้
- ตรวจสอบสิทธิ์อีกครั้งด้วยขอบเขตเริ่มต้น: ข้อมูลเข้าสู่ระบบเริ่มต้นสำหรับ Earth Engine มีขอบเขต
cloud-platformซึ่งครอบคลุมทั้ง Cloud Storage และ BigQuery ตรวจสอบสิทธิ์อีกครั้งโดยใช้การตั้งค่าเริ่มต้น ดังนี้- ใน Python:
ee.Authenticate(force=True) - ในบรรทัดคำสั่ง:
earthengine authenticate --force
- ใน Python:
- รวมขอบเขตที่จำเป็น: หากสภาพแวดล้อมของคุณต้องปรับแต่งขอบเขต ให้ตรวจสอบว่ารายการ
scopesมีhttps://www.googleapis.com/auth/cloud-platformหรือขอบเขตบริการที่เฉพาะเจาะจง (เช่นhttps://www.googleapis.com/auth/devstorage.full_controlหรือhttps://www.googleapis.com/auth/devstorage.read_onlyสำหรับ Cloud Storage หรือhttps://www.googleapis.com/auth/bigqueryสำหรับ BigQuery)
ดูรายละเอียดเพิ่มเติมเกี่ยวกับขอบเขตที่ใช้ได้ที่หัวข้อรายละเอียดเกี่ยวกับขอบเขต
หมายเหตุทางเทคนิค
สำหรับผู้ที่สนใจด้านเทคนิค: ความจำเป็นในการใช้กลไกการสร้างข้อมูลเข้าสู่ระบบที่แตกต่างกันเหล่านี้เกิดจากความจำเป็นในการส่งข้อมูลเข้าสู่ระบบไปยังสภาพแวดล้อมที่รู้จักและเชื่อถือได้ ต่อไปนี้เป็นการพูดคุยสั้นๆ เกี่ยวกับกรณีต่างๆ ข้างต้น
- ก่อนหน้านี้มีโหมด
pasteซึ่งให้โทเค็นแก่คุณเพื่อวางที่ใดก็ได้ และโหมดนี้ถือว่ามีความเสี่ยงมากเกินไปและไม่มีให้บริการอีกต่อไป colab:auth.authenticate_user()จะแจ้งให้คุณแชร์ข้อมูลเข้าสู่ระบบกับไคลเอ็นต์การตรวจสอบสิทธิ์ "Colab" ซึ่งเป็นสภาพแวดล้อมของ Notebook เอง จากนั้นข้อมูลเหล่านี้จะพร้อมใช้งานผ่านgoogle.auth.default()และee.Initialize()จะนำไปใช้localhost: ระบบจะส่งข้อมูลเข้าสู่ระบบจากเบราว์เซอร์ไปยังพอร์ตในเครื่องของคุณ ในกรณีนี้ ความปลอดภัยแบบต้นทางถึงปลายทางจะขึ้นอยู่กับว่าเครื่องในพื้นที่ของคุณไม่ถูกบุกรุก ไคลเอ็นต์การตรวจสอบสิทธิ์ที่คุณจะเห็นคือ "Earth Engine Authenticator"gcloud: ตัวเลือกนี้จะใช้ขั้นตอน--launch-browserที่อธิบายไว้ในข้อมูลอ้างอิง gcloud และ--no-launch-browserหากอยู่ในเครื่องระยะไกล ไคลเอ็นต์การตรวจสอบสิทธิ์ที่ใช้คือ "Google Auth Library"notebook: เราสร้างไคลเอ็นต์การตรวจสอบสิทธิ์ใหม่สำหรับงานของคุณโดยเฉพาะ คุณจะเห็นอีเมลของคุณในหน้าความยินยอม ไคลเอ็นต์นี้ตั้งค่าเป็นโหมด "การพัฒนา" ซึ่งเป็นกรณีพิเศษที่อนุญาตให้ใช้โทเค็นโหมดวางแบบเก่า เราจำเป็นต้องใช้โปรเจ็กต์ของคุณเองสำหรับเรื่องนี้ เนื่องจากไม่สามารถแชร์ไคลเอ็นต์ดังกล่าวกับผู้ใช้จำนวนมากได้