Cloud Storage バケットを Developer Device Platform と共有する

多くの Google Cloud サービスと同様に、Developer Device Platform には専用のサービス エージェントがいます。このページでは、DDP サービス エージェントの仕組み、実行できること、リソースを共有する方法について説明します。

権限

DDP がプロジェクトで初めて使用されると、システムは service-PROJECT_ID@gcp-sa-devicerun. という名前のサービス エージェント タイプのサービス アカウントを作成します。

Device Run API(devicerun.googleapis.com)を有効にすると、Google Cloud はサービス エージェントを自動的にプロビジョニングし、プロジェクト レベルで roles/devicerun.serviceAgent ロールを割り当てます。

このサービス エージェントには、Developer Device Platform が起動される Google Cloud プロジェクトに対する権限が付与されます。サービス エージェントは、ユーザーの認証情報ではなく、独自に所有する認証情報を使用して次の処理を行います。

  • Cloud Storage バケットとオブジェクトの読み取りと書き込み
  • Cloud Storage の入力ファイルを内部システムにダウンロードする
  • 内部システムから Cloud Storage 出力バケットにファイルをアップロードする

つまり、Cloud Storage バケットとファイルにアクセスできるが、そのバケットが DDP で使用されているプロジェクトとは異なる Google Cloud プロジェクトに属している可能性があります。個々のバケットにアクセス制御を追加することもできます。

そのため、Developer Device Platform サービス エージェントはこれらのリソースにアクセスできない可能性があります。こちらの手順に沿って、特定のバケットへのアクセス権を DDP サービス エージェントと共有します。

アクセス権の共有

DDP 対応プロジェクトでテストにファイルを含める方法については、デバイスランをご覧ください。Cloud Storage バケットが DDP プロジェクトとは異なるGoogle Cloud プロジェクトにあり、Device Run でこれらのファイルを読み取るようにする場合は、ここに記載されているように、DDP リクエストが開始されたプロジェクトのサービス エージェントに roles/storage.objectViewer を付与する必要があります。

サービス エージェントに Storage オブジェクト閲覧者を付与する: ファイルを含む Cloud Storage バケットに対する Storage Object Viewerroles/storage.objectViewer)ロールが DDP サービス エージェントに付与されていることを確認します。

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member="serviceAccount:service-PROJECT_ID@gcp-sa-devicerun." \  --role="roles/storage.objectViewer"

検証

ワークフローに戻り、Device Run が必要なファイルにアクセスできることを確認します。サービス エージェントが指定されたファイルにアクセスできない場合、テストは開始されません。

サポート ドキュメント