需要は一定ありそうだがあまり書かれている記事がなさそうなので書いておく。
事前設定
- GCP projectを作成しておく。
- GCPコンソールからGoogle Drive APIを有効にしておく
- google driveにアクセスするディレクトリ/ファイルを用意しておく
Steps
サービスアカウントの作成
サービスアカウントを作成する。例えば以下のようなコマンド。 また、このサービスアカウントの権限借用をするためにサービスアカウントのトークン生成を行うロールを付与しておく。例えばgoogleアカウントなどのプリンシパルをmemberとして設定する。
$ gcloud iam service-accounts create your-service-account --display-name "Your account display name"$ gcloud iam service-accounts add-iam-policy-binding \ your-service-account@your-project.iam.gserviceaccount.com \ --member="user:your-principal@gmail.com" \ --role="roles/iam.serviceAccountTokenCreator"サービスアカウントに対してGoogle Driveのアクセス権を付与
SSIA。Google DriveのUIから付与する。
権限借用を用いたアクセス
pythonのsdkで権限借用を使ってgoogle driveにアクセスしてみる。
ADCを使うので事前に gcloud auth application-default login しておく必要がある。
from google.auth import impersonated_credentialsfrom google.auth import defaultfrom googleapiclient.discovery import build
# デフォルト認証情報を取得(ADC)source_credentials, project = default()
target_credentials = impersonated_credentials.Credentials( source_credentials=source_credentials, target_principal='your-service-account@your-project.iam.gserviceaccount.com', # 権限借用するサービスアカウント target_scopes=['https://www.googleapis.com/auth/drive'])drive_service = build('drive', 'v3', credentials=target_credentials)print(drive_service.files().list(pageSize=10).execute())