Cloud API とライブラリの管理

Cloud APIs を使用して、コードから Google Cloud のプロダクトおよびサービスにアクセスできます。これらの Cloud APIs では、クライアント ライブラリ経由で呼び出すことができる、シンプルな JSON REST インターフェースが公開されています。

このドキュメントでは、Cloud APIs を有効にし、Cloud クライアント ライブラリをプロジェクトに追加する方法について説明します。

Cloud APIs の閲覧

IDE 内で利用可能なすべての Google Cloud APIs を確認する手順は次のとおりです。

  1. [Tools] > [Cloud Code] > [Add Cloud libraries and Manage Cloud APIs] を選択します。
  2. Google Cloud APIs Explorer のツリーを展開して、使用可能なすべての API を表示します。Explorer はカテゴリ別に Cloud APIs をグループ化します。 Search API の検索バーを使用して特定の API を見つけ出すこともできます。
  3. ツリービュー エクスプローラに表示される Cloud APIs の一覧を示すスクリーンショット。
  4. [API] をクリックすると、ステータス、対応するクライアント ライブラリの言語に固有のインストール手順、関連ドキュメントなどの詳細が表示されます。

Cloud APIs の有効化

さらに、API の詳細を使用してプロジェクト用の Cloud APIs をすばやく有効にできます。手順は次のとおりです。

  1. Cloud API の詳細ビューで、Cloud API を有効にする Google Cloud プロジェクトを選択します。
  2. [Enable API] ボタンをクリックします。

    API が有効になると、この変更を確認するメッセージが表示されます。

Cloud クライアント ライブラリの追加

IntelliJ でプロジェクトにライブラリを追加するには:

Java Maven プロジェクトの場合

  1. [Tools] > [Cloud Code] > [Add Cloud libraries and Manage Cloud APIs] を選択します。
  2. [Add Google Cloud Libraries] ダイアログが開き、サポートされるライブラリが表示されます。

    [Add Cloud Libraries] ダイアログのスクリーンショット。このダイアログのプルダウン メニューを使用して、ライブラリに追加するモジュールを選択します。追加可能な API の一覧を表示することもできます。このダイアログの作業領域には、API に関する情報が表示されます。
  3. Google Cloud クライアント ライブラリ(推奨)または Java Spring GCP ライブラリからライブラリ タイプを選択します。
  4. [Module] プルダウン メニューで、ライブラリを追加するモジュールを選択します。
  5. [Add Maven Dependency] をクリックして、プロジェクトに BOM とクライアント ライブラリを追加します。

その他のすべてのプロジェクトの場合

  1. [Tools] > [Cloud Code] > [Add Cloud libraries and Manage Cloud APIs] を選択します。
  2. [Add Google Cloud Libraries] ダイアログが開き、サポートされるライブラリが表示されます。

    [Add Cloud Libraries] ダイアログのスクリーンショット。このダイアログは追加可能な API の一覧を表示することもできます。このダイアログの作業領域には、API に関する情報が表示されます。
  3. 使用する言語に応じた API の詳細ページに記載されているインストール手順に従って、API をインストールします。

認証の設定

必要な API を有効にして必要なクライアント ライブラリを追加したら、アプリケーションの認証を正常に完了するためにアプリケーションを構成する必要があります。構成は、開発の種類と実行するプラットフォームによって異なります。

関連する認証手順を完了すると、アプリケーションは認証され、デプロイの準備が整います。

ローカルでの開発

ローカルマシン

  1. IDE から Google Cloud にログインした場合は、Cloud Code には、アプリケーションのデフォルト認証情報(ADC)が確実に設定されています。
    IDE の外部で Google Cloud に(gcloud コマンドライン ツールなどから)ログインした場合は、gcloud auth login --update-adc を実行して ADC を設定する必要があります。これにより、Google Cloud クライアント ライブラリで、認証に使用する ADC を検出できるようにもなります。

minikube

  1. IDE から Google Cloud にログインした場合は、Cloud Code には、アプリケーションのデフォルト認証情報(ADC)が確実に設定されています。
    IDE の外部で Google Cloud に(gcloud コマンドライン ツールなどから)ログインした場合は、gcloud auth login --update-adc を実行して ADC を設定する必要があります。これにより、minikube で認証に使用する ADC を検出できます。
  2. minikube start --addons gcp-auth で minikube を起動します。これにより、ADC が Pod にマウントされます。Google Cloud 用の詳細な minikube 認証ガイドについては、minikube gcp-auth ドキュメントをご覧ください。

