যাচাইকরণ ও ইনিশিয়ালাইজেশন

ক্লায়েন্ট লাইব্রেরি-এর মাধ্যমে Earth Engine-এ অনুরোধ করার আগে, আপনাকে অবশ্যই যাচাই করতে হবে এবং Earth Engine ক্লায়েন্ট শুরু করার জন্য ফলাফল সংক্রান্ত ক্রেডেনশিয়াল ব্যবহার করতে হবে।

Earth Engine কোড এডিটর ও জাভাস্ক্রিপ্ট

কোড এডিটরে যাচাইকরণ ও ইনিশিয়ালাইজেশন অটোমেটিক ম্যানেজ করা হয়। Code Editor-এর উপরে ডানদিকে আপনার লগ-ইন থেকে ক্লাউড প্রোজেক্টের মাধ্যমে অনুরোধ পাঠানোর বিকল্প বেছে নিতে পারেন।

আপনি যদি JavaScript API (কোড এডিটরের বাইরে) ব্যবহার করেন, তাহলে ee.data-এ (যেমন, ee.data.authenticateViaPopup()) যাচাইকরণ সহায়কের মধ্যে একটি ব্যবহার করুন, তারপরে ee.initialize() ব্যবহার করুন, যেমন এই উদাহরণে দেখানো হয়েছে।

Python ও কমান্ড লাইন

Earth Engine Python ক্লায়েন্ট লাইব্রেরি ব্যবহার করার আগে, আপনাকে যাচাইকরণ করতে হবে (আপনার পরিচয় যাচাই করুন) এবং Python ক্লায়েন্ট শুরু করার জন্য ফলাফল সংক্রান্ত ক্রেডেনশিয়াল ব্যবহার করুন। যাচাইকরণ ফ্লো যাচাই করার জন্য Cloud প্রোজেক্ট ব্যবহার করে, এবং সেগুলি পেমেন্ট না করা (ফ্রি, অবাণিজ্যিক) ব্যবহারের পাশাপাশি পেমেন্ট করা ব্যবহারের জন্যও ব্যবহার করা হয়। যাচাইকরণ ও ইনিশিয়ালাইজ করতে, রান করুন

    ee.Authenticate()
    ee.Initialize(project='my-project')

এটি প্রথমে আপনার এনভায়রনমেন্টের জন্য সেরা যাচাইকরণ মোড বেছে নেবে এবং আপনার স্ক্রিপ্টের জন্য অ্যাক্সেস কনফার্ম করতে আপনাকে প্রম্পট করবে। ক্রেডেনশিয়াল আগে থেকেই থাকলে, সেগুলি অটোমেটিক আবার ব্যবহার করা হয় - নতুন ক্রেডেনশিয়াল তৈরি করতে ee.Authenticate(force=True) রান করুন।

শুরু করার ধাপটি যাচাই করে যে বৈধ ক্রেডেনশিয়াল আছে, যা ee.Authenticate() থেকে তৈরি করা হয়েছে অথবা Google ডিফল্ট ক্রেডেনশিয়াল হিসেবে আগে থেকেই আছে। তারপর, এটি ব্যাকএন্ড সার্ভার সমর্থন করে এমন পদ্ধতির মাধ্যমে Python ক্লায়েন্ট লাইব্রেরি শুরু করে। আপনাকে এমন একটি প্রোজেক্ট প্রদান করতে হবে যার মালিক আপনি অথবা সেটি ব্যবহার করার অনুমতি আপনার কাছে আছে। প্রোজেক্ট রেজিস্টার করতে এবং Earth Engine API চালু করতে Cloud প্রোজেক্ট সেট-আপ দেখুন। এই প্রোজেক্টটি 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()-এ কল করতে নাও হতে পারে। Google Cloud VM, App Engine এবং অন্যান্য এনভায়রনমেন্ট ব্যবহারযোগ্য "অ্যাম্বিয়েন্ট ক্রেডেনশিয়াল" প্রদান করে এবং gcloud auth application-default login-ও সেগুলি তৈরি করবে।

