การตรวจสอบสิทธิ์และการจัดเตรียม

ก่อนที่จะส่งคำขอไปยัง 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 Colab
  • notebook หากทำงานใน Jupyter Notebook อื่นๆ ที่ไม่ใช่ Colab
  • localhost หากตรวจพบเว็บเบราว์เซอร์และไม่ได้ติดตั้งไบนารี gcloud
  • gcloud มิเช่นนั้น สำหรับโหมดนี้ คุณจะต้องติดตั้ง 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 (กรณีในเครื่องและระยะไกล)

  1. ตรวจสอบว่าได้ติดตั้ง gcloud ในเครื่องแล้ว
    • เรียกใช้ gcloud help ในเทอร์มินัล หากไม่ได้ติดตั้ง gcloud ให้ทำตามวิธีการเหล่านี้เพื่อติดตั้ง gcloud
  2. เทอร์มินัลของเครื่องของคุณเอง
    • เรียกใช้ earthengine authenticate ในเทอร์มินัล
    • เอาต์พุตจากคำสั่งจะระบุว่ามีการใช้ gcloud เพื่อดึงข้อมูลเข้าสู่ระบบ
    • หน้าต่างเบราว์เซอร์จะเปิดขึ้นและนำไปยังหน้าการเลือกบัญชี หากเบราว์เซอร์ไม่เปิดขึ้นโดยอัตโนมัติ ให้คลิก URL
  3. เบราว์เซอร์: การเลือกบัญชี
    • เลือกบัญชีที่ต้องการใช้สำหรับการตรวจสอบสิทธิ์
  4. เบราว์เซอร์: หน้าจอขอความยินยอม
    • ระบุว่าคุณยินดีที่จะให้สิทธิ์เข้าถึงขอบเขตที่ขอหรือไม่ แล้วคลิก "อนุญาต"
  5. เบราว์เซอร์: หน้าจอยืนยัน
    • เบราว์เซอร์จะแสดงหน้าเว็บที่ยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว และคำสั่ง earthengine authenticate ในหน้าต่างเทอร์มินัลจะรายงานว่า "บันทึกโทเค็นการให้สิทธิ์เรียบร้อยแล้ว"
    • ในกรณีที่อยู่ระยะไกล หน้าเว็บจะให้โค้ดเพื่อวางกลับลงในสภาพแวดล้อม Python
  6. ดำเนินการเริ่มต้นใช้งานต่อ

auth_mode=localhost นี่คือขั้นตอนที่คล้ายกับ gcloud สำหรับกรณีที่ไม่ได้ติดตั้ง gcloud โดยจะทำตามขั้นตอนเดียวกับ gcloud แต่ใช้ได้เฉพาะกับกรณีในเครื่องเท่านั้น คุณสามารถระบุหมายเลขพอร์ตอินเทอร์เน็ต (ไม่บังคับ) เช่น localhost:8086 หรือใช้ localhost:0 เพื่อเลือกพอร์ตโดยอัตโนมัติ พอร์ตเริ่มต้นคือ 8085

auth_mode=notebook โหมดนี้เป็นโหมดอเนกประสงค์ที่ออกแบบมาเพื่อทำงานในสถานการณ์ระยะไกลที่ไม่มีบรรทัดคำสั่งในเครื่อง ระบบจะนำคุณไปยังหน้า Notebook Authenticator ซึ่งคุณจะต้องเลือกหรือสร้าง "โปรเจ็กต์การตรวจสอบสิทธิ์" โปรดดูรายละเอียดและคู่มือการแก้ปัญหาด้านล่าง โปรเจ็กต์ที่ส่งไปยัง ee.Initialize() ไม่จำเป็นต้องตรงกับโปรเจ็กต์นี้ คุณสามารถใช้โปรเจ็กต์เดียวกันสำหรับการตรวจสอบสิทธิ์ขณะทำงานในโปรเจ็กต์ต่างๆ ในสมุดบันทึกที่ต่างกันได้ ขอแนะนำให้ส่งโปรเจ็กต์ไปยัง ee.Initialize() อย่างชัดเจน แต่ระบบจะใช้โปรเจ็กต์การตรวจสอบสิทธิ์โดยค่าเริ่มต้น

