Cloud Code for Cloud Shell で Cloud APIs と Cloud クライアント ライブラリを管理する

Google Cloud プロダクトやサービスにプログラムからアクセスするには、Cloud APIs を使用します。これらの API は、シンプルな JSON REST インターフェースを公開しています。Cloud APIs へのアクセスには、Cloud クライアント ライブラリを使用することをおすすめします。

Cloud Code を使用すると、プロジェクトで使っている Cloud APIs と言語向けの Cloud クライアント ライブラリを簡単に追加できます。同じビューで各 API のサンプルを検索し、サンプルをアプリケーションに簡単に取り入れることができます。

Cloud APIs の閲覧

利用可能なすべての Google Cloud APIs を探索するには:

  1. [Cloud Code] をクリックし、[Cloud APIs] セクションを展開します。

    Cloud APIs ビューは、カテゴリ別に Cloud APIs をグループ化します。

  2. API の詳細を表示するには、API 名をクリックします。サービス名、ステータス、クライアント ライブラリのインストール手順、ドキュメント、コードサンプルなどの詳細が表示されます。

Cloud APIs の有効化

API の詳細ページを使用してプロジェクトの Cloud API を有効にするには、次の手順に従います。

  1. Cloud APIs の詳細ビューで、Cloud APIs を有効にするプロジェクトを選択します。
  2. [API を有効にする] をクリックします。API を有効にすると、変更を確認するメッセージが表示されます。

プロジェクトにクライアント ライブラリを追加する

Cloud Code を使用して Cloud APIs を探索し有効にする方法とは別に、言語固有のクライアント ライブラリをプロジェクトに追加する方法もあります。

クライアント ライブラリをインストールするには、API 詳細ページのご使用の言語向けの手順に沿って操作します。

API サンプルの使用

各 API のコードサンプルは、API ブラウザで検索して使用できます。

  1. [Cloud Code] をクリックし、[Cloud APIs] セクションを展開します。

  2. 詳細ビューを開くには、API の名前をクリックします。

  3. API のコードサンプルを表示するには、[コードサンプル] をクリックします。

  4. サンプルリストをフィルタリングするには、[Language] リストから検索するテキストを入力するか、プログラミング言語を選択します。

  5. 新しいサンプルを表示するには、サンプルの名前をクリックします。サンプルをクリップボードにコピーしたり、GitHub でサンプルを表示したりすることもできます。

認証の設定

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

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

ローカルでの開発

Cloud Shell VM インスタンスは、デフォルトのサービス アカウントとして Compute Engine のデフォルト サービス アカウント(Google Kubernetes Engine でデフォルトで使用するサービス アカウント)を使用します。つまり、Cloud Shell で Cloud Code を使用して開発を行う場合は、クライアント ライブラリを利用する際に追加の構成を設定する必要はありません。アプリケーションが認証され、ローカルで実行する準備が整っています。

サービス アカウントを必要とする API を使用したローカル開発

Cloud Translation API などの一部の API では、リクエストを認証するための適切な権限を持つサービス アカウントが必要です。詳細については、サービス アカウントの作成と管理をご覧ください。

  1. ターミナルを開くには、[Terminal] > [New Terminal] をクリックします。

  2. API リクエストを認証するためのサービス アカウントを作成します。

    gcloud iam service-accounts create \
    SERVICE_ACCOUNT_ID \
    --project PROJECT_ID
    

    次の値を置き換えます。

    • SERVICE_ACCOUNT_ID: サービス アカウント ID
    • PROJECT_ID: プロジェクト ID

    これらの ID を確認するには、Google Cloud で画面左上にある [ナビゲーション メニュー] をクリックし、ポインタを [IAM と管理] に置いたまま [サービス アカウント] をクリックします。

    [メール] 列には、各サービス アカウントの一意の SERVICE_ACCOUNT_IDPROJECT_ID が次の形式で表示されます。

    SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com

    たとえば、my-service-account@my-project.iam.gserviceaccount.com というサービス アカウントのメールアドレスには次の値があります。

    • SERVICE_ACCOUNT_ID: my-service-account
    • PROJECT_ID: my-project
  3. サービス アカウントに適切なロールを付与します。次のサンプル コマンドでは、Cloud Translation API ユーザーロールを付与します。付与するロールを決定するには、使用している Cloud API のドキュメントをご覧ください。

    gcloud projects \
    add-iam-policy-binding \
    PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com' \
    --role='roles/cloudtranslate.user'
    
  4. サービス アカウント キーを作成します。

    gcloud iam service-accounts keys \
    create key.json --iam-account \
    SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com
    
  5. このキーをデフォルトの認証情報として設定します。

    export \
     GOOGLE_APPLICATION_CREDENTIALS=key.json
    
  6. (省略可)ユーザーにサービス アカウントの権限借用を許可するには、gcloud iam service-accounts add-iam-policy-binding コマンドを実行して、サービス アカウントのサービス アカウント ユーザーロール(roles/iam.serviceAccountUser)をユーザーに付与します。

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    次の値を置き換えます。

    • USER_EMAIL: ユーザーのメールアドレス