তবে, সর্বাধিক সামঞ্জস্যের জন্য সমস্ত স্ক্রিপ্টের শুরুতে ee.Authenticate() ব্যবহার করার সাজেশন দেওয়া হয়। auth_mode প্যারামিটার ছাড়াই, এটি বেশিরভাগ পরিস্থিতিতে কাজ করার জন্য ডিজাইন করা হয়েছে, তবে ডিফল্ট মোড কাজ না করলে নিচের বিবরণ অনুসরণ করুন। ডিফল্ট মোড এইভাবে বেছে নেওয়া হয়:

  • colab, Google Colab নোটবুকে রান করলে
  • notebook যদি অন্য কোনও নন-Colab Jupyter নোটবুকে রান করে
  • localhost যদি কোনও ওয়েব ব্রাউজার শনাক্ত করা হয় এবং কোনও gcloud বাইনারি ইনস্টল করা না থাকে
  • অন্যথায় gcloud। এই মোডের জন্য আপনাকে gcloud ইনস্টল করতে হবে।

দ্রুত রেফারেন্স গাইড ও টেবিল

ee.Authenticate()-এর বেছে নেওয়া ডিফল্ট মোড কাজ না করলে, এই সিদ্ধান্ত নির্দেশিকা সম্ভাব্য বিকল্পগুলি আউটলাইন করে। যেমন, আপনি যদি অন্য নোটবুক এনভায়রনমেন্টে রান করেন, তাহলে আপনাকে notebook স্পষ্টভাবে উল্লেখ করতে হতে পারে।

  • স্থানীয় পরিবেশ।
    • "লোকাল" মানে হল, আপনি আপনার সামনে থাকা মেশিনে Python শেল বা Python নোটবুকে কোড রান করছেন - অথবা আরও নির্দিষ্টভাবে বলতে গেলে, আপনার ওয়েব ব্রাউজার যে মেশিনে রান করছে, সেই একই মেশিনে। এর মধ্যে রিমোট-ডেস্কটপ পরিস্থিতি অন্তর্ভুক্ত যেখানে Python এবং ব্রাউজার একই (রিমোট) মেশিনে থাকে।
    • auth_mode=localhost ব্যবহার করা সবচেয়ে সহজ এবং gcloud ইনস্টল করা না থাকলে এটি ডিফল্ট হিসেবে বেছে নেওয়া হবে, তবে আপনার স্ক্রিপ্ট শুধুমাত্র লোকাল এনভায়রনমেন্টে কাজ করবে।
    • এছাড়াও, auth_mode=gcloud ও auth_mode=notebook উপলভ্য।
  • রিমোট এনভায়রনমেন্ট।
    • "রিমোট" মানে হল আপনার ব্রাউজার একটি (লোকাল) মেশিনে আছে কিন্তু আপনার কোড অন্য কোথাও চলছে, যেমন রিমোট ওয়ার্কস্টেশন বা ওয়েব-ভিত্তিক নোটবুকে।
    • Colab-এ থাকলে, auth_mode=colab ব্যবহার করুন; অথবা অন্য API কল করার জন্য scopes সেট করতে হলে gcloud ব্যবহার করুন।
    • আপনি রিমোট মেশিন ও লোকাল মেশিন, দুটিতেই gcloud ইনস্টল করতে পারলে, auth_mode=gcloud ব্যবহার করুন।
    • আপনি যদি কোনও যাচাইকরণ প্রোজেক্ট ব্যবহার করতে পারেন (নিচে দেখুন), তাহলে auth_mode=notebook ব্যবহার করুন।
    • অন্যথায়, আপনি যদি কোনও প্রোজেক্ট ব্যবহার করতে না পারেন বা gcloud ইনস্টল করতে না পারেন অথবা Colab ব্যবহার করতে না পারেন অথবা একই মেশিনে ব্রাউজার ব্যবহার করতে না পারেন:
    • প্রোজেক্ট তৈরি করার ব্যাপারে অ্যাডমিনিস্ট্রেটরের সাথে (আবার) কথা বলুন। যেমন:
      • অ্যাডমিনিস্ট্রেটরকে আপনার জন্য একটি প্রোজেক্ট কনফিগার করতে বলুন (মালিক বা এডিটর বা OAuth কনফিগারেশন এডিটর হিসেবে)
      • অথবা প্রোজেক্ট তৈরি করার অনুমতি দেওয়ার জন্য অ্যাডমিনিস্ট্রেটরকে অনুরোধ করুন।

