Tài khoản dịch vụ

Tài khoản dịch vụ là tài khoản được liên kết với một ứng dụng chứ không phải người dùng cuối. Bạn có thể cần sử dụng tài khoản dịch vụ để xác thực với Earth Engine nếu đang phát triển ứng dụng hoặc sử dụng API REST. Tìm hiểu thêm về cách xác thực bằng tài khoản dịch vụ.

Tạo một tài khoản dịch vụ

Trước tiên, hãy tạo một dự án Google Cloud nếu bạn chưa làm việc này.

Bạn có thể quản lý các tài khoản dịch vụ cho dự án trên đám mây bằng cách chuyển đến trình đơn bảng điều khiển Cloud () rồi chọn IAM và Quản trị > Tài khoản dịch vụ. (Chọn dự án nếu được nhắc.)

Để tạo một tài khoản dịch vụ mới, hãy nhấp vào đường liên kết + TẠO TÀI KHOẢN DỊCH VỤ.

Nếu đã tạo dự án App Engine, bạn có thể đã có một tài khoản dịch vụ mặc định (Tài khoản dịch vụ mặc định của App Engine) cho dự án đó. Nếu bạn đang thiết lập dự án App Engine, đối với tài khoản dịch vụ Vai trò, hãy chọn Dự án > Trình chỉnh sửa.

Định cấu hình tài khoản dịch vụ để sử dụng Earth Engine

Tất cả tài khoản dịch vụ đều được tạo trong một dự án trên đám mây. Dự án này có thể là dự án giống với dự án dùng cho ứng dụng App Engine hoặc Cloud VM. Đảm bảo rằng dự án Cloud đã đăng ký để truy cập vào Earth Engine và Earth Engine API đã được bật trên dự án. Tất cả tài khoản dịch vụ trong dự án có các quyền chính xác sẽ có quyền truy cập vào Earth Engine.

Xác thực với Earth Engine bằng Thông tin xác thực mặc định của ứng dụng

Thông tin xác thực mặc định của ứng dụng (ADC) là cách được đề xuất để xác thực trong các môi trường không giám sát (như Cloud Run hoặc Compute Engine) mà không cần quản lý khoá riêng tư theo cách thủ công. Khởi chạy thư viện bằng cách truyền mã dự án trên đám mây (thay thế my-project bằng mã dự án của bạn):

import google.auth
import ee

credentials, project_id = google.auth.default()
ee.Initialize(credentials, project='my-project')

Xác thực bằng khoá riêng tư

Nếu ứng dụng của bạn cần xác thực bằng khoá riêng tư của tài khoản dịch vụ (không nên dùng cho các môi trường sản xuất có thể sử dụng ADC):

  1. Tạo khoá riêng tư cho tài khoản dịch vụ:
    • Chuyển đến trang Tài khoản dịch vụ trong Cloud Console.
    • Nhấp vào trình đơn cho tài khoản (), sau đó chọn Tạo khoá > JSON.
    • Tải tệp khoá JSON xuống.
  2. Giữ tệp khoá của bạn ở nơi an toàn. Tệp khoá là một tệp đặc biệt cho phép các chương trình truy cập vào API của Google thay mặt cho tài khoản dịch vụ của bạn. Đừng bao giờ lưu trữ khoá riêng tư của bạn ở nơi công cộng place. Nếu bạn làm mất khoá riêng tư, bạn có thể thu hồi quyền truy cập vào tài khoản dịch vụ và tạo một tài khoản mới bằng Cloud Console. Hãy xem bài viết Tạo và xoá khoá tài khoản dịch vụ để biết thông tin chi tiết.
  3. Kiểm thử mã Python sau đây ở bất cứ nơi nào bạn đặt tệp .private-key.json (thay thế my-project bằng mã dự án Google Cloud của bạn):
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials, project='my-project')

Nếu bạn có thể khởi chạy mà không gặp lỗi, thì tài khoản dịch vụ của bạn đã sẵn sàng sử dụng.

Sử dụng tài khoản dịch vụ mặc định trên Compute Engine

Nếu đang sử dụng tài khoản dịch vụ mặc định, trước tiên, bạn cần sửa đổi phạm vi truy cập của máy ảo cho Tài khoản dịch vụ Compute Engine thành "Cho phép truy cập đầy đủ vào tất cả Cloud APIs". (Nếu bạn đang sử dụng tài khoản dịch vụ mặc định trong Dataflow hoặc App Engine, thì bạn không cần thực hiện bước này.)

Để xác thực với Earth Engine bằng tài khoản dịch vụ mặc định, hãy sử dụng mã sau (thay thế my-project bằng mã dự án Google Cloud của bạn):

from google.auth import compute_engine
import ee
credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine'])
ee.Initialize(credentials, project='my-project')

Thiết lập quyền truy cập vào API REST

Nếu tài khoản dịch vụ cần thực hiện các phép tính bằng API REST, bạn cần cấp cho tài khoản đó quyền ở cấp dự án, cụ thể là vai trò Trình xem tài nguyên Earth Engine. Tuỳ thuộc vào cấu hình dự án, bạn cũng có thể cần cấp cho tài khoản dịch vụ vai trò Người tiêu dùng sử dụng dịch vụ. Hãy xem trang Kiểm soát quyền truy cập để biết thêm thông tin về các quyền cần thiết cho dự án để sử dụng Earth Engine.

Khắc phục sự cố

Lỗi: invalid_grant

OAuth2 có thể rất nhạy cảm với độ lệch đồng hồ. Nếu bạn chắc chắn đã thiết lập mọi thứ đúng cách, hãy kiểm tra để xem đồng hồ trên máy tính của bạn có được đồng bộ hoá với thời gian mạng hay không.

Lỗi: "Provided scope(s) are not authorized" (Phạm vi được cung cấp không được cho phép) khi xuất sang Cloud Storage

Nếu bạn thấy lỗi này khi chạy trong một tác vụ Cloud Run, đừng đặt đối số scopes khi tạo thông tin xác thực (ví dụ: trong google.auth.default(scopes=...)). Việc chỉ định phạm vi có thể gây trở ngại cho các quyền mặc định trong môi trường này.