วิธีการทีละขั้นตอนสำหรับโหมด Notebook

  1. เบราว์เซอร์: Notebook
    1. ในเซลล์โค้ดของ Notebook ให้เรียกใช้โค้ดต่อไปนี้เพื่อเริ่มขั้นตอนการตรวจสอบสิทธิ์โดยใช้โหมด "Notebook"
      import ee
      ee.Authenticate()
      คลิกลิงก์ในเอาต์พุตของเซลล์เพื่อเปิดหน้า Notebook Authenticator ในแท็บใหม่
  2. เบราว์เซอร์: Notebook Authenticator
    1. ตรวจสอบว่าบัญชีผู้ใช้ที่ถูกต้องแสดงอยู่
    2. เลือกโปรเจ็กต์ Google Cloud ที่จะใช้สำหรับการตรวจสอบสิทธิ์ หากต้องการสร้างโปรเจ็กต์ใหม่ เราขอแนะนำให้ใช้รูปแบบการตั้งชื่อ "ee-xyz" โดย xyz คือชื่อผู้ใช้ Earth Engine ปกติของคุณ (หากเลือกหรือสร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ไม่ได้ โปรดดูส่วนการแก้ปัญหาด้านล่าง)
    3. คลิก Generate Token
  3. เบราว์เซอร์: การเลือกบัญชี
    • ระบบจะแสดงหน้าการเลือกบัญชี คลิกบัญชีผู้ใช้ที่ต้องการให้สิทธิ์เข้าถึงจาก Notebook
  4. เบราว์เซอร์: หน้าคำเตือน
    • หน้าคำเตือนจะปรากฏขึ้นเพื่อระบุว่า Google ไม่ได้สร้างแอป (เช่น โค้ดในสมุดบันทึก) คลิก "ต่อไป" เพื่อรับทราบ
  5. เบราว์เซอร์: หน้าจอขอความยินยอม
    • ระบุว่าคุณยินดีที่จะให้สิทธิ์เข้าถึงขอบเขตที่ขอหรือไม่ แล้วคลิกดำเนินการต่อ
  6. เบราว์เซอร์: หน้าจอรหัสการให้สิทธิ์
    • คัดลอกรหัสยืนยันการให้สิทธิ์
  7. เบราว์เซอร์: Notebook
    • สลับกลับไปที่แท็บ Notebook แล้ววางรหัสยืนยันลงในเอาต์พุตเซลล์ของ Notebook
    • เอาต์พุตของเซลล์ควรระบุว่า "บันทึกโทเค็นการให้สิทธิ์เรียบร้อยแล้ว"
  8. ดำเนินการเริ่มต้นใช้งานต่อ

โหมด 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_control
    • https://www.googleapis.com/auth/devstorage.read_write
    • https://www.googleapis.com/auth/devstorage.read_only
  • BigQuery (BQ) (เมื่ออ่านตารางหรือเขียนการส่งออกไปยัง BigQuery)
    • https://www.googleapis.com/auth/bigquery
  • Google ไดรฟ์ (เมื่อเข้าถึงหรือส่งออกข้อมูลไปยัง Google ไดรฟ์)
    • https://www.googleapis.com/auth/drive
    • https://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-platform
    • https://www.googleapis.com/auth/cloud-platform.read-only

ขอบเขตเริ่มต้น: ขอบเขตเริ่มต้นที่กำหนดค่าโดยทั้งตัวแก้ไขโค้ด Earth Engine และไลบรารีของไคลเอ็นต์ (เช่น ee.Authenticate()) จะรวมขอบเขตทั้งหมดต่อไปนี้ earthengine, cloud-platform และ drive (ดูรายละเอียดก่อนหน้านี้) ดังนั้น การปรับแต่งขอบเขต (เช่น การใช้พารามิเตอร์ scopes ใน ee.Authenticate(scopes=[...])) จึงจำเป็นเฉพาะในกรณีที่คุณมีข้อจำกัดด้านความปลอดภัยหรือนโยบายขององค์กรที่เฉพาะเจาะจงซึ่งกำหนดให้จำกัดสิทธิ์

การแก้ปัญหา

ฉันควรทำอย่างไรหากสร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ไม่ได้

บางองค์กรจะควบคุมผู้ที่มีสิทธิ์สร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ หากคุณได้รับข้อผิดพลาดในหน้า Notebook Authenticator เมื่อพยายามสร้างโปรเจ็กต์ ให้ลองทำดังนี้

  1. ลองสร้างโปรเจ็กต์โดยตรงเพื่อยืนยันว่าคุณมีสิทธิ์ที่จำเป็นหรือไม่
  2. โปรดสอบถามผู้ดูแลระบบขององค์กรเพื่อดูว่ามีกระบวนการใดบ้างที่ใช้สร้างโปรเจ็กต์ได้
  3. สร้างโปรเจ็กต์จากบัญชีที่ไม่ใช่องค์กร และเพิ่มบัญชีที่คุณใช้สำหรับการทำงานเป็นเจ้าของโปรเจ็กต์ หมายเหตุ: บางองค์กรมีนโยบายความปลอดภัยที่ป้องกันไม่ให้เข้าถึงไคลเอ็นต์ 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
  • รวมขอบเขตที่จำเป็น: หากสภาพแวดล้อมของคุณต้องปรับแต่งขอบเขต ให้ตรวจสอบว่ารายการ 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: เราสร้างไคลเอ็นต์การตรวจสอบสิทธิ์ใหม่สำหรับงานของคุณโดยเฉพาะ คุณจะเห็นอีเมลของคุณในหน้าความยินยอม ไคลเอ็นต์นี้ตั้งค่าเป็นโหมด "การพัฒนา" ซึ่งเป็นกรณีพิเศษที่อนุญาตให้ใช้โทเค็นโหมดวางแบบเก่า เราจำเป็นต้องใช้โปรเจ็กต์ของคุณเองสำหรับเรื่องนี้ เนื่องจากไม่สามารถแชร์ไคลเอ็นต์ดังกล่าวกับผู้ใช้จำนวนมากได้