এই সারণী থেকে জানা যায় যে প্রতিটি মোডে ফিচারের কোন কোন কম্বিনেশন কাজ করে।

লোকাল নাকি রিমোট? প্রোজেক্ট প্রয়োজন স্কোপ সেট করা যাবে লোকাল CLI প্রয়োজন প্রোজেক্টের মালিক
localhost স্থানীয় হ্যাঁ হ্যাঁ না না
colab রিমোট হ্যাঁ না না না
gcloud উভয়কেই হ্যাঁ হ্যাঁ না না
notebook উভয়কেই হ্যাঁ হ্যাঁ না হ্যাঁ

পরিষেবা অ্যাকাউন্ট এবং Compute Engine-এর জন্য ক্রেডেনশিয়াল

ee.Initialize() Earth Engine ক্রেডেনশিয়াল (যা ee.Authenticate() ~/.config/earthengine/credentials-এ স্টোর করে) ব্যবহার করবে অথবা google.auth.default() থেকে ক্রেডেনশিয়াল ফিরিয়ে আনবে, তবে প্রয়োজন হলে আপনি credentials= আর্গুমেন্ট পাস করে অন্য কোথাও থেকে ক্রেডেনশিয়াল ব্যবহার করতে পারবেন, এই ডিফল্ট বাইপাস করে।

আপনি যদি Python কোড যাচাই করেন যা আনঅ্যাটেন্ডেড রান করবে, তাহলে আপনি ব্যবহারকারীর অ্যাকাউন্টের পরিবর্তে পরিষেবা অ্যাকাউন্ট দিয়ে যাচাই করতে চাইতে পারেন। Earth Engine-এর সাথে পরিষেবা অ্যাকাউন্ট ব্যবহার করার জন্য এই ডকুমেন্ট দেখুন। অন্যান্য পদ্ধতির মধ্যে Colab auth মডিউলে authenticate_service_account এবং পরিষেবা অ্যাকাউন্ট হিসেবে যাচাই করার জন্য Cloud নির্দেশিকায় বর্ণিত পদ্ধতি অন্তর্ভুক্ত।

আপনার কোড Compute Engine VM-এ রান করলে, এনভায়রনমেন্টের জন্য একটি ডিফল্ট পরিষেবা অ্যাকাউন্ট তৈরি করা হয়, যা ee.Initialize() ডিফল্ট হিসেবে ব্যবহার করবে। VM যে ক্লাউড প্রোজেক্টের মাধ্যমে শুরু করা হয়েছে সেটি Earth Engine-এর (কমার্শিয়াল বা নন-কমার্শিয়াল) সাথে ব্যবহারের জন্য রেজিস্টার করা না থাকলে, আপনাকে Earth Engine ব্যবহার করার জন্য পরিষেবা অ্যাকাউন্ট রেজিস্টার করতে হতে পারে।

মোড সম্পর্কে বিবরণ

auth_mode=colab. ee.Authenticate(), Colab-এ কাজ করে এমন ডিফল্ট ক্রেডেনশিয়াল তৈরি করবে বা পাবে, প্রয়োজন হলে colab.auth.authenticate_user() রান করে। ক্রেডেনশিয়াল সবসময় cloud-platform স্কোপ ব্যবহার করে এবং অন্যান্য Cloud API কল করার জন্যও ব্যবহার করা যেতে পারে।

auth_mode=gcloud. এটি gcloud টুলে যাচাইকরণ ডেলিগেট করে এবং ডিফল্ট Earth Engine স্কোপ (earthengine, cloud-platform এবং drive) বা scopes আর্গুমেন্টের স্কোপ সহ gcloud auth application-default login রান করার মতোই। 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 ব্যবহার করুন। ডিফল্ট পোর্ট হল ৮০৮৫।

