プロジェクトの作成と管理

Google Cloud プロジェクトは、API の管理、課金の有効化、共同編集者の追加と削除、Google Cloud リソースに対する権限の管理など、すべての Google Cloud サービスの作成、有効化、使用の基礎となります。

このページでは、Resource Manager API と Google Cloud Console を使用して Google Cloud プロジェクトを作成および管理する方法について説明します。

始める前に

リソース階層の概要で、プロジェクト リソースについてお読みください。プロジェクト構造に関するガイダンスについては、エンタープライズ企業のベスト プラクティスをご覧ください。

プロジェクトの識別には次のものが使用されます。

  • プロジェクト名: 人が読めるプロジェクト名。

    プロジェクト名は Google API では使用されません。プロジェクト名は、プロジェクトの作成中や作成後にいつでも編集できます。プロジェクト名は一意である必要はありません。

  • プロジェクト ID: グローバルに一意のプロジェクト ID。

    プロジェクト ID は、プロジェクトを Google Cloud 内の他のすべてのプロジェクトと区別するために使用する一意の文字列です。Cloud Console を使用して、プロジェクト ID を生成することも、独自のものを選択することもできます。プロジェクト ID を変更できるのはプロジェクトの作成時のみです。

    プロジェクト ID の要件:

    • 6~30 文字にする必要があります。
    • 小文字、数字、ハイフンのみを含めることができます。
    • 先頭は英文字でなければなりません。
    • 末尾にハイフンは使用できません。
    • 使用中または以前に使用された ID は指定できません(削除済みのプロジェクトも含む)。
    • googlessl などの制限文字列を含めることはできません。
  • プロジェクト番号: 自動生成される一意のプロジェクト識別子。

プロジェクト名、プロジェクト ID などのリソース名に機密情報を含めないでください。

プロジェクトの作成

プロジェクトを作成するには、resourcemanager.projects.create 権限が必要です。この権限はプロジェクト作成者の roles/resourcemanager.projectCreator 役割に含まれています。デフォルトで、これは新しい組織のすべてのドメインと、無料トライアル ユーザーに付与されます。プロジェクト作成者の役割を個人に付与し、組織全体でのアクセスを制限する方法については、デフォルトの組織役割の管理ページをご覧ください。

親リソースを指定しなければ、ユーザー アカウントのドメインに基づいて親リソースが自動的に選択されます。

Cloud Console、gcloud コマンドライン ツール、または projects.create() メソッドを使用して、新しいプロジェクトを作成できます。

コンソール

新しいプロジェクトを作成する手順は次のとおりです。

  1. Cloud Console の [リソースの管理] ページに移動します。
    [リソースの管理] ページに移動
  2. ページの上部にある「組織の選択」プルダウン リストで、プロジェクトを作成する組織を選択します。無料トライアルをご使用の場合はこのリストが表示されないため、この手順はスキップしてください。
  3. [プロジェクトを作成] をクリックします。
  4. 表示される [新しいプロジェクト] ウィンドウで、プロジェクト名を入力し、該当する請求先アカウントを選択します。 プロジェクト名には文字、数字、単一引用符、ハイフン、スペース、感嘆符のみを使用でき、4~30 文字にする必要があります。
  5. [場所] ボックスに親組織またはフォルダを入力します。このリソースが新しいプロジェクトの階層上の親になります。
  6. 新しいプロジェクトの詳細を入力し終えたら、[作成] をクリックします。

gcloud

新しいプロジェクトを作成するには、次のように gcloud projects create コマンドを使用します。

gcloud projects create PROJECT_ID

PROJECT_ID は、作成するプロジェクトの ID です。プロジェクト ID は先頭を小文字にする必要があります。また、使用できるのは ASCII 文字、数字、ハイフンのみで、6~30 文字にする必要があります。

親として組織またはフォルダを持つプロジェクトを作成するには、--organization または --folder フラグを使用します。リソースの親は 1 つのみであるため、これらのフラグのうち 1 つだけ使用できます。

gcloud projects create PROJECT_ID --organization=ORGANIZATION_ID

