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

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

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

準備

リソース階層の概要で、プロジェクト リソースについてお読みください。リソース階層の設定については、Google Cloud ランディング ゾーンのリソース階層を決定するをご覧ください。

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

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

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

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

    プロジェクト ID は、プロジェクトを Google Cloud の他のすべてのプロジェクトと区別するために使用する一意の文字列です。プロジェクト名を入力すると、Google Cloud コンソールは文字、数字、ハイフンの組み合わせで一意のプロジェクト ID を生成します。生成されたプロジェクト ID を使用することをおすすめしますが、この ID はプロジェクトの作成時に編集することもできます。プロジェクトが作成されると、プロジェクト ID は不変になります。

    プロジェクト ID には次の要件があります。

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

プロジェクト名、プロジェクト ID、他のリソース名には、個人を特定できる情報(PII)やセキュリティ データなどの機密情報を含めないでください。プロジェクト ID は他の多くの Google Cloud リソースの名前で使用され、プロジェクトや関連するリソースを参照すると、プロジェクト ID とリソース名が公開されます。

プロジェクトを作成する

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

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

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

コンソール

新しいプロジェクトを作成するには、次の手順を行います。

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

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

    残りの手順は、Google Cloud コンソールに表示されます。

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

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 新しいプロジェクトを作成するには、次のように 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 に特定の単語を使用できません。たとえば、googlenullundefinedssl などです。制限付きの単語を使用すると、リクエストにより 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"
    }
}

プロジェクトの作成時にタグを追加する

タグを使用すると、リソースのアノテーションを作成できます。タグはプロジェクトの作成時に追加できます。タグを追加するときに、タグユーザーのロールを割り当てる必要があります。このロールに割り当てられる権限の詳細については、リソースのタグの管理をご覧ください。タグの Key-Value ペアの名前空間は、次のいずれかの方法でのみ追加できます。

gcloud

プロジェクトの作成時にタグを追加するには、次のコマンドを実行します。

gcloud projects create PROJECT_ID --organization=ORGANIZATION_ID --tags=KEY_VALUE_PAIRS

次のように置き換えます。

  • PROJECT_ID はプロジェクトの一意の識別子です。
  • ORGANIZATION_ID はプロジェクトの固有識別子です。
  • KEY_VALUE_PAIRS は、リソースに割り当てることができる Key-Value ペアのカンマ区切りのリストです。カンマ区切りの Key-Value ペアの例は 123/environment=production, 456/create=testresource です。

API

次のスニペットは、プロジェクトを作成してタグを追加する JSON リクエストです。

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

  {
    "projectId": "our-project-456",
    "name": "my project",
    "parent": "organizations/123",
    "tags": {
      "key": "123/environment"
      "value": "production"
    },
"tags": {
      "key": "123/costCenter"
      "value": "marketing"
  }
}

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

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

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

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

割り当てのプロジェクトに追加容量をリクエストするには、プロジェクトの割り当て増加のリクエスト フォームを使用してください。割り当てと使用理由の詳細については、無料トライアルのプロジェクト割り当てのリクエスト サポートページをご覧ください。請求レポートの詳細については、請求レポートのサポートページをご覧ください。

プロジェクト名、番号、ID を確認する

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

  1. Google Cloud コンソールの [スタート] ページに移動します。

    [ようこそ] に移動

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

    プロジェクト名、プロジェクト番号、プロジェクト ID は [ようこそ] の見出しの後に表示されます。

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

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

プロジェクト オーナーでない場合は、参照者ロール(roles/browser)に含まれている権限が必要です。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    gcloud projects describe PROJECT_ID
    

    PROJECT_ID は、プロジェクトの ID に置き換えます。

API

リクエスト:

GET https://cloudresourcemanager.googleapis.com/v3/projects/<var>PROJECT_ID</var>

PROJECT_ID は、プロジェクトの ID に置き換えます。

対応:

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

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

リソースの直接の子であるすべてのプロジェクトを一覧表示するには、クエリで指定した親リソースで 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="
    }
    ]
}

プロジェクトを検索

指定したクエリに一致するプロジェクトを検索するには、gcloud alpha resource-manager projects search を使用して、--query フラグでクエリを渡します。検索範囲は、ユーザーが projects.get 権限を持つすべてのプロジェクトです。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. すべてのプロジェクトのリストを取得するには、gcloud alpha projects search コマンドを使用します。

    gcloud alpha projects search --query="displayName=rek*"
    <table output showing the projects with display names starting from rek eg. rekey-project-2, rekha-project>
    
    gcloud alpha projects search --query="state:DELETE_REQUESTED"
    <table output showing the projects for which delete has been requested>
    

