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 thay vì 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 trên Google Cloud nếu bạn chưa tạo.

Bạn có thể quản lý tài khoản dịch vụ cho dự án trên Google Cloud bằng cách chuyển đến trình đơn Cloud Console () rồi chọn IAM & Admin (Quản trị viên và quyền truy cập) > Service accounts (Tài khoản dịch vụ). (Chọn dự án nếu được nhắc.)

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

Nếu đã tạo một dự án App Engine, thì có thể bạn đã 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 Vai trò của tài khoản dịch vụ, hãy chọn Project (Dự án) > Editor (Trình chỉnh sửa).

Tạo khoá riêng tư cho tài khoản dịch vụ

Sau khi bạn có tài khoản dịch vụ, hãy nhấp vào trình đơn cho tài khoản đó (), sau đó nhấp vào Tạo khoá > JSON. Tải tệp khoá JSON xuống.

Bảo mật tệp khoá

Tệp khoá là một tệp đặc biệt cho phép các chương trình thay mặt tài khoản dịch vụ của bạn truy cập vào API của Google. Đảm bảo rằng không ai có thể truy cập trái phép vào ứng dụng đó, vì họ có thể thay mặt bạn truy cập vào các API của Google. Tuyệt đối không lưu trữ khoá riêng tư ở nơi công khai, chẳng hạn như thư mục dùng chung hoặc kho lưu trữ nguồn. Nếu làm mất khoá riêng tư, bạn có thể dễ dàng thu hồi quyền truy cập vào tài khoản dịch vụ và tạo tài khoản mới bằng Cloud Console. Hãy xem hướng dẫn này để biết thông tin chi tiết.

Đăng ký 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 Google Cloud. Đây có thể là cùng một dự án dùng cho ứng dụng App Engine hoặc máy ảo trên Google Cloud. Đảm bảo rằng dự án trên đám mây đã được đă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ó quyền chính xác sẽ có quyền truy cập vào Earth Engine và bạn không cần phải đăng ký riêng các tài khoản đó.

Xin lưu ý rằng bạn không thể đăng ký tài khoản dịch vụ riêng lẻ nữa; bạn phải đăng ký chính dự án trên Cloud.

Sử dụng tài khoản dịch vụ có khoá riêng

Cách xác thực với Earth Engine bằng tài khoản dịch vụ:

  1. Tạo và tải tệp khoá riêng tư JSON (.private-key.json) xuống cho tài khoản dịch vụ.
  2. Kiểm thử mã Python sau đây từ bất kỳ vị trí nào bạn đặt tệp .private-key.json:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

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.

Tôi nên làm gì nếu gặp 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 rằng mình đã thiết lập mọi thứ đúng cách và người liên hệ của Google đã xác minh rằng tài khoản dịch vụ đã được phê duyệt, hãy kiểm tra xem đồng hồ của máy tính có được đồng bộ hoá với thời gian mạng hay không.

Đối với hệ thống Ubuntu, lệnh gọi để đồng bộ hoá đồng hồ của máy tính là:

ntpdate ntp.ubuntu.com

Đối với các hệ thống sử dụng OS X, hãy mở System Preferences (Tuỳ chọn hệ thống) > Date & Time (Ngày và giờ) > Date & Time (Ngày và giờ) (một lần nữa) rồi chọn Set date and time automatically (Tự động đặt ngày và giờ).

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

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 toàn quyền truy cập vào tất cả API trên đám mây". (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:

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

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

Nếu tài khoản dịch vụ sẽ 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 dự án cần thiết để sử dụng Earth Engine.