リモート開発

GKE

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

  • (開発のみ)
    1. 次の設定で GKE クラスタを作成します。
      • GKE のデフォルトで使用されるサービス アカウント(Compute Engine のデフォルト サービス アカウント)を使用していること、および [アクセス スコープ] が [すべての Cloud APIs への完全アクセス権を許可] に設定されていることを確認してください(この 2 つの設定を行うには、[ノードプール] > [セキュリティ] と進んでください)。Compute Engine サービス アカウントはノードにデプロイされているすべてのワークロードで共有されるので、この方法は権限をオーバープロビジョニングし、開発目的でのみ使用する必要があります。
      • クラスタで Workload Identity が有効になっていないことを確認します([クラスタ] > [セキュリティ] セクション)。
    2. サービス アカウントに必要なロールを割り当てます。
  • (本番環境に推奨)
    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 サービス アカウントにそれらのロールを付与します。

Cloud Run

  1. Cloud Run アプリケーションをデプロイするための新しい専用のサービス アカウントを作成するには、[サービス アカウント] ページに移動して、Secret が保存されているプロジェクトを選択します。

    [サービス アカウント] ページに移動

  2. [サービス アカウントを作成] をクリックします。
  3. [サービス アカウントの作成] ダイアログで、わかりやすいサービス アカウント名を指定します。
  4. [サービス アカウント ID] を一意のわかりやすい値に変更してから、[作成] をクリックします。
  5. アクセスしようとしている Google Cloud サービスに追加のロールが必要な場合は、ロールを付与し、[続行] をクリックして、[完了] をクリックします。
  6. デプロイ構成にサービス アカウントを追加するには:
    1. Cloud Code のステータスバーで [Cloud Run: Deploy] を選択します。
    2. Cloud Run Deployment UI にある [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 API に完全アクセス権を許可]に設定されていることを確認してください(この 2 つの設定を行うには、[ノードプール] > [セキュリティ] と進んでください)。Compute Engine サービス アカウントはノードにデプロイされているすべてのワークロードで共有されるので、この方法は権限をオーバープロビジョニングし、開発目的でのみ使用する必要があります。
      • クラスタで Workload Identity が有効になっていないことを確認します([クラスタ] > [セキュリティ] セクション)。
    2. サービス アカウントに必要なロールを割り当てます。
  • (本番環境に推奨)
    1. Workload Identity を使用して GKE クラスタとアプリケーションを構成し、GKE で Google Cloud サービスを認証します。これにより、Kubernetes サービス アカウントが Google サービス アカウントに関連付けられます。
    2. デプロイ構成にサービス アカウントを追加するには:
      1. Cloud Code のステータスバーで [Cloud Run: Deploy] を選択します。
      2. Cloud Run Deployment UI にある [Revision Settings] の [Service Account] フィールドに、サービス アカウントを指定します。
      Cloud Run で展開された詳細なリビジョン設定セクション: service-account-name@project-name.iam.gserviceaccount.com という形式の Kubernetes サービス アカウント名が入力されている [Deploy and Service Account] フィールド
    3. アクセスしようとしている Google Cloud サービスに追加のロールが必要な場合は、アプリの開発に使用している Google サービス アカウントにそれらのロールを付与します。

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

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

  1. [Cloud Code] をクリックし、[Secret Manager] セクションを展開します。

    2 つの Secret が一覧表示されている Cloud Code の Secret Manager

  2. Secret を右クリックし、[Cloud Console で権限を編集] を選択します。 これにより、その Secret の Secret Manager 構成ページがウェブブラウザで開きます。

    Secret Manager パネルで Secret を右クリックします。

  3. Google Cloud コンソールで、[権限] をクリックし、[追加] をクリックします。

  4. [新しいプリンシパル] フィールドに、サービス アカウントの名前を入力します。

  5. [ロールを選択] リストで、[Secret Manager のシークレット アクセサー] を選択します。

  6. [保存] をクリックします。

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