gcloud projects create PROJECT_ID --folder=FOLDER_ID

API

projects.create() メソッドを使用して新しいプロジェクトを作成する場合、プロジェクト ID に特定の単語を使用できません。たとえば、sslgoogle などは使用できません。制限付きの単語を使用すると、リクエストにより INVALID_ARGUMENT エラーが返されます。

以下のリクエストではプロジェクトは作成されますが、このプロジェクトは請求アカウントに自動的には関連付けられません。projects.updateBillingInfo メソッドを使用して、プロジェクトに関連付けられた請求先アカウントを設定または更新します。

プロジェクト リクエストを作成する:

POST https://cloudresourcemanager.googleapis.com/v3/projects/
Authorization: *************
Content-Type: application/json

{
    "projectId": "our-project-123",
    "name": "my project",
    "labels": {
      "mylabel": "prod"
    }
}

プロジェクト レスポンスを作成する:

{
    "name": "operations/pc.123456789",
}

オペレーション リクエストを取得する:

GET https://cloudresourcemanager.googleapis.com/v3/operations/pc.123456789
Authorization: *************
Content-Type: application/json

オペレーション レスポンスを取得する:

{
    "name": "operations/pc.123456789",
    "done": true,
    "response": {
        "@type": "type.googleapis.com/google.cloudresourcemanager.v3.Project",
        "projectNumber": "464036093014",
        "projectId": "our-project-123",
        "lifecycleState": "ACTIVE",
        "name": "my project",
        "labels": {
        "mylabel": "prod"
        },
    "createTime": "2016-01-07T21:59:43.314Z"
    }
}

Python

...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
crm = discovery.build(
    'cloudresourcemanager', 'v3', http=creds.authorize(httplib2.Http()))

operation = crm.projects().create(
body={
    'project_id': flags.projectId,
    'name': 'my project'
}).execute()

...

サービス アカウントを使用したプロジェクトの作成

サービス アカウントを使用して、プロジェクトの作成を自動化できます。ユーザー アカウントの場合と同様に、サービス アカウントには組織内にプロジェクトを作成する権限を付与することができます。サービス アカウントは、組織外にプロジェクトを作成することはできません。また、プロジェクトの作成時に親リソースを指定する必要があります。サービス アカウントは、gcloud ツールまたは projects.create() メソッドを使用して新しいプロジェクトを作成できます。

プロジェクトの割り当ての管理

割り当ての中に残っているプロジェクト数が 30 個未満の場合は、[新しいプロジェクト] ページに、割り当てに残っているプロジェクトの数が表示されます。プロジェクト数が上限に達した場合、プロジェクトをさらに作成するには、プロジェクトの上限の引き上げをリクエストする必要があります。あるいは、[リソースの管理] ページで、30 日経過後に一部のプロジェクトを削除するようにスケジュールを設定することもできます。ユーザーによって削除(復元可能)されたプロジェクトは、割り当ての計算対象になります。これらのプロジェクトは 30 日後に完全に削除されます。

割り当てのプロジェクトに追加容量が必要な場合には、課金の割り当て増加のリクエスト サポートページをご覧ください。割り当てと使用理由の詳細については、無料トライアルのプロジェクト割り当てのリクエスト サポートページをご覧ください。請求レポートの詳細については、請求レポートのサポートページをご覧ください。

プロジェクトの識別

Google Cloud リソースとやり取りするには、リクエストごとにプロジェクト識別情報を提供する必要があります。プロジェクトはプロジェクト ID とプロジェクト番号で識別されます。

プロジェクト ID とプロジェクト番号を取得するには、次のとおりにします。

  1. Cloud Console で [ダッシュボード] ページに移動します。

    [ダッシュボード] ページに移動する

  2. ページ上部の [選択元] プルダウン リストをクリックします。表示される [選択元] ウィンドウで、プロジェクトを選択します。

プロジェクト ID とプロジェクト番号が、プロジェクト ダッシュボードの [プロジェクト情報] カードに表示されます。

上記の例では、プロジェクト名は My Sample Project、プロジェクト ID は my-sample-project-191923 です。

