クイックスタート: クライアント ライブラリの使用

このページでは、使い慣れたプログラミング言語で Identity and Access Management API を使用する方法を説明します。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Identity and Access Management API を有効にします。

    API を有効にする

  4. 認証の設定:
    1. Cloud Console で、[サービス アカウント キーの作成] ページに移動します。

      [サービス アカウント キーの作成] ページに移動
    2. [サービス アカウント] リストから [新しいサービス アカウント] を選択します。
    3. [サービス アカウント名] フィールドに名前を入力します。
    4. [ロール] リストで、[プロジェクト] > [オーナー] を選択します。

      : [ロール] フィールドの設定により、リソースにアクセスするサービス アカウントが承認されます。このフィールドは、Cloud Console を使用して後から表示および変更できます。本番環境アプリケーションを開発している場合は、[プロジェクト > オーナー] よりも詳細な権限を指定します。詳しくは、サービス アカウントへのロールの付与をご覧ください。
    5. [作成] をクリックします。キーが含まれている JSON ファイルがパソコンにダウンロードされます。
  5. 環境変数 GOOGLE_APPLICATION_CREDENTIALS を、サービス アカウント キーが含まれる JSON ファイルのパスに設定します。 この変数は現在のシェル セッションにのみ適用されるため、新しいセッションを開く場合は、変数を再度設定します。

クライアント ライブラリのインストール

C#

C# 開発環境の設定の詳細については、C# 開発環境設定ガイドをご覧ください。

install-package Google.Apis.Iam.v1

Go

go get -u golang.org/x/oauth2/google
go get -u google.golang.org/api/iam/v1

Java

Java 開発環境の設定の詳細については、Java 開発環境設定ガイドをご覧ください。

Maven を使用している場合は、pom.xml ファイルに以下の内容を追加します。
<dependency>
  <groupId>com.google.apis</groupId>
  <artifactId>google-api-services-iam</artifactId>
  <version>v1-rev20200827-1.30.10</version>
</dependency>

Python

Python 開発環境の設定の詳細については、Python 開発環境設定ガイドをご覧ください。

pip install --upgrade google-api-python-client google-auth google-auth-httplib2

IAM Roles API の呼び出し

認証情報を取得してから、IAM Roles API を呼び出し、以下のコードを使用して利用可能なロールのリストを表示します。

C#

詳細については、IAM C# API のリファレンス ドキュメントをご覧ください。


using System;
using System.Collections.Generic;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Iam.v1;
using Google.Apis.Iam.v1.Data;

public class QuickStart
{
    public static void Main(string[] args)
    {
        // Get credentials
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);

        // Create the Cloud IAM service object
        IamService service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        // Call the Cloud IAM Roles API
        ListRolesResponse response = service.Roles.List().Execute();
        IList<Role> roles = response.Roles;

        // Process the response
        foreach (Role role in roles)
        {
            Console.WriteLine("Title: " + role.Title);
            Console.WriteLine("Name: " + role.Name);
            Console.WriteLine("Description: " + role.Description);
            Console.WriteLine();
        }
    }
}

Go

詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。


// The quickstart command is an example of using the Cloud IAM Roles API.
package main

import (
	"context"
	"log"

	"google.golang.org/api/iam/v1"
)

func main() {
	// Create the Cloud IAM service object.
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		log.Fatalf("iam.NewService: %v", err)
	}

	// Call the Cloud IAM Roles API.
	resp, err := service.Roles.List().Do()
	if err != nil {
		log.Fatalf("Roles.List: %v", err)
	}

	// Process the response.
	for _, role := range resp.Roles {
		log.Println("Title: " + role.Title)
		log.Println("Name: " + role.Name)
		log.Println("Description: " + role.Description)
	}
}

Java

詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。


package iam.snippets;

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.iam.v1.Iam;
import com.google.api.services.iam.v1.IamScopes;
import com.google.api.services.iam.v1.model.ListRolesResponse;
import com.google.api.services.iam.v1.model.Role;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.util.Collections;
import java.util.List;

public class Quickstart {

  public static void main(String[] args) throws Exception {
    // Get credentials
    GoogleCredentials credential =
        GoogleCredentials.getApplicationDefault()
            .createScoped(Collections.singleton(IamScopes.CLOUD_PLATFORM));

    // Create the Cloud IAM service object
    Iam service =
        new Iam.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),
                JacksonFactory.getDefaultInstance(),
                new HttpCredentialsAdapter(credential))
            .setApplicationName("quickstart")
            .build();

    // Call the Cloud IAM Roles API
    ListRolesResponse response = service.roles().list().execute();
    List<Role> roles = response.getRoles();

    // Process the response
    for (Role role : roles) {
      System.out.println("Title: " + role.getTitle());
      System.out.println("Name: " + role.getName());
      System.out.println("Description: " + role.getDescription());
      System.out.println();
    }
  }
}

Python

詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。

import os

from google.oauth2 import service_account
import googleapiclient.discovery

# Get credentials
credentials = service_account.Credentials.from_service_account_file(
    filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'],
    scopes=['https://www.googleapis.com/auth/cloud-platform'])

# Create the Cloud IAM service object
service = googleapiclient.discovery.build(
    'iam', 'v1', credentials=credentials)

# Call the Cloud IAM Roles API
# If using pylint, disable weak-typing warnings
# pylint: disable=no-member
response = service.roles().list().execute()
roles = response['roles']

# Process the response
for role in roles:
    print('Title: ' + role['title'])
    print('Name: ' + role['name'])
    if 'description' in role:
        print('Description: ' + role['description'])
    print('')

出力はロールに関する情報のリストです。次のように表示されます。

Title: App Engine Admin
Name: roles/appengine.appAdmin
Description: Full management of App Engine apps (but not storage).

Title: App Engine Viewer
Name: roles/appengine.appViewer
Description: Ability to view App Engine app status.

これで、IAM への最初のリクエストを送信できました。

いかがでしたか。

次のステップ

IAM のドキュメントで、クライアント ライブラリを使用するコード スニペットを参照できます。

クライアント ライブラリで使用できる API は、REST API で使用できる API をミラーリングしたものです。詳細については、REST API リファレンスをご覧ください。