その他のローカル K8s クラスタ

  1. IDE から Google Cloud にログインした場合は、Cloud Code には、アプリケーションのデフォルト認証情報(ADC)が確実に設定されています。
    IDE の外部で Google Cloud に(gcloud コマンドライン ツールなどから)ログインした場合は、gcloud auth login --update-adc を実行して ADC を設定する必要があります。
  2. Pod またはデプロイのマニフェストで Pod の仕様を編集して、Google Cloud クライアント ライブラリで認証情報を検出できるように、ローカルの gcloud ディレクトリを Kubernetes Pod にマウントします。Kubernetes Pod の構成例:
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-app
      labels:
        name: my-app
    spec:
      containers:
      - name: my-app
        image: gcr.io/google-containers/busybox
        ports:
          - containerPort: 8080
        volumeMounts:
          - mountPath: /root/.config/gcloud
            name: gcloud-volume
      volumes:
        - name: gcloud-volume
          hostPath:
            path: /path/to/home/.config/gcloud

Cloud Run

  1. IDE から Google Cloud にログインした場合は、Cloud Code には、アプリケーションのデフォルト認証情報(ADC)が確実に設定されています。
    IDE の外部で Google Cloud に(gcloud コマンドライン ツールなどから)ログインした場合は、gcloud auth login --update-adc を実行して ADC を設定する必要があります。これにより、Cloud Run のローカルでシミュレートされた環境で、認証に使用する ADC を検出できます。

リモート開発

Google Kubernetes Engine

プロジェクトのスコープに応じて、GKE での Google Cloud サービスの認証方法を選択できます。

  • (開発のみ)
    1. 次の設定で GKE クラスタを作成します。
      • GKE でデフォルトで使用されるサービス アカウント(Compute Engine のデフォルト サービス アカウント)を使用していること、および [アクセス スコープ] が [すべての Cloud APIs への完全アクセス権を許可] に設定されていることを確認してください(この 2 つの設定を行うには、[ノードプール] > [セキュリティ] と進んでください)。
        Compute Engine サービス アカウントはノードにデプロイされているすべてのワークロードで共有されるので、この方法は権限をオーバープロビジョニングし、開発目的でのみ使用する必要があります。
      • クラスタで Workload Identity が有効になっていないことを確認します([クラスタ] > [セキュリティ] セクションにて)。
    2. 必要なロールを Compute Engine のデフォルト サービス アカウントに割り当てます。
      • Secret にアクセスする場合は、Secret Manager 固有の手順に従って、サービス アカウントに必要なロールを設定します。
      • Compute Engine のデフォルトのサービス アカウントが使用されている場合は、適切な IAM ロールがすでに適用されている可能性があります。
      • ロールについてのガイドでは、IAM ロールのタイプと、ID に付与できる事前定義ロールの一覧について説明しています。
  • (本番環境に推奨)
    1. Workload Identity を使用して GKE クラスタとアプリケーションを構成し、GKE で Google Cloud サービスを認証します。これにより、Kubernetes サービス アカウントが Google サービス アカウントに関連付けられます。
    2. Kubernetes Deployment YAML ファイル内の .spec.serviceAccountName フィールドを設定して、Kubernetes サービス アカウントを参照するように Kubernetes Deployment を構成します。
      Cloud Code テンプレートから作成されたアプリを使用している場合、このファイルは kubernetes-manifests フォルダにあります。
    3. アクセスしようとしている Google Cloud サービスに追加のロールが必要な場合は、アプリの開発に使用している Google サービス アカウントにそれらのロールを付与します。
      • Secret にアクセスする場合は、Secret Manager 固有の手順に従って、サービス アカウントに必要なロールを設定します。
      • ロールについてのガイドでは、IAM ロールのタイプと、ID に付与できる事前定義ロールの一覧について説明しています。

Cloud Run

  1. [サービス アカウント] ページから、Cloud Run アプリケーションをデプロイするための新しい一意のサービス アカウントを作成します。Secret が保存されているプロジェクトと同じプロジェクトを選択するようにしてください。
    [サービス アカウント] ページに移動
  2. アクセスしようとしている Google Cloud サービスに追加のロールが必要な場合は、アプリの開発に使用している Google サービス アカウントにロールを付与します。
    ロールについてのガイドには、IAM のロールのタイプと、ID に付与できる事前定義されたロールのリストが記載されています。
  3. デプロイ構成にサービス アカウントを追加します。これを行うには、[Cloud Run: Deploy] の実行構成に移動して、[Advanced revision settings] セクションを展開し、[Service Account] フィールドにサービス アカウントを入力します。
    Cloud Run で展開された詳細なリビジョン設定セクション: service-account-name@project-name.iam.gserviceaccount.com という形式のサービス アカウント名が入力されている [Deploy and Service Account] フィールド