既存のプロジェクトを取得する

既存のプロジェクトを取得するには、Cloud Console または projects.get() メソッドを使用します。

コンソール

Google Cloud Console を使用してプロジェクトを表示するには、次のとおりにします。

  1. Google Cloud Console の [ダッシュボード] ページに移動します。

    [ダッシュボード] ページに移動する

  2. ページ上部の [選択元] プルダウン リストをクリックします。表示される [選択元] ウィンドウで、プロジェクトを選択します。

gcloud

プロジェクトのメタデータを取得するには、gcloud projects describe コマンドを使用します。

gcloud projects describe PROJECT_ID

PROJECT_ID は、表示するプロジェクトの ID です。

API

リクエスト:

GET
https://cloudresourcemanager.googleapis.com/v3/projects/our-project-123

レスポンス:

{
    "projectNumber": "464036093014",
    "projectId": "our-project-123",
    "lifecycleState": "ACTIVE",
    "name": "my project",
    "labels": {
        "mylabel": "prod"
    },
    "createTime": "2016-01-07T21:59:43.314Z"
}

Python

...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
crm = discovery.build(
    'cloudresourcemanager', 'v3', http=creds.authorize(httplib2.Http()))

project = crm.projects().get(projectId=flags.projectId).execute()

...

プロジェクトの一覧表示

リソースのすべてのプロジェクトの一覧表示

リソースの直接の子であるすべてのプロジェクトを一覧表示するには、クエリで指定した親リソースで v3 projects.list メソッドを使用します。

リクエスト:

GET https://cloudresourcemanager.googleapis.com/v3/projects

{
    "parent": "folders/662951040570"
}

レスポンス:

{
    "projects": [
    {
        "name": "projects/951040570662",
        "parent": "folders/662951040570",
        "projectId": "tokyo-rain-123",
        "state": "ACTIVE",
        "displayName": "Tokyo Rain"
        "createTime": "2013-11-13T20:31:53.308Z"
        "updateTime": "2013-11-13T20:31:53.308Z"
        "etag": "BwWUlZ6XEfY="
    }
    ]
}

プロジェクトを検索

projects.search メソッドとクエリ文字列を使用して、フィルタに一致する特定のプロジェクト リソースを返すことができます。結果には、resourcemanager.projects.get 権限が付与されているプロジェクトのみが含まれます。

次のコード スニペットは、「Tokyo Rain」という表示名のプロジェクト リソースを返します。

リクエスト:

GET https://cloudresourcemanager.googleapis.com/v3/projects:search

{
    "displayName": "Tokyo Rain"
}

レスポンス:

{
    "projects": [
    {
        "name": "projects/951040570662",
        "parent": "folders/662951040570",
        "projectId": "tokyo-rain-123",
        "state": "ACTIVE",
        "displayName": "Tokyo Rain"
        "createTime": "2013-11-13T20:31:53.308Z"
        "updateTime": "2013-11-13T20:31:53.308Z"
        "etag": "BwWUlZ6XEfY="
    }
    ]
}

次のコード スニペットは、赤いラベルの付いたすべてのプロジェクト リソースを返します。

リクエスト:

GET
https://cloudresourcemanager.googleapis.com/v3/projects:search

{
    "labels": {
    "color": "red"
    }
}

レスポンス:

{
    "projects": [
    {
        "name": "projects/951054970012",
        "parent": "folders/662951040570",
        "projectId": "Osaka-rain-234",
        "state": "ACTIVE",
        "displayName": "Osaka Rain"
        "createTime": "2013-11-13T20:31:53.308Z"
        "updateTime": "2013-11-13T20:31:53.308Z"
        "etag": "BwWUlZ6XEfY="
        "labels": {
            "color": "red"
        },
    }
    ]
}

parent.type フィールドと parent.id フィールドをリクエスト本文で指定すると、親に対して resourcemanager.projects.list 権限が確認されます。ユーザーがこの権限を持っている場合、親の下にあるすべてのプロジェクトが、残りのフィルタが適用された後に返されます。