auth_mode=notebook. এটি একটি সাধারণ-উদ্দেশ্য মোড যা রিমোট পরিস্থিতিতে কাজ করার জন্য ডিজাইন করা হয়েছে যেখানে স্থানীয় কমান্ড লাইনগুলি উপলভ্য নয়। এটি আপনাকে Notebook Authenticator পৃষ্ঠায় নিয়ে যায় যেখানে আপনাকে একটি "যাচাইকরণ প্রোজেক্ট" বেছে নিতে বা তৈরি করতে হবে - নিচে বিবরণ ও সমস্যার সমাধানকরণ নির্দেশিকা দেখুন। ee.Initialize()-এ পাস করা প্রোজেক্টের সাথে এটি ম্যাচ করার প্রয়োজন নেই - আপনি বিভিন্ন নোটবুকে বিভিন্ন প্রোজেক্টে কাজ করার সময় যাচাইকরণের জন্য একই প্রোজেক্ট রাখতে পারেন। ee.Initialize()-এ স্পষ্টভাবে একটি প্রোজেক্ট পাস করার সাজেশন দেওয়া হয়, তবে ডিফল্ট হিসেবে যাচাইকরণ প্রোজেক্ট ব্যবহার করা হবে।

নোটবুক মোডের জন্য স্টেপ-বাই-স্টেপ নির্দেশাবলী

  1. ব্রাউজার: Notebook
    1. নোটবুক কোড সেলে, "নোটবুক" মোড ব্যবহার করে যাচাইকরণ ফ্লো শুরু করতে নিম্নলিখিত কোডটি রান করুন।
      import ee
      ee.Authenticate()
      নতুন ট্যাবে Notebook Authenticator পৃষ্ঠা খুলতে, সেল আউটপুটে দেখানো লিঙ্কে ক্লিক করুন।
  2. ব্রাউজার: Notebook Authenticator
    1. সঠিক ব্যবহারকারীর অ্যাকাউন্ট তালিকাভুক্ত করা হয়েছে কিনা তা যাচাই করুন।
    2. যাচাইকরণের জন্য ব্যবহার করতে Google Cloud প্রোজেক্ট বেছে নিন। আপনি নতুন প্রোজেক্ট তৈরি করতে চাইলে, আমরা "ee-xyz" নাম দেওয়ার কনভেনশন সাজেস্ট করি, যেখানে xyz হল আপনার সাধারণ Earth Engine ইউজারনেম। (আপনি ক্লাউড প্রোজেক্ট বেছে নিতে বা তৈরি করতে না পারলে, নিচে সমস্যার সমাধানকরণ বিভাগ দেখুন।)
    3. 'টোকেন জেনারেট করুন' বিকল্পে ক্লিক করুন।
  3. ব্রাউজার: অ্যাকাউন্ট বেছে নেওয়া
    • আপনাকে অ্যাকাউন্ট বেছে নেওয়ার পৃষ্ঠা দেখানো হবে। নোটবুক থেকে আপনি যে ব্যবহারকারীর অ্যাকাউন্টকে অ্যাক্সেস দিতে চান সেটিতে ক্লিক করুন।
  4. ব্রাউজার: সতর্কতার পৃষ্ঠা
    • একটি সতর্কতামূলক পৃষ্ঠা দেখানো হয়, যা ইঙ্গিত করে যে Google অ্যাপটি তৈরি করেনি (অর্থাৎ, নোটবুকের কোড)। স্বীকার করতে 'চালিয়ে যান' বিকল্পে ক্লিক করুন।
  5. ব্রাউজার: সম্মতি সংক্রান্ত স্ক্রিন
    • আপনি অনুরোধ করা স্কোপের অনুমতি দিতে ইচ্ছুক কিনা তা জানান এবং চালিয়ে যান বিকল্পে ক্লিক করুন।
  6. ব্রাউজার: অথরাইজেশন কোড স্ক্রিন
    • অনুমোদন যাচাইকরণ কোড কপি করুন
  7. ব্রাউজার: Notebook
    • নোটবুক ট্যাবে ফিরে যান এবং নোটবুক সেল আউটপুটে যাচাইকরণ কোডটি পেস্ট করুন।
    • সেল আউটপুটে "অথরাইজেশন টোকেন সেভ করা হয়েছে।" লেখাটি দেখানো উচিত।
  8. শুরু করার প্রসেস চালিয়ে যান।