API

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

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

リクエスト:

GET https://cloudresourcemanager.googleapis.com/v3/projects:search?query=displayName%3ATokyo%2BRain

レスポンス:

{
  "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?query=labels.color%3Ared

レスポンス:

{
  "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 権限を持っているプロジェクトを返します。

プロジェクトの更新

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

更新できるフィールドはプロジェクト名とラベルのみです。プロジェクトの更新の詳細については、プロジェクト API リファレンス ページをご覧ください。

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

コンソール

Google Cloud コンソールを使用してプロジェクトの名前またはラベルを更新するには、次の操作を行います。

  1. Google Cloud コンソールで、[IAM と管理] の [設定] ページに移動します。

    [IAM と管理] の [設定] に移動

    残りの手順は、Google Cloud コンソールに表示されます。

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

    ラベルの使用の詳細。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. プロジェクトの名前またはラベルを更新するには、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 ラベルを red に設定します。

リクエスト:

PATCH https://cloudresourcemanager.googleapis.com/v3/projects/PROJECT_NUMBER?updateMask=displayName,labels

ここで、PROJECT_NUMBER は更新するプロジェクトの数値 ID です。

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"
      }
    }
  ]
}

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

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

このメソッドは、プロジェクトに「削除対象」のマークをすぐに付けます。削除操作を開始したユーザーと、重要な連絡先に記載されている技術カテゴリの連絡先に通知メールがベストエフォート ベースで送信されます。通知の送信に失敗した場合でも、プロジェクトは削除されているとマークされます。技術カテゴリに連絡先がない場合、代替の連絡先には通知されません。

削除マーク付きのプロジェクトは使用不能になります。プロジェクトに請求先アカウントが関連付けられている場合、その関連付けは破棄され、プロジェクトの削除操作がキャンセルされても復元されません。約 30 日後に、そのプロジェクトは完全に削除されます。完全に削除されるまでプロジェクトは表示されますが、使用はできません。

30 日以内にプロジェクトの削除プロセスを停止するには、プロジェクトの復元手順をご覧ください。

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

重要なプロジェクトが削除されないように、変更リスクの推奨事項を有効にできます。変更リスクの推奨事項は、Google Cloud が重要と判断したプロジェクトを削除しようとすると警告を生成します。

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

プロジェクトのシャットダウン

コンソール

  1. Google Cloud コンソールで、[IAM と管理] の [設定] ページに移動します。

    [IAM と管理] の [設定] に移動

    残りの手順は、Google Cloud コンソールに表示されます。

  2. [IAM と管理の設定] ページで、削除するプロジェクトを選択し、[シャットダウン] をクリックします。

    シャットダウンは、現在のプロジェクトで resourcemanager.projects.delete 権限を持つユーザーにのみ表示されます。

  3. [シャットダウン] をクリックします。
  4. プロジェクト ID を入力し、[このままシャットダウン] をクリックします。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    gcloud projects delete PROJECT_ID
    

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

API

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

リクエスト:

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

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

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

プロジェクトの復元

プロジェクト オーナーは、プロジェクトをシャットダウンした時点から 30 日間の復元期間中に、削除したプロジェクトを復元できます。プロジェクトを復元すると、プロジェクトがシャットダウンする前の状態に戻ります。ただし、特定の例外があります。

  • プロジェクトがシャットダウンされ、復元されたプロジェクトで課金が自動的に有効にならない場合、プロジェクトに対する課金は無効になります。プロジェクトを復元した後、Cloud 請求先アカウントを手動で再度リンクする必要があります。最近復元したプロジェクトを請求先アカウントに正常にリンクするには、数時間かかることがあります。
  • 30 日以内にプロジェクトを復元すると、ほとんどのリソースを回復できます。
  • 一部のサービスでは復元に遅延が発生し、復元されるまでしばらく時間がかかる場合があります(最大 36 時間)。
  • Cloud Storage や Pub/Sub リソースなどの一部のリソースは、より早期に削除されます。このようなリソースは、30 日以内にプロジェクトを復元しても、完全には復元されない可能性があります。
  • 一部のサービスは手動で再起動する必要があります。詳細については、Google Cloud サービスの再起動をご覧ください。

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

コンソール

Google Cloud コンソールでプロジェクトを表示するには、次の権限が必要です。

  • resourcemanager.projects.list
  • resourcemanager.folders.list
  • resourcemanager.projects.get
  1. Google Cloud コンソールの [リソースの管理] ページに移動します。

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

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

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

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

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    gcloud projects undelete PROJECT_ID
    

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

API

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

リクエスト:

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