ユーザーにこの権限がない場合は、ユーザーが resourcemanager.projects.get 権限を持っているすべてのプロジェクトが、残りのフィルタが適用された後に返されます。

フィルタが指定されていない場合、呼び出しはユーザーが resourcemanager.projects.get 権限を持っているプロジェクトを返します。

プロジェクトの更新

プロジェクトを更新するには、Cloud Console または projects.patch() メソッドを使用します。

現時点では、更新できるフィールドはプロジェクト名とラベルのみです。gcloud コマンドライン ツールまたは API リクエストで使用するプロジェクト ID の値を変更することはできません。プロジェクトの更新の詳細については、プロジェクト API リファレンス ページをご覧ください。

リソース階層内でプロジェクトを移動するには、プロジェクトの移動をご覧ください。組織間でプロジェクトを移行するには、プロジェクトの移行をご覧ください。

コンソール

Cloud Console を使用してプロジェクトの名前またはラベルを更新するには、次のとおりにします。

  • Google Cloud Console で [設定] ページを開きます。

    [設定] ページを開く

  • ページ上部にある「プロジェクトの選択」プルダウン リストをクリックします。
  • 表示された [選択元] ウィンドウで、組織プルダウン リストをクリックして、組織を選択します。無料トライアルをご使用の場合は、組織リストが表示されないため、この手順はスキップしてください。
  • 表示されたリストからプロジェクトを選択します。
  • プロジェクト名を変更するには、プロジェクト名を編集し、[保存] をクリックします。
  • ラベルを変更するには、左側のナビゲーションで [ラベル] をクリックします。詳細については、ラベルの使用をご覧ください。

gcloud

プロジェクトの名前またはラベルを更新するには、gcloud alpha projects update コマンドを使用します。

gcloud alpha projects update PROJECT_ID \
    --name=NAME \
    --update-labels=[KEY=VALUE, ...]

ここで

  • PROJECT_ID は、更新するプロジェクトの ID です。

  • NAME は、プロジェクトに割り当てる新しい名前です。

  • [KEY=VALUE, ...] は、更新するラベルの key=value ペアのリストです。ラベルがすでに存在する場合、その値が変更されます。ラベルが存在しない場合は、新しいラベルが作成されます。

このコマンドの詳細情報および使用できるその他のフラグについては、gcloudコマンドライン ツール SDK をご覧ください。

API

プロジェクトを更新するには、次のとおりにします。

  • projects.get メソッドを使用して、project オブジェクトを取得します。

  • 更新対象の項目を変更します。

  • projects.patch メソッドを呼び出します。

次の例では、プロジェクト名を myproject に、ラベルを color:blue に更新します。

次のコード スニペットは、プロジェクト名を "myproject" に更新します。

リクエスト:

PATCH https://cloudresourcemanager.googleapis.com/v3/{project.name=<var>PROJECT_NAME</var>}
{
  updateMask=displayName,labels
}

プロジェクト名を PROJECT_NAME に更新したい場所。

JSON 本文のリクエスト

{
    "displayName": "myproject",
    "labels":
      {
        "color": "red"
      }
}

レスポンス:

{
    "projects": [
    {
        "name": "projects/951054970012",
        "parent": "folders/662951040570",
        "projectId": "Osaka-rain-234",
        "state": "ACTIVE",
        "displayName": "myproject"
        "createTime": "2013-11-13T20:31:53.308Z"
        "updateTime": "2013-11-13T20:35:42.308Z"
        "etag": "BwWUlZ6XEfY="
        "labels": {
            "color": "blue"
        },
    }
    ]
}

Python

from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
crm = discovery.build(
    'cloudresourcemanager', 'v3', http=creds.authorize(httplib2.Http()))

project = crm.projects().get(projectId=flags.projectId).execute()
project['name'] = 'myproject'
project = crm.projects().update(
projectId=flags.projectId, body=project).execute()

プロジェクトのシャットダウン(削除)

プロジェクトをシャットダウンするには、Cloud Console または projects.delete() メソッドを使用します。この方法でプロジェクトをシャットダウンするには、プロジェクトのライフサイクル状態が ACTIVE である必要があります。