Notebook মোডে খুব কম ব্যবহৃত quiet প্যারামিটার আছে: সেট করা থাকলে, এটি "নন-ইন্টার‍্যাক্টিভ" হিসেবে চলে এবং প্রম্পট করে না ও আপনার অথেন্টিকেশন কোড লেখার জন্য অপেক্ষা করে না। পরিবর্তে, এটি কোড সেভ করার জন্য রান করার একটি কমান্ড দেয়।

যাচাইকরণ প্রোজেক্ট

আপনাকে নোটবুক মোডে ব্যবহৃত যাচাইকরণ প্রোজেক্টের মালিক, এডিটর বা OAuth কনফিগারেশন এডিটর হতে হবে। অনেক ক্ষেত্রে, বিশেষ করে ছোট টিমের জন্য, Notebook Authenticator পৃষ্ঠায় আপনি যে যাচাইকরণ প্রোজেক্ট ব্যবহার করেন, সেটি অন্যান্য কাজের জন্য ব্যবহার করা প্রাথমিক প্রোজেক্টের মতোই হতে পারে।

নিরাপত্তা সংক্রান্ত সমস্যার কারণে, যাচাইকরণ প্রোজেক্টে "OAuth ক্লায়েন্ট কনফিগারেশন" একবারই সেট-আপ করা যায়। আপনি বা অন্য ব্যবহারকারী অন্য কোনও কারণে প্রোজেক্টে OAuth ক্লায়েন্ট সেট-আপ করলে, এটি সরানো যাবে না এবং আপনি "অসামঞ্জস্যপূর্ণ OAuth2 ক্লায়েন্ট কনফিগারেশন" নামে একটি সমস্যার মেসেজ দেখতে পাবেন। যাচাইকরণের জন্য আপনাকে অন্য কোনও প্রোজেক্ট ব্যবহার করতে হবে অথবা উপরে উল্লেখ করা colab, localhost বা gcloud মোড ব্যবহার করতে হবে।

স্কোপ সংক্রান্ত বিবরণ

Earth Engine-এর ডিফল্ট যাচাইকরণ সেটিংসে উপলভ্য সব স্কোপ অন্তর্ভুক্ত থাকে, তাই ডিফল্ট সেটিংস আপনার প্রয়োজনীয়তা পূরণ করলে আপনি এই বিভাগটি এড়িয়ে যেতে পারেন।

Earth Engine স্কোপ: একটি OAuth 2.0 স্কোপ রিসোর্স ও অপারেশনের সেটকে সংজ্ঞায়িত ও সীমাবদ্ধ করে, যা কোনও অ্যাপ্লিকেশনকে ব্যবহারকারীর হয়ে অ্যাক্সেস করার অনুমতি দেওয়া হয়। Earth Engine-এর সাথে যাচাই করার জন্য OAuth ব্যবহার করলে, আপনাকে নিম্নলিখিত এক বা একাধিক স্কোপের জন্য অনুরোধ করতে হবে:

  • https://www.googleapis.com/auth/earthengine: Earth Engine অ্যাসেট ও রিসোর্স পড়ার ও লেখার অ্যাক্সেস। অ্যাসেট তৈরি, পরিবর্তন বা মুছে ফেলা, অ্যাসেটের অনুমতি ম্যানেজ করা এবং এক্সপোর্ট টাস্ক চালানোর জন্য প্রয়োজন।
  • https://www.googleapis.com/auth/earthengine.readonly: Earth Engine অ্যাসেট শুধুমাত্র দেখার অ্যাক্সেস।

উভয় স্কোপই স্ক্রিপ্ট এক্সিকিউট করা এবং কম্পিউটেশন রান করার (যেমন এক্সপ্রেশন মূল্যায়ন করা বা ম্যাপ ভিজ্যুয়ালাইজেশন রেন্ডার করা) অনুমতি দেয়।

