서비스 계정은 최종 사용자가 아닌 애플리케이션과 연결된 계정입니다. 앱을 개발하거나 REST API를 사용하는 경우 Earth Engine에 인증하기 위해 서비스 계정을 사용해야 할 수 있습니다. 서비스 계정을 사용하여 인증하는 방법 자세히 알아보기
서비스 계정 만들기
먼저, Google Cloud 프로젝트를 만듭니다. 아직 만들지 않았다면
Cloud Console 메뉴 ()로 이동하여 IAM 및 관리자 > 서비스 계정을 선택하면 Cloud 프로젝트의 서비스 계정을 관리할 수 있습니다. (메시지가 표시되면 프로젝트를 선택합니다.)
새 서비스 계정을 만들려면 + 서비스 계정 만들기 링크를 클릭합니다.
App Engine 프로젝트를 만든 경우 해당 프로젝트에 이미 기본 서비스 계정 (App Engine 기본 서비스 계정)이 있을 수 있습니다. App Engine 프로젝트를 설정하는 경우 서비스 계정 역할에서 프로젝트 > 편집기를 선택합니다.
Earth Engine을 사용하도록 서비스 계정 구성
모든 서비스 계정은 Cloud 프로젝트 내에서 생성되며, 이는 App Engine 앱 또는 Cloud VM에 사용되는 프로젝트와 동일할 수 있습니다. Cloud 프로젝트가 Earth Engine에 액세스하도록 등록되어 있고 프로젝트에서 Earth Engine API가 사용 설정되어 있는지 확인합니다. 올바른 권한이 있는 프로젝트의 모든 서비스 계정은 Earth Engine에 액세스할 수 있습니다.
애플리케이션 기본 사용자 인증 정보를 사용하여 Earth Engine에 인증
애플리케이션 기본 사용자 인증 정보 (ADC)는 비공개 키를 수동으로 관리하지 않고도 무인
환경 (예: Cloud Run 또는 Compute Engine)에서 인증하는 데 권장되는 방법입니다.
Cloud 프로젝트 ID를 전달하여 라이브러리를 초기화합니다 (my-project을
프로젝트 ID로 바꾸기).
import google.auth import ee credentials, project_id = google.auth.default() ee.Initialize(credentials, project='my-project')
비공개 키로 인증
애플리케이션에서 서비스 계정 비공개 키를 사용하여 인증해야 하는 경우 (ADC를 사용할 수 있는 프로덕션 환경에는 권장되지 않음) 다음 단계를 따르세요.
-
서비스 계정의 비공개 키를 만듭니다.
- Cloud Console에서 서비스 계정 페이지 로 이동합니다.
- 계정의 메뉴 ()를 클릭한 다음 키 만들기 > JSON을 클릭합니다.
- JSON 키 파일을 다운로드합니다.
- 키 파일을 안전하게 보관합니다. 키 파일은 프로그램이 서비스 계정을 대신하여 Google API에 액세스할 수 있도록 하는 특수 파일입니다. 비공개 키를 공개된 장소에 저장하지 마세요. 비공개 키를 분실한 경우 서비스 계정에 대한 액세스 권한을 취소하고 새 서비스 계정을 Cloud Console을 사용하여 만들 수 있습니다. 자세한 내용은 서비스 계정 키 만들기 및 삭제 를 참조하세요.
-
파일을 배치한 위치에서 다음 Python 코드를 테스트합니다 (Google Cloud 프로젝트 ID로
바꾸기).
.private-key.jsonmy-projectimport ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials, project='my-project')
오류 없이 초기화할 수 있으면 서비스 계정을 사용할 준비가 된 것입니다.
Compute Engine에서 기본 서비스 계정 사용
기본 서비스 계정을 사용하는 경우 먼저 Compute Engine 서비스 계정의 VM 액세스 범위를 "모든 Cloud API에 대한 전체 액세스 허용"으로 수정해야 합니다. (Dataflow 또는 App Engine에서 기본 서비스 계정을 사용하는 경우 이 단계는 필요하지 않습니다.)기본 서비스 계정을 사용하여 Earth Engine에 인증하려면 다음 코드를 사용합니다
(my-project를 Google Cloud 프로젝트 ID로 바꾸기).
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')
REST API 액세스 설정
서비스 계정에서 REST API를 사용하여 계산을 수행하려면 프로젝트 수준 권한, 특히 Earth Engine 리소스 뷰어 역할을 부여해야 합니다. 프로젝트 구성에 따라 서비스 계정에 서비스 사용량 소비자 역할을 부여해야 할 수도 있습니다. Earth Engine을 사용하는 데 필요한 프로젝트 권한에 대한 자세한 내용은 액세스 제어 페이지를 참조하세요.
문제 해결
오류: invalid_grant
OAuth2는 시계 편차에 매우 민감할 수 있습니다. 모든 항목을 올바르게 설정했다고 확신하는 경우 컴퓨터의 시계가 네트워크 시간에 동기화되어 있는지 확인합니다.
오류: Cloud Storage로 내보낼 때 '제공된 범위가 승인되지 않았습니다'
Cloud Run 작업에서 실행할 때 이 오류가 표시되면 사용자 인증 정보를 만들 때 (예: google.auth.default(scopes=...)) scopes 인수를 설정하지 마세요. 범위를 지정하면 이 환경의 기본 권한이 방해될 수 있습니다.