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