Google Cloud এবং Drive স্কোপ: আপনার Earth Engine কোয়েরি বা স্ক্রিপ্ট এক্সটার্নাল ডেটা বা অ্যাসেট রেফারেন্স করলে, আপনার ক্রেডেনশিয়ালে অবশ্যই সেইসব পরিষেবার জন্য উপযুক্ত স্কোপ অন্তর্ভুক্ত থাকতে হবে:

  • Cloud Storage (GCS) (Cloud Storage বাকেট থেকে পড়ার বা সেখানে লেখার সময়, যেমন Cloud Optimized GeoTIFFs (COGs) লোড করা বা টাস্ক আউটপুট এক্সপোর্ট করা):
    • 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 Drive (Google Drive-এ ডেটা অ্যাক্সেস বা এক্সপোর্ট করার সময়):
    • 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 Drive হল একটি আলাদা Workspace পরিষেবা এবং এই স্কোপের মধ্যে পড়ে না):
    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud-platform.read-only

ডিফল্ট স্কোপ: Earth Engine Code Editor এবং ক্লায়েন্ট লাইব্রেরি (যেমন ee.Authenticate()) উভয়ের দ্বারা কনফিগার করা ডিফল্ট স্কোপে এইসব স্কোপ অন্তর্ভুক্ত থাকে: earthengine, cloud-platform এবং drive (বিস্তারিত জানতে আগে দেখুন)। ফলস্বরূপ, স্কোপ কাস্টমাইজেশন (যেমন, ee.Authenticate(scopes=[...])-এ scopes প্যারামিটার ব্যবহার করা) শুধুমাত্র তখনই প্রয়োজন হয় যখন আপনার নির্দিষ্ট নিরাপত্তা সংক্রান্ত সীমাবদ্ধতা বা সাংগঠনিক নীতি থাকে যার জন্য অনুমতি সীমিত করা প্রয়োজন।

সমস্যার সমাধান

আমি ক্লাউড প্রোজেক্ট তৈরি করতে না পারলে কী হবে?

কিছু সংস্থা ক্লাউড প্রোজেক্ট কে তৈরি করতে পারবে তা নিয়ন্ত্রণ করে। প্রোজেক্ট তৈরি করার সময় Notebook Authenticator পৃষ্ঠায় কোনও সমস্যা হলে, আপনি এগুলি করে দেখতে পারেন:

  1. আপনার কাছে প্রয়োজনীয় অনুমতি আছে কিনা তা কনফার্ম করতে সরাসরি প্রোজেক্ট তৈরি করার চেষ্টা করুন।
  2. প্রোজেক্ট তৈরি করার জন্য কী কী প্রসেস উপলভ্য আছে তা জানতে আপনার সংস্থার অ্যাডমিনিস্ট্রেটরের সাথে কথা বলুন।
  3. অ-প্রাতিষ্ঠানিক অ্যাকাউন্ট থেকে একটি প্রোজেক্ট তৈরি করুন এবং প্রোজেক্টের মালিক হিসেবে আপনি কাজের জন্য যে অ্যাকাউন্ট ব্যবহার করেন সেটি যোগ করুন। মনে রাখবেন: কিছু সংস্থার নিরাপত্তা নীতি আছে যা এক্সটার্নাল প্রোজেক্ট থেকে OAuth ক্লায়েন্ট অ্যাক্সেস করতে বাধা দেয়।

সমস্যা: "Earth Engine API আগে XXX প্রোজেক্টে ব্যবহার করা হয়নি অথবা এটি বন্ধ করা আছে"

প্রথমে, নিশ্চিত করুন যে আপনি ee.Initialize()-এ বা কমান্ড লাইনে একটি প্রোজেক্ট কনফিগার করেছেন (Cloud এবং Colab দ্বারা প্রদত্ত ডিফল্ট প্রোজেক্টে Earth Engine চালু থাকবে না)। দ্বিতীয়ত, আপনার প্রোজেক্টে Earth Engine API চালু করা আছে কিনা তা নিশ্চিত করুন।

সমস্যা: "প্রোজেক্টে একটি বেমানান OAuth2 ক্লায়েন্ট কনফিগারেশন আছে"