Cloud Run

プロジェクトのスコープに応じて、GKE での Google Cloud サービスの認証方法を選択できます。

  • (開発のみ)
    1. 次の設定で GKE クラスタを作成します。
      • GKE でデフォルトで使用されるサービス アカウント(Compute Engine のデフォルト サービス アカウント)を使用していること、および [アクセス スコープ] が [すべての Cloud APIs への完全アクセス権を許可] に設定されていることを確認してください(この 2 つの設定を行うには、[ノードプール] > [セキュリティ] と進んでください)。
        Compute Engine サービス アカウントはノードにデプロイされているすべてのワークロードで共有されるので、この方法は権限をオーバープロビジョニングし、開発目的でのみ使用する必要があります。
      • クラスタで Workload Identity が有効になっていないことを確認します([クラスタ] > [セキュリティ] セクションにて)。
    2. 必要なロールを Compute Engine のデフォルト サービス アカウントに割り当てます。
      • Secret にアクセスする場合は、Secret Manager 固有の手順に従って、サービス アカウントに必要なロールを設定します。
      • Compute Engine のデフォルトのサービス アカウントが使用されている場合は、適切な IAM ロールがすでに適用されている可能性があります。
      • ロールについてのガイドでは、IAM ロールのタイプと、ID に付与できる事前定義ロールの一覧について説明しています。
  • (本番環境に推奨)
    1. Workload Identity を使用して GKE クラスタとアプリケーションを構成し、GKE で Google Cloud サービスを認証します。これにより、Kubernetes サービス アカウントが Google サービス アカウントに関連付けられます。
    2. Kubernetes サービス アカウントをデプロイ構成に追加します。これを行うには、[Cloud Run: Deploy] の実行構成に移動して、[Advanced revision settings] セクションを展開し、[Service Account] フィールドに Kubernetes サービス アカウントを入力します。
      Cloud Run で展開された [Advanced revision settings] セクション: Kubernetes サービス アカウント名が入力された [Deploy and Service Account] フィールド
    3. アクセスしようとしている Google Cloud サービスに追加のロールが必要な場合は、アプリの開発に使用している Google サービス アカウントにそれらのロールを付与します。
      • Secret にアクセスする場合は、Secret Manager 固有の手順に従って、サービス アカウントに必要なロールを設定します。
      • ロールについてのガイドでは、IAM ロールのタイプと、ID に付与できる事前定義ロールの一覧について説明しています。

Secret Manager 権限を有効にしたリモート開発

認証にサービス アカウントを使用してリモートで開発しており、アプリケーションが Secret を使用している場合は、リモート開発の手順に追加していくつかの手順を行う必要があります。これらの手順では、Google サービス アカウントに特定の Secret Manager の Secret にアクセスに必要なロールを割り当てます。

  1. [Secret Manager] パネルを開き、コード内でアクセスする Secret を選択します。

    [権限] タブに切り替え、編集権限の鉛筆アイコンで Secret の権限を構成します。鉛筆アイコンをクリックすると、ウェブブラウザに作成した Secret の [Secret Manager] 構成ページが開きます。

    Secret Manager で選択された [権限] タブとハイライト表示された [権限編集] アイコン

  2. Cloud Console の情報パネルで、[メンバーを追加] を選択します。

    ブラウザの [Console Secret] ページに記載されている Secret の詳細情報: 展開した情報パネルの [メンバーを追加] ボタンがハイライト表示されている

  3. サービス アカウントに、Secret Manager Secret アクセサーのロールを割り当てます。

    [テストにメンバーを追加] パネルの [新しいメンバー] フィールドに service-account-name@project-name.iam.gservicesaccount.com という形式のサービス アカウントが表示され、[ロールを選択] プルダウンが入力されており [Secret Manager] カテゴリで「Secret Manager Accessor」の種類のロールが選択されている

    これで、サービス アカウントにこの特定の Secret にアクセスするための権限が付与されました。

サポートの利用

フィードバックを送信するには、GitHub で問題を報告します。または、Stack Overflow で質問します。