このメソッドは、プロジェクトに「削除対象」のマークをすぐに付けます。削除操作を開始したユーザーと、重要な連絡先に記載されている技術カテゴリの連絡先に通知メールが送信されます。削除マーク付きのプロジェクトは使用不能になります。プロジェクトに請求先アカウントが関連付けられている場合、その関連付けは破棄され、プロジェクトの削除操作がキャンセルされても復元されません。約 30 日後に、そのプロジェクトは完全に削除されます。30 日以内にこの削除プロセスを停止するには、プロジェクトの復元手順をご覧ください。

30 日間がすぎると、プロジェクトとそのすべてのリソースが削除され、復元できなくなります。それが削除されるまでは、プロジェクト割り当てに加算されます。

プロジェクトの課金が設定済みの場合は、現在の請求期間が終了して請求書が発行され、料金のお支払いが済むまでは、完全に削除されないことがあります。使用中のサービスの数と種類がプロジェクトの完全削除のタイミングに影響することもあります。データの保持と安全な削除の詳細については、Google が収集したデータの保持をご覧ください。

プロジェクトをシャットダウンするには:

Console

Cloud Console を使用してプロジェクトをシャットダウンするには:

  • Google Cloud Console で [設定] ページ([IAM と管理] の下)を開きます。

    [設定] ページを開く

  • [プロジェクトの選択] をクリックします。

  • 削除するプロジェクトを選択して、[開く] をクリックします。

  • [シャットダウン] をクリックします。

  • プロジェクト ID を入力して、[シャットダウン] をクリックします。

gcloud

プロジェクトを削除するには、gcloud projects delete コマンドを使用します。

gcloud projects delete PROJECT_ID

PROJECT_ID は、削除するプロジェクトの ID です。

API

次のコード スニペットは、指定したプロジェクトを削除します。

リクエスト:

DELETE
https://cloudresourcemanager.googleapis.com/v3/projects/my-project-123

Python

...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
crm = discovery.build(
    'cloudresourcemanager', 'v3', http=creds.authorize(httplib2.Http()))

project = crm.projects().delete(projectId=flags.projectId).execute()

...

プロジェクトの削除のトラブルシューティング

プロジェクトをシャットダウンするプロセスが失敗した場合は、プロジェクトの削除のトラブルシューティングをご覧ください。

プロジェクトの復元

プロジェクト オーナーは、プロジェクトをシャットダウンした時点から 30 日間の復元期間中に、削除したプロジェクトを復元できます。プロジェクトを復元すると、プロジェクトがシャットダウンする前の状態に戻ります。Cloud Storage や Pub/Sub リソースなどの一部のリソースは、30 日が経過する前に削除され、完全には復元できない場合があります。

一部のサービスは手動で再起動する必要があります。詳細については、Google Cloud サービスの再起動をご覧ください。

復元するプロジェクトに対して resourcemanager.projects.undelete 権限を持っている必要があります。プロジェクトを復元するには:

コンソール

Cloud Console でプロジェクトを表示するには、次の権限が必要です。

  • resourcemanager.projects.list
  • resourcemanager.folders.list
  • resourcemanager.projects.get

Cloud Console を使用してプロジェクトを復元するには:

  1. Google Cloud Console の [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. ページ上部の [プロジェクト選択ツール] で組織を選択します。

  3. 組織、フォルダ、プロジェクトのリストの下にある [削除保留中のリソース] をクリックします。

  4. 復元するプロジェクトのチェックボックスをオンにして、[復元] をクリックします。表示されるダイアログで、プロジェクトを復元することを確定します。

gcloud

プロジェクトを復元するには、gcloud projects undelete コマンドを使用します。

gcloud projects undelete PROJECT_ID

PROJECT_ID は、復元するプロジェクトのプロジェクト ID またはプロジェクト番号です。

API

次のコード スニペットは、指定したプロジェクトを復元します。

リクエスト:

POST
https://cloudresourcemanager.googleapis.com/v3/projects/my-project-123:undelete