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 はプロジェクトの作成時にのみ変更できます。
プロジェクト ID の要件:
- 6~30 文字にする必要があります。
- 小文字、数字、ハイフンのみを含めることができます。
- 先頭は英文字でなければなりません。
- 末尾にハイフンは使用できません。
- 使用中または以前に使用された ID は指定できません(削除済みのプロジェクトも含む)。
google
やssl
などの制限付き文字列を含めることはできません。
プロジェクト番号: 自動生成される一意のプロジェクト識別子。
プロジェクト名、プロジェクト ID、またはその他のリソース名に機密情報を含めないでください。プロジェクト ID は、他の多くの Google Cloud リソースの名前に使用され、プロジェクトや関連リソースへの参照はプロジェクト ID とリソース名を公開します。
プロジェクトの作成
プロジェクトを作成するには、resourcemanager.projects.create
権限が必要です。この権限は、プロジェクト作成者のロール(roles/resourcemanager.projectCreator
)などのロールに含まれています。プロジェクト作成者のロールは、デフォルトで新しい組織のドメイン全体および無料トライアル ユーザーに付与されます。プロジェクト作成者のロールを個人に付与し、組織全体でのアクセスを制限する方法については、デフォルトの組織ロールの管理ページをご覧ください。
親リソースを指定しなければ、ユーザー アカウントのドメインに基づいて親リソースが自動的に選択されます。
Cloud Console、Google Cloud CLI、または projects.create()
メソッドを使用して、新しいプロジェクトを作成できます。
Console
新しいプロジェクトを作成する手順は次のとおりです。
-
Cloud Console の [リソースの管理] ページに移動します。
[リソースの管理] ページに移動 - ページの上部にある「組織の選択」プルダウン リストで、プロジェクトを作成する組織を選択します。無料トライアルをご使用の場合はこのリストが表示されないため、この手順はスキップしてください。
- [プロジェクトを作成] をクリックします。
- 表示される [新しいプロジェクト] ウィンドウで、プロジェクト名を入力し、該当する請求先アカウントを選択します。 プロジェクト名には文字、数字、単一引用符、ハイフン、スペース、感嘆符のみを使用でき、4~30 文字にする必要があります。
- [場所] ボックスに親組織またはフォルダを入力します。このリソースが新しいプロジェクトの階層上の親になります。
- 新しいプロジェクトの詳細を入力し終えたら、[作成] をクリックします。
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 に特定の単語を使用できません。たとえば、ssl
や google
などは使用できません。制限付きの単語を使用すると、リクエストにより 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 CLI または projects.create()
メソッドを使用して新しいプロジェクトを作成できます。
プロジェクトの割り当ての管理
割り当ての中に残っているプロジェクト数が 30 個未満の場合は、[新しいプロジェクト] ページに、割り当てに残っているプロジェクトの数が表示されます。プロジェクト数が上限に達した場合、プロジェクトをさらに作成するには、プロジェクトの上限の引き上げをリクエストする必要があります。あるいは、[リソースの管理] ページで、30 日経過後に一部のプロジェクトを削除するようにスケジュールを設定することもできます。ユーザーによって削除(復元可能)されたプロジェクトは、割り当ての計算対象になります。これらのプロジェクトは 30 日後に完全に削除されます。
割り当てのプロジェクトに追加容量をリクエストするには、プロジェクトの割り当て増加のリクエスト フォームを使用してください。割り当てと使用理由の詳細については、無料トライアルのプロジェクト割り当てのリクエスト サポートページをご覧ください。請求レポートの詳細については、請求レポートのサポートページをご覧ください。
プロジェクトの識別
Google Cloud リソースとやり取りするには、リクエストごとにプロジェクト識別情報を提供する必要があります。プロジェクトはプロジェクト ID とプロジェクト番号で識別されます。
プロジェクト ID とプロジェクト番号を取得するには、次のとおりにします。
Cloud Console で [ダッシュボード] ページに移動します。
ページ上部の [選択元] プルダウン リストをクリックします。表示される [選択元] ウィンドウで、プロジェクトを選択します。
プロジェクト ID とプロジェクト番号が、プロジェクト ダッシュボードの [プロジェクト情報] カードに表示されます。

上記の例では、プロジェクト名は My Sample Project、プロジェクト ID は my-sample-project-191923 です。
既存のプロジェクトを取得する
既存のプロジェクトを取得するには、Cloud Console または projects.get()
メソッドを使用します。
コンソール
Google Cloud Console を使用してプロジェクトを表示するには、次のとおりにします。
- Google Cloud Console の [ダッシュボード] ページに移動します。
- ページ上部の [選択元] プルダウン リストをクリックします。表示される [選択元] ウィンドウで、プロジェクトを選択します。
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(name="projects/"+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()
メソッドを使用します。
更新できるフィールドはプロジェクト名とラベルのみです。プロジェクトの更新の詳細については、プロジェクト 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 ペアのリストです。ラベルがすでに存在する場合、その値が変更されます。ラベルが存在しない場合は、新しいラベルが作成されます。
このコマンドの詳細情報および使用できるその他のフラグについては、Google Cloud CLI SDK をご覧ください。
API
プロジェクトを更新するには、次のとおりにします。
projects.get
メソッドを使用して、project
オブジェクトを取得します。更新対象の項目を変更します。
projects.patch
メソッドを呼び出します。
次の例では、プロジェクト名を myproject
に、ラベルを color:blue
に更新します。
次のコード スニペットは、プロジェクト名を "myproject" に更新します。
リクエスト:
PATCH https://cloudresourcemanager.googleapis.com/v3/{project.name=PROJECT_NAME}
{
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": "red"
},
}
]
}
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 または API の projects.delete
メソッドを使用します。この方法でプロジェクトをシャットダウンするには、プロジェクトのライフサイクル状態が ACTIVE
である必要があります。
このメソッドは、プロジェクトに「削除対象」のマークをすぐに付けます。削除操作を開始したユーザーと、重要な連絡先に記載されている技術カテゴリの連絡先に通知メールが送信されます。 技術カテゴリに連絡先が 1 つもない場合、フォールバックの連絡先には通知されません。削除マーク付きのプロジェクトは使用不能になります。プロジェクトに請求先アカウントが関連付けられている場合、その関連付けは破棄され、プロジェクトの削除操作がキャンセルされても復元されません。30 日後に、そのプロジェクトは完全に削除されます。
30 日以内にプロジェクト削除プロセスを停止するには、プロジェクトの復元手順をご覧ください。30 日間の残りの日数は、gcloud projects describe
Google Cloud CLI メソッドを使用して確認できます。
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 を使用してプロジェクトを復元するには:
Google Cloud Console の [リソースの管理] ページに移動します。
ページ上部の [プロジェクト選択ツール] で組織を選択します。
組織、フォルダ、プロジェクトのリストの下にある [削除保留中のリソース] をクリックします。
復元するプロジェクトのチェックボックスをオンにして、[復元] をクリックします。表示されるダイアログで、プロジェクトを復元することを確定します。
gcloud
プロジェクトを復元するには、gcloud projects undelete
コマンドを使用します。
gcloud projects undelete PROJECT_ID
PROJECT_ID は、復元するプロジェクトのプロジェクト ID またはプロジェクト番号です。
API
次のコード スニペットは、指定したプロジェクトを復元します。
リクエスト:
POST
https://cloudresourcemanager.googleapis.com/v3/projects/my-project-123:undelete