ক্লাউড প্রোজেক্টে শুধুমাত্র একটি OAuth2 ক্লায়েন্ট কনফিগারেশন থাকতে পারে। আপনি ক্রেডেনশিয়াল পৃষ্ঠায় OAuth 2.0 ক্লায়েন্ট আইডি চেক করে দেখতে পারেন যে কোনও ক্লাউড প্রোজেক্টে OAuth2 ক্লায়েন্ট কনফিগারেশন সেট করা আছে কিনা। আপনাকে অন্য একটি ক্লাউড প্রোজেক্ট বেছে নিতে হবে, যার কনফিগারেশন Notebook Authenticator-এর সাথে মানানসই অথবা এমন একটি ক্লাউড প্রোজেক্ট বেছে নিতে বা তৈরি করতে হবে, যাতে কোনও OAuth2 ক্লায়েন্ট নেই। যাচাইকারী অটোমেটিক এই প্রোজেক্ট কনফিগার করবে। দুর্ভাগ্যবশত, OAuth সিস্টেম ব্যবহারকারীদের কনফিগারেশন মুছে ফেলার অনুমতি দেয় না, তাই একজনকে অবশ্যই একটি ভিন্ন প্রোজেক্ট ব্যবহার করতে হবে। এই প্রোজেক্টটি Earth Engine-এর অন্যান্য কাজের জন্য ব্যবহৃত প্রোজেক্টের মতো একই হতে হবে না। মনে রাখবেন, Colab মোডে এই সমস্যা হয় না।

সমস্যা: "gcloud কাজ করেনি। উপরে কোনও সমস্যা আছে কিনা তা চেক করুন এবং প্রয়োজন হলে gcloud ইনস্টল করুন।"

gcloud ইনস্টল করা না থাকলে বা আপনার PATH-এ না থাকলে এই সমস্যা হতে পারে। এছাড়াও, আপনি নোটবুক কোড সেলের মধ্যে থেকে ee.Authenticate(auth_mode='gcloud') কল করলে এটি হতে পারে। পরিবর্তে ee.Authenticate() ব্যবহার করুন, যা ডিফল্ট হিসেবে নোটবুক মোড যাচাইকরণ ব্যবহার করবে। আপনি প্রোজেক্ট তৈরি করতে না পারলে, উপরে দেওয়া সমাধান দেখুন।

gcloud ইনস্টল করার জন্য আমার কাছে লোকাল মেশিনের অ্যাক্সেস না থাকলে কী হবে?

আপনি যদি লোকাল টার্মিনালে অ্যাক্সেস ছাড়াই শুধুমাত্র ওয়েব-ভিত্তিক পরিবেশে কাজ করেন, এবং এখনও একটি রিমোট টার্মিনাল ব্যবহার করতে হয়, তাহলে আপনি earthengine authenticate --auth_mode=notebook কমান্ডটি চালিয়ে নোটবুক মোড ট্রিগার করে কমান্ড লাইন টুলটি শুরু করতে পারেন।

সমস্যা 400: redirect_uri_mismatch

কোনও ওয়েব ব্রাউজারে অ্যাক্সেস না থাকা রিমোট মেশিনে যাচাইকরণ করলে, আপনি এই সমস্যার সম্মুখীন হতে পারেন। কমান্ড লাইন থেকে earthengine authenticate রান করলে --quiet যোগ করার চেষ্টা করুন অথবা Python ক্লায়েন্ট ব্যবহার করলে ee.Authenticate(quiet=True) যোগ করার চেষ্টা করুন। এর জন্য আপনাকে এমন একটি মেশিন থেকে 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 প্যারামিটার কাস্টমাইজ করলে (যেমন, ee.Authenticate(scopes=[...])-এ শুধু Earth Engine স্কোপ প্রদান করা) অথবা আগে থেকে থাকা ক্রেডেনশিয়াল সেইসব স্কোপ ছাড়া তৈরি করা হলে এটি ঘটে।

