ก่อนที่จะส่งคำขอไปยัง Earth Engine ผ่านไลบรารี ไคลเอ็นต์ได้ คุณต้องตรวจสอบสิทธิ์และใช้ข้อมูลเข้าสู่ระบบที่ได้เพื่อเริ่มต้นไคลเอ็นต์ Earth Engine
โปรแกรมแก้ไขโค้ดของ Earth Engine และ JavaScript
ระบบจะจัดการการตรวจสอบสิทธิ์และการเริ่มต้นโดยอัตโนมัติในเครื่องมือแก้ไขโค้ด คุณเลือกกำหนดเส้นทางคำขอผ่านโปรเจ็กต์ Cloud จากการเข้าสู่ระบบที่ด้านขวาบนของโปรแกรมแก้ไขโค้ดได้
หากคุณใช้ JavaScript API (ภายนอกตัวแก้ไขโค้ด) ให้ใช้เครื่องมือช่วยในการตรวจสอบสิทธิ์อย่างใดอย่างหนึ่งใน ee.data (เช่น ee.data.authenticateViaPopup())
ตามด้วย ee.initialize() ดังที่แสดงในตัวอย่างนี้
Python และบรรทัดคำสั่ง
ก่อนใช้ไลบรารีของไคลเอ็นต์ Python ของ Earth Engine คุณต้องตรวจสอบสิทธิ์ (ยืนยันตัวตน) และใช้ข้อมูลเข้าสู่ระบบที่ได้เพื่อเริ่มต้นไคลเอ็นต์ Python ขั้นตอนการตรวจสอบสิทธิ์ใช้ Cloud Projects เพื่อตรวจสอบสิทธิ์ และใช้สำหรับการใช้งานแบบไม่ชำระเงิน (ฟรี ไม่ใช่เชิงพาณิชย์) รวมถึงการใช้งานแบบชำระเงิน หากต้องการ ตรวจสอบสิทธิ์และเริ่มต้น ให้เรียกใช้
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 Colab Notebooknotebookหากเรียกใช้ใน Jupyter Notebook อื่นที่ไม่ใช่ Colablocalhostหากตรวจพบเว็บเบราว์เซอร์และไม่ได้ติดตั้งไบนารี gcloudgcloudมิฉะนั้น สำหรับโหมดนี้ คุณจะต้องติดตั้ง gcloud
คู่มืออ้างอิงฉบับย่อและตาราง
คำแนะนำในการตัดสินใจนี้จะอธิบายตัวเลือกที่เป็นไปได้หากโหมดเริ่มต้นที่ee.Authenticate()เลือกใช้ไม่ได้
เช่น หากคุณใช้งานในสภาพแวดล้อม Notebook อื่นๆ คุณอาจต้องระบุ notebook อย่างชัดเจน
- สภาพแวดล้อมในพื้นที่
- "ในเครื่อง" หมายความว่าคุณ กำลังเรียกใช้โค้ดในเชลล์ Python หรือสมุดบันทึก Python ในเครื่องที่อยู่ ตรงหน้าคุณ หรือพูดให้เจาะจงกว่านั้นคือในเครื่องเดียวกันกับที่เว็บเบราว์เซอร์ ของคุณกำลังทำงานอยู่ ซึ่งรวมถึงสถานการณ์การใช้เดสก์ท็อประยะไกลที่ทั้ง Python และ เบราว์เซอร์อยู่ในเครื่องเดียวกัน (ระยะไกล)
- การใช้
auth_mode=localhostเป็นวิธีที่ง่ายที่สุด และระบบจะเลือกวิธีนี้โดยค่าเริ่มต้นหากไม่ได้ติดตั้ง gcloud แต่สคริปต์จะทำงานในสภาพแวดล้อมในเครื่องเท่านั้น - นอกจากนี้ยังมี
auth_mode=gcloudและauth_mode=notebookด้วย
- สภาพแวดล้อมระยะไกล
- "ระยะไกล" หมายความว่าเบราว์เซอร์ของคุณอยู่ในเครื่อง (ในเครื่อง) เครื่องหนึ่ง แต่โค้ดของคุณ ทำงานที่อื่น เช่น ในเวิร์กสเตชันระยะไกลหรือ 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 เกี่ยวกับการตรวจสอบสิทธิ์ในฐานะบัญชีบริการ
หากโค้ดทำงานใน VM ของ Compute Engine ระบบจะสร้างบัญชีบริการเริ่มต้นสำหรับสภาพแวดล้อม ซึ่ง ee.Initialize() จะใช้โดยค่าเริ่มต้น คุณอาจต้องลงทะเบียนบัญชีบริการเพื่อใช้ Earth
Engine
หากโปรเจ็กต์ Cloud ที่ใช้เริ่มต้น 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() ไม่จำเป็นต้องตรงกับโปรเจ็กต์นี้ คุณสามารถใช้โปรเจ็กต์เดียวกันสำหรับการตรวจสอบสิทธิ์ขณะทำงานในโปรเจ็กต์ต่างๆ ใน Notebook ที่แตกต่างกันได้ ขอแนะนำให้ส่งโปรเจ็กต์อย่างชัดเจนไปยัง ee.Initialize() แต่ระบบจะใช้โปรเจ็กต์การตรวจสอบสิทธิ์โดยค่าเริ่มต้น
วิธีการทีละขั้นตอนสำหรับโหมด Notebook
- เบราว์เซอร์: Notebook
- ในโค้ดเซลล์ของ Notebook ให้เรียกใช้โค้ดต่อไปนี้เพื่อเริ่ม
ขั้นตอนการตรวจสอบสิทธิ์โดยใช้โหมด "notebook"
คลิกลิงก์ในเอาต์พุตของเซลล์เพื่อเปิดหน้า Notebook Authenticator ในแท็บใหม่import ee ee.Authenticate()
- ในโค้ดเซลล์ของ Notebook ให้เรียกใช้โค้ดต่อไปนี้เพื่อเริ่ม
ขั้นตอนการตรวจสอบสิทธิ์โดยใช้โหมด "notebook"
- เบราว์เซอร์: Notebook Authenticator
- ตรวจสอบว่าบัญชีผู้ใช้ที่ถูกต้องแสดงอยู่
- เลือกโปรเจ็กต์ Google Cloud ที่จะใช้สำหรับการตรวจสอบสิทธิ์ หาก ต้องการสร้างโปรเจ็กต์ใหม่ เราขอแนะนำให้ใช้วิธีการตั้งชื่อ "ee-xyz" โดยที่ xyz คือชื่อผู้ใช้ Earth Engine ปกติของคุณ (หากเลือกหรือสร้างโปรเจ็กต์ Cloud ไม่ได้ โปรดดูส่วนการแก้ปัญหาด้านล่าง)
- คลิกสร้างโทเค็น
- เบราว์เซอร์: การเลือกบัญชี
- ระบบจะแสดงหน้าการเลือกบัญชี คลิกบัญชีผู้ใช้ ที่คุณต้องการให้สิทธิ์เข้าถึงจาก Notebook
- เบราว์เซอร์: หน้าคำเตือน
- หน้าคำเตือนจะปรากฏขึ้นเพื่อระบุว่า Google ไม่ได้สร้างแอป (เช่น โค้ดใน Notebook) คลิก "ดำเนินการต่อ" เพื่อรับทราบ
- เบราว์เซอร์: หน้าจอขอความยินยอม
- ระบุว่าคุณยินดีให้ขอบเขตที่ขอหรือไม่ แล้วคลิกต่อไป
- เบราว์เซอร์: หน้าจอรหัสการให้สิทธิ์
- คัดลอกรหัสยืนยันการให้สิทธิ์
- เบราว์เซอร์: 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) (เมื่ออ่านหรือเขียนไปยัง Bucket ของ Cloud Storage เช่น การโหลด GeoTIFF ที่เพิ่มประสิทธิภาพสำหรับ Cloud หรือการส่งออกเอาต์พุตของงาน)
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 Code
Editor และไลบรารีไคลเอ็นต์ (เช่น ee.Authenticate()) จะรวมขอบเขตทั้งหมดต่อไปนี้ earthengine, cloud-platform และ drive (ดูรายละเอียดก่อนหน้านี้)
ดังนั้น การปรับแต่งขอบเขต (เช่น การใช้พารามิเตอร์ scopes
ใน ee.Authenticate(scopes=[...])) จะจำเป็นก็ต่อเมื่อคุณมีข้อจำกัดด้านความปลอดภัยหรือนโยบายขององค์กรที่กำหนดให้จำกัดสิทธิ์
เท่านั้น
การแก้ปัญหา
ฉันควรทำอย่างไรหากสร้างโปรเจ็กต์ Cloud ไม่ได้
บางองค์กรควบคุมผู้ที่มีสิทธิ์สร้างโปรเจ็กต์ Cloud หากได้รับข้อผิดพลาดในหน้า Notebook Authenticator เมื่อพยายามสร้างโปรเจ็กต์ คุณลองทำสิ่งต่อไปนี้ได้
- ลองสร้างโปรเจ็กต์ โดยตรงเพื่อยืนยันว่าคุณมีสิทธิ์ที่จำเป็นหรือไม่
- โปรดติดต่อผู้ดูแลระบบขององค์กรเพื่อสอบถามเกี่ยวกับกระบวนการ ที่มีให้ในการสร้างโปรเจ็กต์
- สร้างโปรเจ็กต์จากบัญชีที่ไม่ใช่องค์กร แล้วเพิ่มบัญชีที่คุณใช้สำหรับงานเป็นเจ้าของโปรเจ็กต์ หมายเหตุ: องค์กรบางแห่งมี นโยบายด้านความปลอดภัยที่ป้องกันการเข้าถึงไคลเอ็นต์ OAuth จากโปรเจ็กต์ภายนอก
ข้อผิดพลาด: "ไม่เคยใช้ Earth Engine API ในโปรเจ็กต์ XXX มาก่อนหรือถูกปิดใช้"
ก่อนอื่น ตรวจสอบว่าคุณได้กำหนดค่าโปรเจ็กต์ใน ee.Initialize() หรือใน
บรรทัดคำสั่งแล้ว (โปรเจ็กต์เริ่มต้นที่ Cloud และ Colab จัดเตรียมให้จะไม่ได้เปิดใช้
Earth Engine) ประการที่สอง ตรวจสอบว่าโปรเจ็กต์
เปิดใช้ 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 จากเครื่องที่มีสิทธิ์เข้าถึงเว็บเบราว์เซอร์
ข้อผิดพลาด: "แอปพลิเคชันของคุณกำลังตรวจสอบสิทธิ์โดยใช้ข้อมูลรับรองเริ่มต้นของแอปพลิเคชันในเครื่อง API earthengine.googleapis.com ต้องใช้โปรเจ็กต์โควต้า ซึ่งไม่ได้ตั้งค่าไว้โดยค่าเริ่มต้น"
ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อ 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"gcloud: ใช้โฟลว์--launch-browserที่อธิบายไว้ในข้อมูลอ้างอิง gcloud และ--no-launch-browserหากอยู่ในเครื่องระยะไกล ไคลเอ็นต์การตรวจสอบสิทธิ์ที่ใช้คือ "Google Auth Library"notebook: เราจะสร้างไคลเอ็นต์การให้สิทธิ์ใหม่สำหรับงานของคุณโดยเฉพาะ คุณจะเห็นอีเมลในหน้าความยินยอม ไคลเอ็นต์นี้ตั้งค่าในโหมด "development" ซึ่งเป็นกรณีพิเศษที่อนุญาตให้ใช้โทเค็นโหมดวางแบบเก่า เราจำเป็นต้องใช้โปรเจ็กต์ของคุณเองสำหรับขั้นตอนนี้ เนื่องจากไคลเอ็นต์ดังกล่าวไม่สามารถแชร์กับผู้ใช้จำนวนมากได้