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

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

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

始める前に

リソース階層の概要で、プロジェクト リソースについてお読みください。

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

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

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

  • プロジェクト ID: カスタマイズ可能な一意のプロジェクト ID。

    プロジェクト ID は、Google API で使用できる一意のユーザー割り当て ID です。プロジェクトの作成時にプロジェクト ID を指定しない場合、プロジェクト ID が自動的に生成されます。

    プロジェクト ID は、6~30 文字の小文字、数字、またはハイフンを使用した一意の文字列にする必要があります。先頭は文字にする必要があり、末尾にハイフンを使用することはできません。作成したプロジェクト ID は変更できません。

    特定の単語は、プロジェクト ID への使用が制限されています。プロジェクト名に制限付きの単語(googlessl など)が使用されると、生成されたプロジェクト ID にはそれらの単語は含まれません。

  • プロジェクト番号: 自動生成される一意のプロジェクト識別子。

プロジェクト番号とプロジェクト ID は、Google Cloud 全体で一意です。別のユーザーが使用しているプロジェクト ID と同じプロジェクト ID は使用できません。削除したプロジェクトのプロジェクト ID は再使用できません。

プロジェクト ID(または任意のリソース名)を決めるときに、名前に機密情報が含まれないように注意してください。

プロジェクトの作成

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

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

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

Console

新しいプロジェクトを作成するには:

  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/v1/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/v1/operations/pc.123456789
Authorization: *************
Content-Type: application/json

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

{
    "name": "operations/pc.123456789",
    "done": true,
    "response": {
        "@type": "type.googleapis.com/google.cloudresourcemanager.v1.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', 'v1', 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() メソッドを使用します。

Console

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/v1beta1/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', 'v1', http=creds.authorize(httplib2.Http()))

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

...

プロジェクトの一覧表示

Cloud Console または projects.list() メソッドを使用して、アクセス権を持つすべてのプロジェクトを一覧表示できます。

Console

Google Cloud Console を使用してプロジェクトを一覧表示するには:

  • Cloud Console に移動します。

    Cloud Console に移動

  • 上部バーにあるプロジェクトのプルダウンに、すべてのプロジェクトが表示されます。[プロジェクトとフォルダを検索] テキスト ボックスを使用してプロジェクトをフィルタリングします。
  • すべてのプロジェクトを表示するには、[リソースの管理] をクリックします。[名前、ID、プロジェクト番号、またはラベルでフィルタ] テキスト ボックスを使用してプロジェクトをフィルタします。

gcloud

現在アクティブなアカウントでアクセス可能なすべてのプロジェクトのリストを表示するには、gcloud projects list コマンドを使用します。

gcloud projects list

このコマンドでは、オーナー、編集者、閲覧者のいずれかの権限が付与されているすべてのプロジェクトに対してプロジェクト ID、名前、およびプロジェクト番号を付与します。

--filter フラグを使用すれば、結果を絞り込むことができます。このフラグでは、プロジェクト ID、名前、およびプロジェクト番号を検索し、フィルタリングされた用語が存在する場合のみ結果を返します。

gcloud projects list --filter=test

上記のコマンドでは、オーナー、編集者、閲覧者のいずれかの権限が付与されていて、名前、プロジェクト ID、またはプロジェクト番号のフィールドに「test」という語句が含まれているすべてのプロジェクトを返します。

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

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

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

フィルタ構文の詳細については、gcloud topic filters をご覧ください。

API

フィールドをリクエストの本文に加えることで、フィルタに一致し、かつユーザーにオーナー、編集者、または閲覧者の役割が与えられている特定のプロジェクト リソースが戻されるようにすることができます。

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

リクエスト:

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

{
    "name": "project a"
}

レスポンス:

{
    "projects": [
    {
        "projectNumber": "951040570662",
        "projectId": "google.com:api-project-951040570662",
        "lifecycleState": "ACTIVE",
        "name": "project a",
        "createTime": "2013-11-13T20:31:53.308Z"
    }
    ]
}

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

リクエスト:

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

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

レスポンス:

{
    "projects": [
    {
        "projectNumber": "350831539566",
        "projectId": "my-project-b",
        "lifecycleState": "ACTIVE",
        "name": "project b",
        "labels": {
            "color": "red"
        },
        "createTime": "2012-02-18T23:11:57.831Z"
    }
    ]
}

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

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

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

Python

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

filter = "name:project a"
projects = crm.projects().list(filter=filter).execute()

...

次のコード スニペットは、赤いラベルを持つすべてのプロジェクトを一覧表示します。

filter = 'labels.color:red'
projects = crm.projects().list(filter=filter).execute()

プロジェクトの更新

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

Console

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.update() メソッドを使用して、project オブジェクトを更新します。

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

リクエスト:

    PUT https://cloudresourcemanager.googleapis.com/v1beta1/projects/my-project-123
    {
        "name": "myproject"
    }

レスポンス:

    {
        "projects": [
        {
            "projectNumber": "951040570662",
            "projectId": "my-project-123",
            "lifecycleState": "ACTIVE",
            "name": "myproject",
            "createTime": "2013-11-13T20:31:53.308Z"
        }
        ]
    }

Python

...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
crm = discovery.build(
    'cloudresourcemanager', 'v1', 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/v1beta1/projects/my-project-123

Python

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

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

...

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

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

プロジェクトの復元

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

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

プロジェクトを復元するには:

Console

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/v1/projects/my-project-123:undelete

組織リソースに対する roles/resourcemanager.organizationViewer ロールがない場合、削除保留中のプロジェクトを表示できません。gcloud コマンドライン ツールの undelete コマンドを使用して、プロジェクトを復元できます。