এই সমস্যার সমাধান করার দুটি উপায় আছে:

  • ডিফল্ট স্কোপের মাধ্যমে আবার যাচাই করা: Earth Engine-এর ডিফল্ট ক্রেডেনশিয়ালে cloud-platform স্কোপ অন্তর্ভুক্ত থাকে, যার মধ্যে Cloud Storage ও BigQuery দুটিই পড়ে। ডিফল্ট সেটিংস ব্যবহার করে আবার যাচাই করুন:
    • Python-এ: ee.Authenticate(force=True)
    • কমান্ড লাইনে: earthengine authenticate --force
  • প্রয়োজনীয় স্কোপ অন্তর্ভুক্ত করুন: আপনার এনভায়রনমেন্টে কাস্টমাইজ করা স্কোপের প্রয়োজন হলে, আপনার scopes তালিকায় https://www.googleapis.com/auth/cloud-platform বা নির্দিষ্ট পরিষেবার স্কোপ (যেমন Cloud Storage-এর জন্য https://www.googleapis.com/auth/devstorage.full_control বা https://www.googleapis.com/auth/devstorage.read_only অথবা BigQuery-এর জন্য https://www.googleapis.com/auth/bigquery) অন্তর্ভুক্ত আছে কিনা তা নিশ্চিত করুন।

উপলভ্য স্কোপ সম্পর্কে আরও জানতে, স্কোপ সম্পর্কে বিবরণ দেখুন।

টেকনিক্যাল নোট

যারা প্রযুক্তিগতভাবে কৌতূহলী তাদের জন্য: এই বিভিন্ন ক্রেডেনশিয়াল তৈরির প্রয়োজনীয়তা পরিচিত এবং বিশ্বস্ত পরিবেশে ক্রেডেনশিয়াল পাস করার প্রয়োজনীয়তা থেকে আসে। উপরে উল্লেখ করা বিভিন্ন কেসের ব্যাপারে এখানে সংক্ষেপে আলোচনা করা হল।

  • আগে paste মোড ছিল যা আপনাকে যেকোনও জায়গায় পেস্ট করার জন্য টোকেন দিত এবং এটি খুব ঝুঁকিপূর্ণ বলে মনে করা হয় এবং এটি আর উপলভ্য নেই।
  • colab: auth.authenticate_user() আপনাকে "Colab" অথ ক্লায়েন্ট, নোটবুক এনভায়রনমেন্টের সাথে ক্রেডেনশিয়াল শেয়ার করার জন্য প্রম্পট করবে। এগুলি google.auth.default()-এর মাধ্যমে উপলভ্য এবং ee.Initialize()-এর দ্বারা ব্যবহৃত হয়।
  • localhost: ক্রেডেনশিয়াল ব্রাউজার থেকে আপনার লোকাল মেশিনের একটি পোর্টে পাস করা হয়। এই পরিস্থিতিতে, এন্ড-টু-এন্ড নিরাপত্তা নির্ভর করে আপনার লোকাল মেশিন সুরক্ষিত আছে কিনা তার উপর। আপনি যে অথ ক্লায়েন্ট দেখতে পাবেন সেটি হল "Earth Engine Authenticator"।
  • gcloud: এটি gcloud রেফারেন্সে বর্ণিত --launch-browser ফ্লো ব্যবহার করে এবং রিমোট মেশিনে থাকলে --no-launch-browser। ব্যবহৃত অথ ক্লায়েন্ট হল "Google Auth Library."
  • notebook: আমরা আপনার কাজের জন্য বিশেষভাবে একটি নতুন প্রমাণীকরণ ক্লায়েন্ট তৈরি করি - আপনি সম্মতি পৃষ্ঠায় আপনার ইমেল আইডি দেখতে পাবেন। এই ক্লায়েন্ট "ডেভেলপমেন্ট" মোডে সেট করা আছে, যা একটি বিশেষ কেস এবং এটি পুরনো পেস্ট মোড টোকেনকে অনুমতি দেয়। এর জন্য আমাদের আপনার নিজস্ব প্রোজেক্ট ব্যবহার করতে হবে, কারণ এই ধরনের ক্লায়েন্ট অনেক সংখ্যক ব্যবহারকারীর সাথে শেয়ার করা যায় না।